aboutsummaryrefslogtreecommitdiffstatsci
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt161
1 files changed, 75 insertions, 86 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5d6ddd0..7fdf0e9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -20,29 +20,29 @@ IF (CYGWIN)
ENDIF()
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
- ADD_DEFINITIONS (-DDEBUG)
- OPTION(ENABLE_VALIDATION "enable vulkan validation layer" ON)
- IF (UNIX)
- ADD_COMPILE_OPTIONS(-Wall -Wno-extra -Wno-unknown-pragmas)
- ELSEIF (MSVC)
- ADD_COMPILE_OPTIONS(/W4 /wd4204 /wd4221 /wd4100)
- ENDIF()
+ ADD_DEFINITIONS (-DDEBUG)
+ OPTION(ENABLE_VALIDATION "enable vulkan validation layer" ON)
+ IF (UNIX)
+ ADD_COMPILE_OPTIONS(-Wall -Wno-extra -Wno-unknown-pragmas)
+ ELSEIF (MSVC)
+ ADD_COMPILE_OPTIONS(/W4 /wd4204 /wd4221 /wd4100)
+ ENDIF()
ELSE()
- UNSET(ENABLE_VALIDATION CACHE)
- IF (UNIX)
- ADD_COMPILE_OPTIONS(-w -fvisibility=hidden)
- #ADD_COMPILE_OPTIONS(-flto)
- ELSEIF(MSVC)
- ADD_COMPILE_OPTIONS(/W0)
- IF (${LANG} EQUAL "C" AND MSVC)
- ADD_COMPILE_OPTIONS(/TC)
- ENDIF ()
- ENDIF()
+ UNSET(ENABLE_VALIDATION CACHE)
+ IF (UNIX)
+ ADD_COMPILE_OPTIONS(-w -fvisibility=hidden)
+ #ADD_COMPILE_OPTIONS(-flto)
+ ELSEIF(MSVC)
+ ADD_COMPILE_OPTIONS(/W0)
+ IF (${LANG} EQUAL "C" AND MSVC)
+ ADD_COMPILE_OPTIONS(/TC)
+ ENDIF ()
+ ENDIF()
ENDIF()
IF (ENABLE_VALIDATION)
- ADD_DEFINITIONS (-DVKH_USE_VALIDATION)
+ ADD_DEFINITIONS (-DVKH_USE_VALIDATION)
ENDIF ()
FIND_PACKAGE(Vulkan REQUIRED)
@@ -56,81 +56,70 @@ 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
- )
- TARGET_INCLUDE_DIRECTORIES("${LibName}"
- PRIVATE
- ${CMAKE_CURRENT_SOURCE_DIR}/src
- PUBLIC
- ${CMAKE_CURRENT_SOURCE_DIR}/include
- ${Vulkan_INCLUDE_DIRS}
- )
- 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})
+ 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
+ )
+ TARGET_INCLUDE_DIRECTORIES("${LibName}"
+ PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${Vulkan_INCLUDE_DIRS}
+ )
+ 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 OBJECT src/VmaUsage.cpp)
- SET_TARGET_PROPERTIES(
- libVMA PROPERTIES
- POSITION_INDEPENDENT_CODE ON
- LINKER_LANGUAGE CXX
- )
- TARGET_INCLUDE_DIRECTORIES(libVMA
- PUBLIC
- ${CMAKE_CURRENT_SOURCE_DIR}/include
- ${Vulkan_INCLUDE_DIRS}
- )
- SET (VKH_LIB_SRC $<TARGET_OBJECTS:vkh_obj> $<TARGET_OBJECTS:libVMA>)
-ELSE()
- SET (VKH_LIB_SRC $<TARGET_OBJECTS:vkh_obj>)
+ ADD_DEFINITIONS (-DVKH_USE_VMA)
+ SET(VKH_USE_VMA ON PARENT_SCOPE)
+ ADD_LIBRARY(libVMA OBJECT src/VmaUsage.cpp)
+ SET_TARGET_PROPERTIES(
+ libVMA PROPERTIES
+ POSITION_INDEPENDENT_CODE ON
+ LINKER_LANGUAGE CXX
+ )
+ TARGET_INCLUDE_DIRECTORIES(libVMA
+ PUBLIC
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${Vulkan_INCLUDE_DIRS}
+ )
+ LIST (APPEND VKH_SRC $<TARGET_OBJECTS:libVMA>)
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_LIB_SRC})
- TARGET_COMPILE_DEFINITIONS("${PROJECT_NAME}" PUBLIC -DVKH_SHARED_BUILD)
- setup_lib ("${PROJECT_NAME}")
- ELSE()
- ADD_LIBRARY("${PROJECT_NAME}" STATIC ${VKH_LIB_SRC})
- setup_lib ("${PROJECT_NAME}")
- ENDIF()
+ 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_LIB_SRC})
- 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_LIB_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}_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")
ENDIF()