aboutsummaryrefslogtreecommitdiffstatsci
diff options
context:
space:
mode:
authorJean-Philippe Bruyère <jp_bruyere@hotmail.com>2023-12-31 15:54:19 +0100
committerJean-Philippe Bruyère <jp_bruyere@hotmail.com>2023-12-31 15:54:19 +0100
commitb93fc9f9d0c9c3e793ff5d2fdbeaf86009e0f905 (patch)
treebbbb4eaa1eb3ac20e4d5d2c46a892f0ca5712cf9
parent3b64b87a871cd7652a4b6abc97d26f766c532e82 (diff)
rely on CMAKE BUILD_SHARED_LIBS variable instead of building both lib
-rw-r--r--CMakeLists.txt100
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})