-
Notifications
You must be signed in to change notification settings - Fork 3
/
CMakeLists.txt
167 lines (150 loc) · 5.77 KB
/
CMakeLists.txt
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
#
# Copyright (c) 2019 Carnegie Mellon University,
# Copyright (c) 2019 Triad National Security, LLC, as operator of
# Los Alamos National Laboratory.
#
# All rights reserved.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file. See the AUTHORS file for names of contributors.
#
#
# CMakeLists.txt build deltafs and its environment
# 20-Sep-2016 [email protected]
#
#
# general command line config:
#
# -DCMAKE_INSTALL_PREFIX=/usr/local # installation prefix
# -DCMAKE_BUILD_TYPE=RelWithDebInfo # or Release, Debug, etc.
# (XXX: currently only applied to cmake-based builds)
#
# -DUMBRELLA_BUILDTESTS=OFF # build unit tests?
# -DUMBRELLA_RUNTESTS=OFF # skip running unit tests?
#
# finding dependencies:
#
# -DCMAKE_PREFIX_PATH='/pkg' # look for additional installs here
#
# the following also applies for configure scripts:
# -DCMAKE_INCLUDE_PATH='/pkg/include' # extra include directories
# -DCMAKE_LIBRARY_PATH='/pkg/lib' # extra library path
#
# note these are all cmake lists (so more than one directory can
# be specified using a semicolon to create a path).
#
# specifying alternate compilers (overrides CC/CXX environment variables):
# -DCC=/bin/cc
# -DCXX=/bin/cxx
#
# you may also use the longer names
# -DCMAKE_C_COMPILER
# -DCMAKE_CXX_COMPILER
#
# specifying which mpi to use by pointing at the wrappers:
# -DMPI_C_COMPILER=/usr/bin/mpicc
# -DMPI_CXX_COMPILER=/usr/bin/mpicxx
# -DMPIEXEC=/usr/bin/mpiexec
#
cmake_minimum_required (VERSION 3.0)
#
# put the umbrella scripts in our search path and include umbrella-init
# (umbrella-init needs to run before "project")
#
list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/umbrella")
include (umbrella-init)
#
# we don't really use MPICXX for now. The difference between CXX and MPICXX
# is that CXX refers to the MPI C API being usable from C++, whereas MPICXX
# refers to the MPI-2 C++ API that was removed again in MPI-3.
# To enable MPICXX, run umbrella with -DMPI_CXX_SKIP_MPICXX=Off.
#
set (MPI_CXX_SKIP_MPICXX ON CACHE BOOL "True if MPICXX should be skipped")
#
# need to mark project as using C/CXX so we can probe for MPI
# using a compiler that may have been passed in via the command line
# or by using environment vars.
#
project (deltafs-umbrella C CXX)
#
# configure umbrella for MPI and pull in the main routines
#
set (UMBRELLA_MPI 1)
include (umbrella-main)
#
# propagate the MPICXX setting to all cmake subprojects
#
list(APPEND UMBRELLA_CMAKECACHE -DMPI_CXX_SKIP_MPICXX:BOOL=${MPI_CXX_SKIP_MPICXX})
#
# set git tags to the versions we want to stick to by default...
#
umbrella_opt_default (BMI_TAG "6ea0b78f") # Jan 2020
umbrella_opt_default (CCI_TAG "3ab663e0")
umbrella_opt_default (CH_PLACEMENT_TAG "ab096ee0") # Feb 2022
umbrella_opt_default (DELTAFS_BB_TAG "8c7091ea") # Oct 2017
umbrella_opt_default (DELTAFS_COMMON_TAG "v19.8")
umbrella_opt_default (DELTAFS_NEXUS_TAG "v1.19")
umbrella_opt_default (DELTAFS_SHUFFLE_TAG "a20890d9") # Apr 2021
umbrella_opt_default (DELTAFS_VPIC_PRELOAD_TAG "v1.86")
umbrella_opt_default (DELTAFS_TAG "v2019.7")
umbrella_opt_default (MERCURY_PROGRESSOR_TAG "6892c220") # Oct 2020
umbrella_opt_default (MERCURY_RUNNER_TAG "cbe7a219") # Apr 2021
umbrella_opt_default (MERCURY_TAG "3f6b5484") # Feb 2022
umbrella_opt_default (MSSG_TAG "v1.4")
umbrella_opt_default (NEXUS_RUNNER_TAG "04ee7e8a") # Apr 2021
umbrella_opt_default (OFI_TAG "1a89deaa") # Feb 2022
umbrella_opt_default (OSU_MICRO_BENCHMARKS_REPO
"https://github.com/pdlfs/osu-micro-benchmarks.git")
# forces a load from git repo
umbrella_opt_default (OSU_MICRO_BENCHMARKS_TAG "v5.6.1")
umbrella_opt_default (PDLFS_SCRIPTS_TAG "main")
#
# vpic selection. vpic407 is the old depreciated vpic code base.
#
set(VPIC407 ON CACHE BOOL "Use depreciate VPIC407 code")
if(VPIC407)
umbrella_opt_default (VPIC407_TAG "0a1c2c50") # Aug 2019
set (my-vpic-inc trecon-reader) # pulls vpic407
umbrella_opt_default (PDLFS_SCRIPTS_VPIC407 1)
message (STATUS " vpic: vpic 407 selected (depreciated)")
else()
umbrella_opt_default (VPIC_TAG "master")
umbrella_opt_default (VPIC_DECKS_TAG "master")
set (my-vpic-inc vpic-decks) # pulls vpic
umbrella_opt_default (PDLFS_SCRIPTS_VPIC407 0)
message (STATUS " vpic: vpic main selected")
endif()
#
# any additional cache variables we want to add that are not already
# part of the umbrella?
#
set (DELTAFS_VERBOSE "0" CACHE STRING "deltafs verbose level")
set_property (CACHE DELTAFS_VERBOSE PROPERTY STRINGS "0"
"1" "2" "3" "4" "5" "6" "7" "8" "9" "10")
message (STATUS " deltafs_verbose: ${DELTAFS_VERBOSE}")
#
# set other configs before we start pulling in the pieces...
#
# note: NA_INITIALLY_ON is only applied as the defaults the first time
# you run cmake. if you want to reconfigure, change MERCURY_BMI, et al.
umbrella_opt_default (MERCURY_NA_INITIALLY_ON "bmi;ofi;sm")
set (PDLFS_OPTIONS -DPDLFS_MERCURY_RPC=ON -DPDLFS_SNAPPY=OFF
-DPDLFS_GFLAGS=OFF -DPDLFS_GLOG=OFF
-DPDLFS_VERBOSE=${DELTAFS_VERBOSE})
include (umbrella/ch-placement)
include (umbrella/deltafs)
include (umbrella/deltafs-bb)
include (umbrella/deltafs-common)
include (umbrella/deltafs-nexus)
include (umbrella/deltafs-shuffle)
include (umbrella/deltafs-vpic-preload)
include (umbrella/mercury)
include (umbrella/mercury-progressor)
include (umbrella/mercury-runner)
include (umbrella/mssg)
include (umbrella/nexus-runner)
include (umbrella/osu-micro-benchmarks)
include (umbrella/pdlfs-scripts)
include (umbrella/${my-vpic-inc})
# don't build osu-micro-benchmarks by default
set_property (TARGET osu-micro-benchmarks PROPERTY EXCLUDE_FROM_ALL True)