-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
91 lines (77 loc) · 2.88 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
cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
project(MCML LANGUAGES CXX CUDA VERSION 0.0.4)
find_package(CUDA REQUIRED)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -no-pie")
include_directories(${PROJECT_SOURCE_DIR})
include_directories(${PROJECT_BINARY_DIR})
# Add definitions for project build details
# build date definitions
string(TIMESTAMP CURRENT_DATETIME "%Y-%m-%d %H:%M:%S")
add_definitions("-DBUILD_TIMESTAMP=\"${CURRENT_DATETIME}\"")
# compiler definitions
add_definitions("-DCMAKE_CXX_COMPILER=\"${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}\"")
# version definitions
add_definitions("-DPROJECT_VERSION_MAJOR=\"${PROJECT_VERSION_MAJOR}\"")
add_definitions("-DPROJECT_VERSION_MINOR=\"${PROJECT_VERSION_MINOR}\"")
add_definitions("-DPROJECT_VERSION_PATCH=\"${PROJECT_VERSION_PATCH}\"")
# git definitions
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE GIT_COMMIT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
add_definitions("-DGIT_COMMIT=\"${GIT_COMMIT}\"")
# system definitions
add_definitions("-DCMAKE_SYSTEM=\"${CMAKE_SYSTEM}\"")
add_definitions("-DCMAKE_SYSTEM_PROCESSOR=\"${CMAKE_SYSTEM_PROCESSOR}\"")
# Set the NVCC flags
if(NOT DEFINED CUDA_ARCH)
set(CUDA_ARCH 86)
endif()
set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -O3 -DUNIX --use_fast_math -Xptxas -v -lineinfo")
# CPU code
add_library(mcml_io STATIC src/gpumcml_io.cpp)
# CUDA source files
set(CUDA_SRCS src/gpumcml_main.cu)
# GPU executable
add_executable(
MCML
${CUDA_SRCS}
)
set_target_properties(
MCML
PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
)
set_property(TARGET MCML PROPERTY CUDA_ARCHITECTURES ${CUDA_ARCH})
target_link_libraries(
MCML
cuda
cudart
mcml_io
)
file(COPY resources/safeprimes_base32.txt DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
# Setup the installation target
install(TARGETS MCML
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib/static)
install(FILES resources/safeprimes_base32.txt DESTINATION bin)
# uninstall configuration
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
# DEB packaging
include(InstallRequiredSystemLibraries)
set(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-${CMAKE_SYSTEM_NAME}-cuda${CUDA_VERSION_STRING}-sm${CUDA_ARCH}")
set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Leonardo Ayala")
set(CPACK_PACKAGE_DESCRIPTION "Application to run Monte Carlo simulations of light transport in turbid media")
set(CPACK_PACKAGE_HOMEPAGE_URL "https://github.com/IMSY-DKFZ/mcmlgpu")
include(CPack)