aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am2
-rw-r--r--src/grids.cpp34
-rw-r--r--src/lib_proj.cmake9
3 files changed, 42 insertions, 3 deletions
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}