aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2022-02-07 23:45:02 +0100
committerGitHub <noreply@github.com>2022-02-07 23:45:02 +0100
commitca1ec7b147087f18bec0b3cf0b0548f3f034c675 (patch)
tree630b9bee287c52fd4a119bbf401c61c2d37cbb86
parent7f0ac75ac58794bb92b88f928d16c5053c0ce3e0 (diff)
parent2b0ecb6f19b1be906a39eac5143d4c40252f0a5a (diff)
downloadPROJ-ca1ec7b147087f18bec0b3cf0b0548f3f034c675.tar.gz
PROJ-ca1ec7b147087f18bec0b3cf0b0548f3f034c675.zip
Merge pull request #2988 from dg0yt/pkgconfig
Use `Requires.Private` in proj.pc, and install it also for Windows
-rwxr-xr-x.github/workflows/clang_linux/start.sh9
-rwxr-xr-x.github/workflows/linux_gcc_32bit/start.sh15
-rwxr-xr-x.github/workflows/linux_gcc_5_4/start.sh12
-rw-r--r--CMakeLists.txt10
-rw-r--r--cmake/ProjUtilities.cmake37
-rw-r--r--proj.pc.in1
-rw-r--r--test/postinstall/c_app/makefile.mak6
-rwxr-xr-xtest/postinstall/test_autotools.sh5
-rwxr-xr-xtest/postinstall/test_pkg-config.sh1
-rwxr-xr-xtravis/linux_generic/before_install.sh7
10 files changed, 66 insertions, 37 deletions
diff --git a/.github/workflows/clang_linux/start.sh b/.github/workflows/clang_linux/start.sh
index b0a5ac34..48099fe3 100755
--- a/.github/workflows/clang_linux/start.sh
+++ b/.github/workflows/clang_linux/start.sh
@@ -4,8 +4,13 @@ set -e
apt-get update -y
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
- sudo autoconf automake libtool clang++-10 python3-clang-10 make cmake ccache pkg-config tar zip \
- sqlite3 libsqlite3-dev libtiff-dev libcurl4-openssl-dev jq python3-pip nlohmann-json3-dev libgtest-dev
+ autoconf automake libtool make cmake ccache pkg-config python3-pip sqlite3 tar zip \
+ clang++-10 jq python3-clang-10 \
+ libsqlite3-dev \
+ libtiff-dev libwebp-dev libzstd-dev \
+ libcurl4-openssl-dev libnghttp2-dev libidn2-dev librtmp-dev libssh-dev \
+ libpsl-dev libssl-dev libkrb5-dev comerr-dev libldap2-dev libbrotli-dev \
+ nlohmann-json3-dev libgtest-dev
python3 -m pip install --user jsonschema
export PATH=$HOME/.local/bin:$PATH
diff --git a/.github/workflows/linux_gcc_32bit/start.sh b/.github/workflows/linux_gcc_32bit/start.sh
index c54eb5ed..60be6fd3 100755
--- a/.github/workflows/linux_gcc_32bit/start.sh
+++ b/.github/workflows/linux_gcc_32bit/start.sh
@@ -9,14 +9,15 @@ export TRAVIS_BUILD_DIR="$WORK_DIR"
ARCH=i386
dpkg --add-architecture i386
-apt update -y
+apt-get update -y
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends -o APT::Immediate-Configure=0 \
- autoconf automake libtool gcc-multilib g++-multilib g++ sqlite3 \
- python3-pip \
- make cmake ccache pkg-config tar zip \
- libsqlite3-dev:$ARCH libtiff-dev:$ARCH libcurl4-openssl-dev:$ARCH \
- jq
+ autoconf automake libtool make cmake ccache pkg-config python3-pip sqlite3 tar zip \
+ gcc-multilib g++-multilib g++ jq dpkg-dev \
+ libsqlite3-dev:$ARCH \
+ libtiff-dev:$ARCH libwebp-dev:$ARCH libzstd-dev:$ARCH \
+ libcurl4-openssl-dev:$ARCH libnghttp2-dev:$ARCH libidn2-dev:$ARCH librtmp-dev:$ARCH libssh-dev:$ARCH \
+ libpsl-dev:$ARCH libssl-dev:$ARCH libkrb5-dev:$ARCH comerr-dev:$ARCH libldap2-dev:$ARCH libbrotli-dev:$ARCH
python3 -m pip install --user jsonschema
export PATH=$HOME/.local/bin:$PATH
@@ -28,6 +29,8 @@ export TIFF_LIBS="-L/usr/lib/i386-linux-gnu -ltiff"
export SQLITE3_CFLAGS=-I/usr/include/i386-linux-gnu
export SQLITE3_LIBS="-L/usr/lib/i386-linux-gnu -lsqlite3"
+export PKG_CONFIG=i686-linux-gnu-pkg-config
+
cd "$WORK_DIR"
if test -f "$WORK_DIR/ccache.tar.gz"; then
diff --git a/.github/workflows/linux_gcc_5_4/start.sh b/.github/workflows/linux_gcc_5_4/start.sh
index fc7abb1e..be23392b 100755
--- a/.github/workflows/linux_gcc_5_4/start.sh
+++ b/.github/workflows/linux_gcc_5_4/start.sh
@@ -6,14 +6,14 @@ export TRAVIS_OS_NAME=linux
export BUILD_NAME=linux_gcc
export TRAVIS_BUILD_DIR="$WORK_DIR"
-apt update -y
+apt-get update -y
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
- autoconf automake libtool g++ sqlite3 \
- python3-pip python3-setuptools \
- make cmake ccache pkg-config tar zip \
- libsqlite3-dev libtiff-dev libcurl4-openssl-dev \
- jq lcov
+ autoconf automake libtool make cmake ccache pkg-config python3-pip sqlite3 tar zip \
+ g++ jq lcov python3-setuptools \
+ libsqlite3-dev \
+ libtiff-dev \
+ libcurl4-openssl-dev libidn11-dev librtmp-dev libssl-dev libkrb5-dev comerr-dev libldap2-dev
python3 -m pip install --user --upgrade "pip < 21.0"
echo `python3 -m pip --version`
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8ac6d0cc..6bdc7cab 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -338,13 +338,11 @@ install(FILES ${docfiles}
################################################################################
# pkg-config support
################################################################################
-if(UNIX OR MINGW)
- configure_proj_pc()
+configure_proj_pc()
- install(FILES
- ${CMAKE_CURRENT_BINARY_DIR}/proj.pc
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
-endif()
+install(FILES
+ ${CMAKE_CURRENT_BINARY_DIR}/proj.pc
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
################################################################################
# "make dist" workalike
diff --git a/cmake/ProjUtilities.cmake b/cmake/ProjUtilities.cmake
index 333b01f0..690336b2 100644
--- a/cmake/ProjUtilities.cmake
+++ b/cmake/ProjUtilities.cmake
@@ -76,27 +76,42 @@ function(configure_proj_pc)
set(datadir "$\{datarootdir\}")
set(PACKAGE "proj")
set(VERSION ${PROJ_VERSION})
- # Build list for Libs.private
- set(EXTRA_LIBS
- -lstdc++
- -lsqlite3
- ${CMAKE_THREAD_LIBS_INIT}
- )
+ # Build strings of dependencies (Libs.private, Requires.private)
+ set(EXTRA_LIBS "${CMAKE_THREAD_LIBS_INIT}")
+ set(EXTRA_REQUIRES "")
+ option(USE_PKGCONFIG_REQUIRES "Use 'Requires' instead 'Libs' in proj.pc" ON)
+ macro(add_module_or_libs MODULE)
+ if(USE_PKGCONFIG_REQUIRES)
+ list(APPEND EXTRA_REQUIRES "${MODULE}")
+ else()
+ list(APPEND EXTRA_LIBS "${ARGN}")
+ endif()
+ endmacro()
+ add_module_or_libs(sqlite3 -lsqlite3)
if(TIFF_ENABLED)
- list(APPEND EXTRA_LIBS -ltiff)
+ add_module_or_libs(libtiff-4 -ltiff)
endif()
if(CURL_ENABLED)
- list(APPEND EXTRA_LIBS -lcurl)
+ add_module_or_libs(libcurl -lcurl)
+ endif()
+ if(WIN32 AND NOT MINGW)
+ list(APPEND EXTRA_LIBS -lole32 -lshell32)
+ else()
+ set(cxx_libs "${CMAKE_CXX_IMPLICIT_LINK_LIBRARIES}")
+ list(REMOVE_ITEM cxx_libs ${CMAKE_C_IMPLICIT_LINK_LIBRARIES})
+ foreach(lib IN LISTS cxx_libs)
+ list(APPEND EXTRA_LIBS "-l${lib}")
+ endforeach()
endif()
- if(HAVE_LIBM)
+ if(HAVE_LIBM AND NOT "-lm" IN_LIST EXTRA_LIBS)
list(APPEND EXTRA_LIBS -lm)
endif()
if(HAVE_LIBDL)
list(APPEND EXTRA_LIBS -ldl)
endif()
# Join list with a space; list(JOIN) added CMake 3.12
- string(REPLACE ";" " " _tmp_str "${EXTRA_LIBS}")
- set(EXTRA_LIBS "${_tmp_str}")
+ string(REPLACE ";" " " EXTRA_LIBS "${EXTRA_LIBS}")
+ string(REPLACE ";" " " EXTRA_REQUIRES "${EXTRA_REQUIRES}")
configure_file(
${CMAKE_CURRENT_SOURCE_DIR}/proj.pc.in
diff --git a/proj.pc.in b/proj.pc.in
index 54c5bfcc..9855aadc 100644
--- a/proj.pc.in
+++ b/proj.pc.in
@@ -11,4 +11,5 @@ Requires:
Version: @VERSION@
Libs: -L${libdir} -lproj
Libs.private: @EXTRA_LIBS@
+Requires.private: @EXTRA_REQUIRES@
Cflags: -I${includedir}
diff --git a/test/postinstall/c_app/makefile.mak b/test/postinstall/c_app/makefile.mak
index 3e29d4b1..01d1c259 100644
--- a/test/postinstall/c_app/makefile.mak
+++ b/test/postinstall/c_app/makefile.mak
@@ -6,18 +6,18 @@ TESTS = \
test_searchpath.sh \
test_version.sh
-override CFLAGS += -g -Wall -Werror $(shell pkg-config proj --cflags)
+override CFLAGS += -g -Wall -Werror $(shell ${PKG_CONFIG} proj --cflags)
ifeq ($(BUILD_MODE),static)
UNAME_S := $(shell uname -s)
- _ldflags := $(shell pkg-config proj --libs --static)
+ _ldflags := $(shell ${PKG_CONFIG} proj --libs --static)
ifeq ($(UNAME_S),Linux)
# force static linking to libproj
_ldflags := $(shell echo $(_ldflags) | sed 's/-lproj/-Wl,-Bstatic -lproj -Wl,-Bdynamic/')
endif
override LDFLAGS += $(_ldflags)
else # default is shared
- override LDFLAGS += $(shell pkg-config proj --libs)
+ override LDFLAGS += $(shell ${PKG_CONFIG} proj --libs)
endif
all: $(PROGRAM)
diff --git a/test/postinstall/test_autotools.sh b/test/postinstall/test_autotools.sh
index 28954c4d..c3e0e60b 100755
--- a/test/postinstall/test_autotools.sh
+++ b/test/postinstall/test_autotools.sh
@@ -12,12 +12,13 @@ main_setup $1 $2
echo "Running post-install tests with autotools/pkg-config (${BUILD_MODE})"
if [ ${BUILD_MODE} = shared ]; then
- export PKG_CONFIG="pkg-config"
+ export PKG_CONFIG="${PKG_CONFIG:-pkg-config}"
ENABLE_STATIC_PROJ=no
else
- export PKG_CONFIG="pkg-config --static"
+ export PKG_CONFIG="${PKG_CONFIG:-pkg-config} --static"
ENABLE_STATIC_PROJ=yes
fi
+echo ,${PKG_CONFIG},
export PKG_CONFIG_PATH=${prefix}/lib/pkgconfig
diff --git a/test/postinstall/test_pkg-config.sh b/test/postinstall/test_pkg-config.sh
index a9ccabce..d170e189 100755
--- a/test/postinstall/test_pkg-config.sh
+++ b/test/postinstall/test_pkg-config.sh
@@ -11,6 +11,7 @@ main_setup $1 $2
echo "Running post-install tests with pkg-config (${BUILD_MODE})"
+export PKG_CONFIG="${PKG_CONFIG:-pkg-config}"
export PKG_CONFIG_PATH=${prefix}/lib/pkgconfig
if [ ${BUILD_MODE} = shared ]; then
diff --git a/travis/linux_generic/before_install.sh b/travis/linux_generic/before_install.sh
index 114d8a7f..07d5c979 100755
--- a/travis/linux_generic/before_install.sh
+++ b/travis/linux_generic/before_install.sh
@@ -5,4 +5,9 @@ set -e
./travis/before_install_apt.sh
./travis/before_install_pip.sh
-sudo apt-get install -qq sqlite3 libsqlite3-dev libtiff-dev libcurl4-openssl-dev zip
+sudo apt-get install -qq \
+ sqlite3 zip \
+ libsqlite3-dev \
+ libtiff-dev \
+ libcurl4-openssl-dev libnghttp2-dev libidn2-dev librtmp-dev libssh-dev \
+ libpsl-dev libssl-dev libkrb5-dev comerr-dev libldap2-dev libbrotli-dev