|
1 |
| -# MPI3SNP ~ https://github.com/chponte/mpi3snp |
| 1 | +# This file is part of Fiuncho. |
| 2 | +# Copyright (C) 2019 by Christian Ponte |
| 3 | +# |
| 4 | +# Fiuncho is free software: you can redistribute it and/or modify |
| 5 | +# it under the terms of the GNU General Public License as published by |
| 6 | +# the Free Software Foundation, either version 3 of the License, or |
| 7 | +# (at your option) any later version. |
| 8 | +# |
| 9 | +# Fiuncho is distributed in the hope that it will be useful, |
| 10 | +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 | +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 | +# GNU General Public License for more details. |
2 | 13 | #
|
3 |
| -# Copyright 2018 Christian Ponte |
4 |
| -# |
5 |
| -# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated |
6 |
| -# documentation files (the "Software"), to deal in the Software without restriction, including without limitation the |
7 |
| -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to |
8 |
| -# permit persons to whom the Software is furnished to do so, subject to the following conditions: |
9 |
| -# |
10 |
| -# The above copyright notice and this permission notice shall be included in all copies or substantial portions of the |
11 |
| -# Software. |
12 |
| -# |
13 |
| -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE |
14 |
| -# WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR |
15 |
| -# COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR |
16 |
| -# OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
| 14 | +# You should have received a copy of the GNU General Public License |
| 15 | +# along with Fiuncho. If not, see <http://www.gnu.org/licenses/>. |
| 16 | + |
| 17 | +############################### CMake variables ############################### |
17 | 18 |
|
18 |
| - cmake_minimum_required(VERSION 3.8) |
19 |
| -project(MPI3SNP VERSION 1.0) |
| 19 | +cmake_minimum_required(VERSION 3.11) |
| 20 | +project(Fiuncho VERSION 0.0.1 LANGUAGES CXX) |
| 21 | +set(CMAKE_CXX_STANDARD 14) |
20 | 22 | set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/)
|
| 23 | +set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) |
21 | 24 |
|
22 |
| -find_package(Threads REQUIRED) |
23 |
| -find_package(MPI REQUIRED) |
24 |
| -include(CheckLanguage) |
25 |
| -check_language(CUDA) |
| 25 | +############################# Build configuration ############################# |
26 | 26 |
|
27 |
| -if (NOT DEFINED TARGET_ARCH) |
28 |
| - if (CMAKE_CUDA_COMPILER) |
29 |
| - set(TARGET_ARCH "GPU" CACHE STRING "Select target architecture") |
30 |
| - enable_language(CUDA) |
31 |
| - else () |
32 |
| - set(TARGET_ARCH "CPU" CACHE STRING "Select target architecture") |
33 |
| - endif () |
34 |
| - set_property(CACHE TARGET_ARCH PROPERTY STRINGS "CPU" "GPU") |
| 27 | +# Compiler configurations: |
| 28 | +# GNU |
| 29 | +if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") |
| 30 | + set(CMAKE_CXX_FLAGS_DEBUG |
| 31 | + "-DDEBUG -g -fverbose-asm -O1 -march=native -mtune=native -Wall -Wextra\ |
| 32 | + -Wpedantic") |
| 33 | + set(CMAKE_CXX_FLAGS_RELEASE |
| 34 | + "-DNDEBUG -Ofast -march=native -mtune=native") |
| 35 | + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO |
| 36 | + "-DDEBUG -g -fverbose-asm -Ofast -march=native -mtune=native") |
| 37 | +# Intel |
| 38 | +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel") |
| 39 | + set(CMAKE_CXX_FLAGS_DEBUG |
| 40 | + "-DDEBUG -g -debug inline-debug-info -O1 -xHost -mtune=native -Wall") |
| 41 | + set(CMAKE_CXX_FLAGS_RELEASE |
| 42 | + "-DNDEBUG -Ofast -xHost -mtune=native") |
| 43 | + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO |
| 44 | + "-DDEBUG -g -debug inline-debug-info -Ofast -xHost -mtune=native") |
| 45 | +# Clang |
| 46 | +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") |
| 47 | + set(CMAKE_CXX_FLAGS_DEBUG |
| 48 | + "-DDEBUG -g -fverbose-asm -O1 -march=native -mtune=native -Wall -Wextra\ |
| 49 | + -Wpedantic") |
| 50 | + set(CMAKE_CXX_FLAGS_RELEASE |
| 51 | + "-DNDEBUG -Ofast -march=native -mtune=native") |
| 52 | + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO |
| 53 | + "-DDEBUG -g -fverbose-asm -Ofast -march=native -mtune=native") |
| 54 | +else() |
| 55 | + message(FATAL_ERROR "Unsupported compiler detected: " |
| 56 | + ${CMAKE_CXX_COMPILER}) |
35 | 57 | endif()
|
36 | 58 |
|
37 | 59 | # Build type configuration
|
38 | 60 | set(DEFAULT_BUILD_TYPE "Release")
|
39 | 61 | if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
40 |
| - message(STATUS "Setting build type to ${DEFAULT_BUILD_TYPE} as none was specified.") |
41 |
| - set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" CACHE |
42 |
| - STRING "Choose the type of build" FORCE) |
| 62 | + message(STATUS |
| 63 | + "Setting build type to ${DEFAULT_BUILD_TYPE} as none was specified") |
| 64 | + set(CMAKE_BUILD_TYPE "${DEFAULT_BUILD_TYPE}" |
| 65 | + CACHE STRING "Choose the type of build" FORCE) |
43 | 66 | # Set the possible values of build type for cmake-gui
|
44 |
| - set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release") |
| 67 | + set_property(CACHE CMAKE_BUILD_TYPE |
| 68 | + PROPERTY STRINGS "Debug" "Release" "RelWithDebInfo") |
45 | 69 | endif ()
|
46 | 70 |
|
47 |
| -set(CMAKE_CXX_STANDARD 14) |
48 |
| -set(CMAKE_CXX_FLAGS_DEBUG "-g -O0") |
49 |
| -set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -O3") |
50 |
| -if (${TARGET_ARCH} STREQUAL "GPU") |
51 |
| - enable_language(CUDA) |
52 |
| - set(CMAKE_CUDA_STANDARD 11) |
53 |
| - set(CMAKE_CUDA_STANDARD_REQUIRED ON) |
54 |
| - set(CMAKE_CUDA_FLAGS "-arch=sm_30") |
55 |
| - set(CMAKE_CUDA_FLAGS_DEBUG "-g -O0") |
56 |
| - set(CMAKE_CUDA_FLAGS_RELEASE "-DNDEBUG -O3") |
57 |
| -# set(CUDA_PROPAGATE_HOST_FLAGS OFF) |
58 |
| -endif () |
| 71 | +############################# Project directories ############################# |
59 | 72 |
|
60 |
| -# Third party libraries (common to GPU and CPU builds) |
61 |
| -add_subdirectory(thirdparty) |
| 73 | +# Project documentation |
| 74 | +add_subdirectory(docs EXCLUDE_FROM_ALL) |
62 | 75 | # Project sources
|
63 | 76 | add_subdirectory(src)
|
| 77 | +add_subdirectory(app) |
0 commit comments