-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
101 lines (87 loc) · 2.46 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
cmake_minimum_required(VERSION 3.13)
# set C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# set project name
project(Toki)
# add sanitizers to module path
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/external/sanitizers-cmake/cmake" ${CMAKE_MODULE_PATH})
find_package(Sanitizers)
# check options
option(TK_USE_DOUBLE "Use double-precision floating point numbers." OFF)
if (TK_USE_DOUBLE)
add_compile_definitions(TK_USE_DOUBLE)
endif ()
if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to 'Release' as none was specified.")
set(CMAKE_BUILD_TYPE Release CACHE STRING "Choose build type." FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release"
"MinSizeRel" "RelWithDebInfo")
endif ()
if (CMAKE_BUILD_TYPE MATCHES "Debug")
add_compile_definitions(TK_DEBUG_MODE)
endif ()
# add flags
set(CMAKE_CXX_FLAGS "-Wshadow-uncaptured-local -march=native")
set(CMAKE_CXX_FLAGS_DEBUG "-g")
set(CMAKE_CXX_FLAGS_RELEASE "-O3")
# add sources
set(TK_CORE_HEADER
src/core/aabb.hpp
src/core/bsdf.hpp
src/core/bxdf.hpp
src/core/camera.hpp
src/core/fresnel.hpp
src/core/image.hpp
src/core/integrator.hpp
src/core/interaction.hpp
src/core/light.hpp
src/core/material.hpp
src/core/random.hpp
src/core/ray.hpp
src/core/region.hpp
src/core/sampler.hpp
src/core/scene.hpp
src/core/shape.hpp
src/core/spectrum.hpp
src/core/transform.hpp)
set(TK_CORE_SOURCE
src/core/bsdf.cpp
src/core/bxdf.cpp
src/core/fresnel.cpp
src/core/image.cpp
src/core/integrator.cpp
src/core/interaction.cpp
src/core/light.cpp
src/core/random.cpp
src/core/scene.cpp
src/core/shape.cpp
src/core/transform.cpp)
file(GLOB TK_SOURCE
src/accelerator/*
src/bsdf/*
src/camera/*
src/image/*
src/integrator/*
src/light/*
src/material/*
src/math/*
src/region/*
src/sampler/*
src/shape/*
src/system/*
src/util/*)
add_library(toki_lib STATIC
${TK_CORE_HEADER}
${TK_CORE_SOURCE}
${TK_SOURCE})
add_sanitizers(toki_lib)
# add executable
add_executable(toki_exe src/system/toki.cpp)
add_sanitizers(toki_exe)
# set include directories
target_include_directories(toki_lib PUBLIC include)
target_include_directories(toki_lib PUBLIC src)
set_target_properties(toki_exe PROPERTIES OUTPUT_NAME toki)
target_link_libraries(toki_exe PRIVATE toki_lib)