[geographiclib] Update to 1.50.1 (#12379)

* Upgrade geographiclib to version 1.50.1

* Tinker with sourceforge download

* Strip verbiage at top of geographiclib/portfile.cmake

* geographiclib: fix for windows build

* geographiclib: minimize size of patch file

* add missing manifest

* A stab at fixing uwp build error.  But I'm working in the dark!

* Back out of previous commit.  It didn't help.

* Call cmake_minimum_required first

* geographiclib: remove tools from build -- incompatible with uwp

* geographiclib: remove stray reference to TOOLS

* geographiclib: try installing executables into tools

* geographiclib: Do not build tools for uwp

* geographiclib: fix up build of tools

* geographiclib: Minor clean up

* geographiclib: handle uwp vs tools more elegantly

* geographiclib: reformation vcpkg,json

* geographiclib: don't build tools by default

* geographiclib: Don't register the tools as targets; this causes problems if they are moved

Co-authored-by: Charles Karney <charles.karney@sri.com>
This commit is contained in:
Charles Karney 2020-07-14 11:44:21 -04:00 committed by GitHub
parent 8e3c304269
commit e554608135
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 198 additions and 127 deletions

View File

@ -1,4 +0,0 @@
Source: geographiclib
Version: 1.47-patch1-16
Homepage: https://sourceforge.net/projects/geographiclib/
Description: a small set of C++ classes for performing conversions between geographic, UTM, UPS, MGRS, geocentric, and local cartesian coordinates, for gravity (e.g., EGM2008), geoid height, and geomagnetic field (e.g., WMM2010) calculations, and for solving geodesic problems.

View File

@ -0,0 +1,130 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 30875ddb..34aa6515 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -464,12 +464,12 @@ endif ()
# documentation files into the source tree. Skip Apple here because
# man/makeusage.sh uses "head --lines -4" to drop the last 4 lines of a
# file and there's no simple equivalent for MacOSX
-if (NOT WIN32 AND NOT APPLE)
+if (NOT WIN32 AND NOT APPLE AND FALSE)
find_program (HAVE_POD2MAN pod2man)
find_program (HAVE_POD2HTML pod2html)
find_program (HAVE_COL col)
endif ()
-if (HAVE_POD2MAN AND HAVE_POD2HTML AND HAVE_COL)
+if (HAVE_POD2MAN AND HAVE_POD2HTML AND HAVE_COL AND FALSE)
set (MAINTAINER ON)
else ()
set (MAINTAINER OFF)
@@ -496,25 +496,34 @@ if (WIN32)
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
endif ()
+if (SKIP_TOOLS)
+ set (TOOLS)
+ set (SCRIPTS)
+else ()
# The list of tools (to be installed into, e.g., /usr/local/bin)
set (TOOLS CartConvert ConicProj GeodesicProj GeoConvert GeodSolve
GeoidEval Gravity MagneticField Planimeter RhumbSolve TransverseMercatorProj)
# The list of scripts (to be installed into, e.g., /usr/local/sbin)
set (SCRIPTS geographiclib-get-geoids geographiclib-get-gravity
geographiclib-get-magnetic)
+endif ()
set_property (GLOBAL PROPERTY USE_FOLDERS ON)
# The list of subdirectories to process
add_subdirectory (src)
add_subdirectory (include/GeographicLib)
+if (NOT SKIP_TOOLS)
add_subdirectory (tools)
+endif ()
+if (FALSE)
add_subdirectory (man)
add_subdirectory (doc)
add_subdirectory (js)
add_subdirectory (matlab)
add_subdirectory (python/geographiclib)
add_subdirectory (examples)
+endif ()
if (MSVC AND BUILD_NETGEOGRAPHICLIB)
if (GEOGRAPHICLIB_PRECISION EQUAL 2)
set (NETGEOGRAPHICLIB_LIBRARIES NETGeographicLib)
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 90e773ba..c9a303b0 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -33,10 +33,10 @@ configure_file (project-config.cmake.in
configure_file (project-config-version.cmake.in
"${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-config-version.cmake" @ONLY)
export (TARGETS
- ${PROJECT_ALL_LIBRARIES} ${TOOLS}
+ ${PROJECT_ALL_LIBRARIES}
FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-targets.cmake")
export (TARGETS
- ${PROJECT_ALL_LIBRARIES} ${TOOLS}
+ ${PROJECT_ALL_LIBRARIES}
NAMESPACE ${PROJECT_NAME}::
FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-namespace-targets.cmake")
@@ -44,15 +44,9 @@ export (TARGETS
# ${INSTALL_CMAKE_DIR} and @PROJECT_ROOT_DIR@ is the relative
# path to the root from there. (Note that the whole install tree can
# be relocated.)
-if (COMMON_INSTALL_PATH)
- # Install under lib${LIB_SUFFIX} so that 32-bit and 64-bit packages
- # can be installed on a single machine.
- set (INSTALL_CMAKE_DIR "lib${LIB_SUFFIX}/cmake/${PROJECT_NAME}")
- set (PROJECT_ROOT_DIR "../../..")
-else ()
- set (INSTALL_CMAKE_DIR "cmake")
- set (PROJECT_ROOT_DIR "..")
-endif ()
+ set (INSTALL_CMAKE_DIR "share/${PROJECT_NAME_LOWER}")
+ set (PROJECT_ROOT_DIR "../..")
+
# @PROJECT_INCLUDE_DIRS@ is not used in the install tree; reset
# it to prevent the source and build paths appearing in the installed
# config files
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index b8c028c7..26e4ba14 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -1,7 +1,7 @@
# Build the tools...
# Where to find the *.usage files for the --help option.
-include_directories (${PROJECT_BINARY_DIR}/man)
+include_directories (${PROJECT_SOURCE_DIR}/man)
# Only needed if target_compile_definitions is not supported
add_definitions (${PROJECT_DEFINITIONS})
@@ -16,7 +16,7 @@ foreach (TOOL ${TOOLS})
add_dependencies (tools ${TOOL})
set_source_files_properties (${TOOL}.cpp PROPERTIES
- OBJECT_DEPENDS ${PROJECT_BINARY_DIR}/man/${TOOL}.usage)
+ OBJECT_DEPENDS ${PROJECT_SOURCE_DIR}/man/${TOOL}.usage)
target_link_libraries (${TOOL} ${PROJECT_LIBRARIES} ${HIGHPREC_LIBRARIES})
@@ -35,7 +35,7 @@ if (APPLE)
endif ()
# Specify where the tools are installed, adding them to the export targets
-install (TARGETS ${TOOLS} EXPORT targets DESTINATION bin)
+install (TARGETS ${TOOLS} DESTINATION tools)
if (MSVC AND PACKAGE_DEBUG_LIBS)
# Possibly don't EXPORT the debug versions of the tools and then this
@@ -55,7 +55,7 @@ set_property (TARGET tools ${TOOLS} PROPERTY FOLDER tools)
# systems. This needs to substitute ${GEOGRAPHICLIB_DATA} as the
# default data directory. These are installed under sbin, because it is
# expected to be run with write access to /usr/local.
-if (NOT WIN32)
+if (NOT WIN32 AND FALSE)
foreach (SCRIPT ${SCRIPTS})
configure_file (${SCRIPT}.sh scripts/${SCRIPT} @ONLY)
add_custom_command (OUTPUT ${SCRIPT}

View File

@ -1,16 +0,0 @@
diff --git a/cmake/project-config-version.cmake.in b/cmake/project-config-version.cmake.in
index 1f207b8..d469658 100644
--- a/cmake/project-config-version.cmake.in
+++ b/cmake/project-config-version.cmake.in
@@ -22,9 +22,9 @@ elseif (NOT (APPLE OR (NOT DEFINED CMAKE_SIZEOF_VOID_P) OR
# Reject if there's a mismatch in MSVC compiler versions
# set (REASON "_MSC_VER = @MSVC_VERSION@")
# set (PACKAGE_VERSION_UNSUITABLE TRUE)
-elseif (NOT CMAKE_CROSSCOMPILING STREQUAL "@CMAKE_CROSSCOMPILING@")
+elseif (NOT CMAKE_CROSSCOMPILING STREQUAL FALSE)
# Reject if there's a mismatch in ${CMAKE_CROSSCOMPILING}
- set (REASON "cross-compiling = @CMAKE_CROSSCOMPILING@")
+ set (REASON "cross-compiling = FALSE")
set (PACKAGE_VERSION_UNSUITABLE TRUE)
elseif (CMAKE_CROSSCOMPILING AND
NOT (CMAKE_SYSTEM_NAME STREQUAL "@CMAKE_SYSTEM_NAME@" AND

View File

@ -1,46 +1,59 @@
vcpkg_from_sourceforge(
vcpkg_from_sourceforge (
OUT_SOURCE_PATH SOURCE_PATH
REPO geographiclib/distrib
REF archive
FILENAME "GeographicLib-1.47-patch1.zip"
SHA512 d8fdfd7ae093057ec1a4ab922457fe71a3fb9975df5b673c276d62a0e9c4f212dc63652830b9d89e3890bc96aafd335992943cf6a1bce8260acf932d1eb7abfd
PATCHES
remove-tools-and-fix-version.patch
fix-usage.patch
REPO geographiclib
REF distrib
FILENAME "GeographicLib-1.50.1.tar.gz"
SHA512 1db874f30957a0edb8a1df3eee6db73cc993629e3005fe912e317a4ba908e7d7580ce483bb0054c4b46370b8edaec989609fb7e4eb6ba00c80182db43db436f1
PATCHES cxx-library-only.patch
)
if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS -DGEOGRAPHICLIB_LIB_TYPE=SHARED
PREFER_NINJA # Disable this option if project cannot be built with Ninja
# OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2
# OPTIONS_RELEASE -DOPTIMIZE=1
# OPTIONS_DEBUG -DDEBUGGABLE=1
)
else()
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS -DGEOGRAPHICLIB_LIB_TYPE=STATIC
PREFER_NINJA # Disable this option if project cannot be built with Ninja
# OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2
# OPTIONS_RELEASE -DOPTIMIZE=1
# OPTIONS_DEBUG -DDEBUGGABLE=1
)
endif()
vcpkg_check_features (
OUT_FEATURE_OPTIONS FEATURE_OPTIONS
INVERTED_FEATURES
"tools" SKIP_TOOLS
)
vcpkg_install_cmake()
if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
set (LIB_TYPE "SHARED")
else ()
set (LIB_TYPE "STATIC")
endif ()
if (VCPKG_TARGET_IS_WINDOWS)
vcpkg_fixup_cmake_targets(CONFIG_PATH cmake)
else()
vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/GeographicLib)
endif()
vcpkg_copy_pdbs()
if (tools IN_LIST FEATURES)
vcpkg_fail_port_install (
MESSAGE "Cannot build GeographicLib tools for UWP"
ON_TARGET uwp
)
endif ()
file(COPY ${CURRENT_PACKAGES_DIR}/lib/pkgconfig DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/pkgconfig)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
vcpkg_configure_cmake (
SOURCE_PATH ${SOURCE_PATH}
OPTIONS
"-DGEOGRAPHICLIB_LIB_TYPE=${LIB_TYPE}"
${FEATURE_OPTIONS}
PREFER_NINJA # Disable this option if project cannot be built with Ninja
)
file(INSTALL ${SOURCE_PATH}/LICENSE.txt DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
vcpkg_install_cmake ()
vcpkg_fixup_cmake_targets (CONFIG_PATH share/geographiclib)
vcpkg_copy_pdbs ()
file (GLOB TOOL_LIST LIST_DIRECTORIES false
${CURRENT_PACKAGES_DIR}/tools/*)
if (TOOL_LIST)
file (INSTALL ${TOOL_LIST}
DESTINATION "${CURRENT_PACKAGES_DIR}/tools/${PORT}")
vcpkg_copy_tool_dependencies (${CURRENT_PACKAGES_DIR}/tools/${PORT})
file (REMOVE ${TOOL_LIST})
endif ()
file (REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
file (REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file (REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/tools)
file (INSTALL ${SOURCE_PATH}/LICENSE.txt
DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}
RENAME copyright)
# Install usage
configure_file (${CMAKE_CURRENT_LIST_DIR}/usage
${CURRENT_PACKAGES_DIR}/share/${PORT}/usage @ONLY)

View File

@ -1,60 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e79923b..3448362 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -437,13 +437,13 @@ set_property (GLOBAL PROPERTY USE_FOLDERS ON)
# The list of subdirectories to process
add_subdirectory (src)
add_subdirectory (include/GeographicLib)
-add_subdirectory (tools)
-add_subdirectory (man)
-add_subdirectory (doc)
-add_subdirectory (js)
-add_subdirectory (matlab)
-add_subdirectory (python/geographiclib)
-add_subdirectory (examples)
+# add_subdirectory (tools)
+# add_subdirectory (man)
+# add_subdirectory (doc)
+# add_subdirectory (js)
+# add_subdirectory (matlab)
+# add_subdirectory (python/geographiclib)
+# add_subdirectory (examples)
if (MSVC AND BUILD_NETGEOGRAPHICLIB)
if (GEOGRAPHICLIB_PRECISION EQUAL 2)
set (NETGEOGRAPHICLIB_LIBRARIES NETGeographicLib)
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index 0c8ad64..7dc4096 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -14,10 +14,10 @@ configure_file (project-config.cmake.in
configure_file (project-config-version.cmake.in
"${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-config-version.cmake" @ONLY)
export (TARGETS
- ${PROJECT_SHARED_LIBRARIES} ${PROJECT_STATIC_LIBRARIES} ${TOOLS}
+ ${PROJECT_SHARED_LIBRARIES} ${PROJECT_STATIC_LIBRARIES}
FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-targets.cmake")
export (TARGETS
- ${PROJECT_SHARED_LIBRARIES} ${PROJECT_STATIC_LIBRARIES} ${TOOLS}
+ ${PROJECT_SHARED_LIBRARIES} ${PROJECT_STATIC_LIBRARIES}
NAMESPACE ${PROJECT_NAME}::
FILE "${PROJECT_BINARY_DIR}/${PROJECT_NAME_LOWER}-namespace-targets.cmake")
diff --git a/cmake/project-config-version.cmake.in b/cmake/project-config-version.cmake.in
index 3b3b9e8..bc2ce19 100644
--- a/cmake/project-config-version.cmake.in
+++ b/cmake/project-config-version.cmake.in
@@ -18,10 +18,10 @@ elseif (NOT (APPLE OR (NOT DEFINED CMAKE_SIZEOF_VOID_P) OR
# since a multi-architecture library is built for that platform).
set (REASON "sizeof(*void) = @CMAKE_SIZEOF_VOID_P@")
set (PACKAGE_VERSION_UNSUITABLE TRUE)
-elseif (MSVC AND NOT MSVC_VERSION STREQUAL "@MSVC_VERSION@")
+#elseif (MSVC AND NOT MSVC_VERSION STREQUAL "@MSVC_VERSION@")
# Reject if there's a mismatch in MSVC compiler versions
- set (REASON "_MSC_VER = @MSVC_VERSION@")
- set (PACKAGE_VERSION_UNSUITABLE TRUE)
+# set (REASON "_MSC_VER = @MSVC_VERSION@")
+# set (PACKAGE_VERSION_UNSUITABLE TRUE)
elseif (NOT CMAKE_CROSSCOMPILING STREQUAL "@CMAKE_CROSSCOMPILING@")
# Reject if there's a mismatch in ${CMAKE_CROSSCOMPILING}
set (REASON "cross-compiling = @CMAKE_CROSSCOMPILING@")

View File

@ -1,8 +1,4 @@
The package geographiclib:x64-linux provides CMake targets:
find_package(GeographicLib CONFIG REQUIRED)
#dynamic
target_link_libraries(main PRIVATE GeographicLib GeographicLib::GeographicLib)
#static
target_link_libraries(main PRIVATE GeographicLib_STATIC GeographicLib::GeographicLib_STATIC)
The package @PORT@:@TARGET_TRIPLET@ provides CMake targets:
find_package (GeographicLib CONFIG REQUIRED)
target_link_libraries (main PRIVATE ${GeographicLib_LIBRARIES})

View File

@ -0,0 +1,12 @@
{
"name": "geographiclib",
"version-string": "1.50.1",
"homepage": "https://geographiclib.sourceforge.io",
"description": "GeographicLib, a C++ library for performing geographic conversions",
"features": [
{
"name": "tools",
"description": "The GeographicLib tools"
}
]
}