Files

184 lines
8.0 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 github 1.0
PortGroup legacysupport 1.1
PortGroup cmake 1.1
# link legacysupport statically for compilers
legacysupport.use_static yes
# limit legacysupport to OSX 10.11 and older (need clock_gettime())
legacysupport.newest_darwin_requires_legacy 15
# Note: getattrlistat() is also needed, which will be provided in a future
# release of legacy-support; see https://trac.macports.org/ticket/60671
name ispc
categories lang parallel
supported_archs x86_64
maintainers nomaintainer
set py_ver 3.11
set py_ver_nodot [string map {. {}} ${py_ver}]
# For build instructions see https://github.com/ispc/ispc/wiki/Building-ispc
if { ${subport} eq ${name} } {
github.setup ispc ispc 1.19.0 v
# Change github.tarball_from to 'releases' or 'archive' next update
github.tarball_from tarball
revision 0
checksums rmd160 90bb1d6aef518ef457114edcd84131a87a37f158 \
sha256 c1aeae4bdfb28004a6949394ea1b3daa3fdf12f646e17fcc0614861077dc8b6a \
size 19578123
license BSD
description Intel SPMD program compiler
long_description ${name} is a compiler for a variant of the C programming language, \
with extensions for single program, multiple data programming.
depends_build-append port:bison \
port:cctools \
port:flex \
port:ispc-clang \
port:python${py_ver_nodot}
depends_lib-append port:ncurses \
port:zlib \
port:zstd
post-patch {
if {${os.platform} eq "darwin" && ${os.major} >= 18} {
set sdkroot ${developer_dir}/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
reinplace "s|-emit-llvm|-isysroot ${sdkroot} -emit-llvm|" \
${worksrcpath}/cmake/GenerateBuiltins.cmake
}
# Fix python shebang to use explicit path to MP python 3.x
foreach f [ exec find ${worksrcpath}/ -name "*.py" ] {
reinplace -q "s|/usr/bin/env python3|${prefix}/bin/python${py_ver}|" ${f}
}
}
# Need to use a recent MacPorts build.
compiler.cxx_standard 2017
compiler.blacklist *gcc* clang {macports-clang-[5-8].0} macports-clang-3.*
use_xcode yes
cmake.out_of_source yes
cmake.build_type Release
configure.args-append -DBISON_EXECUTABLE=${prefix}/bin/bison \
-DFLEX_EXECUTABLE=${prefix}/bin/flex \
-DLLVM_DIR=${prefix}/libexec/ispc-clang/lib/cmake/llvm \
-DISPC_INCLUDE_TESTS=OFF
# Build has problems finding zlib
configure.ldflags-append ${prefix}/lib/libz.a
configure.args-append -DZLIB_INCLUDE_DIR=${prefix}/include \
-DZLIB_LIBRARY=${prefix}/lib/libz.a
test.run yes
test.dir ${worksrcpath}
test.cmd ./run_tests.py
test.args --verbose --non-interactive --compiler=[file tail ${configure.cc}]
test.target ""
depends_test-append port:python${py_ver_nodot}
}
subport ispc-clang {
# See ispc release notes for LLVM version each release is based on
# https://github.com/ispc/ispc/releases
github.setup llvm llvm-project 14.0.6 llvmorg-
revision 1
# Change github.tarball_from to 'releases' or 'archive' next update
github.tarball_from tarball
checksums rmd160 1a92ac23507901e13fc26aea7dca33b8c6cb2d2c \
sha256 8e9e1948974cdcd642793f1fe195369d13950623c47f27d4266396d3576e4f5b \
size 158100103
license NCSA
description Clang build specifically for ispc compiler.
long_description {*}${description} NOT TO BE USED IN GENERAL. This build is specifically tuned \
to satisfy the requirements of ispc which uses it as a build dependency only. \
Has assertions and dump enabled by default, which is not the case in the \
primary MacPorts LLVM/Clang builds.
# Build configuration is largely taken from lang/llvm ports,
# then simplified and adapted for usage here
patchfiles patch-compilerrtdarwinutils-find-macosxsdkversion.diff
if {${os.platform} eq "darwin" && ${os.major} < 16} {
# Avoid attempts to use 'clonefile'
# llvm/lib/Support/Unix/Path.inc:1476:10: error: use of undeclared identifier 'clonefile'
patchfiles-append 0031-Avoid-Use-Of-Clonefile.patch
}
# From https://github.com/ispc/ispc/tree/main/llvm_patches
patchfiles-append 14_0_15_0_disable-DIArgList-in-SPIR-V.patch \
14_0_AVX512VP2INTERSECT.patch \
14_0_fp16_converts.partial.fix.patch
depends_lib-append port:libedit \
port:ncurses \
path:lib/libxar.dylib:xar \
port:z3 \
port:zlib \
port:zstd \
port:libxml2 \
port:libomp \
bin:perl:perl5 \
port:ld64
depends_build-append port:pkgconfig \
port:cctools \
port:python${py_ver_nodot}
compiler.cxx_standard 2014
compiler.blacklist *gcc* {clang < 1204} macports-clang-3.* {macports-clang-[4-6].0} {macports-clang-1[0-2]}
compiler.fallback clang macports-clang-13 macports-clang-14
cmake.install_prefix ${prefix}/libexec/${subport}
cmake.build_type Release
configure.post_args ../${worksrcdir}/llvm
default configure.dir {${workpath}/build}
default build.dir {${workpath}/build}
configure.args-delete -DCMAKE_INSTALL_NAME_DIR=${cmake.install_prefix}/lib \
-DCMAKE_INSTALL_RPATH=${cmake.install_prefix}/lib
configure.args-replace -DCMAKE_SYSTEM_PREFIX_PATH="${prefix}\;/usr" \
-DCMAKE_SYSTEM_PREFIX_PATH="${cmake.install_prefix}\;${prefix}\;/usr"
configure.args-append -DLLVM_ENABLE_PROJECTS="clang" \
-DLLVM_TARGETS_TO_BUILD="AArch64\;ARM\;X86" \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLVM_ENABLE_DUMP=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_ENABLE_FFI=OFF \
-DLLVM_BINDINGS_LIST=none \
-DCMAKE_LINKER=${prefix}/bin/ld \
-DCLANG_INCLUDE_TESTS=OFF \
-DCLANG_ENABLE_STATIC_ANALYZER=OFF \
-DCLANG_ENABLE_ARCMT=OFF \
-DDARWIN_PREFER_PUBLIC_SDK=ON \
-DLLVM_BUILD_RUNTIME=ON \
-DLIBCXX_ENABLE_SHARED=OFF \
-DLIBCXX_INSTALL_LIBRARY=OFF \
-DCOMPILER_RT_BUILD_SANITIZERS=OFF \
-DCOMPILER_RT_ENABLE_IOS=OFF \
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly \
-DPYTHON_EXECUTABLE=${prefix}/bin/python${py_ver}
# Version determined by ispc release
livecheck.type none
}