# -*- 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 PortGroup compiler_blacklist_versions 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 platforms darwin supported_archs arm64 i386 x86_64 license {MIT NCSA} # Moved to epoch 1 for svn # -> version # change. epoch 1 subport libomp-devel {} if {${os.platform} eq "darwin" && ${configure.cxx_stdlib} ne "libstdc++"} { version 18.1.2 revision 1 if { ${subport} eq "libomp-devel" } { # Marked obsolete 10/25/2022 PortGroup obsolete 1.0 replaced_by libomp } else { 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 f2cb436ddf5fef965cab48b28f44c3899b9a713e \ sha256 742dce34394d26f0916b5d3041cc737d4e41f5ee821d9fb054057f6f71cf9a2b \ size 1318944 \ cmake-${version}.src.tar.xz \ rmd160 ab9ff8018440bc7c494813e231c65c9ae470c6ac \ sha256 b55a1eed9fe9c5d86c9f73c8aabde3e2407e603e737e1555545c3d136655955b \ size 8704 if {${os.major} <= 12} { # kmp_alloc.c includes but libc++ is not the default on # these systems. https://trac.macports.org/ticket/52554 configure.cflags-append -stdlib=libc++ } # 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 { if { ${subport} eq "libomp-devel" } { version 291764 replaced_by libomp } else { PortGroup github 1.0 # Last version working on libstdc++ github.setup llvm-mirror openmp 381 svn-tags/RELEASE_ 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 } livecheck.type none } depends_build-append port:perl5 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} } 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 reinplace "/bulk.*compatibility/s/s\+/s+.*/" \ ${rtpath}tools/check-depends.pl 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 {libiomp5.dylib libomp.dylib libgomp.dylib} { move ${instdest}/tmp/lib/${p} ${instdest}/lib/libomp/ } if {[variant_isset top_level]} { foreach h ${hnames} { system -W ${instdest}/include \ "ln -s libomp/${h}" } foreach p {libiomp5.dylib libomp.dylib libgomp.dylib} { system -W ${instdest}/lib/ \ "ln -s libomp/${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