aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Taves <mwtoews@gmail.com>2021-04-07 11:25:30 +1200
committerMike Taves <mwtoews@gmail.com>2021-04-07 13:08:22 +1200
commit0abacbc927c37c93a90a25770d1e9b059c440bc3 (patch)
treeede3ef262a488364eb2237c961e57802730ef0a7
parentec25bdc7b5ad3155d0078379bbca5ac9efd8280d (diff)
downloadPROJ-0abacbc927c37c93a90a25770d1e9b059c440bc3.tar.gz
PROJ-0abacbc927c37c93a90a25770d1e9b059c440bc3.zip
CI: build and test on MSYS2 with Windows
-rw-r--r--.github/workflows/windows.yml51
-rwxr-xr-xtest/postinstall/test_pkg-config.sh27
-rw-r--r--test/postinstall/testappprojinfo/CMakeLists.txt7
3 files changed, 75 insertions, 10 deletions
diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml
index 13179c18..a4668341 100644
--- a/.github/workflows/windows.yml
+++ b/.github/workflows/windows.yml
@@ -60,3 +60,54 @@ jobs:
set PATH=%PROJ_DIR%\bin;%PATH%
call %GITHUB_WORKSPACE%\test\postinstall\test_cmake.bat %PROJ_DIR%
proj
+
+ MSYS2:
+ runs-on: windows-latest
+ if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
+
+ defaults:
+ run:
+ shell: msys2 {0}
+
+ env:
+ CMAKE_GENERATOR: "MSYS Makefiles"
+
+ steps:
+
+ - uses: actions/checkout@v2
+
+ - uses: msys2/setup-msys2@v2
+ with:
+ msystem: MINGW64
+ update: true
+ install: >-
+ git
+ make
+ mingw-w64-x86_64-cmake
+ mingw-w64-x86_64-curl
+ mingw-w64-x86_64-gcc
+ mingw-w64-x86_64-libtiff
+ mingw-w64-x86_64-sqlite3
+
+ - name: Build
+ run: |
+ PROJ_BUILD=${GITHUB_WORKSPACE}/build
+ PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir
+ mkdir ${PROJ_BUILD}
+ cd ${PROJ_BUILD}
+ cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX="${PROJ_DIR}" ..
+ make -j 2
+ make install
+ ls ${PROJ_DIR}/bin
+
+ - name: Run tests
+ run: |
+ PROJ_BUILD=${GITHUB_WORKSPACE}/build
+ PROJ_DIR=${GITHUB_WORKSPACE}/proj_dir
+ export PROJ_LIB=${PROJ_DIR}/share/proj
+ cd ${PROJ_BUILD}
+ ctest --output-on-failure
+ export PATH=${PROJ_DIR}/bin:${PATH}
+ ../test/postinstall/test_cmake.sh ${PROJ_DIR}
+ ../test/postinstall/test_pkg-config.sh ${PROJ_DIR}
+ proj
diff --git a/test/postinstall/test_pkg-config.sh b/test/postinstall/test_pkg-config.sh
index f9ae36c2..1c3866ec 100755
--- a/test/postinstall/test_pkg-config.sh
+++ b/test/postinstall/test_pkg-config.sh
@@ -15,27 +15,30 @@ if [ -z "$prefix" ]; then
exit 1
fi
-export PKG_CONFIG_PATH=$prefix/lib/pkgconfig
export LD_LIBRARY_PATH=$prefix/lib
-echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH"
-
-PKG_CONFIG_MODVERSION=$(pkg-config proj --modversion)
-echo "pkg-config proj --modversion: $PKG_CONFIG_MODVERSION"
-PKG_CONFIG_DATADIR=$(pkg-config proj --variable=datadir)
-echo "pkg-config proj --variable=datadir: $PKG_CONFIG_DATADIR"
-
UNAME=$(uname)
case $UNAME in
Darwin*)
alias ldd="otool -L" ;;
Linux*)
;;
+ MINGW* | MSYS*)
+ prefix=$(cygpath -u ${prefix})
+ export LD_LIBRARY_PATH=$prefix/bin ;;
*)
echo "no ldd equivalent found for UNAME=$UNAME"
exit 1 ;;
esac
+export PKG_CONFIG_PATH=$prefix/lib/pkgconfig
+echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH"
+
+PKG_CONFIG_MODVERSION=$(pkg-config proj --modversion)
+echo "pkg-config proj --modversion: $PKG_CONFIG_MODVERSION"
+PKG_CONFIG_DATADIR=$(pkg-config proj --variable=datadir)
+echo "pkg-config proj --variable=datadir: $PKG_CONFIG_DATADIR"
+
cd $(dirname $0)
PROGRAM=testappprojinfo
@@ -46,8 +49,8 @@ make
ERRORS=0
LDD_OUTPUT=$(ldd ./$PROGRAM | grep proj)
-LDD_SUBSTR=$LD_LIBRARY_PATH/libproj.
-LDD_RPATH_SUBSTR=@rpath/libproj.
+LDD_SUBSTR=$LD_LIBRARY_PATH/libproj
+LDD_RPATH_SUBSTR=@rpath/libproj
printf "Testing expected ldd output ... "
case "$LDD_OUTPUT" in
*$LDD_SUBSTR*)
@@ -60,6 +63,10 @@ case "$LDD_OUTPUT" in
esac
SEARCHPATH_OUTPUT=$(./$PROGRAM -s)
+case $UNAME in
+ MINGW* | MSYS*)
+ SEARCHPATH_OUTPUT=$(echo "$SEARCHPATH_OUTPUT" | tr '\\' '/')
+esac
printf "Testing expected searchpath/datadir ... "
case "$SEARCHPATH_OUTPUT" in
*$PKG_CONFIG_DATADIR*)
diff --git a/test/postinstall/testappprojinfo/CMakeLists.txt b/test/postinstall/testappprojinfo/CMakeLists.txt
index beac54ff..2b3cf70e 100644
--- a/test/postinstall/testappprojinfo/CMakeLists.txt
+++ b/test/postinstall/testappprojinfo/CMakeLists.txt
@@ -27,6 +27,13 @@ if(APPLE)
elseif(UNIX)
set(LDD_CL "ldd")
set(EXPECTED_LDD_CL_OUT "${CMAKE_PREFIX_PATH}/lib/libproj")
+elseif(CMAKE_GENERATOR STREQUAL "MSYS Makefiles")
+ set(LDD_CL "ldd")
+ # Convert to Unix-style path
+ execute_process(
+ COMMAND cygpath -u ${CMAKE_PREFIX_PATH}/bin/libproj
+ OUTPUT_VARIABLE EXPECTED_LDD_CL_OUT
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
endif()
if(LDD_CL)