OPTION (VKH_BUILD_SHARED_LIB "Build using shared libraries" OFF)
OPTION(VKH_ENABLE_VMA "enable Vulkan Memory Allocator" ON)
-if (VKH_ENABLE_VMA)
- SET(LANG "CXX")
-ELSE()
+#if (VKH_ENABLE_VMA)
+# SET(LANG "CXX")
+#ELSE()
SET(LANG "C")
-ENDIF()
-SET(CMAKE_CXX_STANDARD 11)
+#ENDIF()
+SET(CMAKE_${LANG}_STANDARD 11)
PROJECT(vkh VERSION 0.1.0 DESCRIPTION "Vulkan helpers library" LANGUAGES ${LANG})
IF (VKH_ENABLE_VMA)
ADD_DEFINITIONS (-DUSE_VMA)
ENDIF ()
+
IF (ENABLE_VALIDATION)
ADD_DEFINITIONS (-DVKH_USE_VALIDATION)
ENDIF ()
INCLUDE(GNUInstallDirs)
FILE(GLOB VKH_SRC src/*.c)
-if (VKH_ENABLE_VMA)
- LIST(APPEND VKH_SRC src/VmaUsage.cpp)
-ENDIF()
CONFIGURE_FILE(vkh.pc.in vkh.pc @ONLY)
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/vkh.pc DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/pkgconfig)
GET_DIRECTORY_PROPERTY (vkh_has_root_project PARENT_DIRECTORY)
+if (VKH_ENABLE_VMA)
+ ADD_LIBRARY(libVMA OBJECT src/VmaUsage.cpp)
+ SET_PROPERTY(TARGET libVMA PROPERTY POSITION_INDEPENDENT_CODE ON)
+ENDIF()
+
+ADD_LIBRARY(vkh_obj OBJECT ${VKH_SRC})
+SET_PROPERTY(TARGET vkh_obj PROPERTY POSITION_INDEPENDENT_CODE ON)
+TARGET_INCLUDE_DIRECTORIES(vkh_obj
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${Vulkan_INCLUDE_DIRS}
+)
+
IF (vkh_has_root_project)
IF (VKH_BUILD_SHARED_LIBS)
- ADD_LIBRARY("${PROJECT_NAME}" SHARED ${VKH_SRC})
+ ADD_LIBRARY("${PROJECT_NAME}" SHARED $<TARGET_OBJECTS:vkh_obj> $<TARGET_OBJECTS:libVMA>)
TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}" PUBLIC -DVKH_SHARED_BUILD)
setup_lib ("${PROJECT_NAME}")
ELSE()
- ADD_LIBRARY("${PROJECT_NAME}" STATIC ${VKH_SRC})
+ ADD_LIBRARY("${PROJECT_NAME}" STATIC $<TARGET_OBJECTS:vkh_obj> $<TARGET_OBJECTS:libVMA>)
setup_lib ("${PROJECT_NAME}")
ENDIF()
ELSE()
- ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${VKH_SRC})
+ ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED $<TARGET_OBJECTS:vkh_obj> $<TARGET_OBJECTS:libVMA>)
SET_PROPERTY(TARGET "${PROJECT_NAME}_shared" PROPERTY POSITION_INDEPENDENT_CODE ON)
TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}_shared" PUBLIC -DVKH_SHARED_BUILD)
setup_lib ("${PROJECT_NAME}_shared")
- ADD_LIBRARY("${PROJECT_NAME}_static" STATIC ${VKH_SRC})
+ ADD_LIBRARY("${PROJECT_NAME}_static" STATIC $<TARGET_OBJECTS:vkh_obj> $<TARGET_OBJECTS:libVMA>)
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")