aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gis/qmapshack/FindPROJ4.cmake153
-rw-r--r--gis/qmapshack/qmapshack.SlackBuild3
2 files changed, 156 insertions, 0 deletions
diff --git a/gis/qmapshack/FindPROJ4.cmake b/gis/qmapshack/FindPROJ4.cmake
new file mode 100644
index 0000000000000..a8213de4e036d
--- /dev/null
+++ b/gis/qmapshack/FindPROJ4.cmake
@@ -0,0 +1,153 @@
+#.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/gis/qmapshack/qmapshack.SlackBuild b/gis/qmapshack/qmapshack.SlackBuild
index f20aa79add67d..af723abc20b7c 100644
--- a/gis/qmapshack/qmapshack.SlackBuild
+++ b/gis/qmapshack/qmapshack.SlackBuild
@@ -57,6 +57,9 @@ find -L . \
\( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \
-o -perm 440 -o -perm 400 \) -exec chmod 644 {} \;
+# Qmapshack expects proj to provide package information files created by cmake, the proj version on slackbuilds.org, however, is
+# built using autotools, thus the config script fails. Again, thx to pAcAs for the hint.
+cat $CWD/FindPROJ4.cmake > cmake/Modules/FindPROJ4.cmake
mkdir -p build
cd build