5 SCRIPT_DIR
="$(dirname "$BASH_SOURCE")"
6 SCRIPT_DIR
="$(realpath "$SCRIPT_DIR")"
8 num_vcpus
=$
(( $
(lscpu
-p |
tail -1 | cut
-d "," -f 1) + 1 ))
10 CEPH_DIR
="${CEPH_DIR:-$SCRIPT_DIR}"
11 BUILD_DIR
="${BUILD_DIR:-${CEPH_DIR}/build}"
12 DEPS_DIR
="${DEPS_DIR:-$CEPH_DIR/build.deps}"
14 CLEAN_BUILD
=${CLEAN_BUILD:-}
15 SKIP_BUILD
=${SKIP_BUILD:-}
16 NUM_WORKERS
=${NUM_WORKERS:-$num_vcpus}
17 NINJA_BUILD
=${NINJA_BUILD:-}
18 DEV_BUILD
=${DEV_BUILD:-}
20 # We'll have to be explicit here since auto-detecting doesn't work
21 # properly when cross compiling.
22 ALLOCATOR
=${ALLOCATOR:-libc}
23 # Debug builds don't work with MINGW for the time being, failing with
24 # can't close <file>: File too big
25 # -Wa,-mbig-obj does not help.
26 CMAKE_BUILD_TYPE
=${CMAKE_BUILD_TYPE:-RelWithDebInfo}
28 depsSrcDir
="$DEPS_DIR/src"
29 depsToolsetDir
="$DEPS_DIR/mingw"
31 lz4Dir
="${depsToolsetDir}/lz4"
32 sslDir
="${depsToolsetDir}/openssl"
33 curlDir
="${depsToolsetDir}/curl"
34 boostDir
="${depsToolsetDir}/boost"
35 zlibDir
="${depsToolsetDir}/zlib"
36 backtraceDir
="${depsToolsetDir}/backtrace"
37 snappyDir
="${depsToolsetDir}/snappy"
38 winLibDir
="${depsToolsetDir}/windows/lib"
39 if [[ -n $NINJA_BUILD ]]; then
42 generatorUsed
="Unix Makefiles"
45 pyVersion
=`python -c "import sys; print('%d.%d' % (sys.version_info.major, sys.version_info.minor))"`
47 depsDirs
="$lz4Dir;$curlDir;$sslDir;$boostDir;$zlibDir;$backtraceDir;$snappyDir"
48 depsDirs
+=";$winLibDir"
50 # That's actually a dll, we may want to rename the file.
51 lz4Lib
="${lz4Dir}/lib/liblz4.so.1.9.2"
52 lz4Include
="${lz4Dir}/lib"
53 curlLib
="${curlDir}/lib/libcurl.dll.a"
54 curlInclude
="${curlDir}/include"
56 if [[ -n $CLEAN_BUILD ]]; then
57 echo "Cleaning up build dir: $BUILD_DIR"
61 if [[ ! -d $DEPS_DIR ]]; then
62 echo "Preparing dependencies: $DEPS_DIR"
63 NUM_WORKERS
=$NUM_WORKERS DEPS_DIR
=$DEPS_DIR \
64 "$SCRIPT_DIR/win32_deps_build.sh"
70 # We'll need to cross compile Boost.Python before enabling
72 echo "Generating solution. Log: ${BUILD_DIR}/cmake.log"
74 # This isn't propagated to some of the subprojects, we'll use an env variable
76 export CMAKE_PREFIX_PATH
=$depsDirs
78 if [[ -n $DEV_BUILD ]]; then
79 echo "Dev build enabled."
80 echo "Git versioning will be disabled."
81 ENABLE_GIT_VERSION
="OFF"
83 ENABLE_GIT_VERSION
="ON"
86 # As opposed to Linux, Windows shared libraries can't have unresolved
87 # symbols. Until we fix the dependencies (which are either unspecified
88 # or circular), we'll have to stick to static linking.
89 cmake
-D CMAKE_PREFIX_PATH
=$depsDirs \
90 -D CMAKE_TOOLCHAIN_FILE
="$CEPH_DIR/cmake/toolchains/mingw32.cmake" \
91 -D WITH_PYTHON2
=OFF
-D WITH_PYTHON3
=ON \
92 -D MGR_PYTHON_VERSION
=$pyVersion \
93 -D WITH_RDMA
=OFF
-D WITH_OPENLDAP
=OFF \
94 -D WITH_GSSAPI
=OFF
-D WITH_FUSE
=OFF
-D WITH_XFS
=OFF \
95 -D WITH_BLUESTORE
=OFF
-D WITH_LEVELDB
=OFF \
96 -D WITH_LTTNG
=OFF
-D WITH_BABELTRACE
=OFF \
97 -D WITH_SYSTEM_BOOST
=ON
-D WITH_MGR
=OFF \
98 -D WITH_LIBCEPHFS
=OFF
-D WITH_KRBD
=OFF
-D WITH_RADOSGW
=OFF \
99 -D ENABLE_SHARED
=OFF
-D WITH_RBD
=ON
-D BUILD_GMOCK
=OFF \
100 -D WITH_CEPHFS
=OFF
-D WITH_MANPAGE
=OFF \
101 -D WITH_MGR_DASHBOARD_FRONTEND
=OFF
-D WITH_SYSTEMD
=OFF
-D WITH_TESTS
=OFF \
102 -D LZ4_INCLUDE_DIR
=$lz4Include -D LZ4_LIBRARY
=$lz4Lib \
103 -D Backtrace_Header
="$backtraceDir/include/backtrace.h" \
104 -D Backtrace_INCLUDE_DIR
="$backtraceDir/include" \
105 -D Backtrace_LIBRARY
="$backtraceDir/lib/libbacktrace.dll.a" \
106 -D Boost_THREADAPI
="pthread" \
107 -D ENABLE_GIT_VERSION
=$ENABLE_GIT_VERSION \
108 -D ALLOCATOR
="$ALLOCATOR" -D CMAKE_BUILD_TYPE
=$CMAKE_BUILD_TYPE \
109 -G "$generatorUsed" \
110 $CEPH_DIR 2>&1 |
tee "${BUILD_DIR}/cmake.log"
112 if [[ -z $SKIP_BUILD ]]; then
113 echo "Building using $NUM_WORKERS workers. Log: ${BUILD_DIR}/build.log"
114 echo "NINJA_BUILD = $NINJA_BUILD"
116 # We're currently limitting the build scope to the rados/rbd binaries.
117 if [[ -n $NINJA_BUILD ]]; then
119 ninja
-v rados.exe rbd.exe compressor |
tee "${BUILD_DIR}/build.log"
121 cd $BUILD_DIR/src
/tools
122 make -j $NUM_WORKERS 2>&1 |
tee "${BUILD_DIR}/build.log"
124 cd $BUILD_DIR/src
/compressor
125 make -j $NUM_WORKERS 2>&1 |
tee -a "${BUILD_DIR}/build.log"