File: configure

package info (click to toggle)
broker 1.4.0%2Bds1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 4,420 kB
  • sloc: cpp: 20,886; python: 1,382; ansic: 1,077; sh: 321; makefile: 103
file content (229 lines) | stat: -rwxr-xr-x 8,321 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
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
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
#!/bin/sh
# Convenience wrapper for easily viewing/setting options that
# the project's CMake scripts will recognize
set -e
command="$0 $*"

usage="\
Usage: $0 [OPTION]... [VAR=VALUE]...

  Build Options:
    --cmake=PATH           custom path to a CMake binary
    --generator=GENERATOR  CMake generator to use (see 'cmake --help')
    --build-dir=DIR        place build files in directory [build]
    --build-type=TYPE      set CMake build type [RelWithDebInfo]:
                             - Debug: optimizations off, debug symbols + flags
                             - MinSizeRel: size optimizations, debugging off
                             - Release: optimizations on, debugging off
                             - RelWithDebInfo: optimizations on,
                                   debug symbols on, debug flags off
    --ccache               use ccache to speed up recompilation (requires
                           ccache installation and CMake 3.10+)
    --enable-debug         compile in debugging mode (like --build-type=Debug)
    --enable-static        build static libraries (in addition to shared)
    --enable-static-only   only build static libraries, not shared
    --with-log-level=LVL   build embedded CAF with debugging output.  Levels:
                             ERROR, WARNING, INFO, DEBUG, TRACE
    --sanitizers=LIST      comma-separated list of sanitizer names to enable

  Installation Directories:
    --prefix=PREFIX        installation directory [/usr/local]
    --libdir=DIR           installation directory for static and dynamic
                           libraries [PREFIX/lib]
    --python-home=PATH     explicit installation method for optional Python
                           bindings [PATH/lib/python], the path tracks
                           --prefix if that option is used.
    --python-prefix=PATH   explicit install directory for Python bindings
                           [PATH/lib/python<Python Version>/site-packages]

  Optional Features:
    --disable-python       don't try to build python bindings
    --disable-docs         don't try to build local documentation
    --disable-tests        don't try to build unit tests
    --enable-rocksdb       try to find and a RocksDB installation and use it
    --with-rocksdb=PATH    path to RocksDB installation, implies --enable-rocksdb
    --with-python=PATH     path to Python executable
    --with-python-config=PATH
                           path to python-config executable
    --with-zeek=PATH       path to Zeek executable for interoperability tests

  Required Packages in Non-Standard Locations:
    --with-caf=PATH        path to C++ Actor Framework installation
    --with-openssl=PATH    path to OpenSSL install root

  Influential Environment Variables (only on first invocation
  per build directory):
    CC                     C compiler command
    CFLAGS                 C compiler flags
    CXX                    C++ compiler command
    CXXFLAGS               C++ compiler flags
"

sourcedir="$( cd "$( dirname "$0" )" && pwd )"

# Function to append a CMake cache entry definition to the
# CMakeCacheEntries variable
#   $1 is the cache entry variable name
#   $2 is the cache entry variable type
#   $3 is the cache entry variable value
append_cache_entry () {
    CMakeCacheEntries="$CMakeCacheEntries -D $1:$2=$3"
}

# set defaults
builddir=build
prefix=/usr/local
CMakeCacheEntries=""
append_cache_entry CMAKE_INSTALL_PREFIX PATH    $prefix
append_cache_entry BROKER_DISABLE_DOCS  BOOL    false

