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)
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)
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)
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})