File: CMakeLists.txt

package info (click to toggle)
fdb 5.7.0-5
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 2,224 kB
  • sloc: cpp: 23,293; python: 141; sh: 115; makefile: 25; ansic: 8
file content (121 lines) | stat: -rw-r--r-- 3,759 bytes parent folder | download
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
cmake_minimum_required( VERSION 3.12 FATAL_ERROR )

find_package( ecbuild 3.4 REQUIRED HINTS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/../ecbuild)

project( fdb5 LANGUAGES C CXX )

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

########################################################################################################################
### dependencies and options

### eckit

set( PERSISTENT_NAMESPACE "eckit" CACHE INTERNAL "" ) # needed for generating .b files for persistent support

ecbuild_find_package( NAME eckit  VERSION 1.12 REQUIRED )

### GRIB support

ecbuild_find_package( NAME eccodes VERSION 2.10 REQUIRED )

ecbuild_find_package( NAME metkit VERSION 1.5 REQUIRED )

### FDB remote front-end

ecbuild_add_option( FEATURE FDB_REMOTE
                    DEFAULT ON
                    DESCRIPTION "Support distributed remote FDB" )

### FDB backend in persistent memory, i.e. pmem (NVRAM)

ecbuild_add_option( FEATURE PMEMFDB # option present in fdb5_config.h
                    DEFAULT OFF
                    DESCRIPTION "Persistent memory (NVRAM) support for FDB"
                    REQUIRED_PACKAGES "NAME pmem" )

### FDB backend in CEPH object store (using Rados)

find_package( RADOS QUIET )
ecbuild_add_option( FEATURE RADOSFDB  # option defined in fdb5_config.h
                    CONDITION eckit_HAVE_RADOS AND RADOS_FOUND
                    DEFAULT OFF
                    DESCRIPTION "Ceph/Rados support for FDB Store" )

### FDB backend in indexed filesystem with table-of-contents, i.e. TOC
### Supports Lustre parallel filesystem stripping control

ecbuild_add_option( FEATURE TOCFDB  # option defined in fdb5_config.h
                    DEFAULT ON
                    DESCRIPTION "Filesystem TOC support for FDB" )

### support for Lustre API control of file stripping

find_package( LUSTREAPI QUIET )

ecbuild_add_option( FEATURE LUSTRE  # option defined in fdb5_config.h
                    CONDITION LUSTREAPI_FOUND
                    DEFAULT ON
                    DESCRIPTION "Support for Lustre API control of file stripping " )

### experimental & sandbox features

ecbuild_add_option( FEATURE EXPERIMENTAL
                    DEFAULT OFF
                    DESCRIPTION "Experimental features" )

ecbuild_add_option( FEATURE SANDBOX
                    DESCRIPTION "build the sandbox stuff"
                    DEFAULT OFF	 )

### build the tools

ecbuild_add_option( FEATURE BUILD_TOOLS
                    DEFAULT ON
                    DESCRIPTION "Build the command line tools" )

if(HAVE_BUILD_TOOLS)
    set(_default_fdb_tools ON)
else()
    set(_default_fdb_tools OFF)
endif()

ecbuild_add_option( FEATURE FDB_BUILD_TOOLS
                    DEFAULT ${_default_fdb_tools}
                    DESCRIPTION "Build the command line FDB tools" )

### find thread library ( preferably pthreads )

set( CMAKE_THREAD_PREFER_PTHREAD 1 )
find_package(Threads REQUIRED)

### checks

# check thread library is pthreads

if( NOT ${CMAKE_USE_PTHREADS_INIT} )
	message( FATAL_ERROR "Only pthreads supported - thread library found is [${CMAKE_THREAD_LIBS_INIT}]" )
endif()

########################################################################################################################
# contents

set( fdb5_INCLUDE_DIRS  ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_CURRENT_BINARY_DIR}/src )

include_directories( ${fdb5_INCLUDE_DIRS} )

set_directory_properties( PROPERTIES COMPILE_DEFINITIONS "${ECKIT_DEFINITIONS};${ECCODES_DEFINITIONS};${ODB_API_DEFINITIONS}" )

get_directory_property( fdb5_DEFINITIONS COMPILE_DEFINITIONS )

### source files

add_subdirectory( src )
add_subdirectory( tests )

### finalize

ecbuild_install_project( NAME fdb )

ecbuild_print_summary()