-
Notifications
You must be signed in to change notification settings - Fork 1
/
CMakeLists.txt
97 lines (83 loc) · 3.99 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
# ======================================================================== #
# Copyright 2018-2019 Ingo Wald #
# #
# Licensed under the Apache License, Version 2.0 (the "License"); #
# you may not use this file except in compliance with the License. #
# You may obtain a copy of the License at #
# #
# http://www.apache.org/licenses/LICENSE-2.0 #
# #
# Unless required by applicable law or agreed to in writing, software #
# distributed under the License is distributed on an "AS IS" BASIS, #
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
# See the License for the specific language governing permissions and #
# limitations under the License. #
# ======================================================================== #
if (POLICY CMP0048)
cmake_policy(SET CMP0048 NEW)
endif (POLICY CMP0048)
project(rayjoin LANGUAGES CUDA C CXX VERSION 1.0.1)
cmake_minimum_required(VERSION 3.10)
if (NOT WIN32)
# visual studio doesn't like these (not need them):
set(CMAKE_CXX_FLAGS "--std=c++14")
set(CUDA_PROPAGATE_HOST_FLAGS ON CACHE STRING "Propagate C/CXX_FLAGS and friends to the host compiler via -Xcompile")
endif ()
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
if (WIN32 AND "${CMAKE_GENERATOR}" MATCHES "^(Visual Studio).*")
# Set the base folder where the per-project "core" folders with the *.ptx or *.optixir files get created.
set(MODULE_TARGET_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/$(ConfigurationName)")
# Enable multi-processor build on all Visual Studio versions.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
else ()
# DAR This should be independent of ${CMAKE_BUILD_TYPE} because that single-configuration generator will not create subfolders, will it?
# Otherwise add something with if("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(MODULE_TARGET_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
endif ()
# Some useful macros
macro(ADD_TARGET_PROPERTIES _target _name)
set(_properties)
foreach (_prop ${ARGN})
set(_properties "${_properties} ${_prop}")
endforeach (_prop)
get_target_property(_old_properties ${_target} ${_name})
if (NOT _old_properties)
# In case it's NOTFOUND
set(_old_properties)
endif (NOT _old_properties)
set_target_properties(${_target} PROPERTIES ${_name} "${_old_properties} ${_properties}")
endmacro(ADD_TARGET_PROPERTIES)
macro(TARGET_INCLUDE_SYMBOL target symbol)
if (WIN32)
if (LOCAL_ARCH STREQUAL "amd64")
add_target_properties(${target} LINK_FLAGS /include:${symbol})
endif ()
endif ()
if (UNIX)
add_target_properties(${target} LINK_FLAGS "-Wl,--undefined=${symbol}")
endif ()
endmacro()
include(cmake/configure_build_type.cmake)
include(cmake/FindOptiX.cmake)
include(cmake/nvcuda_compile_module.cmake)
include_directories(${PROJECT_SOURCE_DIR})
find_package(CUDA 11.8 REQUIRED)
include("cmake/FindGFlags.cmake")
if (NOT GFLAGS_FOUND)
message(STATUS "gflags not found, build without gflags")
else ()
include_directories(SYSTEM ${GFLAGS_INCLUDE_DIRS})
endif ()
include("cmake/FindGlog.cmake")
if (NOT GLOG_FOUND)
message(FATAL_ERROR "glog not found, please install the glog library")
else ()
include_directories(SYSTEM ${GLOG_INCLUDE_DIRS})
endif ()
message(STATUS "Build type: ${CMAKE_BUILD_TYPE}")
# ------------------------------------------------------------------
# and final build rules for the project
# ------------------------------------------------------------------
add_subdirectory(src)