diff options
author | bfriesen <bfriesen> | 2015-09-01 02:51:50 +0000 |
---|---|---|
committer | bfriesen <bfriesen> | 2015-09-01 02:51:50 +0000 |
commit | 678df49cb6d54f8ec0d36559698f48d6a15332e9 (patch) | |
tree | 1c75f18906afddb456c643172856480b1ca0f129 | |
parent | a09d7f2a0e34eb614e056e27c7c3f5eb8ec17edb (diff) | |
download | libtiff-678df49cb6d54f8ec0d36559698f48d6a15332e9.tar.gz |
* CMakeLists.txt, libtiff/test/Makefile.am: Applied patches by
Roger Leigh (via tiff mailing list on 2015-08-31.
CMake reads all version information directly from configure.ac to
avoid duplication of values. This basically greps over the file
for the LIBTIFF_* variables, then translates them to the form
needed for cmake. This includes the release version and libtool
shared library version information.
Make shared/static library building configurable. Currently it
always builds shared libraries, with static libs having a _static
suffix (copying zlib, but it means it's got a non-standard name).
CMake has a -DBUILD_SHARED_LIBS=ON|OFF option to select one or the
other, which is now used instead. There's now a single "tiff"
target to build either shared or static as required, and all the
tests and tools are linked with this. Note: the Windows tests fail
when linked with a static libtiff (says: libtiff.dll not found).
Not really a regression since this was not tested up to this
point, and it's likely the unit tests haven't (ever?) been run on
Windows with a static libtiff, so there's some additional
portability issue here to address. Works fine on UNIX systems,
and fine on Windows with the default to build a DLL.
Add a missing file which wasn't being distributed, causing unit
tests to fail. Note that "find . -name '*.cmake'" lists all the
CMake files which need distributing in addition to all the
CMakeLists.txt files (which now are distributed).
-rw-r--r-- | CMakeLists.txt | 34 | ||||
-rw-r--r-- | ChangeLog | 33 | ||||
-rw-r--r-- | libtiff/CMakeLists.txt | 24 | ||||
-rw-r--r-- | test/Makefile.am | 3 | ||||
-rw-r--r-- | test/Makefile.in | 3 |
5 files changed, 70 insertions, 27 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index e98a98c1..22284cc1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,13 +42,38 @@ if (POLICY CMP0054) cmake_policy(SET CMP0054 NEW) endif(POLICY CMP0054) +# Read version information from configure.ac. +FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/configure.ac" configure) +STRING(REGEX REPLACE ";" "\\\\;" configure "${configure}") +STRING(REGEX REPLACE "\n" ";" configure "${configure}") +foreach(line ${configure}) + foreach(var LIBTIFF_MAJOR_VERSION LIBTIFF_MINOR_VERSION LIBTIFF_MICRO_VERSION LIBTIFF_ALPHA_VERSION + LIBTIFF_CURRENT LIBTIFF_REVISION LIBTIFF_AGE) + if(NOT ${var}) + string(REGEX MATCH "^${var}=(.*)" ${var}_MATCH "${line}") + if(${var}_MATCH) + string(REGEX REPLACE "^${var}=(.*)" "\\1" ${var} "${line}") + endif() + endif() + endforeach() +endforeach() + +math(EXPR SO_MAJOR "${LIBTIFF_CURRENT} - ${LIBTIFF_AGE}") +set(SO_MINOR "${LIBTIFF_AGE}") +set(SO_REVISION "${LIBTIFF_REVISION}") + +message(STATUS "Building tiff version ${LIBTIFF_MAJOR_VERSION}.${LIBTIFF_MINOR_VERSION}.${LIBTIFF_MICRO_VERSION}${LIBTIFF_ALPHA_VERSION}") +message(STATUS "libtiff library version ${SO_MAJOR}.${SO_MINOR}.${SO_REVISION}") + +set(BUILD_SHARED_LIBS ON CACHE BOOL "Build shared libraries") + # Project version -project(tiff VERSION 4.0.5 LANGUAGES C) +project(tiff VERSION "${LIBTIFF_MAJOR_VERSION}.${LIBTIFF_MINOR_VERSION}.${LIBTIFF_MICRO_VERSION}" LANGUAGES C) # the other tiff_VERSION_* variables are set automatically -set(tiff_VERSION_ALPHA beta) +set(tiff_VERSION_ALPHA "${LIBTIFF_ALPHA_VERSION}") # Library version (unlike libtool's baroque scheme, WYSIWYG here) -set(SO_COMPATVERSION 5) -set(SO_VERSION 5.2.2) +set(SO_COMPATVERSION "${SO_MAJOR}") +set(SO_VERSION "${SO_MAJOR}.${SO_MINOR}.${SO_REVISION}") # For autotools header compatibility set(PACKAGE_NAME "LibTIFF Software") @@ -704,6 +729,7 @@ message(STATUS " Installation directory: ${prefix}") message(STATUS " Documentation directory: ${LIBTIFF_DOCDIR}") message(STATUS " C compiler: ${CMAKE_C_COMPILER}") message(STATUS " C++ compiler: ${CMAKE_CXX_COMPILER}") +message(STATUS " Build shared libraries: ${BUILD_SHARED_LIBS}") message(STATUS " Enable linker symbol versioning: ${HAVE_LD_VERSION_SCRIPT}") message(STATUS " Support Microsoft Document Imaging: ${mdi}") message(STATUS " Use win32 IO: ${USE_WIN32_FILEIO}") @@ -1,5 +1,35 @@ +2015-08-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> + + * CMakeLists.txt, libtiff/test/Makefile.am: Applied patches by + Roger Leigh (via tiff mailing list on 2015-08-31. + + CMake reads all version information directly from configure.ac to + avoid duplication of values. This basically greps over the file + for the LIBTIFF_* variables, then translates them to the form + needed for cmake. This includes the release version and libtool + shared library version information. + + Make shared/static library building configurable. Currently it + always builds shared libraries, with static libs having a _static + suffix (copying zlib, but it means it's got a non-standard name). + CMake has a -DBUILD_SHARED_LIBS=ON|OFF option to select one or the + other, which is now used instead. There's now a single "tiff" + target to build either shared or static as required, and all the + tests and tools are linked with this. Note: the Windows tests fail + when linked with a static libtiff (says: libtiff.dll not found). + Not really a regression since this was not tested up to this + point, and it's likely the unit tests haven't (ever?) been run on + Windows with a static libtiff, so there's some additional + portability issue here to address. Works fine on UNIX systems, + and fine on Windows with the default to build a DLL. + + Add a missing file which wasn't being distributed, causing unit + tests to fail. Note that "find . -name '*.cmake'" lists all the + CMake files which need distributing in addition to all the + CMakeLists.txt files (which now are distributed). + 2015-08-31 Even Rouault <even.rouault at spatialys.com> - + * libtiff/tif_predict.c: pedantic change to add explicit masking with 0xff before casting to uchar in floating-point horizontal differencing and accumulation routines. @@ -18,6 +48,7 @@ undefined behaviour with shifts (gcc -fsanitize=shift) 2015-08-30 Even Rouault <even.rouault at spatialys.com> + * libtiff/tif_fax3.c, libtiff/tif_lzw.c, libtiff/tif_predict.c: add explicit masking with 0xff before casting to unsigned char (make icc -check=conversions happy) diff --git a/libtiff/CMakeLists.txt b/libtiff/CMakeLists.txt index 58eb1280..087dfa9e 100644 --- a/libtiff/CMakeLists.txt +++ b/libtiff/CMakeLists.txt @@ -114,7 +114,7 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${TIFF_INCLUDES}) -add_library(tiff SHARED ${tiff_SOURCES} ${tiff_HEADERS} ${nodist_tiff_HEADERS} +add_library(tiff ${tiff_SOURCES} ${tiff_HEADERS} ${nodist_tiff_HEADERS} ${tiff_port_SOURCES} libtiff.def) target_link_libraries(tiff ${TIFF_LIBRARY_DEPS}) set_target_properties(tiff PROPERTIES SOVERSION ${SO_COMPATVERSION}) @@ -130,15 +130,7 @@ if(HAVE_LD_VERSION_SCRIPT) "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libtiff.map") endif() -add_library(tiff_static STATIC ${tiff_SOURCES} ${tiff_HEADERS}) -target_link_libraries(tiff_static ${TIFF_LIBRARY_DEPS} port) -if (NOT WIN32) - # Windows static and DLL import libraries both use .lib so the - # static lib can't use the same name as the DLL - set_target_properties(tiff_static PROPERTIES OUTPUT_NAME tiff) -endif() - -install(TARGETS tiff tiff_static +install(TARGETS tiff RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) @@ -147,7 +139,7 @@ install(FILES ${tiff_HEADERS} ${nodist_tiff_HEADERS} DESTINATION "${CMAKE_INSTALL_FULL_INCLUDEDIR}") if(cxx) - add_library(tiffxx SHARED ${tiffxx_SOURCES} ${tiffxx_HEADERS}) + add_library(tiffxx ${tiffxx_SOURCES} ${tiffxx_HEADERS}) target_link_libraries(tiffxx tiff) set_target_properties(tiffxx PROPERTIES SOVERSION ${SO_COMPATVERSION}) if(NOT CYGWIN) @@ -162,15 +154,7 @@ if(cxx) "-Wl,--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libtiffxx.map") endif() - add_library(tiffxx_static STATIC ${tiffxx_SOURCES} ${tiffxx_HEADERS}) - target_link_libraries(tiffxx_static tiff_staticport) - if (NOT WIN32) - # Windows static and DLL import libraries both use .lib so the - # static lib can't use the same name as the DLL - set_target_properties(tiffxx_static PROPERTIES OUTPUT_NAME tiffxx) - endif() - - install(TARGETS tiffxx tiffxx_static + install(TARGETS tiffxx RUNTIME DESTINATION ${CMAKE_INSTALL_FULL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_FULL_LIBDIR}) diff --git a/test/Makefile.am b/test/Makefile.am index bc506096..0aca56fc 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -39,7 +39,8 @@ EXTRA_DIST = \ CMakeLists.txt \ common.sh \ TiffSplitTest.cmake \ - TiffTestCommon.cmake + TiffTestCommon.cmake \ + TiffTest.cmake # All of the tests to execute via 'make check' TESTS = $(check_PROGRAMS) $(TESTSCRIPTS) diff --git a/test/Makefile.in b/test/Makefile.in index 2c8dbff6..0b2cf1d6 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -643,7 +643,8 @@ EXTRA_DIST = \ CMakeLists.txt \ common.sh \ TiffSplitTest.cmake \ - TiffTestCommon.cmake + TiffTestCommon.cmake \ + TiffTest.cmake # Extra files which should be cleaned by 'make clean' |