mirror of
https://github.com/macports/macports-ports.git
synced 2026-07-12 18:20:25 -07:00
195 lines
6.9 KiB
Tcl
195 lines
6.9 KiB
Tcl
# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
|
|
|
|
PortSystem 1.0
|
|
PortGroup cmake 1.1
|
|
if {${os.major} <= 17} {
|
|
PortGroup muniversal 1.0
|
|
}
|
|
PortGroup clang_dependency 1.0
|
|
|
|
name libomp
|
|
maintainers {eborisch @eborisch} openmaintainer
|
|
homepage https://openmp.llvm.org
|
|
description The OpenMP subproject of LLVM
|
|
long_description {*}${description} is intended to contain all of the\
|
|
components required to build an executing OpenMP\
|
|
program that are outside the compiler itself. \
|
|
This port works with MacPorts' clang-3.7+ (optionally \
|
|
with +openmp variant for clang-3.7.)
|
|
|
|
categories lang
|
|
supported_archs arm64 i386 x86_64
|
|
license {MIT NCSA}
|
|
|
|
# Moved to epoch 1 for svn # -> version # change.
|
|
epoch 1
|
|
|
|
if {${os.platform} eq "darwin" && ${configure.cxx_stdlib} ne "libstdc++"} {
|
|
|
|
version 21.1.7
|
|
revision 0
|
|
|
|
livecheck.regex {"llvmorg-([0-9.]+)".*}
|
|
|
|
distname openmp-${version}.src
|
|
distfiles ${distname}.tar.xz cmake-${version}.src.tar.xz
|
|
|
|
checksums openmp-${version}.src.tar.xz \
|
|
rmd160 4b924fe8645599724819c76373520464a5bdecc3 \
|
|
sha256 0f892ed2e85e1a9bc9f55699aec0a5a020c9f0a77ce8d29fb4cdf3aee1b72033 \
|
|
size 1101684 \
|
|
cmake-${version}.src.tar.xz \
|
|
rmd160 5a2ab2e6fd5ebdeeeee51ca4bd7fd044191d2cf9 \
|
|
sha256 f25ca011e4453ac035e940aa729d482d08eb83a91b4aaf1f230dc9ea28cadfa4 \
|
|
size 8980
|
|
if {${os.major} <= 12} {
|
|
# kmp_alloc.c includes <atomic> but libc++ is not the default on
|
|
# these systems. https://trac.macports.org/ticket/52554
|
|
configure.cflags-append -stdlib=libc++
|
|
}
|
|
|
|
if {${os.platform} eq "darwin" && ${os.major} < 13} {
|
|
# Last python version to not require C11 (and thus a clang
|
|
# dependency on some OS versions). Used by libpsl (which is a
|
|
# dependency of cmake) for the same reason.
|
|
set python_branch 3.10
|
|
} else {
|
|
set python_branch 3.13
|
|
}
|
|
set python_ver [string map {. ""} ${python_branch}]
|
|
depends_build-append port:python${python_ver}
|
|
depends_skip_archcheck-append python${python_ver}
|
|
configure.args-append -DPython3_EXECUTABLE=${prefix}/bin/python${python_branch}
|
|
|
|
# Build requires std::atomic
|
|
configure.cxxflags-append -std=c++11
|
|
compiler.cxx_standard 2011
|
|
|
|
master_sites https://github.com/llvm/llvm-project/releases/download/llvmorg-${version} \
|
|
https://releases.llvm.org/${version}
|
|
use_xz yes
|
|
dist_subdir openmp-release
|
|
worksrcdir ${distname}
|
|
set rtpath "runtime/"
|
|
patchfiles-append patch-libomp-use-gettid-on-Leopard.diff
|
|
|
|
livecheck.url https://api.github.com/repos/llvm/llvm-project/tags
|
|
} else {
|
|
PortGroup github 1.0
|
|
# Last version working on libstdc++
|
|
github.setup llvm-mirror openmp 381 svn-tags/RELEASE_
|
|
# Change github.tarball_from to 'releases' or 'archive' next update
|
|
github.tarball_from tarball
|
|
name libomp
|
|
|
|
worksrcdir openmp-${version}/final/runtime
|
|
version 3.8.1
|
|
checksums rmd160 a41054068a127ef84610afef8090109078cb6c46 \
|
|
sha256 4c46b5946fe9b2a701661746d11c7c85c51a7f18673194a7ebd2a43470948a34 \
|
|
size 5587986
|
|
set rtpath "./"
|
|
|
|
# use cmake-bootstrap to minimize dependencies.
|
|
depends_build-replace \
|
|
path:bin/cmake:cmake port:cmake-bootstrap
|
|
configure.cmd ${prefix}/libexec/cmake-bootstrap/bin/cmake
|
|
|
|
depends_build-append port:perl5
|
|
livecheck.type none
|
|
}
|
|
|
|
cmake.out_of_source yes
|
|
|
|
# According to documentation builds with clang >= 3.3
|
|
compiler.blacklist-append {clang < 500} *gcc*
|
|
|
|
# https://trac.macports.org/ticket/68490#
|
|
# Use clang-11-bootstrap on OSX10.11 and older
|
|
if {${os.major} <= 15} {
|
|
configure.compiler.add_deps no
|
|
depends_build-append port:clang-11-bootstrap
|
|
depends_skip_archcheck-append clang-11-bootstrap
|
|
pre-configure {
|
|
configure.cc ${prefix}/libexec/clang-11-bootstrap/bin/clang
|
|
configure.cxx ${prefix}/libexec/clang-11-bootstrap/bin/clang++
|
|
}
|
|
}
|
|
|
|
if {${os.major} <= 17} {
|
|
default_variants +universal
|
|
}
|
|
|
|
# Do actual install into ${prefix}/(install|lib)/libomp
|
|
# A little unorthodox, but to have clang automatically find the includes and
|
|
# lib, with -fopenmp, it is nice to have them their own directories. Not
|
|
# exactly a config cmake supports directly; install into dummy location and
|
|
# move post-install
|
|
configure.pre_args -DCMAKE_INSTALL_PREFIX=${prefix}/tmp
|
|
|
|
configure.args-delete -DCMAKE_INSTALL_RPATH=${prefix}/lib \
|
|
-DCMAKE_INSTALL_NAME_DIR=${prefix}/lib
|
|
|
|
# With this, cmake sets the correct library name in the dylibs for the
|
|
# final destination we move them to
|
|
configure.args-append -DCMAKE_INSTALL_RPATH=${prefix}/lib/libomp \
|
|
-DCMAKE_INSTALL_NAME_DIR=${prefix}/lib/libomp
|
|
|
|
if {${os.major} <= 10} {
|
|
set hnames {omp.h}
|
|
configure.args-append -DLIBOMP_OMPT_SUPPORT=FALSE
|
|
} else {
|
|
set hnames {omp-tools.h omp.h ompt.h ompx.h}
|
|
}
|
|
|
|
set lnames {libiomp5.dylib libomp.dylib libgomp.dylib libgomp.1.dylib}
|
|
|
|
variant top_level description \
|
|
"Install (links to) omp.h and libs into ${prefix}/(include|lib)" {}
|
|
|
|
post-extract {
|
|
# Patch tool for build with CMAKE_INSTALL_PREFIX
|
|
if {[vercmp ${version} 15.0.0] >= 0} {
|
|
system -W ${workpath} "mv cmake*.src/Modules/* openmp*/cmake/"
|
|
}
|
|
}
|
|
|
|
post-destroot {
|
|
set instdest ${destroot}${prefix}
|
|
xinstall -d ${instdest}/share/doc/libomp
|
|
|
|
xinstall -d ${instdest}/include/libomp
|
|
foreach h ${hnames} {
|
|
move ${instdest}/tmp/include/${h} ${instdest}/include/libomp/
|
|
}
|
|
|
|
xinstall -d ${instdest}/lib/libomp
|
|
foreach p ${lnames} {
|
|
move ${instdest}/tmp/lib/${p} ${instdest}/lib/libomp/
|
|
}
|
|
|
|
if {[variant_isset top_level]} {
|
|
foreach h ${hnames} {
|
|
ln -s libomp/${h} ${instdest}/include/${h}
|
|
}
|
|
foreach p ${lnames} {
|
|
ln -s libomp/${p} ${instdest}/lib/${p}
|
|
}
|
|
}
|
|
|
|
set fpath ${worksrcpath}/${rtpath}
|
|
file copy ${fpath}/README.txt ${fpath}/../LICENSE.TXT \
|
|
${instdest}/share/doc/libomp/
|
|
|
|
}
|
|
|
|
notes "
|
|
To use this OpenMP library:
|
|
* For clang-3.8+, or clang-3.7 with +openmp variant:
|
|
add \"-fopenmp\" during compilation / linking.
|
|
* For clang-3.7 without +openmp variant, use:
|
|
\"-I${prefix}/include/libomp -L${prefix}/lib/libomp -fopenmp\"
|
|
"
|
|
|
|
test.run yes
|
|
test.target libomp-micro-tests
|