Newer
Older
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
# ==================================================================================================
# This file is part of the CodeVault project. The project is licensed under Apache Version 2.0.
# CodeVault is part of the EU-project PRACE-4IP (WP7.3.C).
#
# Author(s):
# Evghenii Gaburov <evghenii.gaburov@surfsara.nl>
#
# ==================================================================================================
# CMake project
cmake_minimum_required(VERSION 3.0.0 FATAL_ERROR)
project("BHTree" NONE)
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../cmake/common.cmake)
# ==================================================================================================
if ("${DWARF_PREFIX}" STREQUAL "")
set(DWARF_PREFIX 4_nbody)
endif()
set(NAME ${DWARF_PREFIX}_bhtree)
enable_language(CXX)
if(NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
message("## Skipping '${NAME}': requires GNU C++ compiler ")
install(CODE "MESSAGE(\"bhtree can only be built with GNU C++ compiler.\")")
return()
endif()
message("** Enabling '${NAME}'")
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
set(CXX11 ${COMPILER_SUPPORTS_CXX11})
set(CXX11_FLAGS -std=c++11)
find_package(OpenMP)
macro(build_openmp)
set_property(SOURCE src/bhtree_omp.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " ${OpenMP_CXX_FLAGS}")
add_executable(${NAME}_omp src/bhtree_omp.cpp)
set_target_properties(${NAME}_omp PROPERTIES LINK_FLAGS "${OpenMP_CXX_FLAGS}")
install(TARGETS ${NAME}_omp DESTINATION bin)
endmacro(build_openmp)
find_package(Common)
if (NOT CXX11)
message("## Skipping ${NAME}: no C++11 support")
dummy_install(${NAME} "C++11")
return()
endif()
message("** Enabling ${NAME} example")
add_definitions(${CXX11_FLAGS} -Wall -Werror)
add_executable(${NAME} src/bhtree.cpp)
install(TARGETS ${NAME} DESTINATION bin)
find_package(OpenMP)
if (NOT ${OPENMP_FOUND})
message("## Skipping ${NAME}: no OpenMP support found")
else (NOT ${OPENMP_FOUND})
message("** Enabling ${NAME} OpenMP examples")
build_openmp()
endif()
# ==================================================================================================