aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/sleef
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/sleef
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/sleef')
-rw-r--r--vcpkg/ports/sleef/android-neon.diff28
-rw-r--r--vcpkg/ports/sleef/exclude-testerutil.diff10
-rw-r--r--vcpkg/ports/sleef/export-link-libs.diff99
-rw-r--r--vcpkg/ports/sleef/portfile.cmake59
-rw-r--r--vcpkg/ports/sleef/seh-cpu-ext.diff26
-rw-r--r--vcpkg/ports/sleef/sleefdft.pc.diff45
-rw-r--r--vcpkg/ports/sleef/vcpkg.json37
7 files changed, 304 insertions, 0 deletions
diff --git a/vcpkg/ports/sleef/android-neon.diff b/vcpkg/ports/sleef/android-neon.diff
new file mode 100644
index 0000000..299c3a2
--- /dev/null
+++ b/vcpkg/ports/sleef/android-neon.diff
@@ -0,0 +1,28 @@
+diff --git a/Configure.cmake b/Configure.cmake
+index c7b5023..178ea44 100644
+--- a/Configure.cmake
++++ b/Configure.cmake
+@@ -253,6 +253,9 @@ set(CLANG_FLAGS_ENABLE_AVX2128 "-mavx2;-mfma")
+ set(CLANG_FLAGS_ENABLE_AVX512F "-mavx512f")
+ set(CLANG_FLAGS_ENABLE_AVX512FNOFMA "-mavx512f")
+ set(CLANG_FLAGS_ENABLE_NEON32 "--target=arm-linux-gnueabihf;-mcpu=cortex-a8")
++if(ANDROID)
++ list(FILTER CLANG_FLAGS_ENABLE_NEON32 EXCLUDE REGEX "^--target")
++endif()
+ set(CLANG_FLAGS_ENABLE_NEON32VFPV4 "-march=armv7-a;-mfpu=neon-vfpv4")
+ # Arm AArch64 vector extensions.
+ set(CLANG_FLAGS_ENABLE_SVE "-march=armv8-a+sve")
+diff --git a/src/dft/CMakeLists.txt b/src/dft/CMakeLists.txt
+index 526c4f8..d57c3b8 100644
+--- a/src/dft/CMakeLists.txt
++++ b/src/dft/CMakeLists.txt
+@@ -173,7 +173,9 @@ if (COMPILER_SUPPORTS_SVE)
+ endif(COMPILER_SUPPORTS_SVE)
+
+ if (COMPILER_SUPPORTS_NEON32)
++ if(FORCE_NEON32)
+ set(ISALIST_SP ${ISALIST_SP} neon32sp)
++ endif()
+ endif(COMPILER_SUPPORTS_NEON32)
+
+ if (COMPILER_SUPPORTS_RVVM1)
diff --git a/vcpkg/ports/sleef/exclude-testerutil.diff b/vcpkg/ports/sleef/exclude-testerutil.diff
new file mode 100644
index 0000000..52417e6
--- /dev/null
+++ b/vcpkg/ports/sleef/exclude-testerutil.diff
@@ -0,0 +1,10 @@
+diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt
+index 6a1cda3..cdec16c 100644
+--- a/src/common/CMakeLists.txt
++++ b/src/common/CMakeLists.txt
+@@ -62,3 +62,5 @@ if(COMPILER_SUPPORTS_QUADMATH)
+ target_link_libraries(${TARGET_QTESTERUTIL_OBJ} "-lquadmath")
+ target_compile_definitions(${TARGET_QTESTERUTIL_OBJ} PRIVATE ENABLEFLOAT128=1)
+ endif()
++
++set_target_properties(${TARGET_TESTERUTIL_OBJ} ${TARGET_QTESTERUTIL_OBJ} PROPERTIES EXCLUDE_FROM_ALL 1)
diff --git a/vcpkg/ports/sleef/export-link-libs.diff b/vcpkg/ports/sleef/export-link-libs.diff
new file mode 100644
index 0000000..afc0b60
--- /dev/null
+++ b/vcpkg/ports/sleef/export-link-libs.diff
@@ -0,0 +1,99 @@
+diff --git a/Configure.cmake b/Configure.cmake
+index e23f577..c7b5023 100644
+--- a/Configure.cmake
++++ b/Configure.cmake
+@@ -55,9 +55,15 @@ endif()
+ find_library(LIB_MPFR mpfr)
+ if(SLEEF_BUILD_WITH_LIBM)
+ find_library(LIBM m)
++ if(LIBM)
++ set(LIBM "m" CACHE INTERNAL "")
++ endif()
+ endif()
+ find_library(LIBGMP gmp)
+ find_library(LIBRT rt)
++if(LIBRT)
++ set(LIBRT "rt" CACHE INTERNAL "")
++endif()
+
+ find_library(LIBFFTW3 fftw3)
+ find_library(LIBFFTW3F fftw3f)
+diff --git a/sleefConfig.cmake b/sleefConfig.cmake
+index 6e423f2..4d415ab 100644
+--- a/sleefConfig.cmake
++++ b/sleefConfig.cmake
+@@ -1 +1,5 @@
++if("@COMPILER_SUPPORTS_OPENMP@")
++ include(CMakeFindDependencyMacro)
++ find_dependency(OpenMP)
++endif()
+ include("${CMAKE_CURRENT_LIST_DIR}/sleefTargets.cmake")
+diff --git a/src/dft/CMakeLists.txt b/src/dft/CMakeLists.txt
+index 15bee24..526c4f8 100644
+--- a/src/dft/CMakeLists.txt
++++ b/src/dft/CMakeLists.txt
+@@ -216,8 +216,8 @@ endif()
+
+ # Compiler properties
+
+-set(CMAKE_C_FLAGS "${ORG_CMAKE_C_FLAGS} ${DFT_C_FLAGS} ${OpenMP_C_FLAGS}")
+-set(CMAKE_CXX_FLAGS "${ORG_CMAKE_C_FLAGS} ${DFT_C_FLAGS} ${OpenMP_C_FLAGS}")
++set(CMAKE_C_FLAGS "${ORG_CMAKE_C_FLAGS} ${DFT_C_FLAGS}")
++set(CMAKE_CXX_FLAGS "${ORG_CMAKE_C_FLAGS} ${DFT_C_FLAGS}")
+
+ if(MSVC)
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc")
+@@ -414,7 +414,7 @@ endforeach()
+ # Target libdft
+
+ add_library(${TARGET_LIBDFT} $<TARGET_OBJECTS:dftcommon_obj> $<TARGET_OBJECTS:dft_obj> ${UNROLL_OBJECTS})
+-target_link_libraries(${TARGET_LIBDFT} ${TARGET_LIBSLEEF} ${LIBM})
++target_link_libraries(${TARGET_LIBDFT} PRIVATE ${TARGET_LIBSLEEF} OpenMP::OpenMP_C ${LIBM})
+
+ set_target_properties(${TARGET_LIBDFT} PROPERTIES
+ VERSION ${SLEEF_VERSION}
+diff --git a/src/libm/CMakeLists.txt b/src/libm/CMakeLists.txt
+index 8969ba2..25aef5b 100644
+--- a/src/libm/CMakeLists.txt
++++ b/src/libm/CMakeLists.txt
+@@ -682,7 +682,8 @@ endif(SLEEF_BUILD_INLINE_HEADERS)
+ # use some of the math functions used in the scalar code (for example
+ # sqrt).
+ if(LIBM AND NOT COMPILER_SUPPORTS_BUILTIN_MATH)
+- target_link_libraries(${TARGET_LIBSLEEF} ${LIBM})
++ target_link_libraries(${TARGET_LIBSLEEF} PRIVATE ${LIBM})
++ string(APPEND PC_LIBS_PRIVATE " -lm")
+ endif()
+
+ target_sources(${TARGET_LIBSLEEF} PRIVATE $<TARGET_OBJECTS:${TARGET_LIBCOMMON_OBJ}>)
+@@ -907,7 +908,7 @@ if(ENABLE_GNUABI)
+ # libm to use some of the math functions used in the scalar code (for
+ # example sqrt).
+ if(LIBM AND NOT COMPILER_SUPPORTS_BUILTIN_MATH)
+- target_link_libraries(${TARGET_LIBSLEEFGNUABI} ${LIBM})
++ target_link_libraries(${TARGET_LIBSLEEFGNUABI} PRIVATE ${LIBM})
+ endif()
+ endif(ENABLE_GNUABI)
+
+diff --git a/src/libm/sleef.pc.in b/src/libm/sleef.pc.in
+index f73bc14..b36ccad 100644
+--- a/src/libm/sleef.pc.in
++++ b/src/libm/sleef.pc.in
+@@ -7,3 +7,4 @@ Description: SIMD Library for Evaluating Elementary Functions, vectorized libm a
+ Version: @SLEEF_VERSION_MAJOR@.@SLEEF_VERSION_MINOR@.@SLEEF_VERSION_PATCH@
+ Cflags: -I${includedir}
+ Libs: -L${libdir} -lsleef
++Libs.private: @PC_LIBS_PRIVATE@
+diff --git a/src/quad/CMakeLists.txt b/src/quad/CMakeLists.txt
+index 8e4e261..cda4799 100644
+--- a/src/quad/CMakeLists.txt
++++ b/src/quad/CMakeLists.txt
+@@ -226,7 +226,7 @@ set_target_properties(sleefquad PROPERTIES
+ set_target_properties(sleefquad PROPERTIES ${COMMON_TARGET_PROPERTIES})
+
+ if(LIBM AND ((NOT COMPILER_SUPPORTS_BUILTIN_MATH) OR (SLEEF_ARCH_32BIT AND SLEEF_ARCH_X86)))
+- target_link_libraries(sleefquad ${LIBM})
++ target_link_libraries(sleefquad PRIVATE ${LIBM})
+ endif()
+
+ # --------------------------------------------------------------------
diff --git a/vcpkg/ports/sleef/portfile.cmake b/vcpkg/ports/sleef/portfile.cmake
new file mode 100644
index 0000000..6c65e37
--- /dev/null
+++ b/vcpkg/ports/sleef/portfile.cmake
@@ -0,0 +1,59 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO shibatch/sleef
+ REF ${VERSION}
+ SHA512 9b47667b33a685308aa65f848b7ee620e9e8783ca4851fd57e873f34310b486fb351813f573f2a7a71b6bdc5c8b2c5ef4eb4f66c890ddfbfada7bb9d74626c0b
+ HEAD_REF master
+ PATCHES
+ android-neon.diff
+ exclude-testerutil.diff
+ export-link-libs.diff
+ sleefdft.pc.diff
+ seh-cpu-ext.diff
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS options
+ FEATURES
+ dft SLEEF_BUILD_DFT
+ dft SLEEF_ENFORCE_DFT
+)
+
+if(VCPKG_CROSSCOMPILING)
+ list(APPEND options "-DNATIVE_BUILD_DIR=${CURRENT_HOST_INSTALLED_DIR}/manual-tools/${PORT}")
+endif()
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${options}
+ -DSLEEF_BUILD_LIBM=ON
+ -DSLEEF_BUILD_QUAD=ON
+ -DSLEEF_BUILD_GNUABI_LIBS=${VCPKG_TARGET_IS_LINUX}
+ -DSLEEF_BUILD_TESTS=OFF
+ -DSLEEF_DISABLE_SSL=ON
+ -DSLEEF_DISABLE_SVE=ON # arm64 build issues, officially unmaintained
+ -DSLEEF_ENABLE_TLFLOAT=OFF
+ -DSLEEF_ENABLE_TESTER4=OFF
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/sleef)
+vcpkg_fixup_pkgconfig()
+
+if(NOT VCPKG_CROSSCOMPILING)
+ set(tools mkrename qmkrename mkalias mkdisp qmkdisp)
+ if("dft" IN_LIST FEATURES)
+ list(APPEND tools mkdispatch mkunroll)
+ endif()
+ vcpkg_copy_tools(
+ TOOL_NAMES ${tools}
+ SEARCH_DIR "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/bin"
+ DESTINATION "${CURRENT_PACKAGES_DIR}/manual-tools/${PORT}/bin"
+ AUTO_CLEAN)
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")
+
diff --git a/vcpkg/ports/sleef/seh-cpu-ext.diff b/vcpkg/ports/sleef/seh-cpu-ext.diff
new file mode 100644
index 0000000..6cd8eaa
--- /dev/null
+++ b/vcpkg/ports/sleef/seh-cpu-ext.diff
@@ -0,0 +1,26 @@
+diff --git a/src/libm/dispatcher.h b/src/libm/dispatcher.h
+index 41b69d9..4d395c3 100644
+--- a/src/libm/dispatcher.h
++++ b/src/libm/dispatcher.h
+@@ -27,6 +27,14 @@ NOEXPORT int Sleef_internal_cpuSupportsExt(void (*tryExt)(), int *cache) {
+ static int cache = -1;
+ if (cache != -1) return cache;
+
++#ifdef _MSC_VER
++ __try {
++ (*tryExt)();
++ cache = 1;
++ } __except(1) {
++ cache = 0;
++ }
++#else
+ void (*org);
+ org = signal(SIGILL, sighandler);
+
+@@ -38,5 +46,6 @@ NOEXPORT int Sleef_internal_cpuSupportsExt(void (*tryExt)(), int *cache) {
+ }
+
+ signal(SIGILL, org);
++#endif
+ return cache;
+ }
diff --git a/vcpkg/ports/sleef/sleefdft.pc.diff b/vcpkg/ports/sleef/sleefdft.pc.diff
new file mode 100644
index 0000000..6981e2a
--- /dev/null
+++ b/vcpkg/ports/sleef/sleefdft.pc.diff
@@ -0,0 +1,45 @@
+diff --git a/src/dft/CMakeLists.txt b/src/dft/CMakeLists.txt
+index 526c4f8..667a7c2 100644
+--- a/src/dft/CMakeLists.txt
++++ b/src/dft/CMakeLists.txt
+@@ -443,3 +443,22 @@ install(
+ INCLUDES #
+ DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
+ )
++
++set(items "")
++foreach(lib IN LISTS OpenMP_CXX_LIB_NAMES OpenMP_C_LIB_NAMES)
++ list(REMOVE_ITEM items " -l${lib}")
++ list(APPEND items " -l${lib}")
++endforeach()
++string(APPEND PC_LIBS_PRIVATE ${items})
++set(items "")
++foreach(flag IN LISTS OpenMP_CXX_FLAGS OpenMP_C_FLAGS)
++ list(REMOVE_ITEM items " ${flag}")
++ list(APPEND items " ${flag}")
++endforeach()
++string(APPEND PC_CFLAGS_PRIVATE ${items})
++configure_file("sleefdft.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/sleefdft.pc" @ONLY)
++install(
++ FILES "${CMAKE_CURRENT_BINARY_DIR}/sleefdft.pc"
++ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
++ COMPONENT sleef_Development
++)
+diff --git a/src/dft/sleefdft.pc.in b/src/dft/sleefdft.pc.in
+new file mode 100644
+index 0000000..58b6e2a
+--- /dev/null
++++ b/src/dft/sleefdft.pc.in
+@@ -0,0 +1,12 @@
++prefix=@CMAKE_INSTALL_PREFIX@
++libdir=@CMAKE_INSTALL_FULL_LIBDIR@
++includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
++
++Name: SLEEFDFT
++Description: SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT
++Version: @SLEEF_VERSION_MAJOR@.@SLEEF_VERSION_MINOR@.@SLEEF_VERSION_PATCH@
++Cflags: -I${includedir}
++Cflags.private: @PC_CFLAGS_PRIVATE@
++Libs: -L${libdir} -lsleefdft
++Libs.private: @PC_LIBS_PRIVATE@
++Requires.private: sleef
diff --git a/vcpkg/ports/sleef/vcpkg.json b/vcpkg/ports/sleef/vcpkg.json
new file mode 100644
index 0000000..1d97c39
--- /dev/null
+++ b/vcpkg/ports/sleef/vcpkg.json
@@ -0,0 +1,37 @@
+{
+ "name": "sleef",
+ "version": "3.9.0",
+ "port-version": 1,
+ "description": "SIMD Library for Evaluating Elementary Functions, vectorized libm and DFT",
+ "homepage": "https://sleef.org/",
+ "license": "BSL-1.0",
+ "supports": "!(arm & windows)",
+ "dependencies": [
+ {
+ "name": "sleef",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ],
+ "features": {
+ "dft": {
+ "description": "Build the DFT library. Needs OpenMP.",
+ "dependencies": [
+ {
+ "name": "sleef",
+ "host": true,
+ "features": [
+ "dft"
+ ]
+ }
+ ]
+ }
+ }
+}