From: Jean-Philippe Bruyère Date: Sun, 31 Dec 2023 14:54:19 +0000 (+0100) Subject: rely on CMAKE BUILD_SHARED_LIBS variable instead of building both lib X-Git-Url: https://git.osiis.dedyn.io/?a=commitdiff_plain;h=b93fc9f9d0c9c3e793ff5d2fdbeaf86009e0f905;p=jp%2Fvkhelpers.git rely on CMAKE BUILD_SHARED_LIBS variable instead of building both lib --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 5563e16..69196c4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.16) -OPTION (VKH_BUILD_SHARED_LIB "Build using shared libraries" OFF) +#OPTION (VKH_BUILD_SHARED_LIB "Build using shared libraries" OFF) OPTION(VKH_USE_VMA "enable Vulkan Memory Allocator" ON) - SET(LANG "C") SET(CMAKE_${LANG}_STANDARD 11) @@ -11,7 +10,7 @@ PROJECT(vkh VERSION 0.1.0 DESCRIPTION "Vulkan helpers library" LANGUAGES ${LANG} SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") IF(NOT CMAKE_BUILD_TYPE) - SET(CMAKE_BUILD_TYPE Release) + SET(CMAKE_BUILD_TYPE Release) ENDIF() IF (CYGWIN) @@ -30,7 +29,7 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug") ELSE() UNSET(ENABLE_VALIDATION CACHE) IF (UNIX) - ADD_COMPILE_OPTIONS(-w -fvisibility=hidden) + #ADD_COMPILE_OPTIONS(-w -fvisibility=hidden) #ADD_COMPILE_OPTIONS(-flto) ELSEIF(MSVC) ADD_COMPILE_OPTIONS(/W0) @@ -55,77 +54,54 @@ FILE(GLOB VKH_SRC src/*.c src/deps/*.c) CONFIGURE_FILE(vkh.pc.in vkh.pc @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/vkh.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig) -FUNCTION (setup_lib LibName) - SET_TARGET_PROPERTIES("${LibName}" PROPERTIES - OUTPUT_NAME ${PROJECT_NAME} - VERSION ${PROJECT_VERSION} - SOVERSION 1 - C_STANDARD 11 - C_EXTENSIONS OFF - PUBLIC_HEADER include/vkh.h - LINKER_LANGUAGE C - ) - TARGET_INCLUDE_DIRECTORIES("${LibName}" - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/src - PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/include - ${Vulkan_INCLUDE_DIRS} - ) - if (VKH_USE_VMA) - TARGET_LINK_LIBRARIES("${LibName}" - PRIVATE - libVMA - ) - ENDIF() - TARGET_LINK_LIBRARIES("${LibName}" - PUBLIC - ${Vulkan_LIBRARIES} - Threads::Threads - ) - INSTALL(TARGETS "${LibName}" - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -ENDFUNCTION(setup_lib) - GET_DIRECTORY_PROPERTY (vkh_has_root_project PARENT_DIRECTORY) if (VKH_USE_VMA) ADD_DEFINITIONS (-DVKH_USE_VMA) SET(VKH_USE_VMA ON PARENT_SCOPE) - ADD_LIBRARY(libVMA STATIC src/vma/VmaUsage.cpp) + ADD_LIBRARY(VMA STATIC src/vma/VmaUsage.cpp) SET_TARGET_PROPERTIES( - libVMA PROPERTIES + VMA PROPERTIES POSITION_INDEPENDENT_CODE ON LINKER_LANGUAGE C ) - TARGET_INCLUDE_DIRECTORIES(libVMA + TARGET_INCLUDE_DIRECTORIES(VMA PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/vma ${Vulkan_INCLUDE_DIRS} ) ENDIF() -IF (vkh_has_root_project) - IF (VKH_BUILD_SHARED_LIBS) - ADD_LIBRARY("${PROJECT_NAME}" SHARED ${VKH_SRC}) - SET_PROPERTY(TARGET "${PROJECT_NAME}" PROPERTY POSITION_INDEPENDENT_CODE ON) - TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}" PUBLIC -DVKH_SHARED_LINKING) - setup_lib ("${PROJECT_NAME}") - ELSE() - ADD_LIBRARY("${PROJECT_NAME}" STATIC ${VKH_SRC}) - SET_PROPERTY(TARGET "${PROJECT_NAME}" PROPERTY POSITION_INDEPENDENT_CODE OFF) - setup_lib ("${PROJECT_NAME}") - ENDIF() -ELSE() - ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${VKH_SRC}) - TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}_shared" PUBLIC -DVKH_SHARED_BUILD) - SET_PROPERTY(TARGET "${PROJECT_NAME}_shared" PROPERTY POSITION_INDEPENDENT_CODE ON) - setup_lib ("${PROJECT_NAME}_shared") - ADD_LIBRARY("${PROJECT_NAME}_static" STATIC ${VKH_SRC}) - target_compile_definitions("${PROJECT_NAME}_static" PUBLIC -DVKH_STATIC_BUILD) - SET_PROPERTY(TARGET "${PROJECT_NAME}_static" PROPERTY POSITION_INDEPENDENT_CODE OFF) - setup_lib ("${PROJECT_NAME}_static") +ADD_LIBRARY("${PROJECT_NAME}" ${VKH_SRC}) +SET_TARGET_PROPERTIES("${PROJECT_NAME}" PROPERTIES + OUTPUT_NAME ${PROJECT_NAME} + VERSION ${PROJECT_VERSION} + SOVERSION 1 + C_STANDARD 11 + C_EXTENSIONS OFF + PUBLIC_HEADER include/vkh.h + LINKER_LANGUAGE C +) +TARGET_INCLUDE_DIRECTORIES("${PROJECT_NAME}" + PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/src + PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${Vulkan_INCLUDE_DIRS} +) +if (VKH_USE_VMA) + TARGET_LINK_LIBRARIES("${PROJECT_NAME}" + PRIVATE + VMA + ) ENDIF() +TARGET_LINK_LIBRARIES("${PROJECT_NAME}" + PUBLIC + ${Vulkan_LIBRARIES} + Threads::Threads +) +INSTALL(TARGETS "${PROJECT_NAME}" + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})