diff options
Diffstat (limited to 'vcpkg/ports/shader-slang/portfile.cmake')
| -rw-r--r-- | vcpkg/ports/shader-slang/portfile.cmake | 149 |
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) +]]) |