-
Notifications
You must be signed in to change notification settings - Fork 0
/
CMakeLists.txt
118 lines (102 loc) · 4.38 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
cmake_minimum_required(VERSION 3.26.4)
project(FoxFury CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_SUPPRESS_REGENERATION true)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
if(MSVC)
add_compile_options(/W4)
else()
add_compile_options(-Wall -Wextra -Wshadow -Wconversion -pedantic)
endif()
set(SRC_DIR "${PROJECT_SOURCE_DIR}/src")
set(INCLUDE_DIR "${PROJECT_SOURCE_DIR}/include")
add_library(${PROJECT_NAME} STATIC
"include/main.cpp"
)
add_subdirectory("thirdparty/volk")
add_subdirectory("thirdparty/VulkanMemoryAllocator")
add_subdirectory("thirdparty/glfw")
add_subdirectory("thirdparty/glm")
add_subdirectory("thirdparty/gli")
set(TINYGLTF_HEADER_ONLY ON CACHE INTERNAL "" FORCE)
set(TINYGLTF_INSTALL OFF CACHE INTERNAL "" FORCE)
add_subdirectory("thirdparty/tinygltf")
target_link_libraries(${PROJECT_NAME} PRIVATE volk VulkanMemoryAllocator)
# Set custom output directories - to have same behaviour accross different compilers
# On linux with make it doesn't work, no debug or release folders
set(OUTPUTDIR "${CMAKE_CURRENT_SOURCE_DIR}/binaries")
# First for the generic no-config case (e.g. with mingw)
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY ${OUTPUTDIR} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY ${OUTPUTDIR} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${OUTPUTDIR} )
# Second, for multi-config builds (e.g. msvc)
foreach( OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES} )
string( TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG )
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${OUTPUTDIR} )
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${OUTPUTDIR} )
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${OUTPUTDIR} )
endforeach( OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES )
set_target_properties(${PROJECT_NAME} PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY ${OUTPUTDIR}
LIBRARY_OUTPUT_DIRECTORY ${OUTPUTDIR}
RUNTIME_OUTPUT_DIRECTORY ${OUTPUTDIR}
)
target_include_directories(${PROJECT_NAME} PUBLIC ${INCLUDE_DIR} ${SRC_DIR})
target_sources(${PROJECT_NAME} PRIVATE
"${INCLUDE_DIR}/main.cpp"
"${INCLUDE_DIR}/IContext.h"
"${INCLUDE_DIR}/backend/vulkan/VulkanContextFactory.h"
"${SRC_DIR}/backend/vulkan/VulkanContextFactory.cpp"
"${SRC_DIR}/Asserts.h"
"${SRC_DIR}/ResourceId.h"
"${SRC_DIR}/RICacheMap.h"
"${SRC_DIR}/backend/vulkan/UtilsVk.h"
"${SRC_DIR}/RingBufferManager.h"
"${SRC_DIR}/backend/vulkan/ResourceTransfer.h"
"${SRC_DIR}/backend/vulkan/ResourceTransfer.cpp"
"${SRC_DIR}/backend/vulkan/VulkanContext.h"
"${SRC_DIR}/backend/vulkan/VulkanContext.cpp"
"${SRC_DIR}/backend/vulkan/VulkanInstance.h"
"${SRC_DIR}/backend/vulkan/VulkanInstance.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice2.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice2.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice3.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice3.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice4.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice4.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice5.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice5.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice6.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice6.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice7.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice7.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice8.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice8.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice9.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice9.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice10.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice10.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice11.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice11.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice12.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice12.cpp"
"${SRC_DIR}/backend/vulkan/VulkanDevice13.h"
"${SRC_DIR}/backend/vulkan/VulkanDevice13.cpp"
)
option(BUILD_TESTS "Build tests" ON)
option(BUILD_EXAMPLES "Build examples" ON)
if(BUILD_EXAMPLES)
set(LIB_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/include")
FILE(REAL_PATH "thirdparty/stb" STB_INCLUDE_DIR)
add_subdirectory("examples/HelloTriangle")
add_subdirectory("examples/Rendering")
add_subdirectory("examples/SpinningTriangle")
add_subdirectory("examples/TexturedQuad")
add_subdirectory("examples/DepthBuffer")
endif()
if(BUILD_TESTS)
add_subdirectory("tests")
endif()