Files

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