Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 14 additions & 15 deletions .github/workflows/windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ jobs:
BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS }}
BUILD_TYPE: ${{ matrix.BUILD_TYPE }}
CMAKE_GENERATOR: Ninja
CMAKE_OPTIONS: "-Werror=dev --log-level=VERBOSE"

steps:

Expand Down Expand Up @@ -69,13 +70,11 @@ jobs:
mkdir %PROJ_DB_CACHE_DIR%
set PATH=%VCPKG_INSTALLED%\bin;%VCPKG_INSTALLED%\tools;%PATH%
set PROJ_BUILD=%GITHUB_WORKSPACE%\build
mkdir %PROJ_BUILD%
cd %PROJ_BUILD%
set PROJ_DIR=%GITHUB_WORKSPACE%\proj_dir
:: Not directly linked to BUILD_SHARED_LIBS, but a way to test different C++ standard versions
if "${{ env.BUILD_SHARED_LIBS }}"=="ON" (set CMAKE_CXX_STANDARD="-DCMAKE_CXX_STANDARD=20")
if "${{ env.BUILD_TYPE }}"=="Release" (set CMAKE_UNITY_BUILD_OPT="-DCMAKE_UNITY_BUILD=ON")
cmake ^
cmake ${{ env.CMAKE_OPTIONS }} ^
-D CMAKE_BUILD_TYPE="${{ env.BUILD_TYPE }}" ^
-D BUILD_SHARED_LIBS="${{ env.BUILD_SHARED_LIBS }}" ^
-D EXPORT_PDB="ON" ^
Expand All @@ -84,9 +83,10 @@ jobs:
-D CMAKE_TOOLCHAIN_FILE=c:/vcpkg/scripts/buildsystems/vcpkg.cmake ^
-D CMAKE_INSTALL_PREFIX="%PROJ_DIR%" ^
-D PROJ_DB_CACHE_DIR=%PROJ_DB_CACHE_DIR% ^
%CMAKE_UNITY_BUILD_OPT% ..
ninja -v
ninja install
%CMAKE_UNITY_BUILD_OPT% ^
-S . -B %PROJ_BUILD%
cmake --build %PROJ_BUILD%
cmake --install %PROJ_BUILD%
dir %PROJ_DIR%\bin

- name: Run tests
Expand Down Expand Up @@ -134,6 +134,8 @@ jobs:
BUILD_SHARED_LIBS: ${{ matrix.BUILD_SHARED_LIBS }}
BUILD_TYPE: Release
CMAKE_GENERATOR: "MSYS Makefiles"
CMAKE_OPTIONS: "-Werror=dev --log-level=VERBOSE"
CMAKE_BUILD_PARALLEL_LEVEL: 2

steps:

Expand Down Expand Up @@ -168,10 +170,7 @@ jobs:
ccache -s
PROJ_BUILD=${GITHUB_WORKSPACE}/build
PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir
mkdir ${PROJ_BUILD}
cd ${PROJ_BUILD}

cmake \
cmake ${{ env.CMAKE_OPTIONS }} \
-D CMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-D BUILD_SHARED_LIBS=${{ env.BUILD_SHARED_LIBS }} \
-D CMAKE_INSTALL_PREFIX="${PROJ_DIR}" \
Expand All @@ -183,15 +182,15 @@ jobs:
-D CMAKE_CXX_STANDARD=20 \
-D EMBED_RESOURCE_FILES=ON \
-D USE_ONLY_EMBEDDED_RESOURCE_FILES=ON \
..
make -j 2
-S . -B ${PROJ_BUILD}
cmake --build ${PROJ_BUILD}

- name: Seond build with EMBED_RESOURCE_FILES=OFF and USE_ONLY_EMBEDDED_RESOURCE_FILES=OFF
run: |
PROJ_BUILD=${GITHUB_WORKSPACE}/build
PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir
cd ${PROJ_BUILD}
cmake \
cmake ${{ env.CMAKE_OPTIONS }} \
-D CMAKE_BUILD_TYPE=${{ env.BUILD_TYPE }} \
-D BUILD_SHARED_LIBS=${{ env.BUILD_SHARED_LIBS }} \
-D CMAKE_INSTALL_PREFIX="${PROJ_DIR}" \
Expand All @@ -204,8 +203,8 @@ jobs:
-D EMBED_RESOURCE_FILES=OFF \
-D USE_ONLY_EMBEDDED_RESOURCE_FILES=OFF \
..
make -j 2
make install
cmake --build ${PROJ_BUILD}
cmake --install ${PROJ_BUILD}
ls ${PROJ_DIR}/bin
ccache -s

Expand Down
32 changes: 26 additions & 6 deletions ci/emscripten/build_wasm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,20 @@ mkdir -p ${TEMP_BUILD_DIR}
# and some other.
EM_PTHREADS_FLAGS="-pthread -matomics -mbulk-memory -fexceptions"

cmake --version

