aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/arrayfire/portfile.cmake
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/arrayfire/portfile.cmake
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/arrayfire/portfile.cmake')
-rw-r--r--vcpkg/ports/arrayfire/portfile.cmake121
1 files changed, 121 insertions, 0 deletions
diff --git a/vcpkg/ports/arrayfire/portfile.cmake b/vcpkg/ports/arrayfire/portfile.cmake
new file mode 100644
index 0000000..d6640be
--- /dev/null
+++ b/vcpkg/ports/arrayfire/portfile.cmake
@@ -0,0 +1,121 @@
+vcpkg_download_distfile(
+ CUDA_PATCHES
+ URLS "https://github.com/arrayfire/arrayfire/pull/3552/commits/674e7bec90b90467139d32bf633467fe60824617.diff?full_index=1"
+ FILENAME "fix-cuda-674e7bec90b90467139d32bf633467fe60824617.patch"
+ SHA512 201ba8c46f5eafd5d8dbc78ddc1fb4c24b8d820f034e081b8ff30712705fe059c2850bbb7394d81931620619071559fed0e98b13cc4f985103e354c44a322e78
+)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO arrayfire/arrayfire
+ REF d99887ae431fcd58168b653a1e69f027f04d5188 # v3.8.0
+ SHA512 d8ddf6ba254744e62acf5ecf680f0ae56b05f8957b5463572923977ba2ffea7fa37cc1b6179421a1188a6f9e66565ca0f8cd00807513ccbe66ba1e9bbd41a3da
+ HEAD_REF master
+ PATCHES
+ build.patch
+ Fix-constexpr-error-with-vs2019-with-half.patch
+ fix-dependency-clfft.patch
+ fix-miss-header-file.patch
+ "${CUDA_PATCHES}"
+)
+
+# arrayfire cpu thread lib needed as a submodule for the CPU backend
+vcpkg_from_github(
+ OUT_SOURCE_PATH CPU_THREADS_PATH
+ REPO arrayfire/threads
+ REF b666773940269179f19ef11c8f1eb77005e85d9a
+ SHA512 b3e8b54acf3a588b1f821c2774d5da2d8f8441962c6d99808d513f7117278b9066eb050b8b501bddbd3882e68eb5cc5da0b2fca54e15ab1923fe068a3fe834f5
+ HEAD_REF master
+)
+
+# Get forge. We only need headers and aren't actually linking.
+# We don't want to use the vcpkg dependency since it is broken in many
+# environments - see https://github.com/microsoft/vcpkg/issues/14864. This
+# can be relaxed when the issue is fixed. Forge and its dependencies
+# are still runtime dependencies, so the user can use the graphics
+# library by installing forge and freeimage.
+vcpkg_from_github(
+ OUT_SOURCE_PATH FORGE_PATH
+ REPO arrayfire/forge
+ REF 1a0f0cb6371a8c8053ab5eb7cbe3039c95132389 # v1.0.5
+ SHA512 8f8607421880a0f0013380eb5efb3a4f05331cd415d68c9cd84dd57eb727da1df6223fc6d65b106675d6aa09c3388359fab64443c31fadadf7641161be6b3b89
+ HEAD_REF master
+)
+
+################################### Build ###################################
+
+# Default flags
+set(AF_DEFAULT_VCPKG_CMAKE_FLAGS
+ -DBUILD_TESTING=OFF
+ -DAF_BUILD_DOCS=OFF
+ -DAF_BUILD_EXAMPLES=OFF
+ -DUSE_CPU_MKL=ON
+ -DUSE_OPENCL_MKL=ON
+ -DAF_CPU_THREAD_PATH=${CPU_THREADS_PATH} # for building the arrayfire cpu threads lib
+ -DAF_FORGE_PATH=${FORGE_PATH} # forge headers for building the graphics lib
+ -DAF_BUILD_FORGE=OFF
+)
+
+if("cpu" IN_LIST FEATURES)
+ if(VCPKG_TARGET_IS_WINDOWS AND VCPKG_CRT_LINKAGE STREQUAL "static")
+ list(APPEND AF_DEFAULT_VCPKG_CMAKE_FLAGS "-DMKL_THREAD_LAYER=Sequential")
+ endif()
+ if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ list(APPEND AF_DEFAULT_VCPKG_CMAKE_FLAGS "-DINT_SIZE=8")
+ # This seems scary but only selects the MKL interface. 4 = lp; 8 = ilp; Since x64 has ilp as the default use it!
+ endif()
+endif()
+
+# bin/dll directory for Windows non-static builds for the unified backend dll
+if (VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ set(AF_BIN_DIR ${CURRENT_PACKAGES_DIR})
+ list(APPEND AF_DEFAULT_VCPKG_CMAKE_FLAGS "-DAF_BIN_DIR=${AF_BIN_DIR}")
+endif()
+
+if (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ message(WARNING "NOTE: Windows support with static linkeage is still experimental.")
+endif()
+
+# Determine which backend to build via specified feature
+vcpkg_check_features(
+ OUT_FEATURE_OPTIONS AF_BACKEND_FEATURE_OPTIONS
+ FEATURES
+ unified AF_BUILD_UNIFIED
+ cpu AF_BUILD_CPU
+ cuda AF_BUILD_CUDA
+ opencl AF_BUILD_OPENCL
+)
+
+# Build and install
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ DISABLE_PARALLEL_CONFIGURE
+ OPTIONS
+ ${AF_DEFAULT_VCPKG_CMAKE_FLAGS}
+ ${AF_BACKEND_FEATURE_OPTIONS}
+ MAYBE_UNUSED_VARIABLES
+ AF_CPU_THREAD_PATH
+)
+vcpkg_cmake_install()
+
+vcpkg_copy_pdbs()
+
+if(NOT VCPKG_TARGET_IS_WINDOWS)
+ vcpkg_cmake_config_fixup(CONFIG_PATH share/ArrayFire/cmake)
+else()
+ vcpkg_cmake_config_fixup(CONFIG_PATH cmake)
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/examples"
+ "${CURRENT_PACKAGES_DIR}/debug/share"
+ "${CURRENT_PACKAGES_DIR}/examples"
+ "${CURRENT_PACKAGES_DIR}/LICENSES"
+ "${CURRENT_PACKAGES_DIR}/debug/LICENSES")
+if(FEATURES STREQUAL "core")
+ file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug")
+endif()
+
+# Copyright and license
+file(INSTALL "${SOURCE_PATH}/COPYRIGHT.md" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")