diff options
Diffstat (limited to 'vcpkg/ports/shaderc')
| -rw-r--r-- | vcpkg/ports/shaderc/build-version.inc | 1 | ||||
| -rw-r--r-- | vcpkg/ports/shaderc/cmake-config-export.patch | 71 | ||||
| -rw-r--r-- | vcpkg/ports/shaderc/cmake-project-include.cmake | 17 | ||||
| -rw-r--r-- | vcpkg/ports/shaderc/disable-update-version.patch | 29 | ||||
| -rw-r--r-- | vcpkg/ports/shaderc/fix-build-type.patch | 81 | ||||
| -rw-r--r-- | vcpkg/ports/shaderc/portfile.cmake | 47 | ||||
| -rw-r--r-- | vcpkg/ports/shaderc/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/shaderc/vcpkg.json | 19 |
8 files changed, 269 insertions, 0 deletions
diff --git a/vcpkg/ports/shaderc/build-version.inc b/vcpkg/ports/shaderc/build-version.inc new file mode 100644 index 0000000..35c1101 --- /dev/null +++ b/vcpkg/ports/shaderc/build-version.inc @@ -0,0 +1 @@ +"shaderc v2023.8 v2023.8\n" diff --git a/vcpkg/ports/shaderc/cmake-config-export.patch b/vcpkg/ports/shaderc/cmake-config-export.patch new file mode 100644 index 0000000..ccc613f --- /dev/null +++ b/vcpkg/ports/shaderc/cmake-config-export.patch @@ -0,0 +1,71 @@ +diff --git a/libshaderc/CMakeLists.txt b/libshaderc/CMakeLists.txt +index e0eea6c..b54ace4 100644 +--- a/libshaderc/CMakeLists.txt ++++ b/libshaderc/CMakeLists.txt +@@ -28,7 +28,9 @@ if (NOT BUILD_SHARED_LIBS) + add_library(shaderc STATIC ${SHADERC_SOURCES}) + shaderc_default_compile_options(shaderc) + target_include_directories(shaderc +- PUBLIC include ++ PUBLIC ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> ++ $<INSTALL_INTERFACE:include> + PRIVATE ${glslang_SOURCE_DIR} + ${SPIRV-Headers_SOURCE_DIR}/include) + set(shaderc_install_target shaderc) +@@ -37,7 +39,9 @@ else() + add_library(shaderc_shared SHARED ${SHADERC_SOURCES}) + shaderc_default_compile_options(shaderc_shared) + target_include_directories(shaderc_shared +- PUBLIC include ++ PUBLIC ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> ++ $<INSTALL_INTERFACE:include> + PRIVATE ${glslang_SOURCE_DIR} + ${SPIRV-Headers_SOURCE_DIR}/include) + target_compile_definitions(shaderc_shared +@@ -60,10 +64,15 @@ if(SHADERC_ENABLE_INSTALL) + ${CMAKE_INSTALL_INCLUDEDIR}/shaderc) + + install(TARGETS ${shaderc_install_target} shaderc_util ++ EXPORT unofficial-shaderc-targets + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) ++ install(EXPORT unofficial-shaderc-targets ++ NAMESPACE unofficial::shaderc:: ++ DESTINATION share/unofficial-shaderc ++ ) + endif(SHADERC_ENABLE_INSTALL) + + find_package(Threads) +@@ -80,6 +89,15 @@ else() + target_link_libraries(shaderc_shared PRIVATE ${SHADERC_LIBS}) + endif() + ++file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/unofficial-shaderc-config.cmake" [[ ++include(CMakeFindDependencyMacro) ++find_dependency(glslang CONFIG) ++find_dependency(SPIRV-Tools CONFIG) ++find_dependency(SPIRV-Tools-opt CONFIG) ++include("${CMAKE_CURRENT_LIST_DIR}/unofficial-shaderc-targets.cmake") ++]]) ++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unofficial-shaderc-config.cmake DESTINATION share/unofficial-shaderc) ++ + shaderc_add_tests( + TEST_PREFIX shaderc + LINK_LIBS shaderc +diff --git a/libshaderc_util/CMakeLists.txt b/libshaderc_util/CMakeLists.txt +index 99ce3c4..3d5a222 100644 +--- a/libshaderc_util/CMakeLists.txt ++++ b/libshaderc_util/CMakeLists.txt +@@ -39,7 +39,7 @@ add_library(shaderc_util STATIC + + shaderc_default_compile_options(shaderc_util) + target_include_directories(shaderc_util +- PUBLIC include PRIVATE ${glslang_SOURCE_DIR}) ++ PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> PRIVATE ${glslang_SOURCE_DIR}) + # We use parts of Glslang's HLSL compilation interface, which + # now requires this preprocessor definition. + add_definitions(-DENABLE_HLSL) diff --git a/vcpkg/ports/shaderc/cmake-project-include.cmake b/vcpkg/ports/shaderc/cmake-project-include.cmake new file mode 100644 index 0000000..f62f845 --- /dev/null +++ b/vcpkg/ports/shaderc/cmake-project-include.cmake @@ -0,0 +1,17 @@ +set(SHADERC_GLSLANG_DIR "" CACHE STRING "unused") +if (NOT TARGET glslang) + find_package(glslang CONFIG REQUIRED) + add_library(glslang ALIAS glslang::glslang) + add_library(MachineIndependent ALIAS glslang::MachineIndependent) + add_library(OSDependent ALIAS glslang::OSDependent) + add_library(SPIRV ALIAS glslang::SPIRV) +endif() +find_path(glslang_SOURCE_DIR glslang/Public/ShaderLang.h REQUIRED) +set(glslang_SOURCE_DIR "${glslang_SOURCE_DIR}/glslang" "${glslang_SOURCE_DIR}" CACHE STRING "" FORCE) + +set(SHADERC_SPIRV_TOOLS_DIR "" CACHE STRING "unused") +if (NOT TARGET SPIRV-Tools) + find_package(SPIRV-Tools CONFIG REQUIRED) + add_library(SPIRV-Tools ALIAS SPIRV-Tools-static) # as linked by SPIRV-Tools-opt + find_package(SPIRV-Tools-opt CONFIG REQUIRED) +endif()
\ No newline at end of file diff --git a/vcpkg/ports/shaderc/disable-update-version.patch b/vcpkg/ports/shaderc/disable-update-version.patch new file mode 100644 index 0000000..9ea12d6 --- /dev/null +++ b/vcpkg/ports/shaderc/disable-update-version.patch @@ -0,0 +1,29 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index bd6b890..0b55f77 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -129,12 +129,6 @@ if(${SHADERC_ENABLE_EXAMPLES}) + add_subdirectory(examples) + endif() + +-add_custom_target(build-version +- ${Python_EXECUTABLE} +- ${CMAKE_CURRENT_SOURCE_DIR}/utils/update_build_version.py +- ${shaderc_SOURCE_DIR} ${spirv-tools_SOURCE_DIR} ${glslang_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/build-version.inc +- COMMENT "Update build-version.inc in the Shaderc build directory (if necessary).") +- + function(define_pkg_config_file NAME LIBS) + add_custom_target(${NAME}-pkg-config ALL + COMMAND ${CMAKE_COMMAND} +diff --git a/glslc/CMakeLists.txt b/glslc/CMakeLists.txt +index 1277d87..e431761 100644 +--- a/glslc/CMakeLists.txt ++++ b/glslc/CMakeLists.txt +@@ -53,7 +53,6 @@ shaderc_default_compile_options(glslc_exe) + target_include_directories(glslc_exe PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/.. ${spirv-tools_SOURCE_DIR}/include) + set_target_properties(glslc_exe PROPERTIES OUTPUT_NAME glslc) + target_link_libraries(glslc_exe PRIVATE glslc shaderc_util shaderc) +-add_dependencies(glslc_exe build-version) + + shaderc_add_tests( + TEST_PREFIX glslc diff --git a/vcpkg/ports/shaderc/fix-build-type.patch b/vcpkg/ports/shaderc/fix-build-type.patch new file mode 100644 index 0000000..46826d3 --- /dev/null +++ b/vcpkg/ports/shaderc/fix-build-type.patch @@ -0,0 +1,81 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b2e92ef..cf0832b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -152,6 +152,8 @@ function(define_pkg_config_file NAME LIBS) + endif() + endfunction() + ++if(BUILD_SHARED_LIBS) + define_pkg_config_file(shaderc -lshaderc_shared) ++else() + define_pkg_config_file(shaderc_static "-lshaderc ${EXTRA_STATIC_PKGCONFIG_LIBS} -lshaderc_util") +-define_pkg_config_file(shaderc_combined -lshaderc_combined) ++endif() +diff --git a/libshaderc/CMakeLists.txt b/libshaderc/CMakeLists.txt +index 2cced9e..e0eea6c 100644 +--- a/libshaderc/CMakeLists.txt ++++ b/libshaderc/CMakeLists.txt +@@ -24,13 +24,16 @@ set(SHADERC_SOURCES + src/shaderc_private.h + ) + ++if (NOT BUILD_SHARED_LIBS) + add_library(shaderc STATIC ${SHADERC_SOURCES}) + shaderc_default_compile_options(shaderc) + target_include_directories(shaderc + PUBLIC include + PRIVATE ${glslang_SOURCE_DIR} + ${SPIRV-Headers_SOURCE_DIR}/include) ++set(shaderc_install_target shaderc) + ++else() + add_library(shaderc_shared SHARED ${SHADERC_SOURCES}) + shaderc_default_compile_options(shaderc_shared) + target_include_directories(shaderc_shared +@@ -42,6 +45,8 @@ target_compile_definitions(shaderc_shared + PUBLIC SHADERC_SHAREDLIB + ) + set_target_properties(shaderc_shared PROPERTIES SOVERSION 1) ++set(shaderc_install_target shaderc_shared) ++endif() + + if(SHADERC_ENABLE_INSTALL) + install( +@@ -54,7 +59,7 @@ if(SHADERC_ENABLE_INSTALL) + DESTINATION + ${CMAKE_INSTALL_INCLUDEDIR}/shaderc) + +- install(TARGETS shaderc shaderc_shared ++ install(TARGETS ${shaderc_install_target} shaderc_util + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} +@@ -69,8 +74,11 @@ set(SHADERC_LIBS + SPIRV-Tools + ) + ++if(NOT BUILD_SHARED_LIBS) + target_link_libraries(shaderc PRIVATE ${SHADERC_LIBS}) ++else() + target_link_libraries(shaderc_shared PRIVATE ${SHADERC_LIBS}) ++endif() + + shaderc_add_tests( + TEST_PREFIX shaderc +@@ -94,6 +102,7 @@ shaderc_add_tests( + shaderc_cpp + shaderc_private) + ++if(0) + shaderc_combine_static_lib(shaderc_combined shaderc) + + if(SHADERC_ENABLE_INSTALL) +@@ -122,6 +131,7 @@ shaderc_add_tests( + TEST_NAMES + shaderc + shaderc_cpp) ++endif() + + if(${SHADERC_ENABLE_TESTS}) + add_executable(shaderc_c_smoke_test ./src/shaderc_c_smoke_test.c) diff --git a/vcpkg/ports/shaderc/portfile.cmake b/vcpkg/ports/shaderc/portfile.cmake new file mode 100644 index 0000000..15d6c85 --- /dev/null +++ b/vcpkg/ports/shaderc/portfile.cmake @@ -0,0 +1,47 @@ +#Note: glslang and spir tools doesn't export symbol and need to be build as static lib for cmake to work +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO google/shaderc + REF "v${VERSION}" + SHA512 6761372591075944fddd926e9f7c2ea9447496566d2d549f523c6c529c3bd753d459b66d499f76d955bdcfb335016daddbeba49b087f4ecabf37d76a46ac14cd + HEAD_REF master + PATCHES + disable-update-version.patch + fix-build-type.patch + cmake-config-export.patch +) + +file(COPY "${CMAKE_CURRENT_LIST_DIR}/build-version.inc" DESTINATION "${SOURCE_PATH}/glslc/src") + +set(OPTIONS "") +if(VCPKG_CRT_LINKAGE STREQUAL "dynamic") + list(APPEND OPTIONS -DSHADERC_ENABLE_SHARED_CRT=ON) +endif() + +# shaderc uses python to manipulate copyright information +vcpkg_find_acquire_program(PYTHON3) +get_filename_component(PYTHON3_EXE_PATH "${PYTHON3}" DIRECTORY) +vcpkg_add_to_path(PREPEND "${PYTHON3_EXE_PATH}") + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + ${OPTIONS} + "-DCMAKE_PROJECT_INCLUDE=${CMAKE_CURRENT_LIST_DIR}/cmake-project-include.cmake" + -DSHADERC_ENABLE_EXAMPLES=OFF + -DSHADERC_SKIP_TESTS=true +) + +vcpkg_cmake_install() + +vcpkg_fixup_pkgconfig() +vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-shaderc CONFIG_PATH share/unofficial-shaderc) + +vcpkg_copy_tools(TOOL_NAMES glslc AUTO_CLEAN) + +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + +file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}") +file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) diff --git a/vcpkg/ports/shaderc/usage b/vcpkg/ports/shaderc/usage new file mode 100644 index 0000000..8918c01 --- /dev/null +++ b/vcpkg/ports/shaderc/usage @@ -0,0 +1,4 @@ +shaderc provides CMake targets: + + find_package(unofficial-shaderc CONFIG REQUIRED) + target_link_libraries(main PRIVATE unofficial::shaderc::shaderc) diff --git a/vcpkg/ports/shaderc/vcpkg.json b/vcpkg/ports/shaderc/vcpkg.json new file mode 100644 index 0000000..a7c502c --- /dev/null +++ b/vcpkg/ports/shaderc/vcpkg.json @@ -0,0 +1,19 @@ +{ + "name": "shaderc", + "version": "2025.2", + "description": "A collection of tools, libraries and tests for shader compilation.", + "homepage": "https://github.com/google/shaderc", + "license": "Apache-2.0", + "dependencies": [ + "glslang", + "spirv-tools", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |