|
1 | | -cmake_minimum_required(VERSION 3.8) |
2 | | -#cuda need 3.8 |
3 | | -#add_link_options need 3.13 |
| 1 | +cmake_minimum_required(VERSION 3.14) |
4 | 2 |
|
5 | | -if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") |
6 | | - # using Clang |
7 | | -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") |
8 | | - # using GCC |
9 | | -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel") |
10 | | - # using Intel C++ |
11 | | -elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") |
12 | | - # using Visual Studio C++ |
13 | | -endif() |
14 | | - |
15 | | -project(Matazure.Tensor CXX) |
| 3 | +project(MTensor CXX) |
16 | 4 |
|
17 | | -if (NOT CXX_STANDARD) |
18 | | - set(CXX_STANDARD 11) |
19 | | -endif() |
20 | | - |
21 | | -set(CMAKE_CXX_STANDARD ${CXX_STANDARD}) |
22 | | -set(CUDA_STANDARD ${CXX_STANDARD}) |
23 | | -set(CMAKE_CXX_EXTENSIONS ON) |
| 5 | +set(CXX_STANDARD 14) |
24 | 6 | set(CMAKE_CXX_STANDARD_REQUIRED ON) |
25 | | - |
26 | | -if (NOT CMAKE_BUILD_TYPE) |
27 | | - set(CMAKE_BUILD_TYPE Release) |
28 | | -endif() |
29 | | - |
30 | 7 | set(CMAKE_CUDA_STANDARD ${CMAKE_CXX_STANDARD}) |
31 | 8 | set(CMAKE_CUDA_STANDARD_REQUIRED ON) |
32 | 9 |
|
33 | | -option(WITH_OPENCL "With OpenCL" OFF) |
34 | | -if (WITH_OPENCL) |
35 | | - find_package(OPENCL REQUIRED) |
36 | | -endif() |
37 | | - |
38 | | -option(WITH_CUDA "With CUDA" OFF) |
39 | | -if(WITH_CUDA) |
40 | | - if (MSVC) |
41 | | - #use yourself nvcc version |
42 | | - set(CMAKE_CUDA_COMPILER "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.0/bin/nvcc.exe") |
43 | | - endif() |
| 10 | +include(CheckLanguage) |
| 11 | +check_language(CUDA) |
44 | 12 |
|
| 13 | +if (CMAKE_CUDA_COMPILER) |
45 | 14 | enable_language(CUDA) |
46 | | - # set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-extended-lambda --expt-relaxed-constexpr -arch=sm_75") |
47 | | - set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -w") |
48 | | - |
49 | | - if (CUDA_ARCH) |
50 | | - set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -arch=${CUDA_ARCH}") |
51 | | - endif() |
52 | | - |
53 | | -endif() |
54 | | - |
55 | | -option(WITH_OPENMP "With OpenMP" OFF) |
56 | | -if(WITH_OPENMP) |
57 | | - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp") |
58 | | - set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler \"-fopenmp\"") |
59 | | - # need manully set link options |
60 | | - # add_link_options($<$<COMPILE_LANGUAGE:CUDA>:-lgomp>) |
61 | | - set(MTENSOR_CUDA_LINK_FLAGS "${LINK_FLAGS} -lgomp") |
| 15 | + set(WITH_CUDA ON) |
| 16 | + set(CMAKE_CUDA_ARCHITECTURES OFF) |
| 17 | + set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} --expt-extended-lambda --expt-relaxed-constexpr") |
62 | 18 | endif() |
63 | 19 |
|
64 | | -option(NATIVE "-march=native" OFF) |
65 | | -if (NATIVE) |
66 | | -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native") |
67 | | -set(CMAKE_CUDA_FLAGS "${CMAKE_CUDA_FLAGS} -Xcompiler \"-march=native\"") |
68 | | -endif() |
69 | | - |
70 | | -option(BUILD_EXAMPLE "Build Example" ON) |
71 | | -option(BUILD_TEST "Build Test" ON) |
72 | | -option(BUILD_BENCHMARK "Build Benchmark" ON) |
73 | | - |
74 | | -message("current compiler is ${CMAKE_CXX_COMPILER}") |
75 | | - |
76 | | -set_property( GLOBAL PROPERTY USE_FOLDERS ON) |
77 | | - |
78 | | - |
79 | | -if (WITH_SSE) |
80 | | - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2") |
81 | | -endif() |
82 | | - |
83 | | -set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
84 | | -set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
85 | | -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) |
86 | | - |
87 | | -option(DOWNLOAD_SUBMODULES "git submodule update --init ." ON) |
88 | | - |
89 | | -if (DOWNLOAD_SUBMODULES) |
90 | | - execute_process(COMMAND git submodule update --init . WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) |
91 | | -endif() |
92 | | - |
93 | | -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest) |
94 | | -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/third_party/googletest/googletest/include) |
95 | | - |
96 | | -set(BENCHMARK_ENABLE_TESTING OFF CACHE BOOL "Build gtest's sample programs." FORCE) |
97 | | -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third_party/benchmark) |
98 | | - |
99 | 20 | add_library(mtensor INTERFACE) |
100 | 21 | target_include_directories(mtensor |
101 | | - INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> |
| 22 | + INTERFACE $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}> |
102 | 23 | INTERFACE $<INSTALL_INTERFACE:include> |
103 | 24 | ) |
104 | 25 |
|
105 | | -if (BUILD_EXAMPLE) |
106 | | - add_subdirectory(sample) |
107 | | -endif() |
108 | | - |
109 | | -if (BUILD_BENCHMARK) |
110 | | - add_subdirectory(benchmark) |
111 | | -endif() |
112 | | - |
113 | | -if (BUILD_TEST) |
114 | | - add_subdirectory(test) |
115 | | -endif() |
116 | | - |
117 | | -install(DIRECTORY include DESTINATION include) |
| 26 | +add_subdirectory(samples) |
0 commit comments