aboutsummaryrefslogtreecommitdiffstatsci
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt78
1 files changed, 78 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..5c0644f
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,78 @@
+CMAKE_MINIMUM_REQUIRED(VERSION 3.9)
+
+PROJECT(vke VERSION 0.1.0 DESCRIPTION "Vulkan Engine")
+
+SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
+SET(CMAKE_CXX_FLAGS "-W -Wall")
+SET(CMAKE_EXE_LINKER_FLAGS "-lm")
+
+IF(NOT CMAKE_BUILD_TYPE)
+ SET(CMAKE_BUILD_TYPE Debug)
+ENDIF()
+
+if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+ ADD_DEFINITIONS (-DDEBUG)
+ OPTION(ENABLE_VALIDATION "enable vulkan validation layer" ON)
+ELSE()
+ OPTION(ENABLE_VALIDATION "enable vulkan validation layer" OFF)
+ENDIF()
+
+if (NOT VULKAN_SDK)
+ set(VULKAN_SDK "$ENV{VULKAN_SDK}" CACHE STRING "LunarG Vulkan SDK path")
+ if (VULKAN_SDK)
+ set(ENV{VULKAN_SDK} ${VULKAN_SDK})
+ SET(ENV{VK_LAYER_PATH} "${VULKAN_SDK}/etc/explicit_layer.d")
+ endif ()
+endif ()
+
+MESSAGE(STATUS "VULKAN_SDK = $ENV{VULKAN_SDK}")
+MESSAGE(STATUS "VK_LAYER_PATH = $ENV{VK_LAYER_PATH}")
+
+include_directories(external/glm)
+include_directories(external/gli)
+include_directories(external/glfw)
+
+if (NOT TARGET vkh_static)
+ add_subdirectory (external/vkh)
+endif()
+
+FIND_PACKAGE(Vulkan REQUIRED)
+#FIND_PACKAGE(GLFW3)
+
+FILE(GLOB SOURCES "src/*.cpp")
+
+INCLUDE(GNUInstallDirs)
+
+#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
+ PUBLIC_HEADER include/vke.h
+ )
+ TARGET_INCLUDE_DIRECTORIES(${LibName} PRIVATE
+ ${CMAKE_CURRENT_SOURCE_DIR}/include
+ ${CMAKE_CURRENT_SOURCE_DIR}/src
+ ${Vulkan_INCLUDE_DIRS}
+ )
+ TARGET_LINK_LIBRARIES(${LibName}
+ ${Vulkan_LIBRARIES}
+ vkh_static
+ #${GLFW3_LIBRARY}
+ )
+ INSTALL(TARGETS ${LibName}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
+ENDFUNCTION ()
+
+ADD_LIBRARY("${PROJECT_NAME}_static" STATIC ${SOURCES})
+SET_PROPERTY(TARGET "${PROJECT_NAME}_static" PROPERTY POSITION_INDEPENDENT_CODE OFF)
+setup_lib ("${PROJECT_NAME}_static")
+
+ADD_LIBRARY("${PROJECT_NAME}_shared" SHARED ${SOURCES})
+SET_PROPERTY(TARGET "${PROJECT_NAME}_static" PROPERTY POSITION_INDEPENDENT_CODE ON)
+setup_lib ("${PROJECT_NAME}_shared")