OpenOrienteering-Mapper: rebuild for proj 9.1
This commit is contained in:
parent
a0c45e5492
commit
997b7cb4c6
|
@ -0,0 +1,35 @@
|
|||
https://github.com/OpenOrienteering/mapper/pull/2024/commits/40cddb15d316ec90fe1207b737afade7b382457a
|
||||
|
||||
From 40cddb15d316ec90fe1207b737afade7b382457a Mon Sep 17 00:00:00 2001
|
||||
From: Scott Turner <github@pkturner.org>
|
||||
Date: Sun, 9 Jan 2022 13:53:09 -0500
|
||||
Subject: [PATCH] Georeferencing: Choose transformations without restricting
|
||||
authority
|
||||
|
||||
When using PROJ to set up a transformation between two CRSes, use
|
||||
an AUTHORITY=any option to allow all transformations to be considered.
|
||||
In particular, an ESRI datum transformation between WGS84 and NAD83
|
||||
is not available from EPSG, and provides a more accurate result.
|
||||
---
|
||||
src/core/georeferencing.cpp | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/src/core/georeferencing.cpp b/src/core/georeferencing.cpp
|
||||
index 43b28fec6..57a4d7b74 100644
|
||||
--- a/src/core/georeferencing.cpp
|
||||
+++ b/src/core/georeferencing.cpp
|
||||
@@ -383,7 +383,14 @@ ProjTransform::ProjTransform(const QString& crs_spec)
|
||||
// Cf. https://github.com/OSGeo/PROJ/pull/1573
|
||||
crs_spec_utf8.replace("+datum=potsdam", "+ellps=bessel +nadgrids=@BETA2007.gsb");
|
||||
#endif
|
||||
+#if defined(ACCEPT_USE_OF_DEPRECATED_PROJ_API_H) || (PROJ_VERSION_MAJOR) < 8
|
||||
pj = proj_create_crs_to_crs(PJ_DEFAULT_CTX, geographic_crs_spec_utf8, crs_spec_utf8, nullptr);
|
||||
+#else
|
||||
+ static auto const geographic_crs = crs(Georeferencing::geographic_crs_spec);
|
||||
+ auto const projected_crs = crs(crs_spec);
|
||||
+ static const char* const options[] = {"AUTHORITY=any", nullptr};
|
||||
+ pj = proj_create_crs_to_crs_from_pj(PJ_DEFAULT_CTX, geographic_crs.pj, projected_crs.pj, nullptr, options);
|
||||
+#endif
|
||||
if (pj)
|
||||
operator=({proj_normalize_for_visualization(PJ_DEFAULT_CTX, pj)});
|
||||
}
|
|
@ -0,0 +1,321 @@
|
|||
From 08cc5e4c73175ebf3e9bb2295f718e914366d51b Mon Sep 17 00:00:00 2001
|
||||
From: Kai Pastor <dg0yt@darc.de>
|
||||
Date: Wed, 15 Dec 2021 09:32:10 +0100
|
||||
Subject: [PATCH] Find PROJ via cmake config or via pkg-config
|
||||
|
||||
Drop the custom find module for PROJ. Cmake config or pkg-config data
|
||||
is provided from PROJ's build system. This covers PROJ 4.9 to 8.2,
|
||||
dynamic and static linkage, including transitive dependencies.
|
||||
---
|
||||
CMakeLists.txt | 23 ++--
|
||||
cmake/FindPROJ4.cmake | 152 -------------------------
|
||||
doc/licensing/linux-distribution.cmake | 5 +-
|
||||
packaging/CMakeLists.txt | 25 ++--
|
||||
packaging/android/Mapper.pro.in | 2 +-
|
||||
src/CMakeLists.txt | 2 +-
|
||||
test/CMakeLists.txt | 2 +-
|
||||
7 files changed, 31 insertions(+), 180 deletions(-)
|
||||
delete mode 100644 cmake/FindPROJ4.cmake
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index da5ad1e7b..e6a6ddeaa 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -203,20 +203,27 @@ endif()
|
||||
|
||||
# We must not require a minimum version of PROJ via find_package
|
||||
# because PROJ config requires the major version to match exactly.
|
||||
-find_package(PROJ4 REQUIRED)
|
||||
-if(NOT TARGET PROJ4::proj)
|
||||
- include("${CMAKE_CURRENT_SOURCE_DIR}/cmake/FindPROJ.cmake")
|
||||
+find_package(PROJ CONFIG)
|
||||
+if(NOT PROJ_LIBRARIES)
|
||||
+ find_package(PkgConfig REQUIRED)
|
||||
+ if(PKG_CONFIG_FOUND)
|
||||
+ pkg_check_modules(PROJ4_PC IMPORTED_TARGET proj)
|
||||
+ endif()
|
||||
+ if(TARGET PkgConfig::PROJ4_PC)
|
||||
+ set(PROJ_LIBRARIES PkgConfig::PROJ4_PC)
|
||||
+ set(PROJ_VERSION "${PROJ4_PC_VERSION}")
|
||||
+ endif()
|
||||
endif()
|
||||
-if(NOT PROJ4_VERSION OR PROJ4_VERSION VERSION_LESS 4.9)
|
||||
+if(NOT PROJ_VERSION OR PROJ_VERSION VERSION_LESS 4.9)
|
||||
message(FATAL_ERROR "At least PROJ 4.9 is required")
|
||||
-elseif(PROJ4_VERSION VERSION_LESS 6.1)
|
||||
+elseif(PROJ_VERSION VERSION_LESS 6.1)
|
||||
# New PROJ API missing or incomplete.
|
||||
# (proj_normalize_for_visualization() came in 6.1.)
|
||||
- set_property(TARGET PROJ4::proj APPEND PROPERTY
|
||||
+ set_property(TARGET "${PROJ_LIBRARIES}" APPEND PROPERTY
|
||||
INTERFACE_COMPILE_DEFINITIONS ACCEPT_USE_OF_DEPRECATED_PROJ_API_H)
|
||||
-elseif(PROJ4_VERSION VERSION_LESS 6.2.1)
|
||||
+elseif(PROJ_VERSION VERSION_LESS 6.2.1)
|
||||
# Datum Potsdam issue, https://github.com/OSGeo/PROJ/pull/1573
|
||||
- set_property(TARGET PROJ4::proj APPEND PROPERTY
|
||||
+ set_property(TARGET "${PROJ_LIBRARIES}" APPEND PROPERTY
|
||||
INTERFACE_COMPILE_DEFINITIONS PROJ_ISSUE_1573)
|
||||
endif()
|
||||
|
||||
diff --git a/cmake/FindPROJ4.cmake b/cmake/FindPROJ4.cmake
|
||||
deleted file mode 100644
|
||||
index 093deaa79..000000000
|
||||
--- a/cmake/FindPROJ4.cmake
|
||||
+++ /dev/null
|
||||
@@ -1,152 +0,0 @@
|
||||
-#.rst:
|
||||
-# FindPROJ4
|
||||
-# --------
|
||||
-#
|
||||
-# Find the proj includes and library.
|
||||
-#
|
||||
-# IMPORTED Targets
|
||||
-# ^^^^^^^^^^^^^^^^
|
||||
-#
|
||||
-# This module defines :prop_tgt:`IMPORTED` target ``PROJ4::proj``,
|
||||
-# if Proj.4 has been found.
|
||||
-#
|
||||
-# Result Variables
|
||||
-# ^^^^^^^^^^^^^^^^
|
||||
-#
|
||||
-# This module defines the following variables:
|
||||
-#
|
||||
-# ::
|
||||
-#
|
||||
-# PROJ4_INCLUDE_DIRS - where to find proj_api.h, etc.
|
||||
-# PROJ4_LIBRARIES - List of libraries when using libproj.
|
||||
-# PROJ4_FOUND - True if libproj found.
|
||||
-#
|
||||
-# ::
|
||||
-#
|
||||
-# PROJ4_VERSION - The version of libproj found (x.y.z)
|
||||
-# PROJ4_VERSION_MAJOR - The major version of libproj
|
||||
-# PROJ4_VERSION_MINOR - The minor version of libproj
|
||||
-# PROJ4_VERSION_PATCH - The patch version of libproj
|
||||
-# PROJ4_VERSION_TWEAK - always 0
|
||||
-# PROJ4_VERSION_COUNT - The number of version components, always 3
|
||||
-#
|
||||
-# Hints
|
||||
-# ^^^^^
|
||||
-#
|
||||
-# A user may set ``PROJ4_ROOT`` to a libproj installation root to tell this
|
||||
-# module where to look exclusively.
|
||||
-
|
||||
-#=============================================================================
|
||||
-# Copyright 2016 Kai Pastor
|
||||
-#
|
||||
-#
|
||||
-# This file was derived from CMake 3.5's module FindZLIB.cmake
|
||||
-# which has the following terms:
|
||||
-#
|
||||
-# Copyright 2001-2011 Kitware, Inc.
|
||||
-#
|
||||
-# Redistribution and use in source and binary forms, with or without
|
||||
-# modification, are permitted provided that the following conditions are
|
||||
-# met:
|
||||
-#
|
||||
-# * Redistributions of source code must retain the above copyright notice,
|
||||
-# this list of conditions and the following disclaimer.
|
||||
-#
|
||||
-# * Redistributions in binary form must reproduce the above copyright notice,
|
||||
-# this list of conditions and the following disclaimer in the documentation
|
||||
-# and/or other materials provided with the distribution.
|
||||
-#
|
||||
-# * The names of Kitware, Inc., the Insight Consortium, or the names of
|
||||
-# any consortium members, or of any contributors, may not be used to
|
||||
-# endorse or promote products derived from this software without
|
||||
-# specific prior written permission.
|
||||
-#
|
||||
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS''
|
||||
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
|
||||
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
-# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-#=============================================================================
|
||||
-
|
||||
-# Search PROJ4_ROOT exclusively if it is set.
|
||||
-if(PROJ4_ROOT)
|
||||
- set(_PROJ4_SEARCH PATHS ${PROJ4_ROOT} NO_DEFAULT_PATH)
|
||||
-else()
|
||||
- set(_PROJ4_SEARCH)
|
||||
-endif()
|
||||
-
|
||||
-find_path(PROJ4_INCLUDE_DIR NAMES proj_api.h ${_PROJ4_SEARCH} PATH_SUFFIXES include)
|
||||
-mark_as_advanced(PROJ4_INCLUDE_DIR)
|
||||
-
|
||||
-if(PROJ4_INCLUDE_DIR AND EXISTS "${PROJ4_INCLUDE_DIR}/proj_api.h")
|
||||
- file(STRINGS "${PROJ4_INCLUDE_DIR}/proj_api.h" PROJ4_H REGEX "^#define PJ_VERSION [0-9]+$")
|
||||
-
|
||||
- string(REGEX REPLACE "^.*PJ_VERSION ([0-9]).*$" "\\1" PROJ4_VERSION_MAJOR "${PROJ4_H}")
|
||||
- string(REGEX REPLACE "^.*PJ_VERSION [0-9]([0-9]).*$" "\\1" PROJ4_VERSION_MINOR "${PROJ4_H}")
|
||||
- string(REGEX REPLACE "^.*PJ_VERSION [0-9][0-9]([0-9]).*$" "\\1" PROJ4_VERSION_PATCH "${PROJ4_H}")
|
||||
- set(PROJ4_VERSION "${PROJ4_VERSION_MAJOR}.${PROJ4_VERSION_MINOR}.${PROJ4_VERSION_PATCH}")
|
||||
- set(PROJ4_VERSION_COUNT 3)
|
||||
-endif()
|
||||
-
|
||||
-# Allow PROJ4_LIBRARY to be set manually, as the location of the proj library
|
||||
-if(NOT PROJ4_LIBRARY)
|
||||
- set(PROJ4_NAMES proj)
|
||||
- set(PROJ4_NAMES_DEBUG projd)
|
||||
- if(WIN32 AND DEFINED PROJ4_VERSION_MAJOR AND DEFINED PROJ4_VERSION_MINOR)
|
||||
- list(APPEND PROJ4_NAMES proj_${PROJ4_VERSION_MAJOR}_${PROJ4_VERSION_MINOR})
|
||||
- list(APPEND PROJ4_NAMES projd_${PROJ4_VERSION_MAJOR}_${PROJ4_VERSION_MINOR})
|
||||
- endif()
|
||||
- find_library(PROJ4_LIBRARY_RELEASE NAMES ${PROJ4_NAMES} ${_PROJ4_SEARCH} PATH_SUFFIXES lib)
|
||||
- find_library(PROJ4_LIBRARY_DEBUG NAMES ${PROJ4_NAMES_DEBUG} ${_PROJ4_SEARCH} PATH_SUFFIXES lib)
|
||||
- include(SelectLibraryConfigurations)
|
||||
- select_library_configurations(PROJ4)
|
||||
-endif()
|
||||
-
|
||||
-# handle the QUIETLY and REQUIRED arguments and set PROJ4_FOUND to TRUE if
|
||||
-# all listed variables are TRUE
|
||||
-include(FindPackageHandleStandardArgs)
|
||||
-find_package_handle_standard_args(PROJ4
|
||||
- REQUIRED_VARS
|
||||
- PROJ4_LIBRARY
|
||||
- PROJ4_INCLUDE_DIR
|
||||
- VERSION_VAR
|
||||
- PROJ4_VERSION
|
||||
-)
|
||||
-
|
||||
-if(PROJ4_FOUND)
|
||||
- set(PROJ4_INCLUDE_DIRS ${PROJ4_INCLUDE_DIR})
|
||||
-
|
||||
- if(NOT PROJ4_LIBRARIES)
|
||||
- set(PROJ4_LIBRARIES ${PROJ4_LIBRARY})
|
||||
- endif()
|
||||
-
|
||||
- if(NOT TARGET PROJ4::proj)
|
||||
- add_library(PROJ4::proj UNKNOWN IMPORTED)
|
||||
- set_target_properties(PROJ4::proj PROPERTIES
|
||||
- INTERFACE_INCLUDE_DIRECTORIES "${PROJ4_INCLUDE_DIRS}")
|
||||
-
|
||||
- if(PROJ4_LIBRARY_RELEASE)
|
||||
- set_property(TARGET PROJ4::proj APPEND PROPERTY
|
||||
- IMPORTED_CONFIGURATIONS RELEASE)
|
||||
- set_target_properties(PROJ4::proj PROPERTIES
|
||||
- IMPORTED_LOCATION_RELEASE "${PROJ4_LIBRARY_RELEASE}")
|
||||
- endif()
|
||||
-
|
||||
- if(PROJ4_LIBRARY_DEBUG)
|
||||
- set_property(TARGET PROJ4::proj APPEND PROPERTY
|
||||
- IMPORTED_CONFIGURATIONS DEBUG)
|
||||
- set_target_properties(PROJ4::proj PROPERTIES
|
||||
- IMPORTED_LOCATION_DEBUG "${PROJ4_LIBRARY_DEBUG}")
|
||||
- endif()
|
||||
-
|
||||
- if(NOT PROJ4_LIBRARY_RELEASE AND NOT PROJ4_LIBRARY_DEBUG)
|
||||
- set_property(TARGET PROJ4::proj APPEND PROPERTY
|
||||
- IMPORTED_LOCATION "${PROJ4_LIBRARY}")
|
||||
- endif()
|
||||
- endif()
|
||||
-endif()
|
||||
diff --git a/doc/licensing/linux-distribution.cmake b/doc/licensing/linux-distribution.cmake
|
||||
index b2bc5d72c..7a1d39f7b 100644
|
||||
--- a/doc/licensing/linux-distribution.cmake
|
||||
+++ b/doc/licensing/linux-distribution.cmake
|
||||
@@ -106,9 +106,8 @@ foreach(dependency ${easy_dependencies})
|
||||
elseif(dependency STREQUAL "libpolyclipping")
|
||||
find_package(Polyclipping)
|
||||
list(APPEND explicit_copyright_${dependency} "${POLYCLIPPING_VERSION}")
|
||||
- elseif(dependency STREQUAL "proj")
|
||||
- find_package(PROJ4)
|
||||
- list(APPEND explicit_copyright_${dependency} "${PROJ4_VERSION}")
|
||||
+ elseif(dependency STREQUAL "proj" AND PROJ_VERSION)
|
||||
+ list(APPEND explicit_copyright_${dependency} "${PROJ_VERSION}")
|
||||
elseif(dependency STREQUAL "zlib")
|
||||
find_package(ZLIB)
|
||||
list(APPEND explicit_copyright_${dependency} "${ZLIB_VERSION_STRING}")
|
||||
diff --git a/packaging/CMakeLists.txt b/packaging/CMakeLists.txt
|
||||
index 4a981c681..eabb4bb14 100644
|
||||
--- a/packaging/CMakeLists.txt
|
||||
+++ b/packaging/CMakeLists.txt
|
||||
@@ -235,25 +235,22 @@ unset(MAPPER_LIBS)
|
||||
|
||||
if(Mapper_PACKAGE_PROJ)
|
||||
if(NOT PROJ_DATA_DIR)
|
||||
- unset(PROJ_DATA_DIR CACHE)
|
||||
- if(PROJ4_ROOT)
|
||||
- set(proj_data_paths "${PROJ4_ROOT}/share/proj")
|
||||
- elseif(PROJ4_DIR)
|
||||
+ if(PROJ_DIR)
|
||||
# Cf. find_package documentation
|
||||
- string(REGEX REPLACE "/CMake$|/cmake$" "" proj_data_paths "${PROJ4_DIR}") # U
|
||||
- string(REGEX REPLACE "/PROJ4[^/]*$|/proj4[^/]*$" "" proj_data_paths "${proj_data_paths}") # U, W
|
||||
- string(REGEX REPLACE "/cmake$" "" proj_data_paths "${proj_data_paths}") # U
|
||||
- string(REGEX REPLACE "/lib/[^/]*$|/lib$|/share$" "" proj_data_paths "${proj_data_paths}") # U, W
|
||||
- set(proj_data_paths "${proj_data_paths}/share/proj")
|
||||
- elseif(PROJ4_INCLUDE_DIRS)
|
||||
- string(REGEX REPLACE "/include$" "/share/proj" proj_data_paths ${PROJ4_INCLUDE_DIRS}) # MSYS2 et al.
|
||||
+ string(REGEX REPLACE "/CMake$|/cmake$" "" proj_prefix "${PROJ_DIR}") # U
|
||||
+ string(REGEX REPLACE "/PROJ[^/]*$|/proj[^/]*$" "" proj_prefix "${proj_prefix}") # U, W
|
||||
+ string(REGEX REPLACE "/cmake$" "" proj_prefix "${proj_prefix}") # U
|
||||
+ string(REGEX REPLACE "/lib/[^/]*$|/lib$|/share$" "" proj_prefix "${proj_prefix}") # U, W
|
||||
+ elseif(PROJ4_PC_PREFIX)
|
||||
+ set(proj_prefix "${PROJ4_PC_PREFIX}")
|
||||
else()
|
||||
- set(proj_data_paths PATHS "${CMAKE_INSTALL_PREFIX}/share/proj")
|
||||
+ set(proj_prefix "${CMAKE_INSTALL_PREFIX}")
|
||||
endif()
|
||||
find_path(PROJ_DATA_DIR
|
||||
DOC "The PROJ data files directory"
|
||||
NAMES epsg proj.db
|
||||
- PATHS ${proj_data_paths}
|
||||
+ PATHS ${proj_prefix}
|
||||
+ PATH_SUFFIXES "share/proj" "share"
|
||||
NO_DEFAULT_PATH
|
||||
)
|
||||
endif()
|
||||
@@ -266,7 +263,7 @@ if(Mapper_PACKAGE_PROJ)
|
||||
install(
|
||||
DIRECTORY "${PROJ_DATA_DIR}"
|
||||
DESTINATION "${MAPPER_DATA_DESTINATION}")
|
||||
- list(APPEND MAPPER_LIB_HINTS ${PROJ4_ROOT}/bin)
|
||||
+ list(APPEND MAPPER_LIB_HINTS "${proj_prefix}/bin")
|
||||
endif()
|
||||
|
||||
if(Mapper_PACKAGE_GDAL)
|
||||
diff --git a/packaging/android/Mapper.pro.in b/packaging/android/Mapper.pro.in
|
||||
index b3e88ca11..2017e3933 100644
|
||||
--- a/packaging/android/Mapper.pro.in
|
||||
+++ b/packaging/android/Mapper.pro.in
|
||||
@@ -38,7 +38,7 @@ PROJECT_BINARY_DIR = "@PROJECT_BINARY_DIR@"
|
||||
# in CPackConfig.cmake when a package version changes.
|
||||
CPACK_CONFIG_CLEANUP_TRIGGER = \
|
||||
GDAL: @GDAL_VERSION@ \
|
||||
- PROJ: @PROJ4_VERSION@ \
|
||||
+ PROJ: @PROJ_VERSION@ \
|
||||
Qt5: @Qt5Core_VERSION@
|
||||
|
||||
# For the generated .pro file to be used in Qt Creator,
|
||||
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
|
||||
index a4b7d1454..aff2fa8e4 100644
|
||||
--- a/src/CMakeLists.txt
|
||||
+++ b/src/CMakeLists.txt
|
||||
@@ -301,7 +301,7 @@ add_dependencies(Mapper_Common
|
||||
)
|
||||
target_link_libraries(Mapper_Common
|
||||
Polyclipping::Polyclipping
|
||||
- PROJ4::proj
|
||||
+ ${PROJ_LIBRARIES}
|
||||
Qt5::Widgets
|
||||
)
|
||||
foreach(lib
|
||||
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
|
||||
index 37d5278da..19b2567d9 100644
|
||||
--- a/test/CMakeLists.txt
|
||||
+++ b/test/CMakeLists.txt
|
||||
@@ -65,7 +65,7 @@ function(add_test_helper testname autorun)
|
||||
endforeach()
|
||||
add_executable(${testname} ${testname}.cpp ${TEST_${testname}_SRCS})
|
||||
target_link_libraries(${testname} PRIVATE
|
||||
- PROJ4::proj
|
||||
+ ${PROJ_LIBRARIES}
|
||||
Qt5::Test
|
||||
Qt5::Gui
|
||||
Polyclipping::Polyclipping
|
|
@ -1,7 +1,7 @@
|
|||
# Template file for 'OpenOrienteering-Mapper'
|
||||
pkgname=OpenOrienteering-Mapper
|
||||
version=0.9.5
|
||||
revision=2
|
||||
revision=3
|
||||
build_style=cmake
|
||||
hostmakedepends="doxygen qt5-host-tools qt5-plugin-sqlite qt5-qmake qt5-tools"
|
||||
makedepends="qt5-devel clipper-devel proj-devel zlib-devel libgdal-devel
|
||||
|
|
Loading…
Reference in New Issue