From 28ecfe77c817aff8ce56422d3e4e8533a281bc76 Mon Sep 17 00:00:00 2001 From: wilson chen Date: Thu, 18 Jun 2020 14:55:32 +0800 Subject: [PATCH] fix #303: gdlib.pc: use Requires instead of Libs (#537) --- CMakeLists.txt | 12 ++++++++++++ config/gdlib.pc.cmake | 4 +++- config/gdlib.pc.in | 4 +++- configure.ac | 11 ++++++++++- src/CMakeLists.txt | 6 ++++++ 5 files changed, 34 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0ef4aaf..bf7836f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,6 +51,8 @@ SET (CMAKE_ARCHIVE_OUTPUT_DIRECTORY "Single Directory for all static libraries." ) +SET(PKG_REQUIRES_PRIVATES "") + if (USE_EXT_GD) message("Using GD at: ${USE_EXT_GD}") INCLUDE_DIRECTORIES(BEFORE ${GD_INCLUDE_DIR}) @@ -155,11 +157,13 @@ else (USE_EXT_GD) INCLUDE_DIRECTORIES(${FREETYPE_INCLUDE_DIRS}) SET(HAVE_FT2BUILD_H 1) SET(HAVE_LIBFREETYPE 1) + LIST(APPEND PKG_REQUIRES_PRIVATES freetype2) ENDIF(FREETYPE_FOUND) IF(ZLIB_FOUND) INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) SET(HAVE_LIBZ 1) + LIST(APPEND PKG_REQUIRES_PRIVATES zlib) ENDIF(ZLIB_FOUND) IF(WEBP_FOUND) @@ -170,6 +174,7 @@ else (USE_EXT_GD) IF(PNG_FOUND) INCLUDE_DIRECTORIES(${PNG_INCLUDE_DIR}) SET(HAVE_LIBPNG 1) + LIST(APPEND PKG_REQUIRES_PRIVATES libpng) ENDIF(PNG_FOUND) IF(ICONV_FOUND) @@ -186,21 +191,25 @@ else (USE_EXT_GD) IF(XPM_FOUND) INCLUDE_DIRECTORIES(${XPM_INCLUDE_DIR}) SET(HAVE_LIBXPM 1) + LIST(APPEND PKG_REQUIRES_PRIVATES xpm) ENDIF(XPM_FOUND) IF(JPEG_FOUND) INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR}) SET(HAVE_LIBJPEG 1) + LIST(APPEND PKG_REQUIRES_PRIVATES libjpeg) ENDIF(JPEG_FOUND) IF(TIFF_FOUND) INCLUDE_DIRECTORIES(${TIFF_INCLUDE_DIR}) SET(HAVE_LIBTIFF 1) + LIST(APPEND PKG_REQUIRES_PRIVATES libtiff-4) ENDIF(TIFF_FOUND) IF(FONTCONFIG_FOUND) INCLUDE_DIRECTORIES(${FONTCONFIG_INCLUDE_DIR}) SET(HAVE_LIBFONTCONFIG 1) + LIST(APPEND PKG_REQUIRES_PRIVATES fontconfig) ELSE (FONTCONFIG_FOUND) SET(FONTCONFIG_LIBRARY "") SET(FONTCONFIG_INCLUDE_DIR "") @@ -209,8 +218,11 @@ else (USE_EXT_GD) IF(RAQM_FOUND) INCLUDE_DIRECTORIES(${RAQM_INCLUDE_DIR}) + SET(HAVE_RAQM 1) + LIST(APPEND PKG_REQUIRES_PRIVAES raqm) ENDIF(RAQM_FOUND) + string(REPLACE ";" ", " PKG_REQUIRES_PRIVATES "${PKG_REQUIRES_PRIVATES}") SET(HAVE_CONFIG_H 1) ADD_DEFINITIONS(-DHAVE_CONFIG_H) diff --git a/config/gdlib.pc.cmake b/config/gdlib.pc.cmake index d1a0dda..5fc8af4 100644 --- a/config/gdlib.pc.cmake +++ b/config/gdlib.pc.cmake @@ -6,6 +6,8 @@ includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@ Name: gd Description: GD graphics library Version: @GDLIB_VERSION@ +Requires: +Requires.private: @PKG_REQUIRES_PRIVATES@ Cflags: -I${includedir} -Libs.private: @LIBGD_DEP_LIBS@ +Libs.private: @LIBS_PRIVATES@ Libs: -L${libdir} -lgd diff --git a/config/gdlib.pc.in b/config/gdlib.pc.in index b980a60..d6bc375 100644 --- a/config/gdlib.pc.in +++ b/config/gdlib.pc.in @@ -6,6 +6,8 @@ includedir=@includedir@ Name: gd Description: GD graphics library Version: @VERSION@ +Requires: +Requires.private: @PKG_REQUIRES_PRIVATES@ Cflags: -I${includedir} -Libs.private: @LIBS@ @LIBICONV@ +Libs.private: @LIBS_PRIVATES@ @LIBICONV@ Libs: -L${libdir} -lgd diff --git a/configure.ac b/configure.ac index 5d28059..b58275f 100644 --- a/configure.ac +++ b/configure.ac @@ -33,6 +33,9 @@ AC_SUBST(GDLIB_LT_CURRENT) AC_SUBST(GDLIB_LT_REVISION) AC_SUBST(GDLIB_LT_AGE) +AC_SUBST(LIBS_PRIVATES) +AC_SUBST(PKG_REQUIRES_PRIVATES) + AM_INIT_AUTOMAKE([1.11 foreign dist-xz -Wall -Werror subdir-objects]) AC_CONFIG_HEADERS([src/config.h:src/config.hin]) @@ -130,6 +133,7 @@ m4_define([GD_LIB_CHECK], [dnl AC_MSG_RESULT([$gd_with_lib]) gd_found_lib=no + gd_require_pkg_name="" if test "$gd_with_lib" != "no"; then save_CPPFLAGS=$CPPFLAGS save_LDFLAGS=$LDFLAGS @@ -161,6 +165,11 @@ m4_define([GD_LIB_CHECK], [dnl $1][_CFLAGS="$gd_lib_cflags $][$1][_CFLAGS" AS_VAR_APPEND([LIBS], [" $][$1][_LIBS"]) AS_VAR_APPEND([CPPFLAGS], [" $][$1][_CFLAGS"]) + if test -z "$gd_require_pkg_name"; then + AS_VAR_APPEND([LIBS_PRIVATES], [" $][$1][_LIBS"]) + else + AS_VAR_APPEND([PKG_REQUIRES_PRIVATES], [" $gd_require_pkg_name"]) + fi elif test "$gd_with_lib" = "yes"; then AC_MSG_ERROR([$3 requested but not found]) else @@ -180,7 +189,7 @@ dnl $4 - pkg-config module to look for dnl $5 - fallback test for the feature m4_define([GD_LIB_PKG_CHECK], [dnl GD_LIB_CHECK([$1], [$2], [$3], [dnl - PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes], [$5]) + PKG_CHECK_MODULES([$1], [$4], [gd_found_lib=yes gd_require_pkg_name="$4"], [$5]) ]) ]) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 629e0fc..35ff4a0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -143,6 +143,12 @@ if (BUILD_STATIC_LIBS) target_link_libraries(${GD_LIB_STATIC} ${LIBGD_DEP_LIBS}) endif() +SET(LIBS_PRIVATES + ${ICONV_LIBRARIES} + ${LIQ_LIBRARIES} + ${WEBP_LIBRARIES} +) + set(GD_PROGRAMS gdcmpgif) if (PNG_FOUND)