diff options
| -rw-r--r-- | CMakeLists.txt | 11 | ||||
| -rw-r--r-- | configure.ac | 20 | ||||
| -rw-r--r-- | src/Makefile.am | 2 | ||||
| -rw-r--r-- | src/grids.cpp | 34 | ||||
| -rw-r--r-- | src/lib_proj.cmake | 9 |
5 files changed, 65 insertions, 11 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index bb8ae88f..97a0b90a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -137,9 +137,14 @@ ENDIF() # Check for libtiff ################################################################################ -find_package(TIFF REQUIRED) -if(NOT TIFF_FOUND) - message(SEND_ERROR "libtiff dependency not found!") +option(DISABLE_TIFF_IS_STRONGLY_DISCOURAGED "Disable TIFF support (strongly discouraged !)" OFF) +mark_as_advanced(DISABLE_TIFF_IS_STRONGLY_DISCOURAGED) +if(NOT DISABLE_TIFF_IS_STRONGLY_DISCOURAGED) + find_package(TIFF REQUIRED) + if(NOT TIFF_FOUND) + message(SEND_ERROR "libtiff dependency not found!") + endif() + add_definitions(-DTIFF_ENABLED) endif() ################################################################################ diff --git a/configure.ac b/configure.ac index 7c04f60b..4aff6d74 100644 --- a/configure.ac +++ b/configure.ac @@ -300,15 +300,25 @@ dnl --------------------------------------------------------------------------- dnl Check for libtiff dnl --------------------------------------------------------------------------- -if test "x$TIFF_CFLAGS$TIFF_LIBS" = "x" ; then - if $PKG_CONFIG libtiff; then - PKG_CHECK_MODULES([TIFF], [libtiff]) - else - PKG_CHECK_MODULES([TIFF], [libtiff-4]) +AC_ARG_ENABLE([tiff-is-strongly-discouraged], + AS_HELP_STRING([--disable-tiff-is-strongly-discouraged], + [Disable TIFF support. Strongly discouraged !]), + [enable_tiff=no], + [enable_tiff=yes]) + +if test "x$enable_tiff" = "xyes" -o "x$enable_tiff" = ""; then + if test "x$TIFF_CFLAGS$TIFF_LIBS" = "x" ; then + if $PKG_CONFIG libtiff; then + PKG_CHECK_MODULES([TIFF], [libtiff]) + else + PKG_CHECK_MODULES([TIFF], [libtiff-4]) + fi fi + TIFF_ENABLED_FLAGS=-DTIFF_ENABLED fi AC_SUBST(TIFF_CFLAGS,$TIFF_CFLAGS) AC_SUBST(TIFF_LIBS,$TIFF_LIBS) +AC_SUBST(TIFF_ENABLED_FLAGS,$TIFF_ENABLED_FLAGS) dnl --------------------------------------------------------------------------- dnl Check for external Google Test diff --git a/src/Makefile.am b/src/Makefile.am index 89f8dc0c..9a4b3cae 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -7,7 +7,7 @@ TESTS = geodtest check_PROGRAMS = geodtest AM_CPPFLAGS = -DPROJ_LIB=\"$(pkgdatadir)\" \ - -DMUTEX_@MUTEX_SETTING@ @JNI_INCLUDE@ -I$(top_srcdir)/include @SQLITE3_CFLAGS@ @TIFF_CFLAGS@ + -DMUTEX_@MUTEX_SETTING@ @JNI_INCLUDE@ -I$(top_srcdir)/include @SQLITE3_CFLAGS@ @TIFF_CFLAGS@ @TIFF_ENABLED_FLAGS@ AM_CXXFLAGS = @CXX_WFLAGS@ @FLTO_FLAG@ include_HEADERS = proj.h proj_experimental.h proj_constants.h proj_api.h geodesic.h \ diff --git a/src/grids.cpp b/src/grids.cpp index ca3ddfcc..090f7320 100644 --- a/src/grids.cpp +++ b/src/grids.cpp @@ -36,7 +36,9 @@ #include "proj/internal/lru_cache.hpp" #include "proj_internal.h" +#ifdef TIFF_ENABLED #include "tiffio.h" +#endif #include <algorithm> #include <cmath> @@ -279,6 +281,8 @@ static bool IsTIFF(size_t header_size, const unsigned char *header) { (header[3] == 0x2B && header[2] == 0))); } +#ifdef TIFF_ENABLED + // --------------------------------------------------------------------------- enum class TIFFDataType { Int16, UInt16, Int32, UInt32, Float32, Float64 }; @@ -1044,6 +1048,8 @@ class GTiffVGridShiftSet : public VerticalShiftGridSet, public GTiffDataset { open(PJ_CONTEXT *ctx, PAFile fp, const std::string &filename); }; +#endif // TIFF_ENABLED + // --------------------------------------------------------------------------- template <class GridType, class GenericGridType> @@ -1107,6 +1113,7 @@ insertIntoHierarchy(PJ_CONTEXT *ctx, std::unique_ptr<GridType> &&grid, } } +#ifdef TIFF_ENABLED // --------------------------------------------------------------------------- class GTiffVGrid : public VerticalShiftGrid { @@ -1260,6 +1267,7 @@ GTiffVGridShiftSet::open(PJ_CONTEXT *ctx, PAFile fp, } return set; } +#endif // TIFF_ENABLED // --------------------------------------------------------------------------- @@ -1307,10 +1315,16 @@ VerticalShiftGridSet::open(PJ_CONTEXT *ctx, const std::string &filename) { pj_ctx_fseek(ctx, fp, SEEK_SET, 0); if (IsTIFF(header_size, header)) { +#ifdef TIFF_ENABLED auto set = GTiffVGridShiftSet::open(ctx, fp, filename); if (!set) pj_ctx_set_errno(ctx, PJD_ERR_FAILED_TO_LOAD_GRID); return set; +#else + pj_log(ctx, PJ_LOG_ERROR, "TIFF grid, but TIFF support disabled in this build"); + pj_ctx_fclose(ctx, fp); + return nullptr; +#endif } pj_log(ctx, PJ_LOG_DEBUG_MAJOR, "Unrecognized vertical grid format"); @@ -1816,6 +1830,8 @@ std::unique_ptr<NTv2GridSet> NTv2GridSet::open(PJ_CONTEXT *ctx, PAFile fp, return set; } +#ifdef TIFF_ENABLED + // --------------------------------------------------------------------------- class GTiffHGridShiftSet : public HorizontalShiftGridSet, public GTiffDataset { @@ -2079,6 +2095,7 @@ GTiffHGridShiftSet::open(PJ_CONTEXT *ctx, PAFile fp, } return set; } +#endif // TIFF_ENABLED // --------------------------------------------------------------------------- @@ -2151,10 +2168,16 @@ HorizontalShiftGridSet::open(PJ_CONTEXT *ctx, const std::string &filename) { return NTv2GridSet::open(ctx, fp, filename); } else if (IsTIFF(header_size, reinterpret_cast<const unsigned char *>(header))) { +#ifdef TIFF_ENABLED auto set = GTiffHGridShiftSet::open(ctx, fp, filename); if (!set) pj_ctx_set_errno(ctx, PJD_ERR_FAILED_TO_LOAD_GRID); return set; +#else + pj_log(ctx, PJ_LOG_ERROR, "TIFF grid, but TIFF support disabled in this build"); + pj_ctx_fclose(ctx, fp); + return nullptr; +#endif } pj_log(ctx, PJ_LOG_DEBUG_MAJOR, "Unrecognized horizontal grid format"); @@ -2201,6 +2224,7 @@ const HorizontalShiftGrid *HorizontalShiftGridSet::gridAt(double lon, return nullptr; } +#ifdef TIFF_ENABLED // --------------------------------------------------------------------------- class GTiffGenericGridShiftSet : public GenericShiftGridSet, @@ -2298,6 +2322,7 @@ void GTiffGenericGrid::insertGrid(PJ_CONTEXT *ctx, m_children.emplace_back(std::move(subgrid)); } } +#endif // TIFF_ENABLED // --------------------------------------------------------------------------- @@ -2329,6 +2354,8 @@ bool NullGenericShiftGrid::valueAt(int, int, int, float &out) const { // --------------------------------------------------------------------------- +#ifdef TIFF_ENABLED + std::unique_ptr<GTiffGenericGridShiftSet> GTiffGenericGridShiftSet::open(PJ_CONTEXT *ctx, PAFile fp, const std::string &filename) { @@ -2373,6 +2400,7 @@ GTiffGenericGridShiftSet::open(PJ_CONTEXT *ctx, PAFile fp, } return set; } +#endif // TIFF_ENABLED // --------------------------------------------------------------------------- @@ -2425,10 +2453,16 @@ GenericShiftGridSet::open(PJ_CONTEXT *ctx, const std::string &filename) { pj_ctx_fseek(ctx, fp, SEEK_SET, 0); if (IsTIFF(header_size, header)) { +#ifdef TIFF_ENABLED auto set = GTiffGenericGridShiftSet::open(ctx, fp, filename); if (!set) pj_ctx_set_errno(ctx, PJD_ERR_FAILED_TO_LOAD_GRID); return set; +#else + pj_log(ctx, PJ_LOG_ERROR, "TIFF grid, but TIFF support disabled in this build"); + pj_ctx_fclose(ctx, fp); + return nullptr; +#endif } pj_log(ctx, PJ_LOG_DEBUG_MAJOR, "Unrecognized generic grid format"); diff --git a/src/lib_proj.cmake b/src/lib_proj.cmake index f94f0562..d4c95092 100644 --- a/src/lib_proj.cmake +++ b/src/lib_proj.cmake @@ -436,8 +436,13 @@ if(USE_THREAD AND Threads_FOUND AND CMAKE_USE_PTHREADS_INIT) target_link_libraries(${PROJ_CORE_TARGET} ${CMAKE_THREAD_LIBS_INIT}) endif() -include_directories(${SQLITE3_INCLUDE_DIR} ${TIFF_INCLUDE_DIR}) -target_link_libraries(${PROJ_CORE_TARGET} ${SQLITE3_LIBRARY} ${TIFF_LIBRARY}) +include_directories(${SQLITE3_INCLUDE_DIR}) +target_link_libraries(${PROJ_CORE_TARGET} ${SQLITE3_LIBRARY}) + +if(NOT DISABLE_TIFF_IS_STRONGLY_DISCOURAGED) + include_directories(${TIFF_INCLUDE_DIR}) + target_link_libraries(${PROJ_CORE_TARGET} ${TIFF_LIBRARY}) +endif() if(MSVC) target_compile_definitions(${PROJ_CORE_TARGET} |
