-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
86 lines (75 loc) · 3.6 KB
/
Copy pathCMakeLists.txt
File metadata and controls
86 lines (75 loc) · 3.6 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
cmake_minimum_required(VERSION 3.2)
project(csc4005_imgui CUDA CXX)
set(CMAKE_CUDA_STANDARD 14)
set(CMAKE_CXX_STANDARD 20)
find_package(OpenMP REQUIRED)
find_package(SDL2 REQUIRED)
find_package(Freetype REQUIRED)
find_package(MPI REQUIRED)
find_package(Threads REQUIRED)
find_package(CUDA 9.0 REQUIRED)
set(CMAKE_CXX_STANDARD 20)
set(OpenGL_GL_PREFERENCE "GLVND")
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -ccbin=/opt/rh/devtoolset-10/root/usr/bin/g++ -gencode=arch=compute_75,code=[sm_75,compute_75]")
find_package(OpenGL REQUIRED)
include_directories(
include
imgui
imgui/backends
${SDL2_INCLUDE_DIRS}
${FREETYPE_INCLUDE_DIRS}
${MPI_CXX_INCLUDE_DIRS})
file(GLOB IMGUI_SRC
imgui/*.cpp
imgui/backends/imgui_impl_sdl.cpp
imgui/backends/imgui_impl_opengl2.cpp
imgui/misc/freetype/imgui_freetype.cpp
imgui/misc/cpp/imgui_stdlib.cpp
)
add_library(core STATIC ${IMGUI_SRC})
file(GLOB ALL_OTHER_SRC src/*.cpp src/*.c)
file(GLOB CUDA_SRC src/cuda/*.cpp src/cuda/*.c src/cuda/*.cu)
add_executable(nb_cuda ${CUDA_SRC})
add_executable(nb_mpi ${ALL_OTHER_SRC})
add_executable(nb_pthread ${ALL_OTHER_SRC})
add_executable(nb_omp ${ALL_OTHER_SRC})
add_executable(nb_hybrid ${ALL_OTHER_SRC})
get_filename_component(FONT_PATH imgui/misc/fonts/DroidSans.ttf ABSOLUTE)
target_link_libraries(core PUBLIC
Freetype::Freetype SDL2::SDL2 OpenGL::GL ${CMAKE_DL_LIBS} Threads::Threads ${MPI_CXX_LIBRARIES})
set_target_properties(
nb_cuda
PROPERTIES
CUDA_SEPARABLE_COMPILATION ON)
target_compile_definitions(core PUBLIC -DImDrawIdx=unsigned)
target_link_libraries(nb_mpi core)
target_compile_options(nb_mpi PRIVATE -Werror -Wall -Wextra -Wpedantic)
target_compile_definitions(nb_mpi PRIVATE -DFONT_PATH=\"${FONT_PATH}\" -DMPI)
target_link_libraries(nb_pthread core)
target_compile_options(nb_pthread PRIVATE -Werror -Wall -Wextra -Wpedantic)
target_compile_definitions(nb_pthread PRIVATE -DFONT_PATH=\"${FONT_PATH}\" -DPTHREAD)
target_link_libraries(nb_omp core)
target_compile_options(nb_omp PRIVATE -Werror -Wall -Wextra -Wpedantic)
target_compile_definitions(nb_omp PRIVATE -DFONT_PATH=\"${FONT_PATH}\" -DOPENMP)
target_link_libraries(nb_hybrid core)
target_compile_options(nb_hybrid PRIVATE -Werror -Wall -Wextra -Wpedantic)
target_compile_definitions(nb_hybrid PRIVATE -DFONT_PATH=\"${FONT_PATH}\" -DMPI -DHYBRID)
target_link_libraries(nb_cuda core)
target_compile_definitions(core PUBLIC -DImDrawIdx=unsigned)
target_compile_definitions(nb_cuda PRIVATE -DFONT_PATH=\"${FONT_PATH}\")
target_link_libraries(nb_cuda ${CUDA_LIBRARIES})
target_compile_options(nb_omp PRIVATE
$<$<COMPILE_LANGUAGE:C>:${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}>
$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}>)
target_compile_options(nb_hybrid PRIVATE
$<$<COMPILE_LANGUAGE:C>:${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}>
$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}>)
target_link_options(nb_omp PRIVATE ${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS} -fopenmp=libomp)
target_link_options(nb_hybrid PRIVATE ${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS} -fopenmp=libomp)
if (WIN32)
target_link_options(nb_cuda BEFORE PRIVATE -lmingw32 -lSDL2main -lSDL2 -mwindows)
target_link_options(nb_mpi BEFORE PRIVATE -lmingw32 -lSDL2main -lSDL2 -mwindows)
target_link_options(nb_omp BEFORE PRIVATE -lmingw32 -lSDL2main -lSDL2 -mwindows)
target_link_options(nb_pthread BEFORE PRIVATE -lmingw32 -lSDL2main -lSDL2 -mwindows)
target_link_options(nb_hybrid BEFORE PRIVATE -lmingw32 -lSDL2main -lSDL2 -mwindows)
endif()