-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
60 lines (48 loc) · 2.08 KB
/
CMakeLists.txt
File metadata and controls
60 lines (48 loc) · 2.08 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
cmake_minimum_required(VERSION 3.8)
if(NOT DEFINED CMAKE_CUDA_HOST_COMPILER)
set(CMAKE_CUDA_HOST_COMPILER "/usr/bin/g++-14" CACHE FILEPATH "Host compiler for NVCC" FORCE)
endif()
project(pathtracer LANGUAGES CXX CUDA)
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_CUDA_ARCHITECTURES 89)
option(BUILD_DEBUG "Build with debug settings" OFF)
set(BUILD_DEBUG ${BUILD_DEBUG} CACHE BOOL "Build debug" FORCE)
if (BUILD_DEBUG)
# switch to Debug build
set(CMAKE_BUILD_TYPE Debug CACHE STRING "" FORCE)
# C++ debug flags: symbols, no opt, extra warnings
set(CMAKE_CXX_FLAGS_DEBUG
"${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -Wall -Wextra -Wpedantic")
# CUDA debug flags: device debug info, line info
set(CMAKE_CUDA_FLAGS_DEBUG
"${CMAKE_CUDA_FLAGS_DEBUG} -G -lineinfo")
endif()
set(APPLICATION_SOURCE
src/scene/bvh.cpp
src/scene/bvh.cu
src/host/raytraced_renderer.cpp
src/host/raytraced_renderer.cu
src/host/application.cpp
)
find_package(assimp REQUIRED)
find_package(OpenEXR REQUIRED)
add_executable(pathtracer ${APPLICATION_SOURCE})
target_include_directories(pathtracer PUBLIC src)
target_link_libraries(pathtracer
assimp::assimp
OpenEXR::OpenEXR)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
add_custom_command(TARGET pathtracer POST_BUILD
BYPRODUCTS
${CMAKE_CURRENT_BINARY_DIR}/pathtracer.cubin
${CMAKE_CURRENT_BINARY_DIR}/pathtracer.ptx
${CMAKE_CURRENT_BINARY_DIR}/pathtracer.sass
COMMAND ${CMAKE_COMMAND} -E env PATH=$ENV{PATH}
cuobjdump --extract-elf all $<TARGET_FILE:pathtracer>
COMMAND ${CMAKE_COMMAND} -E rename pathtracer.2.sm_89.cubin $<TARGET_FILE_DIR:pathtracer>/pathtracer.cubin
COMMAND ${CMAKE_COMMAND} -E remove -f pathtracer.1.sm_89.cubin
COMMAND ${CMAKE_COMMAND} -E env PATH=$ENV{PATH}
cuobjdump --dump-ptx $<TARGET_FILE:pathtracer> > $<TARGET_FILE_DIR:pathtracer>/pathtracer.ptx
COMMAND ${CMAKE_COMMAND} -E env PATH=$ENV{PATH}
nvdisasm --print-line-info -hex $<TARGET_FILE_DIR:pathtracer>/pathtracer.cubin > $<TARGET_FILE_DIR:pathtracer>/pathtracer.sass
COMMENT "Generating cubin, PTX and SASS dumps for pathtracer")