11#
22# Copyright 2012, 2013, 2014 Thomas Schöps
3- # Copyright 2012-2020 Kai Pastor
3+ # Copyright 2012-2021 Kai Pastor
44#
55# This file is part of OpenOrienteering.
66#
@@ -27,10 +27,12 @@ if(CCACHE_PROGRAM)
2727 set_property (GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_PROGRAM} " )
2828endif ()
2929
30+ option (CMAKE_FIND_PACKAGE_PREFER_CONFIG "Lookup package config files before using find modules" ON )
31+
3032# Project declaration
3133
32- project (Mapper VERSION 0.9.4 LANGUAGES CXX C)
33- set (Mapper_COPYRIGHT "(C) 2020 The OpenOrienteering developers" )
34+ project (Mapper VERSION 0.9.5 LANGUAGES CXX C)
35+ set (Mapper_COPYRIGHT "(C) 2021 The OpenOrienteering developers" )
3436
3537math (EXPR Mapper_VERSION_CODE "${Mapper_VERSION_MAJOR} * 10000 + ${Mapper_VERSION_MINOR} * 100 + ${Mapper_VERSION_PATCH} * 2 + ${CMAKE_SIZEOF_VOID_P} / 4 - 1" )
3638
@@ -63,8 +65,10 @@ endif()
6365
6466option (Mapper_DEBUG_TRANSLATIONS "Debug missing translations" OFF )
6567
66- # Used for some Linux distributions which do not provide the polyclipping lib.
67- option (Mapper_BUILD_CLIPPER "Build the Clipper package from source" OFF )
68+ # To improve developer experience, build clipper if it is not found
69+ set (Mapper_BUILD_CLIPPER "auto" CACHE STRING
70+ "Build the Clipper package from source, alternatives: ON, OFF"
71+ )
6872
6973option (Mapper_USE_GDAL "Use the GDAL library" ON )
7074
@@ -138,10 +142,12 @@ elseif(ANDROID)
138142 set (MAPPER_DATA_DESTINATION "assets" )
139143 set (MAPPER_ABOUT_DESTINATION "assets/doc" )
140144else () # LINUX and alike
141- set (MAPPER_RUNTIME_DESTINATION "bin" )
142- set (MAPPER_LIBRARY_DESTINATION "lib/${Mapper_PACKAGE_NAME} " )
143- set (MAPPER_DATA_DESTINATION "share/${Mapper_PACKAGE_NAME} " )
144- set (MAPPER_ABOUT_DESTINATION "share/doc/${Mapper_PACKAGE_NAME} " )
145+ include (GNUInstallDirs)
146+ set (MAPPER_RUNTIME_DESTINATION "${CMAKE_INSTALL_BINDIR} " )
147+ set (MAPPER_LIBRARY_DESTINATION "${CMAKE_INSTALL_LIBDIR} /${Mapper_PACKAGE_NAME} " )
148+ set (MAPPER_DATA_DESTINATION "${CMAKE_INSTALL_DATADIR} /${Mapper_PACKAGE_NAME} " )
149+ string (REPLACE "/${PROJECT_NAME} " "/${Mapper_PACKAGE_NAME} "
150+ MAPPER_ABOUT_DESTINATION "${CMAKE_INSTALL_DOCDIR} " )
145151endif ()
146152
147153if (CMAKE_CROSSCOMPILING )
@@ -174,6 +180,19 @@ add_custom_target(Mapper_prerequisites
174180)
175181set (Mapper_prerequisites_FOUND TRUE )
176182
183+ if (Mapper_BUILD_CLIPPER STREQUAL "auto" )
184+ find_package (Polyclipping 6.1.3 MODULE)
185+ if (NOT Polyclipping_FOUND)
186+ message (WARNING
187+ "System polyclipping is missing. Enabling embedded build.\n "
188+ "Set Mapper_BUILD_CLIPPER=OFF to disable embedded build."
189+ )
190+ set_property (CACHE Mapper_BUILD_CLIPPER PROPERTY VALUE "ON" )
191+ else ()
192+ set_property (CACHE Mapper_BUILD_CLIPPER PROPERTY VALUE "OFF" )
193+ endif ()
194+ set_property (CACHE Mapper_BUILD_CLIPPER PROPERTY TYPE "BOOL" )
195+ endif ()
177196if (Mapper_BUILD_CLIPPER)
178197 add_subdirectory (3rd-party/clipper)
179198 add_feature_info(Mapper_BUILD_CLIPPER 1 "version: ${CLIPPER_VERSION} " )
@@ -182,18 +201,20 @@ else()
182201 find_package (Polyclipping 6.1.3 MODULE REQUIRED)
183202endif ()
184203
185- find_package (PROJ4 CONFIG QUIET )
204+ # We must not require a minimum version of PROJ via find_package
205+ # because PROJ config requires the major version to match exactly.
206+ find_package (PROJ4 REQUIRED)
186207if (NOT TARGET PROJ4::proj)
187- set (PROJ4_FOUND false )
188- find_package (PROJ4 MODULE REQUIRED)
208+ include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/FindPROJ.cmake" )
189209endif ()
190- if (NOT PROJ4_VERSION OR PROJ4_VERSION VERSION_LESS 6.1)
210+ if (NOT PROJ4_VERSION OR PROJ4_VERSION VERSION_LESS 4.9)
211+ message (FATAL_ERROR "At least PROJ 4.9 is required" )
212+ elseif (PROJ4_VERSION VERSION_LESS 6.1)
191213 # New PROJ API missing or incomplete.
192214 # (proj_normalize_for_visualization() came in 6.1.)
193215 set_property (TARGET PROJ4::proj APPEND PROPERTY
194216 INTERFACE_COMPILE_DEFINITIONS ACCEPT_USE_OF_DEPRECATED_PROJ_API_H)
195- endif ()
196- if (NOT PROJ4_VERSION OR PROJ4_VERSION VERSION_LESS 6.2.1)
217+ elseif (PROJ4_VERSION VERSION_LESS 6.2.1)
197218 # Datum Potsdam issue, https://github.com/OSGeo/PROJ/pull/1573
198219 set_property (TARGET PROJ4::proj APPEND PROPERTY
199220 INTERFACE_COMPILE_DEFINITIONS PROJ_ISSUE_1573)
@@ -218,11 +239,6 @@ if(big_endian)
218239endif ()
219240
220241
221- if (UNIX AND NOT APPLE )
222- # set(CMAKE_INSTALL_RPATH "\$ORIGIN/../lib/${Mapper_PACKAGE_NAME}/lib")
223- set (CMAKE_INSTALL_RPATH "${MAPPER_LIBRARY_DESTINATION} /lib" )
224- endif ()
225-
226242add_definitions (-D_USE_MATH_DEFINES -DUNICODE)
227243
228244if (Mapper_DEVELOPMENT_BUILD)
@@ -274,7 +290,6 @@ endif()
274290if (Mapper_USE_GDAL)
275291 add_subdirectory ("src/gdal" )
276292endif ()
277- add_subdirectory ("src/libocad" )
278293if (NOT ANDROID)
279294 add_subdirectory ("src/printsupport" )
280295endif ()
@@ -304,6 +319,7 @@ set(ci
304319 ci/filter -stderr.sed
305320 ci/publish.yml
306321 ci/publish-coverage.yml
322+ ci/release-notes.yml
307323 ci/setup-common.yml
308324 ci/setup-macos.yml
309325 ci/setup-msys2.yml
0 commit comments