-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
99 lines (87 loc) · 3.68 KB
/
Copy pathCMakeLists.txt
File metadata and controls
99 lines (87 loc) · 3.68 KB
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
98
99
##
## @copyright Copyright (c) 2016-, Issam SAID <said.issam@gmail.com>
## All rights reserved.
##
## Redistribution and use in source and binary forms, with or without
## modification, are permitted provided that the following conditions
## are met:
##
## 1. Redistributions of source code must retain the above copyright
## notice, this list of conditions and the following disclaimer.
## 2. Redistributions in binary form must reproduce the above copyright
## notice, this list of conditions and the following disclaimer in the
## documentation and/or other materials provided with the distribution.
## 3. Neither the name of the copyright holder nor the names of its contributors
## may be used to endorse or promote products derived from this software
## without specific prior written permission.
##
## THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
## INCLUDING, BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY AND FITNESS
## FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
## HOLDER OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
## PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
## PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
## LIABILITY, WETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
## NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
## SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
##
## @file CMakeLists.txt
## @author Issam SAID
## @brief CMake main build script for ulist.
##
project (ulist_distribution C CXX)
cmake_minimum_required (VERSION 2.8)
## Overwrite the install prefix
set (CMAKE_INSTALL_PREFIX "${CMAKE_SOURCE_DIR}")
## Add extra cmake modules dir
set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
## Configurable options for how we want to build ulist
option(ulist_verbose "Build ulist with the verbose mode." ON)
option(ulist_debug "Build ulist with the debug mode." OFF)
## Set the build type (DEFAULT is Release)
if (NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE Release)
endif ()
if (ulist_debug)
set (CMAKE_BUILD_TYPE Debug)
endif ()
message(STATUS "... CMAKE_BUILD_TYPE : ${CMAKE_BUILD_TYPE}")
## Set the compilation flags
if ("${CMAKE_C_COMPILER_ID}" MATCHES "Cray")
# using Cray C
elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU")
include(${CMAKE_MODULE_PATH}/gnu_c.cmake)
elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "PGI")
include(${CMAKE_MODULE_PATH}/pgi_c.cmake)
elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "Intel")
include(${CMAKE_MODULE_PATH}/intel_c.cmake)
elseif ("${CMAKE_C_COMPILER_ID}" MATCHES "MSVC")
# using Visual Studio
endif()
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Cray")
# using Cray C++
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU")
include(${CMAKE_MODULE_PATH}/gnu_cxx.cmake)
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "PGI")
include(${CMAKE_MODULE_PATH}/pgi_cxx.cmake)
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Intel")
include(${CMAKE_MODULE_PATH}/intel_cxx.cmake)
elseif ("${CMAKE_CXX_COMPILER_ID}" MATCHES "MSVC")
# using Visual Studio C++
endif()
if (ulist_verbose)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__ULIST_VERBOSE")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__ULIST_VERBOSE")
endif (ulist_verbose)
## Skip dependencies between builds and installs
set(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY TRUE)
## Build the ulist library
add_subdirectory(src)
## Build the ulist examples
add_subdirectory(examples EXCLUDE_FROM_ALL)
## Build the ulist testing suit
enable_testing()
add_subdirectory(test EXCLUDE_FROM_ALL)
## Build the ulist documentation
add_subdirectory(doc EXCLUDE_FROM_ALL)