# parse arguments
while [ $# -ne 0 ]; do
    case "$1" in
        -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
        *) optarg= ;;
    esac

    case "$1" in
        --help|-h)
            echo "${usage}" 1>&2
            exit 1
            ;;
        --cmake=*)
            CMakeCommand=$optarg
            ;;
        --generator=*)
            CMakeGenerator="$optarg"
            ;;
        --ccache)
            append_cache_entry ENABLE_CCACHE        BOOL   true
            ;;
        --build-dir=*)
            builddir=$optarg
            ;;
        # backwards compatibility
        --builddir=*)
            builddir=$optarg
            ;;
        --prefix=*)
            append_cache_entry CMAKE_INSTALL_PREFIX PATH   $optarg
            append_cache_entry CMAKE_INSTALL_LIBDIR PATH   $optarg/lib
            append_cache_entry BROKER_PYTHON_HOME   PATH   $optarg
            ;;
        --libdir=*)
            append_cache_entry CMAKE_INSTALL_LIBDIR PATH   $optarg
            ;;
        --python-home=*)
            append_cache_entry BROKER_PYTHON_HOME   PATH   $optarg
            ;;
        --python-prefix=*)
            append_cache_entry BROKER_PYTHON_PREFIX PATH   $optarg
            ;;
        --build-type=*)
            append_cache_entry CMAKE_BUILD_TYPE     STRING $optarg
            ;;
        --enable-debug)
            append_cache_entry ENABLE_DEBUG         BOOL   true
            ;;
        --enable-static)
            append_cache_entry ENABLE_STATIC        BOOL   true
            ;;
        --sanitizers=*)
            append_cache_entry BROKER_SANITIZERS    STRING    $optarg
            ;;
        --enable-static-only)
            append_cache_entry ENABLE_STATIC_ONLY   BOOL   true
            ;;
        --with-log-level=*)
            append_cache_entry CAF_LOG_LEVEL        STRING  $optarg
            ;;
        --disable-python)
            append_cache_entry DISABLE_PYTHON_BINDINGS BOOL true
            ;;
        --disable-docs)
            append_cache_entry BROKER_DISABLE_DOCS  BOOL    true
            ;;
        --disable-tests)
            append_cache_entry BROKER_DISABLE_TESTS BOOL    true
            ;;
        --with-caf=*)
            append_cache_entry CAF_ROOT_DIR         PATH    $optarg
            ;;
        --with-openssl=*)
            append_cache_entry OPENSSL_ROOT_DIR     PATH    $optarg
            ;;
        --enable-rocksdb)
            append_cache_entry BROKER_ENABLE_ROCKSDB BOOL true
            ;;
        --with-rocksdb=*)
            append_cache_entry BROKER_ENABLE_ROCKSDB BOOL true
            append_cache_entry ROCKSDB_ROOT_DIR     PATH    $optarg
            ;;
        --with-python=*)
            append_cache_entry PYTHON_EXECUTABLE    PATH    $optarg
            ;;
        --with-python-config=*)
            append_cache_entry PYTHON_CONFIG        PATH    $optarg
            ;;
        --with-zeek=*)
            append_cache_entry ZEEK_EXECUTABLE      PATH    $optarg
            ;;
        *)
            echo "Invalid option '$1'.  Try $0 --help to see available options."
            exit 1
            ;;
    esac
    shift
done

if [ -z "$CMakeCommand" ]; then
    # prefer cmake3 over "regular" cmake (cmake == cmake2 on RHEL)
    if command -v cmake3 >/dev/null 2>&1 ; then
        CMakeCommand="cmake3"
    elif command -v cmake >/dev/null 2>&1 ; then
        CMakeCommand="cmake"
    else
        echo "This package requires CMake, please install it first."
        echo "Then you may use this script to configure the CMake build."
        echo "Note: pass --cmake=PATH to use cmake in non-standard locations."
        exit 1;
    fi
fi

if [ -d $builddir ]; then
    # If build directory exists, check if it has a CMake cache
    if [ -f $builddir/CMakeCache.txt ]; then
        # If the CMake cache exists, delete it so that this configuration
        # is not tainted by a previous one
        rm -f $builddir/CMakeCache.txt
    fi
else
    # Create build directory
    mkdir -p $builddir
fi

echo "Build Directory : $builddir"
echo "Source Directory: $sourcedir"
cd $builddir

if [ -n "$CMakeGenerator" ]; then
    "$CMakeCommand" -G "$CMakeGenerator" $CMakeCacheEntries $sourcedir
else
    "$CMakeCommand" $CMakeCacheEntries $sourcedir
fi

printf "#!/bin/sh\n\n" > config.status
printf "# Switch to the source of this build directory.\n" >> config.status
printf "cd \"$sourcedir\"\n\n" >> config.status
printf "# Invoke the command to configure this build.\n" >> config.status
if [ -n "$CC" ]; then
  printf 'CC="%s" ' "$CC" >> config.status
fi
if [ -n "$CXX" ]; then
  printf 'CXX="%s" ' "$CXX" >> config.status
fi
if [ -n "$CXXFLAGS" ]; then
  printf 'CXXFLAGS="%s" ' "$CXXFLAGS" >> config.status
fi
printf "$command\n" $@ >> config.status
chmod u+x config.status