diff options
| author | Even Rouault <even.rouault@spatialys.com> | 2022-02-07 23:45:02 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-02-07 23:45:02 +0100 |
| commit | ca1ec7b147087f18bec0b3cf0b0548f3f034c675 (patch) | |
| tree | 630b9bee287c52fd4a119bbf401c61c2d37cbb86 | |
| parent | 7f0ac75ac58794bb92b88f928d16c5053c0ce3e0 (diff) | |
| parent | 2b0ecb6f19b1be906a39eac5143d4c40252f0a5a (diff) | |
| download | PROJ-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.sh | 9 | ||||
| -rwxr-xr-x | .github/workflows/linux_gcc_32bit/start.sh | 15 | ||||
| -rwxr-xr-x | .github/workflows/linux_gcc_5_4/start.sh | 12 | ||||
| -rw-r--r-- | CMakeLists.txt | 10 | ||||
| -rw-r--r-- | cmake/ProjUtilities.cmake | 37 | ||||
| -rw-r--r-- | proj.pc.in | 1 | ||||
| -rw-r--r-- | test/postinstall/c_app/makefile.mak | 6 | ||||
| -rwxr-xr-x | test/postinstall/test_autotools.sh | 5 | ||||
| -rwxr-xr-x | test/postinstall/test_pkg-config.sh | 1 | ||||
| -rwxr-xr-x | travis/linux_generic/before_install.sh | 7 |
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 @@ -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 |
