aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/shaderc
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/shaderc
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/shaderc')
-rw-r--r--vcpkg/ports/shaderc/build-version.inc1
-rw-r--r--vcpkg/ports/shaderc/cmake-config-export.patch71
-rw-r--r--vcpkg/ports/shaderc/cmake-project-include.cmake17
-rw-r--r--vcpkg/ports/shaderc/disable-update-version.patch29
-rw-r--r--vcpkg/ports/shaderc/fix-build-type.patch81
-rw-r--r--vcpkg/ports/shaderc/portfile.cmake47
-rw-r--r--vcpkg/ports/shaderc/usage4
-rw-r--r--vcpkg/ports/shaderc/vcpkg.json19
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
+ }
+ ]
+}