diff options
| author | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2023-12-31 15:54:19 +0100 |
|---|---|---|
| committer | Jean-Philippe Bruyère <jp_bruyere@hotmail.com> | 2023-12-31 15:54:19 +0100 |
| commit | b93fc9f9d0c9c3e793ff5d2fdbeaf86009e0f905 (patch) | |
| tree | bbbb4eaa1eb3ac20e4d5d2c46a892f0ca5712cf9 | |
| parent | 3b64b87a871cd7652a4b6abc97d26f766c532e82 (diff) | |
rely on CMAKE BUILD_SHARED_LIBS variable instead of building both lib
| -rw-r--r-- | CMakeLists.txt | 100 |
1 files changed, 38 insertions, 62 deletions
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}) |