# cmake-diagnostics added with CMake 4.4
# https://cmake.org/cmake/help/v4.4/manual/cmake-diagnostics.7.html
CMAKE_MAJOR_MINOR=$(cmake --version | grep -o '[[:digit:]]\+\.[[:digit:]]\+')
cmp_44=$(printf "4.4\n${CMAKE_MAJOR_MINOR}\n")
sorted_44=$(echo "$cmp_44" | sort -V)
if [ "$cmp_44" = "$sorted_44" ]; then # CMake 4.4 or later
cmake_diagnostics=author
else # Before CMake 4.4
cmake_diagnostics=dev
fi
CMAKE_OPTIONS="-Werror=${cmake_diagnostics} --log-level=VERBOSE"

# --- Utility Functions ---

function log_step {
Expand All @@ -44,21 +58,27 @@ function log_step {
echo ""
}

function configure_cmake {
# Use emcmake wrapper to correctly configure the toolchain
function configure_cmake_c {
# Use emcmake wrapper to correctly configure the toolchain for C
emcmake cmake "$@" \
${CMAKE_OPTIONS} \
-G Ninja \
-D CMAKE_INSTALL_PREFIX="${INSTALL_DIR}" \
-D CMAKE_BUILD_TYPE=Release \
-D BUILD_SHARED_LIBS=OFF \
-D CMAKE_C_FLAGS="${EM_PTHREADS_FLAGS}" \
-D CMAKE_CXX_FLAGS="${EM_PTHREADS_FLAGS}" \
-D CMAKE_FIND_ROOT_PATH="${INSTALL_DIR}" \
-D CMAKE_FIND_ROOT_PATH_MODE_PACKAGE=ONLY \
-D CMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
-D CMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY
}

function configure_cmake_c_cxx {
# Use emcmake wrapper to correctly configure the toolchain for C and C++
configure_cmake_c "$@" \
-D CMAKE_CXX_FLAGS="${EM_PTHREADS_FLAGS}"
}

function build_and_install {
cmake --build . --parallel $(nproc)
cmake --install .
Expand Down Expand Up @@ -112,7 +132,7 @@ else
mkdir -p build_wasm
cd build_wasm

configure_cmake .. -DZLIB_BUILD_EXAMPLES=OFF
configure_cmake_c .. -DZLIB_BUILD_EXAMPLES=OFF
build_and_install

# Handle case where Zlib installs as libzlibstatic.a instead of libz.a
Expand Down Expand Up @@ -145,7 +165,7 @@ else

# Configure minimal LibTIFF: No JPEG, No LZMA, No WebP, No ZSTD.
# Only Zlib support enabled.
configure_cmake .. \
configure_cmake_c_cxx .. \
-D tiff-tools=OFF \
-D tiff-tests=OFF \
-D tiff-contrib=OFF \
Expand Down Expand Up @@ -231,7 +251,7 @@ else
cd ${PROJ_BUILD_WASM_DIR}

# Configure PROJ
configure_cmake ${PROJ_SRC_DIR} \
configure_cmake_c_cxx ${PROJ_SRC_DIR} \
-D BUILD_TESTING=OFF \
-D BUILD_APPS=OFF \
-D ENABLE_TIFF=ON \
Expand Down
77 changes: 59 additions & 18 deletions ci/fedora_rawhide/start.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

set -e

dnf install -y cmake clang ccache ninja-build sqlite-devel libtiff-devel libcurl-devel diffutils wget
dnf install -y cmake clang ccache ninja-build sqlite-devel libtiff-devel libcurl-devel diffutils wget gtest-devel python3-pyyaml
# For this build, install nlohmann-json so that the "use external"
# branch is tested; the other builds use the vendored copy.
dnf install -y nlohmann-json-devel
Expand All @@ -12,51 +12,92 @@ cd "$WORK_DIR"
if test -f "$WORK_DIR/ccache.tar.gz"; then
echo "Restoring ccache..."
(cd $HOME && tar xzf "$WORK_DIR/ccache.tar.gz")
# temporary fix to move previous .cache to .ccache
if [ -d "$HOME/.cache" ] && [ ! -d "$HOME/.ccache" ]; then
mv "$HOME/.cache" "$HOME/.ccache"
fi
else
mkdir -p $HOME/.ccache
fi

export CCACHE_CPP2=yes

ccache -M 500M
ccache -s

mkdir build
cd build
# cmake-diagnostics added with CMake 4.4
# https://cmake.org/cmake/help/v4.4/manual/cmake-diagnostics.7.html
CMAKE_MAJOR_MINOR=$(cmake --version | grep -o '[[:digit:]]\+\.[[:digit:]]\+')
cmp_44=$(printf "4.4\n${CMAKE_MAJOR_MINOR}\n")
sorted_44=$(echo "$cmp_44" | sort -V)
if [ "$cmp_44" = "$sorted_44" ]; then # CMake 4.4 or later
cmake_diagnostics=author
else # Before CMake 4.4
cmake_diagnostics=dev
fi
CMAKE_OPTIONS="-Werror=${cmake_diagnostics} --log-level=VERBOSE"

export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc)
export CTEST_PARALLEL_LEVEL=$(nproc)

echo "Build with -DEMBED_RESOURCE_FILES=ON"
CC=clang CXX=clang++ cmake .. \
-DEMBED_RESOURCE_FILES=ON -DUSE_CCACHE=ON -DPROJ_DB_CACHE_DIR=$HOME/.ccache ..
make -j$(nproc)
ctest -j$(nproc)
CC=clang CXX=clang++ cmake ${CMAKE_OPTIONS} \
-D EMBED_RESOURCE_FILES=ON \
-D USE_CCACHE=ON \
-D PROJ_DB_CACHE_DIR=$HOME/.ccache \
-S . -B build

cmake --build build

(cd build && ctest --output-on-failure)
rm -rf build

# Try EMBED_RESOURCE_DIRECTORY option
wget https://raw.githubusercontent.com/OSGeo/PROJ-data/refs/heads/master/us_nga/us_nga_egm96_15.tif
wget https://cdn.proj.org/fi_nls_ykj_etrs35fin.gpkg
mkdir grids
mv us_nga_egm96_15.tif grids
mv fi_nls_ykj_etrs35fin.gpkg grids
wget -P grids https://raw.githubusercontent.com/OSGeo/PROJ-data/refs/heads/master/us_nga/us_nga_egm96_15.tif
wget -P grids https://cdn.proj.org/fi_nls_ykj_etrs35fin.gpkg

echo "Build with -DEMBED_RESOURCE_FILES=ON -DEMBED_RESOURCE_DIRECTORY=$PWD/grids"
CC=clang CXX=clang++ cmake .. -DEMBED_RESOURCE_DIRECTORY=$PWD/grids
make -j$(nproc)
CC=clang CXX=clang++ cmake ${CMAKE_OPTIONS} \
-D EMBED_RESOURCE_FILES=ON \
-D EMBED_RESOURCE_DIRECTORY=$PWD/grids \
-D BUILD_TESTING=OFF \
-D USE_CCACHE=ON \
-D PROJ_DB_CACHE_DIR=$HOME/.ccache \
-S . -B build

cmake --build build

cd build
rm -rf data
echo 49 2 0 | bin/cs2cs "WGS84 + EGM96 height" EPSG:4979
echo 49 2 0 | bin/cs2cs "WGS84 + EGM96 height" EPSG:4979 | grep 44.643 >/dev/null || (echo "Expected 49dN 2dE 44.643 as a result" && /bin/false)
echo 0 0 0 | bin/cct +init=ITRF2000:ITRF96
echo 0 0 0 | bin/cct +init=ITRF2000:ITRF96 | grep 0.0067 >/dev/null || (echo "Expected 0.0067 0.0061 -0.0185 as a result" && /bin/false)
echo 3432087 6995748 0 | bin/cct +proj=tinshift +file=fi_nls_ykj_etrs35fin.gpkg
echo 3432087 6995748 0 | bin/cct +proj=tinshift +file=fi_nls_ykj_etrs35fin.gpkg | grep 431943.0905 >/dev/null || (echo "Expected 431943.0905 6992816.7826 0 as a result" && /bin/false)
cd ..

echo "Build with -DEMBED_RESOURCE_FILES=ON -DEMBED_RESOURCE_DIRECTORY=$PWD/grids -DUSE_ONLY_EMBEDDED_RESOURCE_FILES=ON"
CC=clang CXX=clang++ cmake .. -DEMBED_RESOURCE_DIRECTORY=$PWD/grids -DUSE_ONLY_EMBEDDED_RESOURCE_FILES=ON
make -j$(nproc)
CC=clang CXX=clang++ cmake ${CMAKE_OPTIONS} \
-D EMBED_RESOURCE_FILES=ON \
-D EMBED_RESOURCE_DIRECTORY=$PWD/grids \
-D USE_ONLY_EMBEDDED_RESOURCE_FILES=ON \
-D USE_CCACHE=ON \
-D PROJ_DB_CACHE_DIR=$HOME/.ccache \
-S . -B build

cmake --build build

cd build
rm -rf data
echo 49 2 0 | bin/cs2cs "WGS84 + EGM96 height" EPSG:4979
echo 49 2 0 | bin/cs2cs "WGS84 + EGM96 height" EPSG:4979 | grep 44.643 >/dev/null || (echo "Expected 49dN 2dE 44.643 as a result" && /bin/false)
echo 0 0 0 | bin/cct +init=ITRF2000:ITRF96
echo 0 0 0 | bin/cct +init=ITRF2000:ITRF96 | grep 0.0067 >/dev/null || (echo "Expected 0.0067 0.0061 -0.0185 as a result" && /bin/false)

cd ..

ccache -s

echo "Saving ccache..."
rm -f "$WORK_DIR/ccache.tar.gz"
(cd $HOME && tar czf "$WORK_DIR/ccache.tar.gz" .cache)
(cd $HOME && tar czf "$WORK_DIR/ccache.tar.gz" .ccache)
Loading
Loading