diff --git a/CMakeLists.txt b/CMakeLists.txt index b2e92ef..cf0832b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -152,6 +152,17 @@ function(define_pkg_config_file NAME LIBS) endif() endfunction() +if(BUILD_SHARED_LIBS) define_pkg_config_file(shaderc -lshaderc_shared) +else() +foreach(lib IN LISTS CMAKE_CXX_IMPLICIT_LINK_LIBRARIES) + if(lib IN_LIST CMAKE_C_IMPLICIT_LINK_LIBRARIES) + continue() + elseif(EXISTS "${lib}") + string(APPEND EXTRA_STATIC_PKGCONFIG_LIBS " ${lib}") + else() + string(APPEND EXTRA_STATIC_PKGCONFIG_LIBS " -l${lib}") + endif() +endforeach() +define_pkg_config_file(shaderc "-lshaderc ${EXTRA_STATIC_PKGCONFIG_LIBS} -lshaderc_util") -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)