aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/shader-slang/portfile.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/shader-slang/portfile.cmake')
-rw-r--r--vcpkg/ports/shader-slang/portfile.cmake149
1 files changed, 149 insertions, 0 deletions
diff --git a/vcpkg/ports/shader-slang/portfile.cmake b/vcpkg/ports/shader-slang/portfile.cmake
new file mode 100644
index 0000000..3cc03b7
--- /dev/null
+++ b/vcpkg/ports/shader-slang/portfile.cmake
@@ -0,0 +1,149 @@
+vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
+
+set(key NOTFOUND)
+if(VCPKG_TARGET_IS_WINDOWS)
+ set(key "windows-${VCPKG_TARGET_ARCHITECTURE}")
+elseif(VCPKG_TARGET_IS_OSX)
+ set(key "macosx-${VCPKG_TARGET_ARCHITECTURE}")
+elseif(VCPKG_TARGET_IS_LINUX)
+ set(key "linux-${VCPKG_TARGET_ARCHITECTURE}")
+endif()
+
+set(ARCHIVE NOTFOUND)
+# For convenient updates, use
+# vcpkg install shader-slang --cmake-args=-DVCPKG_SHADER_SLANG_UPDATE=1
+if(key STREQUAL "windows-x64" OR VCPKG_SHADER_SLANG_UPDATE)
+ vcpkg_download_distfile(
+ ARCHIVE
+ URLS "https://github.com/shader-slang/slang/releases/download/v${VERSION}/slang-${VERSION}-windows-x86_64.zip"
+ FILENAME "slang-${VERSION}-windows-x86_64.zip"
+ SHA512 82533b688e100a1aba34be4ae5ef30cda158d7bb7f06f7f6d02a9d3b08b69277f4edc6650ed60967162b812835c9c8b5a85defb21aef0012a00dad5344340111
+ )
+endif()
+if(key STREQUAL "windows-arm64" OR VCPKG_SHADER_SLANG_UPDATE)
+ vcpkg_download_distfile(
+ ARCHIVE
+ URLS "https://github.com/shader-slang/slang/releases/download/v${VERSION}/slang-${VERSION}-windows-aarch64.zip"
+ FILENAME "slang-${VERSION}-windows-aarch64.zip"
+ SHA512 4962ec98bf61bb15296697681d8070a59c916eb583831bfc611684cbbf459b17e197c068862357bb7cf7160d14548a01c206723338c8e576db4103fe7dce6778
+ )
+endif()
+if(key STREQUAL "macosx-x64" OR VCPKG_SHADER_SLANG_UPDATE)
+ vcpkg_download_distfile(
+ ARCHIVE
+ URLS "https://github.com/shader-slang/slang/releases/download/v${VERSION}/slang-${VERSION}-macos-x86_64.zip"
+ FILENAME "slang-${VERSION}-macos-x86_64.zip"
+ SHA512 04f23543163bba57e68f130ee67e0de2a405b7d69f2a04c1a115432bd4b18e8ce93d6ae146616e06843bac9bbf6eaec315e05c021faa0dc383a870df1e5649ef
+ )
+endif()
+if(key STREQUAL "macosx-arm64" OR VCPKG_SHADER_SLANG_UPDATE)
+ vcpkg_download_distfile(
+ ARCHIVE
+ URLS "https://github.com/shader-slang/slang/releases/download/v${VERSION}/slang-${VERSION}-macos-aarch64.zip"
+ FILENAME "slang-${VERSION}-macos-aarch64.zip"
+ SHA512 1f62de8a8f8b364c2b45dd1cd4781ebd3823fde4ca81b560a068638ac6662e6ef1143cd9f161bd401185a2b2a3df4b553b14c10e8fd042babbe057456cf17226
+ )
+endif()
+if(key STREQUAL "linux-x64" OR VCPKG_SHADER_SLANG_UPDATE)
+ vcpkg_download_distfile(
+ ARCHIVE
+ URLS "https://github.com/shader-slang/slang/releases/download/v${VERSION}/slang-${VERSION}-linux-x86_64.zip"
+ FILENAME "slang-${VERSION}-linux-x86_64.zip"
+ SHA512 9f13335f5d5599fab5c4ba17ee6003542f41e925e9f4b0c9695910d6012072cd0350a5b5e1e745c97375ece98cd9b3e4ca694c4160a74b0cf33309864186d4f7
+ )
+endif()
+if(key STREQUAL "linux-arm64" OR VCPKG_SHADER_SLANG_UPDATE)
+ vcpkg_download_distfile(
+ ARCHIVE
+ URLS "https://github.com/shader-slang/slang/releases/download/v${VERSION}/slang-${VERSION}-linux-aarch64.zip"
+ FILENAME "slang-${VERSION}-linux-aarch64.zip"
+ SHA512 2b8b42c2ada7dc76e246a5668d01a416a99ebe2bcececabdbc43733ffe30ce743c4607ba84ce5e2682702ffd26f84ef2928c5f5a3a2cef860eaa15c384b7ee47
+ )
+endif()
+if(NOT ARCHIVE)
+ message(FATAL_ERROR "Unsupported platform. Please implement me!")
+endif()
+
+vcpkg_extract_source_archive(
+ BINDIST_PATH
+ ARCHIVE "${ARCHIVE}"
+ NO_REMOVE_ONE_LEVEL
+)
+
+if(VCPKG_SHADER_SLANG_UPDATE)
+ message(STATUS "All downloads are up-to-date.")
+ message(FATAL_ERROR "Stopping due to VCPKG_SHADER_SLANG_UPDATE being enabled.")
+endif()
+
+file(GLOB libs
+ "${BINDIST_PATH}/lib/*.lib"
+ "${BINDIST_PATH}/lib/*.dylib"
+ "${BINDIST_PATH}/lib/*.so"
+)
+file(INSTALL ${libs} DESTINATION "${CURRENT_PACKAGES_DIR}/lib")
+
+file(GLOB dyn_libs
+ "${BINDIST_PATH}/lib/*.dylib"
+ "${BINDIST_PATH}/lib/*.so"
+)
+
+if(VCPKG_TARGET_IS_WINDOWS)
+ file(GLOB dlls "${BINDIST_PATH}/bin/*.dll")
+ list(APPEND dyn_libs ${dlls})
+ file(INSTALL ${dlls} DESTINATION "${CURRENT_PACKAGES_DIR}/bin")
+endif()
+
+if(NOT VCPKG_BUILD_TYPE)
+ file(INSTALL "${CURRENT_PACKAGES_DIR}/lib" DESTINATION "${CURRENT_PACKAGES_DIR}/debug")
+ if(VCPKG_TARGET_IS_WINDOWS)
+ file(INSTALL "${CURRENT_PACKAGES_DIR}/bin" DESTINATION "${CURRENT_PACKAGES_DIR}/debug")
+ endif()
+endif()
+
+# On macos, slang has signed their binaries
+# vcpkg wants to be helpful and update the rpath as it moves binaries around but this
+# breaks the code signature and makes the binaries useless
+# Removing the signature is rude so instead we will disable rpath fixup
+if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS)
+ set(VCPKG_FIXUP_MACHO_RPATH OFF)
+endif()
+
+# Must manually copy some tool dependencies since vcpkg can't copy them automagically for us
+file(INSTALL ${dyn_libs} DESTINATION "${CURRENT_PACKAGES_DIR}/tools/shader-slang")
+vcpkg_copy_tools(TOOL_NAMES slangc slangd slangi SEARCH_DIR "${BINDIST_PATH}/bin")
+
+file(GLOB headers "${BINDIST_PATH}/include/*.h")
+file(INSTALL ${headers} DESTINATION "${CURRENT_PACKAGES_DIR}/include")
+
+block(SCOPE_FOR VARIABLES)
+ set(VCPKG_BUILD_TYPE Release) # no debug binaries anyways
+ file(COPY "${BINDIST_PATH}/cmake" DESTINATION "${CURRENT_PACKAGES_DIR}")
+ vcpkg_cmake_config_fixup(CONFIG_PATH cmake PACKAGE_NAME slang)
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/slang/slangConfig.cmake"
+ [[HINTS ENV PATH "${PACKAGE_PREFIX_DIR}/bin"]]
+ [[PATHS "${PACKAGE_PREFIX_DIR}/tools/shader-slang" NO_DEFAULT_PATH REQUIRED]]
+ )
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/slang/slangConfigVersion.cmake"
+ [[if("${CMAKE_SIZEOF_VOID_P}" STREQUAL ""]]
+ [[if(#[=[ host tool ]=] "TRUE"]]
+ )
+endblock()
+
+vcpkg_install_copyright(
+ FILE_LIST "${BINDIST_PATH}/LICENSE"
+ COMMENT #[[ from README ]] [[
+The Slang code itself is under the Apache 2.0 with LLVM Exception license.
+
+Builds of the core Slang tools depend on the following projects, either automatically or optionally, which may have their own licenses:
+
+* [`glslang`](https://github.com/KhronosGroup/glslang) (BSD)
+* [`lz4`](https://github.com/lz4/lz4) (BSD)
+* [`miniz`](https://github.com/richgel999/miniz) (MIT)
+* [`spirv-headers`](https://github.com/KhronosGroup/SPIRV-Headers) (Modified MIT)
+* [`spirv-tools`](https://github.com/KhronosGroup/SPIRV-Tools) (Apache 2.0)
+* [`ankerl::unordered_dense::{map, set}`](https://github.com/martinus/unordered_dense) (MIT)
+
+Slang releases may include [slang-llvm](https://github.com/shader-slang/slang-llvm) which includes [LLVM](https://github.com/llvm/llvm-project) under the license:
+
+* [`llvm`](https://llvm.org/docs/DeveloperPolicy.html#new-llvm-project-license-framework) (Apache 2.0 License with LLVM exceptions)
+]])