From e580740a7fbdaf8ed13385bcede0f776236be55d Mon Sep 17 00:00:00 2001 From: "Peter A. Jonsson" Date: Fri, 4 Oct 2024 18:08:52 +0200 Subject: [PATCH] docker: use ninja as build system There are some nice features in CMake that are limited to Ninja only, for example JOB_POOL_LINK and Multi-config: https://cmake.org/cmake/help/latest/prop_tgt/JOB_POOL_LINK.html https://cmake.org/cmake/help/latest/generator/Ninja%20Multi-Config.html https://www.scivision.dev/cmake-ninja-multi-config/ The first limits the number of linking processes running concurrently, and the second avoids having to re-generate the build files to make a debug/release build. Ninja is also rumored to be slightly faster than make, and that seems to hold for GDAL as well, a simple benchmark (time -p) with a warm cache (second time image is built) for ubuntu-small on a 48 core machine (3 GHz dual Xeon Gold 6136): PROJ: make: real 65.39 user 400.61 sys 34.91 ninja: real 64.84 user 413.17 sys 34.97 GDAL: make: real 86.40 user 2466.07 sys 180.64 ninja: real 82.43 user 2471.69 sys 169.74 --- docker/alpine-normal/Dockerfile | 24 ++++++++----- docker/alpine-small/Dockerfile | 33 ++++++++++-------- docker/ubuntu-full/Dockerfile | 62 ++++++++++++++++----------------- docker/ubuntu-full/bh-gdal.sh | 5 +-- docker/ubuntu-full/bh-proj.sh | 5 +-- docker/ubuntu-small/Dockerfile | 18 +++++----- 6 files changed, 81 insertions(+), 66 deletions(-) diff --git a/docker/alpine-normal/Dockerfile b/docker/alpine-normal/Dockerfile index 409aedb15a91..3371a4e54af3 100644 --- a/docker/alpine-normal/Dockerfile +++ b/docker/alpine-normal/Dockerfile @@ -62,6 +62,7 @@ RUN apk add --no-cache \ make \ mariadb-connector-c-dev \ netcdf-dev \ + ninja-build \ odbc-cpp-wrapper-dev \ ogdi-dev \ openexr-dev \ @@ -121,10 +122,11 @@ RUN if test "${OPENDRIVE_VERSION}" != ""; then ( \ && tar xzf ${OPENDRIVE_VERSION}.tar.gz \ && rm -f ${OPENDRIVE_VERSION}.tar.gz \ && cd libOpenDRIVE-${OPENDRIVE_VERSION} \ - && cmake . -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release \ + && export PATH=/usr/lib/ninja-build/bin:$PATH \ + && cmake . -G Ninja -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/ \ - && make -j$(nproc) \ - && make install \ + && ninja \ + && ninja install \ && mkdir -p /build_thirdparty/usr/lib \ && cp -P /usr/lib/libOpenDrive*.so* /build_thirdparty/usr/lib \ && for i in /build_thirdparty/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \ @@ -151,16 +153,18 @@ RUN mkdir proj \ export PROJ_DB_CACHE_DIR="$HOME/.ccache"; \ ccache -M 100M; \ fi \ + && export PATH=/usr/lib/ninja-build/bin:$PATH \ # IPO disabled since it crashes with gcc 13.2.1 && cmake . \ + -G Ninja \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ -DENABLE_IPO=OFF \ -DBUILD_TESTING=OFF \ - && make -j$(nproc) \ - && make install \ - && make install DESTDIR="/build_proj" \ + && ninja \ + && ninja install \ + && DESTDIR="/build_proj" ninja install \ && if test "${RSYNC_REMOTE}" != ""; then \ ccache -s; \ echo "Uploading cache..."; \ @@ -248,9 +252,11 @@ RUN if test "${GDAL_VERSION}" = "master"; then \ mkdir -p "$HOME/.ccache"; \ ccache -M 1G; \ fi \ + && export PATH=/usr/lib/ninja-build/bin:$PATH \ && mkdir build \ && cd build \ && cmake .. \ + -G Ninja \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DGDAL_USE_TIFF_INTERNAL=ON \ @@ -260,9 +266,9 @@ RUN if test "${GDAL_VERSION}" = "master"; then \ -DBUILD_TESTING=OFF \ -DOpenDrive_DIR=/usr/lib/ \ -DOGR_ENABLE_DRIVER_XODR_PLUGIN=TRUE \ - && make -j$(nproc) \ - && make install DESTDIR="/build" \ - && (make -j$(nproc) multireadtest && cp apps/multireadtest /build/usr/bin) \ + && ninja \ + && DESTDIR="/build" ninja install \ + && (ninja multireadtest && cp apps/multireadtest /build/usr/bin) \ && cd .. \ && if test "${RSYNC_REMOTE}" != ""; then \ ccache -s; \ diff --git a/docker/alpine-small/Dockerfile b/docker/alpine-small/Dockerfile index 2c79b78d1bc0..6c199cbf1be3 100644 --- a/docker/alpine-small/Dockerfile +++ b/docker/alpine-small/Dockerfile @@ -24,21 +24,22 @@ RUN apk add --no-cache \ # Build openjpeg #ARG OPENJPEG_VERSION=2.3.1 RUN if test "${OPENJPEG_VERSION}" != ""; then ( \ - apk add --no-cache cmake \ + apk add --no-cache cmake ninja-build \ + && export PATH=/usr/lib/ninja-build/bin:$PATH \ && curl -LO -fsS https://github.com/uclouvain/openjpeg/archive/v${OPENJPEG_VERSION}.tar.gz \ && tar xzf v${OPENJPEG_VERSION}.tar.gz \ && rm -f v${OPENJPEG_VERSION}.tar.gz \ && cd openjpeg-${OPENJPEG_VERSION} \ - && cmake . -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Release \ + && cmake . -G Ninja -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ - && make -j$(nproc) \ - && make install \ + && ninja \ + && ninja install \ && mkdir -p /build_thirdparty/usr/lib \ && cp -P /usr/lib/libopenjp2*.so* /build_thirdparty/usr/lib \ && for i in /build_thirdparty/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \ && cd .. \ && rm -rf openjpeg-${OPENJPEG_VERSION} \ - && apk del cmake \ + && apk del cmake ninja-build \ ); fi RUN apk add --no-cache rsync ccache @@ -55,7 +56,8 @@ ARG RSYNC_REMOTE # Build PROJ ARG PROJ_VERSION=master RUN mkdir proj \ - && apk add --no-cache cmake \ + && apk add --no-cache cmake ninja-build \ + && export PATH=/usr/lib/ninja-build/bin:$PATH \ && curl -L -fsS https://github.com/OSGeo/PROJ/archive/${PROJ_VERSION}.tar.gz \ | tar xz -C proj --strip-components=1 \ && cd proj \ @@ -71,14 +73,15 @@ RUN mkdir proj \ fi \ # IPO disabled since it crashes with gcc 13.2.1 && cmake . \ + -G Ninja \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ -DENABLE_IPO=OFF \ -DBUILD_TESTING=OFF \ - && make -j$(nproc) \ - && make install \ - && make install DESTDIR="/build_proj" \ + && ninja \ + && ninja install \ + && DESTDIR="/build_proj" ninja install \ && if test "${RSYNC_REMOTE}" != ""; then \ ccache -s; \ echo "Uploading cache..."; \ @@ -92,7 +95,7 @@ RUN mkdir proj \ && rm -rf proj \ && for i in /build_proj/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \ && for i in /build_proj/usr/bin/*; do strip -s $i 2>/dev/null || /bin/true; done \ - && apk del cmake + && apk del cmake ninja-build # Build GDAL ARG GDAL_VERSION=master @@ -104,7 +107,8 @@ RUN if test "${GDAL_VERSION}" = "master"; then \ export GDAL_VERSION=$(curl -Ls https://api.github.com/repos/${GDAL_REPOSITORY}/commits/HEAD -H "Accept: application/vnd.github.VERSION.sha"); \ export GDAL_RELEASE_DATE=$(date "+%Y%m%d"); \ fi \ - && apk add --no-cache cmake \ + && apk add --no-cache cmake ninja-build \ + && export PATH=/usr/lib/ninja-build/bin:$PATH \ && if test "x${GDAL_BUILD_IS_RELEASE}" = "x"; then \ export GDAL_SHA1SUM=${GDAL_VERSION}; \ fi \ @@ -124,13 +128,14 @@ RUN if test "${GDAL_VERSION}" = "master"; then \ && mkdir build \ && cd build \ && cmake .. \ + -G Ninja \ -DCMAKE_INSTALL_PREFIX=/usr \ -DCMAKE_BUILD_TYPE=Release \ -DGDAL_USE_TIFF_INTERNAL=ON \ -DGDAL_USE_GEOTIFF_INTERNAL=ON \ -DBUILD_TESTING=OFF \ - && make -j$(nproc) \ - && make install DESTDIR="/build" \ + && ninja \ + && DESTDIR="/build" ninja install \ && cd .. \ && if test "${RSYNC_REMOTE}" != ""; then \ ccache -s; \ @@ -149,7 +154,7 @@ RUN if test "${GDAL_VERSION}" = "master"; then \ && mv /build/usr/bin /build_gdal_version_changing/usr \ && for i in /build_gdal_version_changing/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \ && for i in /build_gdal_version_changing/usr/bin/*; do strip -s $i 2>/dev/null || /bin/true; done \ - && apk del cmake + && apk del cmake ninja-build # Build final image FROM alpine:${ALPINE_VERSION} AS runner diff --git a/docker/ubuntu-full/Dockerfile b/docker/ubuntu-full/Dockerfile index 41535d96f54c..b916c2e32e7d 100644 --- a/docker/ubuntu-full/Dockerfile +++ b/docker/ubuntu-full/Dockerfile @@ -41,7 +41,7 @@ RUN . /buildscripts/bh-set-envvars.sh \ && apt-get update -y \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --fix-missing --no-install-recommends \ build-essential ca-certificates \ - git make cmake wget unzip libtool automake \ + git make ninja-build cmake wget unzip libtool automake \ zlib1g-dev${APT_ARCH_SUFFIX} libsqlite3-dev${APT_ARCH_SUFFIX} pkg-config sqlite3 libcurl4-openssl-dev${APT_ARCH_SUFFIX} \ libtiff-dev${APT_ARCH_SUFFIX} \ && rm -rf /var/lib/apt/lists/* @@ -78,12 +78,12 @@ RUN . /buildscripts/bh-set-envvars.sh \ && unzip -q kealib-${KEA_VERSION}.zip \ && rm -f kealib-${KEA_VERSION}.zip \ && cd kealib-kealib-${KEA_VERSION} \ - && cmake . -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release \ + && cmake . -G Ninja -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr -DHDF5_INCLUDE_DIR=/usr/include/hdf5/serial \ -DHDF5_LIB_PATH=/usr/lib/${GCC_ARCH}-linux-gnu/hdf5/serial -DLIBKEA_WITH_GDAL=OFF \ - && make -j$(nproc) \ - && make install DESTDIR="/build_thirdparty" \ - && make install \ + && ninja \ + && DESTDIR="/build_thirdparty" ninja install \ + && ninja install \ && cd .. \ && rm -rf kealib-kealib-${KEA_VERSION} \ && for i in /build_thirdparty/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \ @@ -98,10 +98,10 @@ RUN . /buildscripts/bh-set-envvars.sh \ && cd mongo-c-driver \ && mkdir build_cmake \ && cd build_cmake \ - && cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_TESTS=NO -DCMAKE_BUILD_TYPE=Release \ - && make -j$(nproc) \ - && make install DESTDIR="/build_thirdparty" \ - && make install \ + && cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_TESTS=NO -DCMAKE_BUILD_TYPE=Release \ + && ninja \ + && DESTDIR="/build_thirdparty" ninja install \ + && ninja install \ && cd ../.. \ && rm -rf mongo-c-driver \ && rm /build_thirdparty/usr/lib/${GCC_ARCH}-linux-gnu/*.a \ @@ -117,10 +117,10 @@ RUN . /buildscripts/bh-set-envvars.sh \ && cd mongocxx \ && mkdir build_cmake \ && cd build_cmake \ - && cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DBSONCXX_POLY_USE_BOOST=ON -DENABLE_TESTS=OFF -DMONGOCXX_ENABLE_SLOW_TESTS=NO -DCMAKE_BUILD_TYPE=Release -DBUILD_VERSION=${MONGOCXX_VERSION} \ - && make -j$(nproc) \ - && make install DESTDIR="/build_thirdparty" \ - && make install \ + && cmake .. -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DBSONCXX_POLY_USE_BOOST=ON -DENABLE_TESTS=OFF -DMONGOCXX_ENABLE_SLOW_TESTS=NO -DCMAKE_BUILD_TYPE=Release -DBUILD_VERSION=${MONGOCXX_VERSION} \ + && ninja \ + && DESTDIR="/build_thirdparty" ninja install \ + && ninja install \ && cd ../.. \ && rm -rf mongocxx \ && for i in /build_thirdparty/usr/lib/${GCC_ARCH}-linux-gnu/*; do strip -s $i 2>/dev/null || /bin/true; done \ @@ -143,10 +143,10 @@ RUN . /buildscripts/bh-set-envvars.sh \ && patch -p0 < /buildscripts/tiledb-FindOpenSSL_EP.cmake.patch \ && mkdir build_cmake \ && cd build_cmake \ - && cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DTILEDB_WERROR=OFF -DTILEDB_SUPERBUILD=OFF -DTILEDB_TESTS=OFF -DCOMPILER_SUPPORTS_AVX2=FALSE -DOPENSSL_INCLUDE_DIR=/usr/include -DOPENSSL_CRYPTO_LIBRARY=/usr/lib/${GCC_ARCH}-linux-gnu/libcrypto.so -DOPENSSL_SSL_LIBRARY=/usr/lib/${GCC_ARCH}-linux-gnu/libssl.so \ - && make -j$(nproc) \ - && make -j$(nproc) install DESTDIR="/build_thirdparty" \ - && make -j$(nproc) install \ + && cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DTILEDB_WERROR=OFF -DTILEDB_SUPERBUILD=OFF -DTILEDB_TESTS=OFF -DCOMPILER_SUPPORTS_AVX2=FALSE -DOPENSSL_INCLUDE_DIR=/usr/include -DOPENSSL_CRYPTO_LIBRARY=/usr/lib/${GCC_ARCH}-linux-gnu/libcrypto.so -DOPENSSL_SSL_LIBRARY=/usr/lib/${GCC_ARCH}-linux-gnu/libssl.so \ + && ninja \ + && DESTDIR="/build_thirdparty" ninja install \ + && ninja install \ && cd ../.. \ && rm -rf tiledb \ && for i in /build_thirdparty/usr/lib/${GCC_ARCH}-linux-gnu/*; do strip -s $i 2>/dev/null || /bin/true; done \ @@ -160,10 +160,10 @@ RUN . /buildscripts/bh-set-envvars.sh \ && tar xzf v${OPENJPEG_VERSION}.tar.gz \ && rm -f v${OPENJPEG_VERSION}.tar.gz \ && cd openjpeg-${OPENJPEG_VERSION} \ - && cmake . -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Release \ + && cmake . -G Ninja -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ - && make -j$(nproc) \ - && make install \ + && ninja \ + && ninja install \ && mkdir -p /build_thirdparty/usr/lib/${GCC_ARCH}-linux-gnu \ && rm -f /usr/lib/${GCC_ARCH}-linux-gnu/libopenjp2.so* \ && mv /usr/lib/libopenjp2.so* /usr/lib/${GCC_ARCH}-linux-gnu \ @@ -181,10 +181,10 @@ RUN . /buildscripts/bh-set-envvars.sh \ && tar xzf ${OPENDRIVE_VERSION}.tar.gz \ && rm -f ${OPENDRIVE_VERSION}.tar.gz \ && cd libOpenDRIVE-${OPENDRIVE_VERSION} \ - && cmake . -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release \ + && cmake . -G Ninja -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr/ \ - && make -j$(nproc) \ - && make install \ + && ninja \ + && ninja install \ && mkdir -p /build_thirdparty/usr/lib \ && cp -P /usr/lib/libOpenDrive*.so* /build_thirdparty/usr/lib \ && for i in /build_thirdparty/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \ @@ -213,10 +213,10 @@ RUN . /buildscripts/bh-set-envvars.sh \ && cd QB3/QB3lib \ && mkdir build \ && cd build \ - && cmake .. ${CMAKE_EXTRA_ARGS} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release \ - && make -j$(nproc) \ - && make -j$(nproc) install \ - && make install DESTDIR="/build_thirdparty" \ + && cmake .. -G Ninja ${CMAKE_EXTRA_ARGS} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release \ + && ninja \ + && ninja install \ + && DESTDIR="/build_thirdparty" ninja install \ && cd ../../.. \ && rm -rf QB3 @@ -241,10 +241,10 @@ RUN . /buildscripts/bh-set-envvars.sh \ && cd libjxl \ && mkdir build \ && cd build \ - && cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF -DBUILD_TESTING=OFF -DJPEGXL_ENABLE_TOOLS=OFF -DJPEGXL_ENABLE_BENCHMARK=OFF .. \ - && make -j$(nproc) \ - && make -j$(nproc) install \ - && make install DESTDIR="/build_thirdparty" \ + && cmake -G Ninja -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DJPEGXL_ENABLE_JPEGLI_LIBJPEG=OFF -DBUILD_TESTING=OFF -DJPEGXL_ENABLE_TOOLS=OFF -DJPEGXL_ENABLE_BENCHMARK=OFF .. \ + && ninja \ + && ninja install \ + && DESTDIR="/build_thirdparty" ninja install \ && rm -f /lib/${GCC_ARCH}-linux-gnu/libjxl*.a \ && rm -f /build_thirdparty/lib/${GCC_ARCH}-linux-gnu/libjxl*.a \ && cd ../.. \ diff --git a/docker/ubuntu-full/bh-gdal.sh b/docker/ubuntu-full/bh-gdal.sh index da18b6956cc1..a4f74209400a 100755 --- a/docker/ubuntu-full/bh-gdal.sh +++ b/docker/ubuntu-full/bh-gdal.sh @@ -64,6 +64,7 @@ curl -L -fsS "https://github.com/${GDAL_REPOSITORY}/archive/${GDAL_VERSION}.tar. fi echo "${GDAL_CMAKE_EXTRA_OPTS}" cmake .. \ + -G Ninja \ -DCMAKE_INSTALL_PREFIX=/usr \ -DGDAL_FIND_PACKAGE_PROJ_MODE=MODULE \ -DBUILD_TESTING=OFF \ @@ -76,8 +77,8 @@ curl -L -fsS "https://github.com/${GDAL_REPOSITORY}/archive/${GDAL_VERSION}.tar. -DOpenDrive_DIR=/usr/lib/ \ -DOGR_ENABLE_DRIVER_XODR_PLUGIN=TRUE \ - make "-j$(nproc)" - make install DESTDIR="/build" + ninja + DESTDIR="/build" ninja install cd .. diff --git a/docker/ubuntu-full/bh-proj.sh b/docker/ubuntu-full/bh-proj.sh index 2487dfbe8ac8..6bbff3e1c7f6 100755 --- a/docker/ubuntu-full/bh-proj.sh +++ b/docker/ubuntu-full/bh-proj.sh @@ -35,12 +35,13 @@ curl -L -fsS "https://github.com/OSGeo/PROJ/archive/${PROJ_VERSION}.tar.gz" \ export CXXFLAGS="-DPROJ_RENAME_SYMBOLS -DPROJ_INTERNAL_CPP_NAMESPACE -O2 -g" cmake . \ + -G Ninja \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_INSTALL_PREFIX=${PROJ_INSTALL_PREFIX:-/usr/local} \ -DBUILD_TESTING=OFF - make "-j$(nproc)" - make install DESTDIR="${DESTDIR}" + ninja + DESTDIR="${DESTDIR}" ninja install if [ -n "${RSYNC_REMOTE:-}" ]; then ccache -s diff --git a/docker/ubuntu-small/Dockerfile b/docker/ubuntu-small/Dockerfile index 51fdd75c9482..00867db58508 100644 --- a/docker/ubuntu-small/Dockerfile +++ b/docker/ubuntu-small/Dockerfile @@ -42,7 +42,7 @@ RUN . /buildscripts/bh-set-envvars.sh \ && apt-get update -y \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --fix-missing --no-install-recommends \ build-essential ca-certificates \ - git make cmake wget unzip libtool automake \ + git make ninja-build cmake wget unzip libtool automake \ zlib1g-dev${APT_ARCH_SUFFIX} libsqlite3-dev${APT_ARCH_SUFFIX} pkg-config sqlite3 libcurl4-openssl-dev${APT_ARCH_SUFFIX} \ libtiff-dev${APT_ARCH_SUFFIX} \ && rm -rf /var/lib/apt/lists/* @@ -70,10 +70,10 @@ RUN . /buildscripts/bh-set-envvars.sh \ && tar xzf v${OPENJPEG_VERSION}.tar.gz \ && rm -f v${OPENJPEG_VERSION}.tar.gz \ && cd openjpeg-${OPENJPEG_VERSION} \ - && cmake . -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Release \ + && cmake . -G Ninja -DBUILD_SHARED_LIBS=ON -DBUILD_STATIC_LIBS=OFF -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=/usr \ - && make -j$(nproc) \ - && make install \ + && ninja \ + && ninja install \ && mkdir -p /build_thirdparty/usr/lib \ && cp -P /usr/lib/libopenjp2*.so* /build_thirdparty/usr/lib \ && for i in /build_thirdparty/usr/lib/*; do strip -s $i 2>/dev/null || /bin/true; done \ @@ -112,12 +112,13 @@ RUN . /buildscripts/bh-set-envvars.sh \ fi \ && CFLAGS='-DPROJ_RENAME_SYMBOLS -O2' CXXFLAGS='-DPROJ_RENAME_SYMBOLS -DPROJ_INTERNAL_CPP_NAMESPACE -O2' \ cmake . \ + -G Ninja \ -DBUILD_SHARED_LIBS=ON \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX=${PROJ_INSTALL_PREFIX} \ -DBUILD_TESTING=OFF \ - && make -j$(nproc) \ - && make install DESTDIR="/build" \ + && ninja \ + && DESTDIR="/build" ninja install \ && if test "${RSYNC_REMOTE:-}" != ""; then \ ccache -s; \ echo "Uploading cache..."; \ @@ -179,6 +180,7 @@ RUN . /buildscripts/bh-set-envvars.sh \ # -Wno-psabi avoid 'note: parameter passing for argument of type 'std::pair' when C++17 is enabled changed to match C++14 in GCC 10.1' on arm64 && CFLAGS='-DPROJ_RENAME_SYMBOLS -O2' CXXFLAGS='-DPROJ_RENAME_SYMBOLS -DPROJ_INTERNAL_CPP_NAMESPACE -O2 -Wno-psabi' \ cmake .. \ + -G Ninja \ -DCMAKE_INSTALL_PREFIX=/usr \ -DGDAL_FIND_PACKAGE_PROJ_MODE=MODULE \ -DPROJ_INCLUDE_DIR="/build${PROJ_INSTALL_PREFIX-/usr/local}/include" \ @@ -186,8 +188,8 @@ RUN . /buildscripts/bh-set-envvars.sh \ -DGDAL_USE_TIFF_INTERNAL=ON \ -DGDAL_USE_GEOTIFF_INTERNAL=ON \ -DBUILD_TESTING=OFF \ - && make -j$(nproc) \ - && make install DESTDIR="/build" \ + && ninja \ + && DESTDIR="/build" ninja install \ && cd .. \ && if test "${RSYNC_REMOTE:-}" != ""; then \ ccache -s; \