-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
157 lines (138 loc) · 5.39 KB
/
Copy pathCMakeLists.txt
File metadata and controls
157 lines (138 loc) · 5.39 KB
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
cmake_minimum_required(VERSION 3.31)
project(NodesFX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
# Cuda
add_definitions(-DCUDA) # TODO This enables cuda in code, but could I not just check if the cuda package was found?
set(CMAKE_CUDA_ARCHITECTURES 75)
include(CheckLanguage)
check_language(CUDA)
enable_language(CUDA)
find_package(CUDAToolkit)
# sdl
add_subdirectory(vendored/SDL EXCLUDE_FROM_ALL)
# opengl
find_package(OpenGL REQUIRED)
# imgui
add_definitions(-DIMGUI_DEFINE_MATH_OPERATORS)
include_directories(vendored/imgui vendored/imgui/backends)
add_library(imgui STATIC
vendored/imgui/imgui.cpp
vendored/imgui/imgui_demo.cpp
vendored/imgui/imgui_draw.cpp
vendored/imgui/imgui_tables.cpp
vendored/imgui/imgui_widgets.cpp
vendored/imgui/backends/imgui_impl_opengl3.cpp
vendored/imgui/backends/imgui_impl_sdl3.cpp
)
target_link_libraries(imgui PRIVATE SDL3::SDL3 OpenGL::GL)
# imgui node editor
include_directories(vendored/imgui-node-editor)
add_library(imgui_node_editor STATIC
vendored/imgui-node-editor/imgui_node_editor.cpp
vendored/imgui-node-editor/imgui_node_editor_api.cpp
vendored/imgui-node-editor/imgui_canvas.cpp
vendored/imgui-node-editor/crude_json.cpp
)
target_link_libraries(imgui_node_editor PRIVATE imgui)
# nlohmann_json
set(JSON_Install OFF CACHE INTERNAL "")
add_subdirectory(vendored/json)
# inja
add_library(inja INTERFACE)
target_include_directories(inja INTERFACE vendored/inja)
# imgproc lib
include_directories(imgproc/include)
add_library(imgproc STATIC
imgproc/include/imgproc.h
# types
imgproc/include/Color.h
imgproc/include/Vec.h
imgproc/include/TexData.h
# cpu
imgproc/cpu/blur_cpu.cpp
imgproc/cpu/solid_cpu.cpp
imgproc/cpu/sample_gradient_cpu.cpp
# cuda
imgproc/cuda/blur_cuda.cu
imgproc/cuda/solid_cuda.cu
imgproc/cuda/sample_gradient_cuda.cu
# opencl
)
# Add CUDA
target_link_libraries(imgproc CUDA::cudart CUDA::cuda_driver)
# main executable
add_executable(${PROJECT_NAME} main.cpp
# generator
src/generator/INode.h
src/generator/IDataHandle.h
src/generator/IHandle.h
src/generator/OutputHandle.h
src/generator/InputHandle.h
# implementations
src/implementations/NodeRegistry.h
src/implementations/math/operations/AddNode.cpp
src/implementations/math/operations/AddNode.h
src/implementations/math/vectors/SplitVectorNode.h
src/implementations/math/vectors/SplitVectorNode.cpp
src/implementations/effects/SolidColorNode.cpp
src/implementations/effects/SolidColorNode.h
src/implementations/effects/BlurNode.cpp
src/implementations/effects/BlurNode.h
src/implementations/io/SampleGradientTextureNode.cpp
src/implementations/io/SampleGradientTextureNode.h
# util
src/util/LoadTexture.h
imgproc/include/Vec.h
src/util/TextUtil.h
imgproc/include/TexData.h
imgproc/include/Color.h
# designer
src/designer/ProjectWindow.cpp
src/designer/ProjectWindow.h
src/designer/IdManager.h
src/designer/nodes/LinkInfo.h
src/designer/App.cpp
src/designer/App.h
# designer/nodes
src/designer/nodes/IVisualNode.h
src/designer/nodes/VisualNode.h
src/designer/nodes/VisualNode.cpp
src/designer/nodes/VisualHandle.cpp
src/designer/nodes/VisualHandle.h
# designer/nodes/input
src/designer/nodes/input/InputNodeRegistry.h
src/designer/nodes/input/InputTraits.h
src/designer/nodes/input/InputNode.h
src/designer/nodes/input/VisualInputNode.h
src/designer/nodes/input/VisualInputNode.cpp
src/implementations/math/vectors/VectorLengthNode.cpp
src/implementations/math/vectors/VectorLengthNode.h
src/implementations/math/trigonometry/SinNode.cpp
src/implementations/math/trigonometry/SinNode.h
src/implementations/math/trigonometry/CosNode.cpp
src/implementations/math/trigonometry/CosNode.h
src/implementations/math/trigonometry/TanNode.cpp
src/implementations/math/trigonometry/TanNode.h
src/implementations/math/operations/SubtractNode.cpp
src/implementations/math/operations/SubtractNode.h
imgproc/cpu/blur_cpu.cpp
imgproc/include/imgproc.h
src/designer/rendering/ITextureHandle.h
src/designer/rendering/GLTextureHandle.h
src/implementations/math/operations/MultiplyNode.cpp
src/implementations/math/operations/MultiplyNode.h
src/implementations/math/operations/DivideNode.cpp
src/implementations/math/operations/DivideNode.h
src/implementations/math/operations/PowerNode.cpp
src/implementations/math/operations/PowerNode.h
src/implementations/TypeTraits.h
src/designer/Project.h
)
target_link_libraries(${PROJECT_NAME} PRIVATE SDL3::SDL3 imgui imgui_node_editor OpenGL::GL inja imgproc nlohmann_json::nlohmann_json)
# copy assets
add_custom_target(copy_assets
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_LIST_DIR}/copy_assets.cmake
)
add_dependencies(${PROJECT_NAME} copy_assets)