Fix version in libtiff-4.pc.in, and CMake build: Add requirements to pc file

This commit is contained in:
Kai Pastor
2021-07-09 10:06:55 +00:00
committed by Even Rouault
parent c145a6c149
commit 2c496078ad
5 changed files with 49 additions and 5 deletions

View File

@@ -124,8 +124,6 @@ include(WindowsSupport)
# Orthogonal features
include(LibraryFeatures)
# pkg-config support
include(PkgConfig)
# math.h/libm portability
find_package(CMath REQUIRED)
@@ -144,6 +142,8 @@ add_subdirectory(build)
add_subdirectory(man)
add_subdirectory(html)
# pkg-config support
include(PkgConfig)
message(STATUS "")
message(STATUS "Libtiff is now configured for ${CMAKE_SYSTEM}")

View File

@@ -23,11 +23,34 @@
# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
# OF THIS SOFTWARE.
# Post-process lib files into linker flags
function(set_libs_private out_var)
set(tiff_libs_private "")
foreach(lib IN LISTS ARGN)
get_filename_component(name "${lib}" NAME)
foreach(prefix IN LISTS CMAKE_FIND_LIBRARY_PREFIXES)
if(name MATCHES "^${prefix}")
string(REGEX REPLACE "^${prefix}" "" name "${name}")
break()
endif()
endforeach()
foreach(suffix IN LISTS CMAKE_FIND_LIBRARY_SUFFIXES)
if(name MATCHES "${suffix}$")
string(REGEX REPLACE "${suffix}$" "" name "${name}")
break()
endif()
endforeach()
string(APPEND tiff_libs_private " -l${name}")
endforeach()
set(${out_var} "${tiff_libs_private}" PARENT_SCOPE)
endfunction()
# Generate pkg-config file
set(prefix "${CMAKE_INSTALL_PREFIX}")
set(exec_prefix "${CMAKE_INSTALL_PREFIX}")
set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
set_libs_private(tiff_libs_private ${tiff_libs_private_list})
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libtiff-4.pc.in
${CMAKE_CURRENT_BINARY_DIR}/libtiff-4.pc)

View File

@@ -160,6 +160,9 @@ AM_SILENT_RULES
tiff_libs_private=
AC_SUBST(tiff_libs_private)
tiff_requires_private=
AC_SUBST(tiff_requires_private)
dnl We don't need to add math library to all targets
case "${host_os}" in
cygwin* | mingw32* | beos* | darwin*)

View File

@@ -5,7 +5,8 @@ includedir=@includedir@
Name: libtiff
Description: Tag Image File Format (TIFF) library.
Version: @VERSION@
Version: @LIBTIFF_MAJOR_VERSION@.@LIBTIFF_MINOR_VERSION@.@LIBTIFF_MICRO_VERSION@
Libs: -L${libdir} -ltiff
Libs.private: @tiff_libs_private@
Cflags: -I${includedir}
Requires.private: @tiff_requires_private@

View File

@@ -106,14 +106,20 @@ target_include_directories(tiff
${TIFF_INCLUDES}
)
set(tiff_libs_private_list "") # cmake list
set(tiff_requires_private "") # cmake string
if(ZIP_SUPPORT)
target_link_libraries(tiff PRIVATE ZLIB::ZLIB)
string(APPEND tiff_requires_private " zlib")
endif()
if(ZIP_SUPPORT AND LIBDEFLATE_SUPPORT)
target_link_libraries(tiff PRIVATE Deflate::Deflate)
list(APPEND tiff_libs_private_list "${Deflate_LIBRARY}")
endif()
if(JPEG_SUPPORT)
target_link_libraries(tiff PRIVATE JPEG::JPEG)
string(APPEND tiff_requires_private " libjpeg")
if(JPEG_DUAL_MODE_8_12)
target_include_directories(tiff PRIVATE ${JPEG12_INCLUDE_DIR})
target_link_libraries(tiff PRIVATE ${JPEG12_LIBRARIES})
@@ -121,20 +127,31 @@ if(JPEG_SUPPORT)
endif()
if(JBIG_SUPPORT)
target_link_libraries(tiff PRIVATE JBIG::JBIG)
list(APPEND tiff_libs_private_list "${JBIG_LIBRARY}")
endif()
if(LERC_SUPPORT)
target_link_libraries(tiff PRIVATE LERC::LERC)
target_link_libraries(tiff PRIVATE LERC::LERC)
list(APPEND tiff_libs_private_list "${LERC_LIBRARY}")
endif()
if(LZMA_SUPPORT)
target_link_libraries(tiff PRIVATE LibLZMA::LibLZMA)
target_link_libraries(tiff PRIVATE LibLZMA::LibLZMA)
string(APPEND tiff_requires_private " liblzma")
endif()
if(ZSTD_SUPPORT)
target_link_libraries(tiff PRIVATE ZSTD::ZSTD)
string(APPEND tiff_requires_private " libzstd")
endif()
if(WEBP_SUPPORT)
target_link_libraries(tiff PRIVATE WebP::WebP)
string(APPEND tiff_requires_private " libwebp")
endif()
target_link_libraries(tiff PRIVATE CMath::CMath)
if(CMath_LIBRARY)
list(APPEND tiff_libs_private_list "${CMath_LIBRARY}")
endif()
set(tiff_libs_private_list "${tiff_libs_private_list}" PARENT_SCOPE)
set(tiff_requires_private "${tiff_requires_private}" PARENT_SCOPE)
set_target_properties(tiff PROPERTIES SOVERSION ${SO_COMPATVERSION})
if(NOT CYGWIN)