Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:X0F:HSF
glslang
glslang_pkg-config-compatibility.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File glslang_pkg-config-compatibility.patch of Package glslang
From 7668eb78b3fea594411abcd6cb9a1fe4061d2357 Mon Sep 17 00:00:00 2001 From: v-fox <virtuousfox@gmail.com> Date: Tue, 19 Mar 2024 05:59:35 +0500 Subject: [PATCH] based on pkg-config-compatibility from https://src.fedoraproject.org/rpms/glslang/tree/rawhide --- CMakeLists.txt | 12 +++++------- External/CMakeLists.txt | 7 ------- SPIRV/CMakeLists.txt | 21 +++++++++++++++++---- SPIRV/SpvTools.cpp | 2 +- SPIRV/spirv.pc.cmake.in | 11 +++++++++++ StandAlone/CMakeLists.txt | 10 ++++++++-- glslang/CMakeLists.txt | 2 ++ glslang/glslang.pc.cmake.in | 11 +++++++++++ 8 files changed, 55 insertions(+), 21 deletions(-) create mode 100644 SPIRV/spirv.pc.cmake.in create mode 100644 glslang/glslang.pc.cmake.in diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f1680c..97419a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,8 +56,12 @@ option(BUILD_WERROR "Enable warnings as errors (default is OFF)" OFF) set(LIB_TYPE STATIC) +# using pkg-config to configure include paths and link libraries +include(FindPkgConfig) +pkg_check_modules(SPIRV_TOOLS REQUIRED SPIRV-Tools) if(BUILD_SHARED_LIBS) set(LIB_TYPE SHARED) + pkg_check_modules(SPIRV_TOOLS_SHARED REQUIRED SPIRV-Tools-shared) endif() if ("${CMAKE_BUILD_TYPE}" STREQUAL "") @@ -289,12 +293,6 @@ if(NOT TARGET SPIRV-Tools-opt) # Look for external SPIR-V Tools build, if not building in-tree message(STATUS "Trying to find local SPIR-V tools") find_package(SPIRV-Tools-opt) - if(NOT TARGET SPIRV-Tools-opt) - if(ENABLE_OPT) - message(WARNING "ENABLE_OPT set but SPIR-V tools not found! Disabling SPIR-V optimization.") - endif() - set(ENABLE_OPT OFF) - endif() else() if(ENABLE_OPT) message(SEND_ERROR "ENABLE_OPT set but SPIR-V tools not found. Please run update_glslang_sources.py, " @@ -303,7 +301,7 @@ if(NOT TARGET SPIRV-Tools-opt) endif() endif() -if(ENABLE_OPT) +if(${SPIRV_TOOLS_FOUND} EQUAL 1) message(STATUS "optimizer enabled") add_definitions(-DENABLE_OPT=1) else() diff --git a/External/CMakeLists.txt b/External/CMakeLists.txt index 46284fd..860423b 100644 --- a/External/CMakeLists.txt +++ b/External/CMakeLists.txt @@ -68,10 +68,3 @@ if(GLSLANG_TESTS) endif() endif() -if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt) - if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools) - set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests") - add_subdirectory(spirv-tools) - endif() -endif() - diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 1ccd600..46b7dd4 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -89,6 +89,9 @@ target_include_directories(SPIRV PUBLIC glslang_add_build_info_dependency(SPIRV) +set(SPIRV_NAME spirv) +set(SPIRV_VERSION 1.4) + if (ENABLE_SPVREMAPPER) add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) set_target_properties(SPVRemapper PROPERTIES @@ -105,10 +108,17 @@ if(WIN32 AND BUILD_SHARED_LIBS) endif() endif() +target_include_directories(SPIRV PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS}) +target_compile_options(SPIRV PUBLIC ${SPIRV_TOOLS_CFLAGS_OTHER}) +target_link_libraries(SPIRV ${SPIRV_TOOLS_LIBRARIES}) +if(BUILD_SHARED_LIBS) + target_include_directories(SPIRV PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS}) + target_compile_options(SPIRV PUBLIC ${SPIRV_TOOLS_SHARED_CFLAGS_OTHER}) + target_link_libraries(SPIRV ${SPIRV_TOOLS_SHARED_LIBRARIES}) +endif(BUILD_SHARED_LIBS) + if(ENABLE_OPT) - target_link_libraries(SPIRV PRIVATE MachineIndependent PUBLIC SPIRV-Tools-opt) - target_include_directories(SPIRV PUBLIC - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>) + target_link_libraries(SPIRV glslang) else() target_link_libraries(SPIRV PRIVATE MachineIndependent) endif() @@ -124,6 +134,9 @@ if(GLSLANG_ENABLE_INSTALL) endif() install(TARGETS SPIRV EXPORT glslang-targets) - + # spirv.pc Configuration + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/spirv.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/spirv.pc @ONLY) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/spirv.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) endif() diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index ff04f4f..3789048 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -43,7 +43,7 @@ #include <iostream> #include "SpvTools.h" -#include "spirv-tools/optimizer.hpp" +#include <spirv-tools/optimizer.hpp> namespace glslang { diff --git a/SPIRV/spirv.pc.cmake.in b/SPIRV/spirv.pc.cmake.in new file mode 100644 index 0000000..ccb7bd4 --- /dev/null +++ b/SPIRV/spirv.pc.cmake.in @@ -0,0 +1,11 @@ + prefix=@CMAKE_INSTALL_PREFIX@ + exec_prefix=@CMAKE_INSTALL_PREFIX@ + libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ + includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + + Name: @SPIRV_NAME@ + Description: SPIR-V is a binary intermediate language for representing graphical-shader stages and compute kernels for multiple Khronos APIs, including OpenCL, OpenGL, and Vulkan + Requires: + Version: @SPIRV_VERSION@ + Libs: -L${libdir} -lSPIRV + Cflags: -I${includedir} diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index e0fdb48..6476068 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -63,6 +63,14 @@ set(LIBRARIES SPIRV glslang-default-resource-limits) +if(BUILD_SHARED_LIBS) + set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_SHARED_LIBRARIES}) + target_include_directories(glslang-standalone PUBLIC ${SPIRV_TOOLS_SHARED_INCLUDE_DIRS}) +else() + set(LIBRARIES ${LIBRARIES} ${SPIRV_TOOLS_LIBRARIES}) + target_include_directories(glslang-standalone PUBLIC ${SPIRV_TOOLS_INCLUDE_DIRS}) +endif(BUILD_SHARED_LIBS) + if(WIN32) set(LIBRARIES ${LIBRARIES} psapi) elseif(UNIX) @@ -72,8 +80,6 @@ elseif(UNIX) endif() target_link_libraries(glslang-standalone ${LIBRARIES}) -target_include_directories(glslang-standalone PUBLIC - $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/../External>) if(ENABLE_SPVREMAPPER) set(REMAPPER_SOURCES spirv-remap.cpp) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index e4690f0..4cabc62 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -249,6 +249,8 @@ if(GLSLANG_ENABLE_INSTALL) endforeach() install(FILES ${GLSLANG_BUILD_INFO_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang) + configure_file(${CMAKE_CURRENT_SOURCE_DIR}/glslang.pc.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc @ONLY) + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pkgconfig/glslang.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) install(TARGETS glslang-default-resource-limits EXPORT glslang-targets) endif() diff --git a/glslang/glslang.pc.cmake.in b/glslang/glslang.pc.cmake.in new file mode 100644 index 0000000..7f8563f --- /dev/null +++ b/glslang/glslang.pc.cmake.in @@ -0,0 +1,11 @@ + prefix=@CMAKE_INSTALL_PREFIX@ + exec_prefix=@CMAKE_INSTALL_PREFIX@ + libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@ + includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ + + Name: @PROJECT_NAME@ + Description: OpenGL and OpenGL ES shader front end and validator + Requires: + Version: @VERSION@ + Libs: -L${libdir} -lglslang -lOSDependent -lHLSL -lOGLCompiler -lSPVRemapper + Cflags: -I${includedir} -- 2.44.0
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor