diff --git a/.evergreen/build_all.sh b/.evergreen/build_all.sh index c811f8380..e697c54a6 100755 --- a/.evergreen/build_all.sh +++ b/.evergreen/build_all.sh @@ -1,91 +1,90 @@ #!/bin/bash # Compiles libmongocrypt dependencies and targets. # -# Set extra cflags for libmongocrypt variables by setting LIBMONGOCRYPT_EXTRA_CFLAGS. -# +# Set extra compilation for libmongocrypt variables by setting CFLAGS and CXXFLAGS. echo "Begin compile process" . "$(dirname "${BASH_SOURCE[0]}")/setup-env.sh" -# We may need some more C++ flags -_cxxflags="" +set -eu -: "${CONFIGURE_ONLY:=}" -: "${LIBMONGOCRYPT_BUILD_TYPE:=RelWithDebInfo}" - -if [ "$OS_NAME" = "windows" ]; then - # Enable exception handling for MSVC - _cxxflags="-EHsc" - if is_false WINDOWS_32BIT && is_false USE_NINJA; then - # These options are only needed for VS CMake generators to force it to - # generate a 64-bit build. Default is 32-bit. Ninja inherits settings - # from the build environment variables. - ADDITIONAL_CMAKE_FLAGS="-Thost=x64 -A x64" - fi -fi +# Directory where build files will be stored +: "${BINARY_DIR:="$LIBMONGOCRYPT_DIR/cmake-build"}" +# Additional compilation flags that apply only to the libmongocrypt build +: "${LIBMONGOCRYPT_COMPILE_FLAGS:=}" + +# Control the build configuration that is generated. +export CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:-RelWithDebInfo}" +# Sets the default config for --build and CTest +export CMAKE_CONFIG_TYPE="$CMAKE_BUILD_TYPE" +# Control the install prefix +export CMAKE_INSTALL_PREFIX="${MONGOCRYPT_INSTALL_PREFIX-}" # Have CTest print test failure info to stderr export CTEST_OUTPUT_ON_FAILURE=1 +# Generate a compilation database for use by other tools +export CMAKE_EXPORT_COMPILE_COMMANDS=1 + +# Accumulate arguments that are passed to CMake +cmake_args=( + --fresh + # Set the build type. CMake 3.22 recognizes this via environment variable + -D CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" + # Set the install prefix. CMake 3.29 recognizes this via environment variable + -D CMAKE_INSTALL_PREFIX="$CMAKE_INSTALL_PREFIX" + # Toggle compiling with shared BSON + -D USE_SHARED_LIBBSON="${USE_SHARED_LIBBSON-FALSE}" + # Toggle building of tests + -D BUILD_TESTING="${BUILD_TESTING-TRUE}" + # Enable additional warnings-as-errors + -D ENABLE_MORE_WARNINGS_AS_ERRORS=TRUE +) + +: "${CONFIGURE_ONLY:=}" if [ "$PPA_BUILD_ONLY" ]; then # Clean-up from previous build iteration - rm -rf -- "$LIBMONGOCRYPT_DIR"/cmake-build* "$MONGOCRYPT_INSTALL_PREFIX" - ADDITIONAL_CMAKE_FLAGS="$ADDITIONAL_CMAKE_FLAGS -DENABLE_BUILD_FOR_PPA=ON" -fi - -if [ "$MACOS_UNIVERSAL" = "ON" ]; then - ADDITIONAL_CMAKE_FLAGS="$ADDITIONAL_CMAKE_FLAGS -DCMAKE_OSX_ARCHITECTURES='arm64;x86_64'" + rm -rf -- "$LIBMONGOCRYPT_DIR"/cmake-build* "$CMAKE_INSTALL_PREFIX" + cmake_args+=(-DENABLE_BUILD_FOR_PPA=ON) fi for suffix in "dll" "dylib" "so"; do cand="$(abspath "$LIBMONGOCRYPT_DIR/../mongocrypt_v1.$suffix")" if test -f "$cand"; then - ADDITIONAL_CMAKE_FLAGS="$ADDITIONAL_CMAKE_FLAGS -DMONGOCRYPT_TESTING_CRYPT_SHARED_FILE=$cand" + cmake_args+=("-DMONGOCRYPT_TESTING_CRYPT_SHARED_FILE=$cand") fi done -ADDITIONAL_CMAKE_FLAGS="$ADDITIONAL_CMAKE_FLAGS -DENABLE_MORE_WARNINGS_AS_ERRORS=ON" - -build_dir="$LIBMONGOCRYPT_DIR/cmake-build" -common_cmake_args=( - $ADDITIONAL_CMAKE_FLAGS - $LIBMONGOCRYPT_EXTRA_CMAKE_FLAGS - -DCMAKE_C_FLAGS="$LIBMONGOCRYPT_EXTRA_CFLAGS" - -DCMAKE_CXX_FLAGS="$LIBMONGOCRYPT_EXTRA_CFLAGS $_cxxflags" - -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - -DCMAKE_BUILD_TYPE="$LIBMONGOCRYPT_BUILD_TYPE" - -H"$LIBMONGOCRYPT_DIR" - -B"$build_dir" -) - -if is_true USE_NINJA; then +if test "${CMAKE_GENERATOR-}" = Ninja; then export NINJA_EXE - : "${NINJA_EXE:="$build_dir/ninja$EXE_SUFFIX"}" - common_cmake_args+=( - -GNinja - -DCMAKE_MAKE_PROGRAM="$NINJA_EXE" - ) + : "${NINJA_EXE:="$BINARY_DIR/ninja$EXE_SUFFIX"}" + cmake_args+=(-DCMAKE_MAKE_PROGRAM="$NINJA_EXE") bash "$EVG_DIR/ensure-ninja.sh" fi +# A command that prepends our custom compile flags for any CMake execution +_cmake_with_env() { + # Prepend our custom C and CXX flags for any possible CMake builds + CFLAGS="$LIBMONGOCRYPT_COMPILE_FLAGS ${CFLAGS-}" \ + CXXFLAGS="$LIBMONGOCRYPT_COMPILE_FLAGS ${CXXFLAGS-}" \ + run_cmake "$@" +} + # Build and install libmongocrypt. -run_cmake \ - -DCMAKE_INSTALL_PREFIX="$MONGOCRYPT_INSTALL_PREFIX" \ - "${common_cmake_args[@]}" +_cmake_with_env "${cmake_args[@]}" \ + -B "$BINARY_DIR" -S "$LIBMONGOCRYPT_DIR" if [ "$CONFIGURE_ONLY" ]; then echo "Only running cmake"; exit 0; fi echo "Installing libmongocrypt" -run_cmake --build "$build_dir" --target install --config "$LIBMONGOCRYPT_BUILD_TYPE" -run_cmake --build "$build_dir" --target test-mongocrypt --config "$LIBMONGOCRYPT_BUILD_TYPE" -run_cmake --build "$build_dir" --target test_kms_request --config "$LIBMONGOCRYPT_BUILD_TYPE" -run_chdir "$build_dir" run_ctest -C "$LIBMONGOCRYPT_BUILD_TYPE" +_cmake_with_env --build "$BINARY_DIR" --target install test-mongocrypt test_kms_request +run_chdir "$BINARY_DIR" run_ctest # MONGOCRYPT-372, ensure macOS universal builds contain both x86_64 and arm64 architectures. -if [ "$MACOS_UNIVERSAL" = "ON" ]; then +if test "${CMAKE_OSX_ARCHITECTURES-}" != ''; then echo "Checking if libmongocrypt.dylib contains both x86_64 and arm64 architectures..." ARCHS=$(lipo -archs $MONGOCRYPT_INSTALL_PREFIX/lib/libmongocrypt.dylib) if [[ "$ARCHS" == *"x86_64"* && "$ARCHS" == *"arm64"* ]]; then @@ -101,27 +100,18 @@ if [ "$PPA_BUILD_ONLY" ]; then exit 0; fi -if "${DEFAULT_BUILD_ONLY:-false}"; then - echo "Skipping nocrypto+sharedbson builds" - exit 0 -fi - # Build and install libmongocrypt with no native crypto. -run_cmake \ +_cmake_with_env "${cmake_args[@]}" \ -DDISABLE_NATIVE_CRYPTO=ON \ -DCMAKE_INSTALL_PREFIX="$MONGOCRYPT_INSTALL_PREFIX/nocrypto" \ - "${common_cmake_args[@]}" - -run_cmake --build "$build_dir" --target install --config "$LIBMONGOCRYPT_BUILD_TYPE" -run_cmake --build "$build_dir" --target test-mongocrypt --config "$LIBMONGOCRYPT_BUILD_TYPE" -run_chdir "$build_dir" run_ctest -C "$LIBMONGOCRYPT_BUILD_TYPE" + -B "$BINARY_DIR" -S "$LIBMONGOCRYPT_DIR" +_cmake_with_env --build "$BINARY_DIR" --target install test-mongocrypt +run_chdir "$BINARY_DIR" run_ctest # Build and install libmongocrypt without statically linking libbson -run_cmake \ - -UDISABLE_NATIVE_CRYPTO \ +_cmake_with_env "${cmake_args[@]}" \ -DUSE_SHARED_LIBBSON=ON \ -DCMAKE_INSTALL_PREFIX="$MONGOCRYPT_INSTALL_PREFIX/sharedbson" \ - "${common_cmake_args[@]}" - -run_cmake --build "$build_dir" --target install --config "$LIBMONGOCRYPT_BUILD_TYPE" -run_chdir "$build_dir" run_ctest -C "$LIBMONGOCRYPT_BUILD_TYPE" + -B "$BINARY_DIR" -S "$LIBMONGOCRYPT_DIR" +_cmake_with_env --build "$BINARY_DIR" --target install test-mongocrypt +run_chdir "$BINARY_DIR" run_ctest diff --git a/.evergreen/config.yml b/.evergreen/config.yml index 23ef2c27e..dde08c70b 100755 --- a/.evergreen/config.yml +++ b/.evergreen/config.yml @@ -106,7 +106,7 @@ functions: export LSAN_OPTIONS="suppressions=$LIBMONGOCRYPT_DIR/.lsan-suppressions" export VS_VERSION=${vs_version|} export VS_TARGET_ARCH=${vs_target_arch|amd64} - export USE_NINJA=${use_ninja|ON} + export CMAKE_GENERATOR=${CMAKE_GENERATOR|Ninja} env ${compile_env|} \ bash "$EVG_DIR/env-run.sh" \ bash "$EVG_DIR/build_all.sh" @@ -151,7 +151,7 @@ functions: - command: "shell.exec" params: script: |- - if test "$OS_NAME" != "windows"; then export USE_NINJA=${use_ninja|ON}; fi + if test "$OS_NAME" != "windows"; then export CMAKE_GENERATOR=${CMAKE_GENERATOR|Ninja}; fi env ${compile_env|} CONFIGURE_ONLY=ON ${clang_env|CC=clang CXX=clang++} \ bash libmongocrypt/.evergreen/build_all.sh ./libmongocrypt/.evergreen/clang-tidy.sh @@ -483,7 +483,9 @@ tasks: - func: "fetch source" - func: "build and test" vars: - compile_env: ${compile_env|} LIBMONGOCRYPT_EXTRA_CMAKE_FLAGS="-DUSE_SHARED_LIBBSON=ON" + compile_env: >- + ${compile_env|} + USE_SHARED_LIBBSON=true - name: build-and-test-asan commands: @@ -493,7 +495,7 @@ tasks: # Add detect_odr_violation=0 to ASAN_OPTIONS to ignore odr-violation in IntelDFP symbol: __dpml_bid_globals_table compile_env: >- ${compile_env|} - LIBMONGOCRYPT_EXTRA_CFLAGS="-fsanitize=address -pthread" + LIBMONGOCRYPT_COMPILE_FLAGS="-fsanitize=address -pthread" ASAN_OPTIONS="detect_leaks=1 detect_odr_violation=0" - name: build-and-test-ubsan @@ -503,9 +505,9 @@ tasks: vars: compile_env: >- ${compile_env|} - LIBMONGOCRYPT_EXTRA_CFLAGS="-fsanitize=undefined -fno-omit-frame-pointer" + LIBMONGOCRYPT_COMPILE_FLAGS="-fsanitize=undefined -fno-omit-frame-pointer" UBSAN_OPTIONS="halt_on_error=1,print_stacktrace=1" - + - name: build-and-test-asan-mac commands: @@ -513,7 +515,9 @@ tasks: - func: "build and test" # Exclude leak detection. clang on macos-11-amd64 reports: "detect_leaks is not supported on this platform" vars: - compile_env: ${compile_env|} LIBMONGOCRYPT_EXTRA_CFLAGS="-fsanitize=address" + compile_env: >- + ${compile_env|} + LIBMONGOCRYPT_COMPILE_FLAGS="-fsanitize=address" - name: test-python depends_on: @@ -1354,7 +1358,9 @@ buildvariants: display_name: "RHEL 6.2 64-bit" run_on: rhel62-small expansions: - compile_env: CFLAGS="-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS" ADDITIONAL_CMAKE_FLAGS="-DENABLE_TESTS=OFF -DBUILD_TESTING=OFF" + compile_env: >- + LIBMONGOCRYPT_COMPILE_FLAGS="-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS" + BUILD_TESTING=OFF tasks: - build-and-test-and-upload - build-and-test-shared-bson @@ -1524,7 +1530,9 @@ buildvariants: display_name: "Ubuntu 18.04 64-bit clang7" run_on: ubuntu1804-test expansions: - compile_env: LIBMONGOCRYPT_EXTRA_CMAKE_FLAGS="-DCMAKE_C_COMPILER=/opt/mongodbtoolchain/v3/bin/clang -DCMAKE_CXX_COMPILER=/opt/mongodbtoolchain/v3/bin/clang++" + compile_env: >- + CC=/opt/mongodbtoolchain/v3/bin/clang + CXX=/opt/mongodbtoolchain/v3/bin/clang++ tasks: - build-and-test-and-upload - name: ubuntu1804-arm64 @@ -1642,9 +1650,11 @@ buildvariants: display_name: macOS m1 (Apple LLVM) run_on: macos-1100-arm64 expansions: - compile_env: MACOS_UNIVERSAL=ON CMAKE=/opt/homebrew/bin/cmake + compile_env: >- + CMAKE_OSX_ARCHITECTURES="arm64;x86_64" + CMAKE=/opt/homebrew/bin/cmake # Disable Ninja to work around error "Bad CPU type in executable" - use_ninja: OFF + CMAKE_GENERATOR: '' tasks: - build-and-test-and-upload - name: test-python diff --git a/.evergreen/ensure-ninja.sh b/.evergreen/ensure-ninja.sh index 23e1a83e1..9bbb0f4f0 100644 --- a/.evergreen/ensure-ninja.sh +++ b/.evergreen/ensure-ninja.sh @@ -69,7 +69,9 @@ _build_ninja() { tar -x -f "$src_tgz" -C "$extract_dir" --strip-components=1 log "Building Ninja from source" - run_chdir "$build_out_dir" run_python "$extract_dir/configure.py" --bootstrap + # Clear any CFLAGS or CXXFLAGS values from the parent environment, as Ninja doesn't handle them + # correctly. + CFLAGS="" CXXFLAGS="" run_chdir "$build_out_dir" run_python "$extract_dir/configure.py" --bootstrap test -f "$expect_exe" || fail "Bootstrap did not generate the expected executable [$expect_exe]" # Recursive invocation will find our build and copy it diff --git a/.evergreen/linker-tests.sh b/.evergreen/linker-tests.sh index 383d868e6..77c11fad9 100755 --- a/.evergreen/linker-tests.sh +++ b/.evergreen/linker-tests.sh @@ -29,32 +29,19 @@ echo "Make libbson1 ..." run_chdir "$linker_tests_root" bash "$EVG_DIR/prep_c_driver_source.sh" MONGOC_DIR="$linker_tests_root/mongo-c-driver" -if test "$OS_NAME" = "windows" && is_false WINDOWS_32BIT && is_false USE_NINJA; then - # These options are only needed for VS CMake generators to force it to - # generate a 64-bit build. Default is 32-bit. Ninja inherits settings - # from the build environment variables. - ADDITIONAL_CMAKE_FLAGS="-Thost=x64 -A x64" -fi - -if [ "${MACOS_UNIVERSAL-}" = "ON" ]; then - ADDITIONAL_CMAKE_FLAGS="$ADDITIONAL_CMAKE_FLAGS -DCMAKE_OSX_ARCHITECTURES='arm64;x86_64'" -fi - # Disable extra alignment in libbson and libmongocrypt to ensure agreement. # libmongocrypt disables by default, but may enable if a system install of libbson is detected with extra alignment. common_cmake_args=( - $ADDITIONAL_CMAKE_FLAGS -DENABLE_EXTRA_ALIGNMENT=OFF -DCMAKE_BUILD_TYPE=RelWithDebInfo + # Toggle building of tests + -D BUILD_TESTING="${BUILD_TESTING-TRUE}" ) -if is_true USE_NINJA; then +if test "${CMAKE_GENERATOR-}" = Ninja; then export NINJA_EXE : "${NINJA_EXE:="$linker_tests_root/ninja$EXE_SUFFIX"}" - common_cmake_args+=( - -GNinja - -DCMAKE_MAKE_PROGRAM="$NINJA_EXE" - ) + common_cmake_args+=(-DCMAKE_MAKE_PROGRAM="$NINJA_EXE") bash "$EVG_DIR/ensure-ninja.sh" fi @@ -111,11 +98,7 @@ run_cmake \ run_cmake --build "$BUILD_DIR" --target app --config RelWithDebInfo export PATH="$PATH:$BSON1_INSTALL_PATH/bin:$LMC_INSTALL_PATH/bin" -if is_true IS_MULTICONF; then - APP_CMD="$BUILD_DIR/RelWithDebInfo/app.exe" -else - APP_CMD="$BUILD_DIR/app" -fi +APP_CMD="$BUILD_DIR/app" check_output () { output="$($APP_CMD)" diff --git a/.evergreen/pkgconfig-tests.sh b/.evergreen/pkgconfig-tests.sh index e85796d78..6a2b2ec7c 100755 --- a/.evergreen/pkgconfig-tests.sh +++ b/.evergreen/pkgconfig-tests.sh @@ -7,6 +7,8 @@ if ! have_command pkg-config; then exit 0 fi +: "${CFLAGS:=}" + pkgconfig_tests_root=$LIBMONGOCRYPT_DIR/_build/pkgconfig_tests rm -rf "$pkgconfig_tests_root" @@ -14,32 +16,19 @@ mongoc_src_dir="$pkgconfig_tests_root/mongo-c-driver" mkdir -p "$mongoc_src_dir" run_chdir "$pkgconfig_tests_root" "$EVG_DIR/prep_c_driver_source.sh" -if test "$OS_NAME" = "windows" && is_false WINDOWS_32BIT && is_false USE_NINJA; then - # These options are only needed for VS CMake generators to force it to - # generate a 64-bit build. Default is 32-bit. Ninja inherits settings - # from the build environment variables. - ADDITIONAL_CMAKE_FLAGS="-Thost=x64 -A x64" -fi - -if [ "$MACOS_UNIVERSAL" = "ON" ]; then - ADDITIONAL_CMAKE_FLAGS="$ADDITIONAL_CMAKE_FLAGS -DCMAKE_OSX_ARCHITECTURES='arm64;x86_64'" -fi - # Disable extra alignment in libbson and libmongocrypt to ensure agreement. # libmongocrypt disables by default, but may enable if a system install of libbson is detected with extra alignment. common_cmake_args=( -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_EXTRA_ALIGNMENT=OFF - $ADDITIONAL_CMAKE_FLAGS + # Toggle building of tests + -D BUILD_TESTING="${BUILD_TESTING-TRUE}" ) -if is_true USE_NINJA; then +if test "${CMAKE_GENERATOR-}" = Ninja; then export NINJA_EXE : "${NINJA_EXE:="$pkgconfig_tests_root/ninja$EXE_SUFFIX"}" - common_cmake_args+=( - -GNinja - -DCMAKE_MAKE_PROGRAM="$NINJA_EXE" - ) + common_cmake_args+=(-DCMAKE_MAKE_PROGRAM="$NINJA_EXE") bash "$EVG_DIR/ensure-ninja.sh" fi @@ -86,6 +75,7 @@ echo "Build example-state-machine, static linking against libmongocrypt ..." gcc $(pkg-config --cflags libmongocrypt-static bson2-static) \ -o "$pkgconfig_tests_root/example-state-machine" \ "$LIBMONGOCRYPT_DIR/test/example-state-machine.c" \ + $CFLAGS \ $(pkg-config --libs libmongocrypt-static) run_chdir "$LIBMONGOCRYPT_DIR" "$pkgconfig_tests_root/example-state-machine" echo "Build example-state-machine, static linking against libmongocrypt ... done" @@ -94,6 +84,7 @@ echo "Build example-no-bson, static linking against libmongocrypt ..." gcc $(pkg-config --cflags libmongocrypt-static) \ -o "$pkgconfig_tests_root/example-no-bson" \ "$LIBMONGOCRYPT_DIR/test/example-no-bson.c" \ + $CFLAGS \ $(pkg-config --libs libmongocrypt-static) command "$pkgconfig_tests_root/example-no-bson" echo "Build example-no-bson, static linking against libmongocrypt ... done" @@ -102,6 +93,7 @@ echo "Build example-state-machine, dynamic linking against libmongocrypt ..." gcc $(pkg-config --cflags libmongocrypt bson2-static) \ -o "$pkgconfig_tests_root/example-state-machine" \ "$LIBMONGOCRYPT_DIR/test/example-state-machine.c" \ + $CFLAGS \ $(pkg-config --libs libmongocrypt) run_chdir "$LIBMONGOCRYPT_DIR" \ env LD_LIBRARY_PATH="$mongocrypt_install_dir/lib:$mongocrypt_install_dir/lib64" \ @@ -112,6 +104,7 @@ echo "Build example-no-bson, dynamic linking against libmongocrypt ..." gcc $(pkg-config --cflags libmongocrypt) \ -o "$pkgconfig_tests_root/example-no-bson" \ "$LIBMONGOCRYPT_DIR/test/example-no-bson.c" \ + $CFLAGS \ $(pkg-config --libs libmongocrypt) env LD_LIBRARY_PATH="$mongocrypt_install_dir/lib:$mongocrypt_install_dir/lib64" \ "$pkgconfig_tests_root/example-no-bson" @@ -134,6 +127,7 @@ echo "Build example-state-machine, static linking against libmongocrypt ..." gcc $(pkg-config --cflags libmongocrypt-static bson2-static) \ -o "$pkgconfig_tests_root/example-state-machine" \ "$LIBMONGOCRYPT_DIR/test/example-state-machine.c" \ + $CFLAGS \ $(pkg-config --libs libmongocrypt-static) run_chdir "$LIBMONGOCRYPT_DIR" \ env LD_LIBRARY_PATH="$libbson_install_dir/lib:/$libbson_install_dir/lib64" \ @@ -144,6 +138,7 @@ echo "Build example-no-bson, static linking against libmongocrypt ..." gcc $(pkg-config --cflags libmongocrypt-static) \ -o "$pkgconfig_tests_root/example-no-bson" \ "$LIBMONGOCRYPT_DIR/test/example-no-bson.c" \ + $CFLAGS \ $(pkg-config --libs libmongocrypt-static) env LD_LIBRARY_PATH="$libbson_install_dir/lib:/$libbson_install_dir/lib64" \ "$pkgconfig_tests_root/example-no-bson" @@ -153,6 +148,7 @@ echo "Build example-state-machine, dynamic linking against libmongocrypt ..." gcc $(pkg-config --cflags libmongocrypt bson2-static) \ -o "$pkgconfig_tests_root/example-state-machine" \ "$LIBMONGOCRYPT_DIR/test/example-state-machine.c" \ + $CFLAGS \ $(pkg-config --libs libmongocrypt) run_chdir "$LIBMONGOCRYPT_DIR" \ env LD_LIBRARY_PATH="$mongocrypt_install_dir/lib:$mongocrypt_install_dir/lib64:$libbson_install_dir/lib:$libbson_install_dir/lib64" \ @@ -163,6 +159,7 @@ echo "Build example-no-bson, dynamic linking against libmongocrypt ..." gcc $(pkg-config --cflags libmongocrypt) \ -o "$pkgconfig_tests_root/example-no-bson" \ "$LIBMONGOCRYPT_DIR/test/example-no-bson.c" \ + $CFLAGS \ $(pkg-config --libs libmongocrypt) env LD_LIBRARY_PATH="$mongocrypt_install_dir/lib:$mongocrypt_install_dir/lib64:$libbson_install_dir/lib:$libbson_install_dir/lib64" \ "$pkgconfig_tests_root/example-no-bson" diff --git a/.evergreen/setup-env.sh b/.evergreen/setup-env.sh index e044e3fce..bbc311fd1 100644 --- a/.evergreen/setup-env.sh +++ b/.evergreen/setup-env.sh @@ -2,21 +2,10 @@ . "$(dirname "${BASH_SOURCE[0]}")/init.sh" -: "${ADDITIONAL_CMAKE_FLAGS:=}" -: "${LIBMONGOCRYPT_EXTRA_CMAKE_FLAGS:=}" -: "${LIBMONGOCRYPT_EXTRA_CFLAGS:=}" : "${PPA_BUILD_ONLY:=}" -: "${MACOS_UNIVERSAL:=}" : "${WINDOWS_32BIT:=}" : "${OS:=unspecified}" -IS_MULTICONF=OFF -if test "$OS_NAME" = "windows" && is_false USE_NINJA; then - IS_MULTICONF=ON -fi - -: "$IS_MULTICONF" # Silence shellcheck - evergreen_root="$(dirname "$LIBMONGOCRYPT_DIR")" : "${MONGOCRYPT_INSTALL_PREFIX:="$evergreen_root/install/libmongocrypt"}" @@ -31,8 +20,8 @@ if test -f /proc/cpuinfo; then # Add two (hueristic to compensate for I/O latency) jobs="$(echo "$jobs+2" | bc)" fi - export MAKEFLAGS="-j$jobs ${MAKEFLAGS-}" + export CMAKE_BUILD_PARALLEL_LEVEL="$jobs" else # Cannot tell the best number of jobs. Provide a reasonable default. - export MAKEFLAGS="-j8 ${MAKEFLAGS-}" + export CMAKE_BUILD_PARALLEL_LEVEL="8" fi diff --git a/etc/mongo-common-test-harness.patch b/etc/mongo-common-test-harness.patch index a952d62ec..5dfff9ab0 100644 --- a/etc/mongo-common-test-harness.patch +++ b/etc/mongo-common-test-harness.patch @@ -7,7 +7,7 @@ index e95cd8d8a4..3f3db6ce2a 100644 set_property(TARGET mongo-mlib PROPERTY EXPORT_NAME mongo::mlib) -if(CMAKE_CXX_COMPILER) -+if(CMAKE_CXX_COMPILER AND ENABLE_TESTS) ++if(CMAKE_CXX_COMPILER AND BUILD_TESTING) add_executable(mlib-ckdint-test src/mlib/ckdint.test.cpp) set_target_properties(mlib-ckdint-test PROPERTIES COMPILE_FEATURES cxx_std_11