diff --git a/devel/ispc/Makefile b/devel/ispc/Makefile index 7ac350489e3c..7354c2bc19a4 100644 --- a/devel/ispc/Makefile +++ b/devel/ispc/Makefile @@ -1,88 +1,95 @@ PORTNAME= ispc DISTVERSIONPREFIX= v DISTVERSION= 1.31.0 CATEGORIES= devel MAINTAINER= yuri@FreeBSD.org COMMENT= Intel's compiler for high-performance SIMD programming WWW= https://ispc.github.io/ \ https://github.com/ispc/ispc LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE.txt -ONLY_FOR_ARCHS= aarch64 amd64 i386 +ONLY_FOR_ARCHS= aarch64 amd64 i386 powerpc64le ONLY_FOR_ARCHS_REASON= only available for these architectures BUILD_DEPENDS= ${LOCALBASE}/bin/flex:textproc/flex \ m4:devel/m4 LIB_DEPENDS= ${LLVM_LIBLLVM}:devel/llvm${LLVM_VERSION} \ libtbb.so:devel/onetbb USES= bison cmake compiler:c++17-lang llvm:lib,min=20,max=20 python:build,test shebangfix USE_LDCONFIG= yes USE_GITHUB= yes GH_TUPLE= google:googletest:6a7ed31:googletest/ispcrt/tests/vendor/google/googletest SHEBANG_GLOB= *.py CONFIGURE_ENV= PATH=${LOCALBASE}/llvm${LLVM_VERSION}/bin:${PATH} # see https://github.com/ispc/ispc/issues/2318 CMAKE_OFF= ISPC_NO_DUMPS ISPCRT_BUILD_GPU ISPC_INCLUDE_TESTS ISPCRT_BUILD_TESTS ISPC_INCLUDE_EXAMPLES CMAKE_ARGS= -DLLVM_CONFIG_EXECUTABLE=${LOCALBASE}/llvm${LLVM_VERSION}/bin/llvm-config BINARY_ALIAS= flex=${LOCALBASE}/bin/flex python=${PYTHON_CMD} m4=${LOCALBASE}/bin/gm4 PLIST_SUB= VERSION=${PORTVERSION} OPTIONS_DEFINE_amd64= ARM XE OPTIONS_DEFINE_i386= ARM ARM_DESC= Enable ARM support - requires ARM backend in LLVM ARM_CMAKE_BOOL= ARM_ENABLED XE_DESC= Enable Intel Xe support XE_BUILD_DEPENDS= ${LOCALBASE}/llvm${LLVM_VERSION}/lib/libLLVMGenXIntrinsics.a:devel/vc-intrinsics@llvm${LLVM_VERSION} XE_LIB_DEPENDS= libze_loader.so:devel/level-zero \ libLLVMSPIRVLib.so.${LLVM_VERSION}:devel/spirv-llvm-translator@llvm${LLVM_VERSION} XE_CMAKE_BOOL= XE_ENABLED XE_CMAKE_BOOL_OFF= ISPCRT_BUILD_TESTS XE_CMAKE_ON= -DXE_DEPS_DIR:PATH="${LOCALBASE}/llvm${LLVM_VERSION}" -DISPC_INCLUDE_XE_EXAMPLES=OFF XE_PLIST_FILES= include/ispcrt/ispcrt.h \ include/ispcrt/ispcrt.hpp \ include/ispcrt/ispcrt.isph \ lib/cmake/ispcrt-${PORTVERSION}/Finddpcpp_compiler.cmake \ lib/cmake/ispcrt-${PORTVERSION}/Findlevel_zero.cmake \ lib/cmake/ispcrt-${PORTVERSION}/interop.cmake \ lib/cmake/ispcrt-${PORTVERSION}/ispc.cmake \ lib/cmake/ispcrt-${PORTVERSION}/ispcrtConfig.cmake \ lib/cmake/ispcrt-${PORTVERSION}/ispcrt_Exports-%%CMAKE_BUILD_TYPE%%.cmake \ lib/cmake/ispcrt-${PORTVERSION}/ispcrt_Exports.cmake \ lib/libispcrt.so \ lib/libispcrt.so.1 \ lib/libispcrt.so.${PORTVERSION} \ lib/libispcrt_static.a XE_BROKEN= Unknown architecture +.include + +.if ${ARCH} == powerpc64le +CMAKE_ON+= PPC64_ENABLED +CMAKE_OFF+= ARM_ENABLED +.endif + do-test: # all tests pass @cd ${WRKSRC} && ISPC_HOME=${BUILD_WRKSRC}/bin ./scripts/run_tests.py test-check-all: # the upstream claims that some of these checks are broken without using their patched llvm version, hence using llvm-devel @cd ${BUILD_WRKSRC} && ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} check-all run-examples: build @[ -f ${LOCALBASE}/lib/libtbb.so ] || ! echo "ERROR run-examples target requires devel/onetbb package installed" .for e in simple sort mandelbrot stencil @cd ${WRKSRC}/examples/${e} && \ ${ECHO} "===> Running example ${e}" && \ ${SETENV} ${MAKE_ENV} ${MAKE_CMD} ${MAKE_ARGS} && \ ./${e} .endfor # tests as of 1.31.0: # 752 / 757 tests PASSED # 0 / 757 tests FAILED compilation # 0 / 757 tests FAILED execution # 5 / 757 tests SKIPPED .include diff --git a/devel/ispc/files/patch-cmake_CommonStdlibBuiltins.cmake b/devel/ispc/files/patch-cmake_CommonStdlibBuiltins.cmake new file mode 100644 index 000000000000..8d733a703184 --- /dev/null +++ b/devel/ispc/files/patch-cmake_CommonStdlibBuiltins.cmake @@ -0,0 +1,11 @@ +--- cmake/CommonStdlibBuiltins.cmake.orig 2026-06-25 04:07:31 UTC ++++ cmake/CommonStdlibBuiltins.cmake +@@ -209,7 +209,7 @@ function (generate_stdlib_or_target_builtins func ispc + endif() + + # PPC64 targets (Linux only, 64-bit only) +- if (PPC64_ENABLED AND ISPC_LINUX_TARGET) ++ if (PPC64_ENABLED AND (ISPC_LINUX_TARGET OR ISPC_FREEBSD_TARGET)) + if (${func} STREQUAL "stdlib_to_cpp") + foreach (os ${os_list}) + if (${os} STREQUAL "windows") diff --git a/devel/ispc/files/patch-cmake_GenerateBuiltins.cmake b/devel/ispc/files/patch-cmake_GenerateBuiltins.cmake new file mode 100644 index 000000000000..93c21296399c --- /dev/null +++ b/devel/ispc/files/patch-cmake_GenerateBuiltins.cmake @@ -0,0 +1,13 @@ +--- cmake/GenerateBuiltins.cmake.orig 2026-06-25 04:07:31 UTC ++++ cmake/GenerateBuiltins.cmake +@@ -479,6 +479,10 @@ function (generate_common_builtins) + builtin_to_cpp(64 freebsd x86) + endif() + ++ if (ISPC_FREEBSD_TARGET AND PPC64_ENABLED) ++ builtin_to_cpp(64 freebsd ppc) ++ endif() ++ + if (ISPC_WINDOWS_TARGET AND ARM_ENABLED) + builtin_to_cpp(64 windows arm) + endif() diff --git a/devel/ispc/files/patch-cmake_GenericTargets.cmake b/devel/ispc/files/patch-cmake_GenericTargets.cmake new file mode 100644 index 000000000000..1afc8cca1356 --- /dev/null +++ b/devel/ispc/files/patch-cmake_GenericTargets.cmake @@ -0,0 +1,11 @@ +--- cmake/GenericTargets.cmake.orig 2026-06-25 04:07:31 UTC ++++ cmake/GenericTargets.cmake +@@ -84,7 +84,7 @@ function (generate_generic_builtins ispc_name) + ) + endif() + +- if (PPC64_ENABLED AND ISPC_LINUX_TARGET) ++ if (PPC64_ENABLED AND (ISPC_LINUX_TARGET OR ISPC_FREEBSD_TARGET)) + list(APPEND ARCH_LIST + "ppc64le,64" + ) diff --git a/devel/ispc/files/patch-scripts_run__tests.py b/devel/ispc/files/patch-scripts_run__tests.py new file mode 100644 index 000000000000..ff566ab88161 --- /dev/null +++ b/devel/ispc/files/patch-scripts_run__tests.py @@ -0,0 +1,11 @@ +--- scripts/run_tests.py.orig 2026-09-19 15:38:14 UTC ++++ scripts/run_tests.py +@@ -1365,7 +1365,7 @@ elif platform.machine() == "arm64": + elif platform.machine() == "arm64": + default_target = "neon-i32x4" + default_arch = "aarch64" +-elif platform.machine() == "ppc64le": ++elif platform.machine() == "ppc64le" or platform.processor() == "powerpc64le": + default_target = "generic-i32x4" + default_arch = "ppc64le" + elif "86" in platform.machine() or platform.machine() == "AMD64": diff --git a/devel/ispc/files/patch-src_ispc.cpp b/devel/ispc/files/patch-src_ispc.cpp new file mode 100644 index 000000000000..991e2b4967ed --- /dev/null +++ b/devel/ispc/files/patch-src_ispc.cpp @@ -0,0 +1,11 @@ +--- src/ispc.cpp.orig 2026-06-25 04:07:31 UTC ++++ src/ispc.cpp +@@ -2775,6 +2775,8 @@ llvm::Triple Target::GetTriple() const { + triple.setArchName("armv8a"); + } else if (m_arch == Arch::aarch64) { + triple.setArchName("aarch64"); ++ } else if (m_arch == Arch::ppc64le) { ++ triple.setArchName("ppc64le"); + } else { + Error(SourcePos(), "Unknown arch."); + exit(1);