diff --git a/CMakeLists.txt b/CMakeLists.txt index 6f240dbb09..f820863fe8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -################################################################################# +################################################################################ # # This file is part of CMake configuration for PROJ library (inspired from SOCI # CMake, Copyright (C) 2009-2010 Mateusz Loskot ) @@ -6,24 +6,25 @@ # Copyright (C) 2011 Nicolas David # Distributed under the MIT license # -################################################################################# +################################################################################ # General settings -################################################################################# +################################################################################ cmake_minimum_required(VERSION 3.5 FATAL_ERROR) # For historic reasons, the CMake PROJECT-NAME is PROJ4 project(PROJ4 LANGUAGES C CXX) set(PROJECT_INTERN_NAME PROJ) -if (NOT CMAKE_VERSION VERSION_LESS 3.1) +if(NOT CMAKE_VERSION VERSION_LESS 3.1) cmake_policy(SET CMP0054 NEW) -endif () +endif() add_definitions(-DPROJ_COMPILATION=1) # Set C++ version # Make CMAKE_CXX_STANDARD available as cache option overridable by user -set(CMAKE_CXX_STANDARD 11 CACHE STRING "C++ standard version to use (default is 11)") +set(CMAKE_CXX_STANDARD 11 + CACHE STRING "C++ standard version to use (default is 11)") message(STATUS "Requiring C++${CMAKE_CXX_STANDARD}") set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) @@ -33,32 +34,43 @@ message(STATUS "Requiring C++${CMAKE_CXX_STANDARD} - done") if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC") # Suppress warning 4706 about assignment within conditional expression # Suppress warning 4996 about sprintf, etc., being unsafe - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /W4 /wd4706 /wd4996 /D_CRT_SECURE_NO_WARNINGS") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc /W4 /wd4706 /wd4996 /D_CRT_SECURE_NO_WARNINGS") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \ +/W4 /wd4706 /wd4996 /D_CRT_SECURE_NO_WARNINGS") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \ +/EHsc /W4 /wd4706 /wd4996 /D_CRT_SECURE_NO_WARNINGS") elseif("${CMAKE_C_COMPILER_ID}" STREQUAL "GNU") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat -Wformat-security") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \ +-fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter \ +-Wmissing-prototypes -Wmissing-declarations -Wformat -Wformat-security") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \ +-fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter \ +-Wmissing-declarations -Wformat -Wformat-security") elseif("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-prototypes -Wmissing-declarations -Wformat -Wformat-security -Wfloat-conversion -Wc99-extensions -Wc11-extensions") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter -Wmissing-declarations -Wformat -Wformat-security -Wfloat-conversion") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} \ +-fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter \ +-Wmissing-prototypes -Wmissing-declarations -Wformat -Wformat-security \ +-Wfloat-conversion -Wc99-extensions -Wc11-extensions") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \ +-fvisibility=hidden -Wall -Wextra -Wswitch -Wshadow -Wunused-parameter \ +-Wmissing-declarations -Wformat -Wformat-security -Wfloat-conversion") endif() # Tell Intel compiler to do arithmetic accurately. This is needed to # stop the compiler from ignoring parentheses in expressions like # (a + b) + c and from simplifying 0.0 + x to x (which is wrong if # x = -0.0). -if (CMAKE_C_COMPILER_ID STREQUAL "Intel") - if (MSVC) - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:precise") - else () - set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -fp-model precise") - set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") - endif () -endif () - -################################################################################# +if(CMAKE_C_COMPILER_ID STREQUAL "Intel") + if(MSVC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fp:precise") + else() + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden -fp-model precise") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") + endif() +endif() + +################################################################################ # PROJ CMake modules -################################################################################# +################################################################################ # Path to additional CMake modules set(CMAKE_MODULE_PATH ${PROJ4_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) @@ -67,70 +79,71 @@ include(ProjUtilities) message(STATUS "") colormsg(_HIBLUE_ "Configuring PROJ:") -################################################################################# +################################################################################ #PROJ version information -################################################################################# +################################################################################ include(ProjVersion) proj_version(MAJOR 6 MINOR 1 PATCH 0) set(PROJ_API_VERSION "15") set(PROJ_BUILD_VERSION "15.0.0") -################################################################################# +################################################################################ # Build features and variants -################################################################################# +################################################################################ include(ProjSystemInfo) include(ProjConfig) include(ProjMac) include(policies) -################################################################################# +################################################################################ # Check for sqlite3 -################################################################################# +################################################################################ find_program(EXE_SQLITE3 sqlite3) -if (NOT EXE_SQLITE3) -MESSAGE (SEND_ERROR "sqlite3 binary not found!") -ENDIF (NOT EXE_SQLITE3) - -FIND_PACKAGE(Sqlite3 REQUIRED) -IF (NOT SQLITE3_FOUND) -MESSAGE (SEND_ERROR "sqlite3 dependency not found!") -ENDIF (NOT SQLITE3_FOUND) +if(NOT EXE_SQLITE3) + message(SEND_ERROR "sqlite3 binary not found!") +endif() +find_package(Sqlite3 REQUIRED) +if(NOT SQLITE3_FOUND) + message(SEND_ERROR "sqlite3 dependency not found!") +endif() -################################################################################# +################################################################################ # threading configuration -################################################################################# +################################################################################ set(CMAKE_THREAD_PREFER_PTHREAD TRUE) -find_package (Threads) +find_package(Threads) include(CheckIncludeFiles) -include (CheckCSourceCompiles) -if (MSVC) - set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} /WX") -else () - set (CMAKE_REQUIRED_LIBRARIES m) - set (CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} -Werror") -endif () +include(CheckCSourceCompiles) +if(MSVC) + set(CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} /WX") +else() + set(CMAKE_REQUIRED_LIBRARIES m) + set(CMAKE_REQUIRED_FLAGS "${CMAKE_C_FLAGS} -Werror") +endif() # Check whether the C99 math function: hypot, atanh, etc. are available. -check_c_source_compiles ( - "#include +check_c_source_compiles(" +#include int main() { int q; - return (int)(hypot(3.0, 4.0) + atanh(0.8) + cbrt(8.0) + - remquo(100.0, 90.0, &q) + - remainder(100.0, 90.0) + copysign(1.0, -0.0) + - log1p(0.1) + asinh(0.1)) + - isnan(0.0); -}\n" C99_MATH) -if (C99_MATH) - add_definitions (-DHAVE_C99_MATH=1) -else () - add_definitions (-DHAVE_C99_MATH=0) -endif () - -if (Threads_FOUND AND CMAKE_USE_PTHREADS_INIT) - set (CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}") + return (int)( + hypot(3.0, 4.0) + atanh(0.8) + cbrt(8.0) + + remquo(100.0, 90.0, &q) + + remainder(100.0, 90.0) + copysign(1.0, -0.0) + + log1p(0.1) + asinh(0.1)) + isnan(0.0); +} +" C99_MATH) +if(C99_MATH) + add_definitions(-DHAVE_C99_MATH=1) +else() + add_definitions(-DHAVE_C99_MATH=0) +endif() + +if(Threads_FOUND AND CMAKE_USE_PTHREADS_INIT) + set(CMAKE_REQUIRED_LIBRARIES + "${CMAKE_REQUIRED_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}") check_c_source_compiles(" #include @@ -140,31 +153,31 @@ int main(int argc, char* argv[]) { return argc; } " HAVE_PTHREAD_MUTEX_RECURSIVE_DEFN) - if (HAVE_PTHREAD_MUTEX_RECURSIVE_DEFN) + if(HAVE_PTHREAD_MUTEX_RECURSIVE_DEFN) add_definitions(-DHAVE_PTHREAD_MUTEX_RECURSIVE=1) endif() -endif () +endif() boost_report_value(PROJ_PLATFORM_NAME) boost_report_value(PROJ_COMPILER_NAME) # Set a default build type for single-configuration cmake generators if # no build type is set. -if (NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) - set (CMAKE_BUILD_TYPE Release) -endif () +if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE) + set(CMAKE_BUILD_TYPE Release) +endif() -if (MSVC OR CMAKE_CONFIGURATION_TYPES) +if(MSVC OR CMAKE_CONFIGURATION_TYPES) # For multi-config systems and for Visual Studio, the debug version of # the library has _d appended. - set (CMAKE_DEBUG_POSTFIX _d) -endif () + set(CMAKE_DEBUG_POSTFIX _d) +endif() option(PROJ_TESTS "Enable build of collection of PROJ tests" ON) boost_report_value(PROJ_TESTS) if(PROJ_TESTS) - enable_testing() -endif(PROJ_TESTS) + enable_testing() +endif() include(ProjTest) # Put the libraries and binaries that get built into directories at the @@ -176,20 +189,26 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/lib) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/bin) link_directories(${CMAKE_LIBRARY_OUTPUT_DIRECTORY}) -################################################################################# +################################################################################ # Installation -################################################################################# +################################################################################ include(ProjInstallPath) -set(BINDIR "${DEFAULT_BINDIR}" CACHE PATH "The directory to install binaries into.") -set(LIBDIR "${DEFAULT_LIBDIR}" CACHE PATH "The directory to install libraries into.") -set(DATADIR "${DEFAULT_DATADIR}" CACHE PATH "The directory to install data files into.") -set(DOCDIR "${DEFAULT_DOCDIR}" CACHE PATH "The directory to install doc files into.") -set(INCLUDEDIR "${DEFAULT_INCLUDEDIR}" CACHE PATH "The directory to install includes into.") -set(CMAKECONFIGDIR "${DEFAULT_CMAKEDIR}" CACHE PATH "The directory to install cmake config files into.") - -################################################################################# +set(BINDIR "${DEFAULT_BINDIR}" + CACHE PATH "The directory to install binaries into.") +set(LIBDIR "${DEFAULT_LIBDIR}" + CACHE PATH "The directory to install libraries into.") +set(DATADIR "${DEFAULT_DATADIR}" + CACHE PATH "The directory to install data files into.") +set(DOCDIR "${DEFAULT_DOCDIR}" + CACHE PATH "The directory to install doc files into.") +set(INCLUDEDIR "${DEFAULT_INCLUDEDIR}" + CACHE PATH "The directory to install includes into.") +set(CMAKECONFIGDIR "${DEFAULT_CMAKEDIR}" + CACHE PATH "The directory to install cmake config files into.") + +################################################################################ # Build configured components -################################################################################# +################################################################################ include_directories(${PROJ4_SOURCE_DIR}/src) message(STATUS "") @@ -199,5 +218,5 @@ add_subdirectory(src) add_subdirectory(man) add_subdirectory(cmake) if(PROJ_TESTS) - add_subdirectory(test) + add_subdirectory(test) endif() diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index da5863430e..61c69f7c46 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -2,32 +2,33 @@ # ${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.) -file(RELATIVE_PATH PROJECT_ROOT_DIR ${CMAKE_INSTALL_PREFIX}/${CMAKECONFIGDIR} ${CMAKE_INSTALL_PREFIX}) +file(RELATIVE_PATH PROJECT_ROOT_DIR + ${CMAKE_INSTALL_PREFIX}/${CMAKECONFIGDIR} ${CMAKE_INSTALL_PREFIX}) -if (CMAKE_CROSSCOMPILING) - set (CMAKE_CROSSCOMPILING_STR "ON") -else () - set (CMAKE_CROSSCOMPILING_STR "OFF") -endif () +if(CMAKE_CROSSCOMPILING) + set(CMAKE_CROSSCOMPILING_STR "ON") +else() + set(CMAKE_CROSSCOMPILING_STR "OFF") +endif() string(TOLOWER "${PROJECT_NAME}" PROJECT_NAME_LOWER) -configure_file (project-config.cmake.in project-config.cmake @ONLY) -configure_file (project-config-version.cmake.in +configure_file(project-config.cmake.in project-config.cmake @ONLY) +configure_file(project-config-version.cmake.in project-config-version.cmake @ONLY) -install (FILES +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/project-config.cmake" DESTINATION "${CMAKECONFIGDIR}" RENAME "${PROJECT_NAME_LOWER}-config.cmake") -install (FILES +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/project-config-version.cmake" DESTINATION "${CMAKECONFIGDIR}" RENAME "${PROJECT_NAME_LOWER}-config-version.cmake") # Make information about the cmake targets (the library and the tools) # available. -install (EXPORT targets +install(EXPORT targets FILE ${PROJECT_NAME_LOWER}-targets.cmake DESTINATION "${CMAKECONFIGDIR}") -install (EXPORT targets +install(EXPORT targets NAMESPACE ${PROJECT_NAME}:: FILE ${PROJECT_NAME_LOWER}-namespace-targets.cmake DESTINATION "${CMAKECONFIGDIR}") diff --git a/cmake/FindSqlite3.cmake b/cmake/FindSqlite3.cmake index 4ac079c46c..4f1d909fcc 100644 --- a/cmake/FindSqlite3.cmake +++ b/cmake/FindSqlite3.cmake @@ -12,55 +12,56 @@ # SQLITE3_LIBRARY -# FIND_PATH and FIND_LIBRARY normally search standard locations +# find_path and find_library normally search standard locations # before the specified paths. To search non-standard paths first, # FIND_* is invoked first with specified paths and NO_DEFAULT_PATH # and then again with no specified paths to search the default # locations. When an earlier FIND_* succeeds, subsequent FIND_*s -# searching for the same item do nothing. +# searching for the same item do nothing. # try to use framework on mac # want clean framework path, not unix compatibility path -IF (APPLE) - IF (CMAKE_FIND_FRAMEWORK MATCHES "FIRST" +if(APPLE) + if(CMAKE_FIND_FRAMEWORK MATCHES "FIRST" OR CMAKE_FRAMEWORK_PATH MATCHES "ONLY" OR NOT CMAKE_FIND_FRAMEWORK) - SET (CMAKE_FIND_FRAMEWORK_save ${CMAKE_FIND_FRAMEWORK} CACHE STRING "" FORCE) - SET (CMAKE_FIND_FRAMEWORK "ONLY" CACHE STRING "" FORCE) - #FIND_PATH(SQLITE3_INCLUDE_DIR SQLite3/sqlite3.h) - FIND_LIBRARY(SQLITE3_LIBRARY SQLite3) - IF (SQLITE3_LIBRARY) - # FIND_PATH doesn't add "Headers" for a framework - SET (SQLITE3_INCLUDE_DIR ${SQLITE3_LIBRARY}/Headers CACHE PATH "Path to a file.") - ENDIF (SQLITE3_LIBRARY) - SET (CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_save} CACHE STRING "" FORCE) - ENDIF () -ENDIF (APPLE) + set(CMAKE_FIND_FRAMEWORK_save ${CMAKE_FIND_FRAMEWORK} CACHE STRING "" FORCE) + set(CMAKE_FIND_FRAMEWORK "ONLY" CACHE STRING "" FORCE) + #find_path(SQLITE3_INCLUDE_DIR SQLite3/sqlite3.h) + find_library(SQLITE3_LIBRARY SQLite3) + if(SQLITE3_LIBRARY) + # find_path doesn't add "Headers" for a framework + set(SQLITE3_INCLUDE_DIR ${SQLITE3_LIBRARY}/Headers + CACHE PATH "Path to a file.") + endif() + set(CMAKE_FIND_FRAMEWORK ${CMAKE_FIND_FRAMEWORK_save} CACHE STRING "" FORCE) + endif() +endif() -FIND_PATH(SQLITE3_INCLUDE_DIR sqlite3.h +find_path(SQLITE3_INCLUDE_DIR sqlite3.h "$ENV{LIB_DIR}/include" "$ENV{LIB_DIR}/include/sqlite" "$ENV{INCLUDE}" ) -FIND_LIBRARY(SQLITE3_LIBRARY NAMES sqlite3_i sqlite3 PATHS +find_library(SQLITE3_LIBRARY NAMES sqlite3_i sqlite3 PATHS "$ENV{LIB_DIR}/lib" "$ENV{LIB}/lib" - ) +) -IF (SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY) - SET(SQLITE3_FOUND TRUE) -ENDIF (SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY) +if(SQLITE3_INCLUDE_DIR AND SQLITE3_LIBRARY) + set(SQLITE3_FOUND TRUE) +endif() -IF (SQLITE3_FOUND) - IF (NOT SQLITE3_FIND_QUIETLY) - MESSAGE(STATUS "Found Sqlite3: ${SQLITE3_LIBRARY}") - ENDIF (NOT SQLITE3_FIND_QUIETLY) +if(SQLITE3_FOUND) + if(NOT SQLITE3_FIND_QUIETLY) + message(STATUS "Found Sqlite3: ${SQLITE3_LIBRARY}") + endif() -ELSE (SQLITE3_FOUND) +else() - IF (SQLITE3_FIND_REQUIRED) - MESSAGE(FATAL_ERROR "Could not find Sqlite3") - ENDIF (SQLITE3_FIND_REQUIRED) + if(SQLITE3_FIND_REQUIRED) + message(FATAL_ERROR "Could not find Sqlite3") + endif() -ENDIF (SQLITE3_FOUND) +endif() diff --git a/cmake/ProjConfig.cmake b/cmake/ProjConfig.cmake index ada827ea63..f9593c8dbd 100644 --- a/cmake/ProjConfig.cmake +++ b/cmake/ProjConfig.cmake @@ -7,27 +7,27 @@ # (See accompanying file LICENSE_1_0.txt or copy at # https://www.boost.org/LICENSE_1_0.txt) ################################################################################ -include (CheckIncludeFiles) -include (CheckLibraryExists) -include (CheckFunctionExists) +include(CheckIncludeFiles) +include(CheckLibraryExists) +include(CheckFunctionExists) # check needed include file -check_include_files (dlfcn.h HAVE_DLFCN_H) -check_include_files (inttypes.h HAVE_INTTYPES_H) -check_include_files (jni.h HAVE_JNI_H) -check_include_files (memory.h HAVE_MEMORY_H) -check_include_files (stdint.h HAVE_STDINT_H) -check_include_files (stdlib.h HAVE_STDLIB_H) -check_include_files (string.h HAVE_STRING_H) -check_include_files (sys/stat.h HAVE_SYS_STAT_H) -check_include_files (sys/types.h HAVE_SYS_TYPES_H) -check_include_files (unistd.h HAVE_UNISTD_H) +check_include_files(dlfcn.h HAVE_DLFCN_H) +check_include_files(inttypes.h HAVE_INTTYPES_H) +check_include_files(jni.h HAVE_JNI_H) +check_include_files(memory.h HAVE_MEMORY_H) +check_include_files(stdint.h HAVE_STDINT_H) +check_include_files(stdlib.h HAVE_STDLIB_H) +check_include_files(string.h HAVE_STRING_H) +check_include_files(sys/stat.h HAVE_SYS_STAT_H) +check_include_files(sys/types.h HAVE_SYS_TYPES_H) +check_include_files(unistd.h HAVE_UNISTD_H) check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) -CHECK_FUNCTION_EXISTS(localeconv HAVE_LOCALECONV) +check_function_exists(localeconv HAVE_LOCALECONV) -# check libm need on unix -check_library_exists(m ceil "" HAVE_LIBM) +# check libm need on unix +check_library_exists(m ceil "" HAVE_LIBM) set(PACKAGE "proj") set(PACKAGE_BUGREPORT "https://github.com/OSGeo/proj.4/issues") @@ -41,10 +41,10 @@ set(PACKAGE_VERSION "${${PROJECT_INTERN_NAME}_VERSION}") # as this is within CMake's C_INCLUDES / CXX_INCLUDES set(AUTOCONF_PROJ_CONFIG_H "${CMAKE_SOURCE_DIR}/src/proj_config.h") if(EXISTS ${AUTOCONF_PROJ_CONFIG_H}) - message(WARNING "Autoconf's ${AUTOCONF_PROJ_CONFIG_H} may interfere " - "with this CMake build. Run 'make distclean' in the " - "source directory before CMake's build.") + message(WARNING + "Autoconf's ${AUTOCONF_PROJ_CONFIG_H} may interfere with this " + "CMake build. Run 'make distclean' in the source directory " + "before CMake's build.") endif() configure_file(cmake/proj_config.cmake.in src/proj_config.h) - diff --git a/cmake/ProjInstallPath.cmake b/cmake/ProjInstallPath.cmake index b42f927fd5..e74519b149 100644 --- a/cmake/ProjInstallPath.cmake +++ b/cmake/ProjInstallPath.cmake @@ -11,13 +11,13 @@ if(WIN32) endif() if(UNIX) set(DEFAULT_PROJ_ROOT_DIR "/usr/local/") -endif(UNIX) +endif() -IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - SET(CMAKE_INSTALL_PREFIX ${DEFAULT_PROJ_ROOT_DIR} CACHE PATH - "Proj install prefix" FORCE) -ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + set(CMAKE_INSTALL_PREFIX ${DEFAULT_PROJ_ROOT_DIR} + CACHE PATH "Proj install prefix" FORCE) +endif() #TODO # for data install testing the PROJ_LIB envVar @@ -58,13 +58,15 @@ set(PROJ_CMAKE_SUBDIR ${DEFAULT_CMAKE_SUBDIR} CACHE STRING "Subdirectory where cmake proj-config file will be installed") # Mark *DIR variables as advanced and dedicated to use by power-users only. -mark_as_advanced(PROJ_ROOT_DIR - PROJ_BIN_SUBDIR - PROJ_LIB_SUBDIR - PROJ_INCLUDE_SUBDIR - PROJ_DATA_SUBDIR - PROJ_DOC_SUBDIR - PROJ_CMAKE_SUBDIR ) +mark_as_advanced( + PROJ_ROOT_DIR + PROJ_BIN_SUBDIR + PROJ_LIB_SUBDIR + PROJ_INCLUDE_SUBDIR + PROJ_DATA_SUBDIR + PROJ_DOC_SUBDIR + PROJ_CMAKE_SUBDIR +) set(DEFAULT_BINDIR "${PROJ_BIN_SUBDIR}") set(DEFAULT_LIBDIR "${PROJ_LIB_SUBDIR}") @@ -72,5 +74,3 @@ set(DEFAULT_DATADIR "${PROJ_DATA_SUBDIR}") set(DEFAULT_DOCDIR "${PROJ_DOC_SUBDIR}") set(DEFAULT_INCLUDEDIR "${PROJ_INCLUDE_SUBDIR}") set(DEFAULT_CMAKEDIR "${PROJ_CMAKE_SUBDIR}") - - diff --git a/cmake/ProjMac.cmake b/cmake/ProjMac.cmake index 9032d056d3..0de8794160 100644 --- a/cmake/ProjMac.cmake +++ b/cmake/ProjMac.cmake @@ -1,23 +1,29 @@ if(APPLE) -set(FRAMEWORKDIR "Library/Frameworks" CACHE PATH "the path to install framework") - set(BUNDLEDIR "Applications/OSGEO" CACHE PATH "the path to install bundle") - file(RELATIVE_PATH BUNDLE_FRAME_REL_PATH_AAA "/${FRAMEWORKDIR}" "/aaa") + set(FRAMEWORKDIR "Library/Frameworks" CACHE PATH + "the path to install framework") + set(BUNDLEDIR "Applications/OSGEO" CACHE PATH + "the path to install bundle") + file(RELATIVE_PATH BUNDLE_FRAME_REL_PATH_AAA "/${FRAMEWORKDIR}" "/aaa") string(LENGTH ${BUNDLE_FRAME_REL_PATH_AAA} AAA_LENGTH) math(EXPR RELATIVE_PATH_LENGTH "${AAA_LENGTH}-4") - string(SUBSTRING ${BUNDLE_FRAME_REL_PATH_AAA} 0 ${RELATIVE_PATH_LENGTH} BUNDLE_FRAME_REL_PATH) - set(PROJ_INSTALL_NAME_DIR "@executable_path/${BUNDLE_FRAME_REL_PATH}/${FRAMEWORKDIR}" ) -else(APPLE) + string(SUBSTRING ${BUNDLE_FRAME_REL_PATH_AAA} + 0 ${RELATIVE_PATH_LENGTH} BUNDLE_FRAME_REL_PATH) + set(PROJ_INSTALL_NAME_DIR + "@executable_path/${BUNDLE_FRAME_REL_PATH}/${FRAMEWORKDIR}") +else() set(FRAMEWORKDIR "") set(BUNDLEDIR "") set(PROJ_INSTALL_NAME_DIR "") -endif(APPLE) +endif() -set(PROJ_RESOURCES "" ) +set(PROJ_RESOURCES "") if(APPLE) - option(BUILD_FRAMEWORKS_AND_BUNDLE "if set to ON, build a library framework and application bundle, otherwise install classical UNIX bin/lib" OFF ) - set(DEFAULT_BINDIR ${BUNDLEDIR}) - boost_report_value(BUNDLEDIR) - boost_report_value(PROJ_INSTALL_NAME_DIR) - boost_report_value(FRAMEWORKDIR) -endif(APPLE) + option(BUILD_FRAMEWORKS_AND_BUNDLE + "if set to ON, build a library framework and application bundle, \ +otherwise install classical UNIX bin/lib" OFF) + set(DEFAULT_BINDIR ${BUNDLEDIR}) + boost_report_value(BUNDLEDIR) + boost_report_value(PROJ_INSTALL_NAME_DIR) + boost_report_value(FRAMEWORKDIR) +endif() diff --git a/cmake/ProjSystemInfo.cmake b/cmake/ProjSystemInfo.cmake index 18a80fa747..4265bacfec 100644 --- a/cmake/ProjSystemInfo.cmake +++ b/cmake/ProjSystemInfo.cmake @@ -56,18 +56,18 @@ if(WIN32) if(MSVC_VERSION GREATER 1900 AND MSVC_VERSION LESS 1920) # CMake 3.8+ set(PROJ_COMPILER_NAME "msvc-14.1") #Visual Studio 2017 endif() - endif(MSVC) - + endif() + if(MINGW) set(PROJ_COMPILER_NAME "mingw-${GCC_VERSION}") - endif( MINGW ) - + endif() + if(CMAKE_GENERATOR MATCHES "Win64") set(PROJ_PLATFORM_NAME "x64") else() set(PROJ_PLATFORM_NAME "win32") endif() -endif(WIN32) +endif() # WIN32 if(UNIX) set(PROJ_COMPILER_NAME "gcc-${GCC_VERSION}") @@ -76,14 +76,16 @@ if(UNIX) else() set(PROJ_PLATFORM_NAME "x86") endif() -endif(UNIX) +endif() if(NOT PROJ_COMPILER_NAME) colormsg(_RED_ "WARNING:") - colormsg(RED "Could not determine compiler toolset name to set PROJ_COMPILER_NAME variable.") + colormsg(RED "Could not determine compiler toolset name to set \ +PROJ_COMPILER_NAME variable.") endif() if(NOT PROJ_COMPILER_NAME) colormsg(_RED_ "WARNING:") - colormsg(RED "Could not determine platform name to set PROJ_COMPILER_NAME variable.") + colormsg(RED "Could not determine platform name to set \ +PROJ_COMPILER_NAME variable.") endif() diff --git a/cmake/ProjTest.cmake b/cmake/ProjTest.cmake index 46c4e51500..7404b59d54 100644 --- a/cmake/ProjTest.cmake +++ b/cmake/ProjTest.cmake @@ -8,27 +8,27 @@ function(proj_add_test_script_sh SH_NAME BIN_USE) set(TEST_OK 1) if(ARGV2) - set(TEST_OK 0) - set(GRID_FULLNAME ${PROJECT_SOURCE_DIR}/data/${ARGV2}) - if(EXISTS ${GRID_FULLNAME}) - set(TEST_OK 1) - endif(EXISTS ${GRID_FULLNAME}) - endif(ARGV2) - - if( CMAKE_VERSION VERSION_LESS 2.8.4 ) - set(TEST_OK 0) - message(STATUS "test with bash script need a cmake version >= 2.8.4") + set(TEST_OK 0) + set(GRID_FULLNAME ${PROJECT_SOURCE_DIR}/data/${ARGV2}) + if(EXISTS ${GRID_FULLNAME}) + set(TEST_OK 1) + endif() + endif() + + if(CMAKE_VERSION VERSION_LESS 2.8.4) + set(TEST_OK 0) + message(STATUS "test with bash script need a cmake version >= 2.8.4") endif() if(${TEST_OK}) - add_test( NAME "${testname}" - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/data - COMMAND ${PROJECT_SOURCE_DIR}/test/cli/${SH_NAME} - ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${${BIN_USE}} - ) - endif(${TEST_OK}) - - endif(UNIX) + add_test(NAME "${testname}" + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/data + COMMAND ${PROJECT_SOURCE_DIR}/test/cli/${SH_NAME} + ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${${BIN_USE}} + ) + endif() + + endif() endfunction() @@ -36,10 +36,10 @@ function(proj_add_gie_test TESTNAME TESTCASE) set(GIE_BIN "gie") set(TESTFILE ${CMAKE_SOURCE_DIR}/test/${TESTCASE}) - add_test( NAME ${TESTNAME} - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test - COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${GIE_BIN} - ${TESTFILE} - ) + add_test(NAME ${TESTNAME} + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/test + COMMAND ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${GIE_BIN} + ${TESTFILE} + ) endfunction() diff --git a/cmake/ProjUtilities.cmake b/cmake/ProjUtilities.cmake index 72373719c1..1a2b6052d8 100644 --- a/cmake/ProjUtilities.cmake +++ b/cmake/ProjUtilities.cmake @@ -5,7 +5,7 @@ ################################################################################ # Copyright (C) 2007 Douglas Gregor # Copyright (C) 2007 Troy Straszheim -# Copyright (C) 2010 Mateusz Loskot +# Copyright (C) 2010 Mateusz Loskot # # Distributed under the Boost Software License, Version 1.0. # See accompanying file LICENSE_1_0.txt or copy at @@ -13,7 +13,7 @@ ################################################################################ # Macros in this module: # -# proj_target_output_name: +# proj_target_output_name: # ################################################################################ @@ -21,8 +21,8 @@ # A big shout out to the cmake gurus @ compiz # -function (colormsg) - string (ASCII 27 _escape) +function(colormsg) + string(ASCII 27 _escape) set(WHITE "29") set(GRAY "30") set(RED "31") @@ -32,7 +32,7 @@ function (colormsg) set(MAG "35") set(CYAN "36") - foreach (color WHITE GRAY RED GREEN YELLOW BLUE MAG CYAN) + foreach(color WHITE GRAY RED GREEN YELLOW BLUE MAG CYAN) set(HI${color} "1\;${${color}}") set(LO${color} "2\;${${color}}") set(_${color}_ "4\;${${color}}") @@ -43,14 +43,14 @@ function (colormsg) set(str "") set(coloron FALSE) foreach(arg ${ARGV}) - if (NOT ${${arg}} STREQUAL "") - if (CMAKE_COLOR_MAKEFILE) + if(NOT ${${arg}} STREQUAL "") + if(CMAKE_COLOR_MAKEFILE) set(str "${str}${_escape}[${${arg}}m") set(coloron TRUE) endif() else() set(str "${str}${arg}") - if (coloron) + if(coloron) set(str "${str}${_escape}[0m") set(coloron FALSE) endif() @@ -60,19 +60,19 @@ function (colormsg) message(STATUS ${str}) endfunction() -# colormsg("Colors:" -# WHITE "white" GRAY "gray" GREEN "green" -# RED "red" YELLOW "yellow" BLUE "blue" MAG "mag" CYAN "cyan" -# _WHITE_ "white" _GRAY_ "gray" _GREEN_ "green" -# _RED_ "red" _YELLOW_ "yellow" _BLUE_ "blue" _MAG_ "mag" _CYAN_ "cyan" -# _HIWHITE_ "white" _HIGRAY_ "gray" _HIGREEN_ "green" -# _HIRED_ "red" _HIYELLOW_ "yellow" _HIBLUE_ "blue" _HIMAG_ "mag" _HICYAN_ "cyan" -# HIWHITE "white" HIGRAY "gray" HIGREEN "green" -# HIRED "red" HIYELLOW "yellow" HIBLUE "blue" HIMAG "mag" HICYAN "cyan" +# colormsg("Colors:" +# WHITE "white" GRAY "gray" GREEN "green" +# RED "red" YELLOW "yellow" BLUE "blue" MAG "mag" CYAN "cyan" +# _WHITE_ "white" _GRAY_ "gray" _GREEN_ "green" +# _RED_ "red" _YELLOW_ "yellow" _BLUE_ "blue" _MAG_ "mag" _CYAN_ "cyan" +# _HIWHITE_ "white" _HIGRAY_ "gray" _HIGREEN_ "green" +# _HIRED_ "red" _HIYELLOW_ "yellow" _HIBLUE_ "blue" _HIMAG_ "mag" +# _HICYAN_ "cyan" HIWHITE "white" HIGRAY "gray" HIGREEN "green" +# HIRED "red" HIYELLOW "yellow" HIBLUE "blue" HIMAG "mag" HICYAN "cyan" # "right?") # -# pretty-prints the value of a variable so that the +# pretty-prints the value of a variable so that the # equals signs align # @@ -82,7 +82,7 @@ function(boost_report_value NAME) #message(STATUS "boost_report_value: NAME=${NAME} (${varlen})") #message(STATUS "boost_report_value: \${NAME}=${${NAME}}") math(EXPR padding_len 40-${varlen}) - string(SUBSTRING " " + string(SUBSTRING " " 0 ${padding_len} varpadding) colormsg("${NAME}${varpadding} = ${${NAME}}") endfunction() @@ -98,12 +98,13 @@ function(proj_target_output_name TARGET_NAME OUTPUT_NAME) endif() if(NOT DEFINED ${PROJECT_INTERN_NAME}_VERSION) - message(SEND_ERROR "Error, the variable ${${PROJECT_INTERN_NAME}_VERSION} is not defined!") + message(SEND_ERROR + "Error, the variable ${${PROJECT_INTERN_NAME}_VERSION} is not defined!") endif() # On Windows, ABI version is specified using binary file name suffix. # On Unix, suffix is empty and SOVERSION is used instead. - if (WIN32) + if(WIN32) string(LENGTH "${${PROJECT_INTERN_NAME}_ABI_VERSION}" abilen) if(abilen GREATER 0) set(SUFFIX "_${${PROJECT_INTERN_NAME}_ABI_VERSION}") @@ -111,4 +112,4 @@ function(proj_target_output_name TARGET_NAME OUTPUT_NAME) endif() set(${OUTPUT_NAME} ${TARGET_NAME}${SUFFIX} PARENT_SCOPE) -endfunction() \ No newline at end of file +endfunction() diff --git a/cmake/ProjVersion.cmake b/cmake/ProjVersion.cmake index f761dc472b..5614d44d7c 100644 --- a/cmake/ProjVersion.cmake +++ b/cmake/ProjVersion.cmake @@ -6,7 +6,7 @@ # Distributed under the Boost Software License, Version 1.0 ################################################################################ # Macros in this module: -# +# # proj_version - defines version information for PROJ library ################################################################################ @@ -33,18 +33,21 @@ macro(proj_version) # Set VERSION string set(${PROJECT_INTERN_NAME}_VERSION - "${${PROJECT_INTERN_NAME}_VERSION_MAJOR}.${${PROJECT_INTERN_NAME}_VERSION_MINOR}.${${PROJECT_INTERN_NAME}_VERSION_PATCH}") + "${${PROJECT_INTERN_NAME}_VERSION_MAJOR}.\ +${${PROJECT_INTERN_NAME}_VERSION_MINOR}.\ +${${PROJECT_INTERN_NAME}_VERSION_PATCH}") - # Set ABI version string used to name binary output + # Set ABI version string used to name binary output # On Windows, ABI version is specified using binary file name suffix. if(WIN32) set(${PROJECT_INTERN_NAME}_ABI_VERSION - "${${PROJECT_INTERN_NAME}_VERSION_MAJOR}_${${PROJECT_INTERN_NAME}_VERSION_MINOR}") + "${${PROJECT_INTERN_NAME}_VERSION_MAJOR}_\ +${${PROJECT_INTERN_NAME}_VERSION_MINOR}") endif() message(STATUS "") boost_report_value(${PROJECT_INTERN_NAME}_VERSION) if(WIN32) boost_report_value(${PROJECT_INTERN_NAME}_ABI_VERSION) - endif(WIN32) + endif() endmacro() diff --git a/cmake/policies.cmake b/cmake/policies.cmake index e1bfd53bd8..35d0545ca5 100644 --- a/cmake/policies.cmake +++ b/cmake/policies.cmake @@ -1,4 +1,4 @@ -if (CMAKE_MAJOR_VERSION GREATER 2) - cmake_policy(SET CMP0042 NEW) # osx rpath - cmake_policy(SET CMP0011 NEW) # policy setting +if(CMAKE_MAJOR_VERSION GREATER 2) + cmake_policy(SET CMP0042 NEW) # osx rpath + cmake_policy(SET CMP0011 NEW) # policy setting endif() diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt index 3032f4bd1c..8f3965f289 100644 --- a/data/CMakeLists.txt +++ b/data/CMakeLists.txt @@ -2,17 +2,19 @@ # files containing dictionary of useful projection # -set(PROJ_DICTIONARY null - world - other.extra - nad27 - GL27 - nad83 - nad.lst - CH - ITRF2000 - ITRF2008 - ITRF2014 ) +set(PROJ_DICTIONARY + null + world + other.extra + nad27 + GL27 + nad83 + nad.lst + CH + ITRF2000 + ITRF2008 + ITRF2014 +) # # gridshift file @@ -26,40 +28,45 @@ set(ALL_SQL_IN "${CMAKE_CURRENT_BINARY_DIR}/all.sql.in") set(PROJ_DB "${CMAKE_CURRENT_BINARY_DIR}/proj.db") include(sql_filelist.cmake) -add_custom_command(OUTPUT ${ALL_SQL_IN} - COMMAND ${CMAKE_COMMAND} "-DALL_SQL_IN=${ALL_SQL_IN}" - -P "${CMAKE_CURRENT_SOURCE_DIR}/generate_all_sql_in.cmake" - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" - DEPENDS ${SQL_FILES} - COMMENT "Generating all.sql.in" - VERBATIM +add_custom_command( + OUTPUT ${ALL_SQL_IN} + COMMAND ${CMAKE_COMMAND} "-DALL_SQL_IN=${ALL_SQL_IN}" + -P "${CMAKE_CURRENT_SOURCE_DIR}/generate_all_sql_in.cmake" + WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" + DEPENDS ${SQL_FILES} + COMMENT "Generating all.sql.in" + VERBATIM ) add_custom_target(generate_all_sql_in ALL DEPENDS ${ALL_SQL_IN}) -add_custom_command(OUTPUT ${PROJ_DB} - COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJ_DB} - COMMAND ${EXE_SQLITE3} -init ${ALL_SQL_IN} ${PROJ_DB} .quit - # note: we didn't port yet the foreign_key_check done in Makefile.am - DEPENDS generate_all_sql_in ${ALL_SQL_IN} - COMMENT "Generating proj.db" - VERBATIM +add_custom_command( + OUTPUT ${PROJ_DB} + COMMAND ${CMAKE_COMMAND} -E remove -f ${PROJ_DB} + COMMAND ${EXE_SQLITE3} -init ${ALL_SQL_IN} ${PROJ_DB} .quit + # note: we didn't port yet the foreign_key_check done in Makefile.am + DEPENDS generate_all_sql_in ${ALL_SQL_IN} + COMMENT "Generating proj.db" + VERBATIM ) add_custom_target(generate_proj_db ALL DEPENDS ${PROJ_DB}) if(NOT "${CMAKE_CURRENT_SOURCE_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}") - foreach(FILE ${PROJ_DICTIONARY} - ${GRIDSHIFT_FILES}) - configure_file(${FILE} ${FILE} COPYONLY) - endforeach() + foreach(FILE ${PROJ_DICTIONARY} ${GRIDSHIFT_FILES}) + configure_file(${FILE} ${FILE} COPYONLY) + endforeach() endif() # #install # -set(ALL_DATA_FILE ${PROJ_DICTIONARY} - ${GRIDSHIFT_FILES} - ${PROJ_DB}) -install(FILES ${ALL_DATA_FILE} - DESTINATION ${DATADIR}) +set(ALL_DATA_FILE + ${PROJ_DICTIONARY} + ${GRIDSHIFT_FILES} + ${PROJ_DB} +) +install( + FILES ${ALL_DATA_FILE} + DESTINATION ${DATADIR} +) diff --git a/data/sql_filelist.cmake b/data/sql_filelist.cmake index b9054d23a7..0c3c2ab3ed 100644 --- a/data/sql_filelist.cmake +++ b/data/sql_filelist.cmake @@ -1,32 +1,34 @@ set(SQL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/sql") -set(SQL_FILES "${SQL_DIR}/begin.sql" - "${SQL_DIR}/proj_db_table_defs.sql" - "${SQL_DIR}/conversion_triggers.sql" - "${SQL_DIR}/metadata.sql" - "${SQL_DIR}/unit_of_measure.sql" - "${SQL_DIR}/area.sql" - "${SQL_DIR}/coordinate_system.sql" - "${SQL_DIR}/axis.sql" - "${SQL_DIR}/ellipsoid.sql" - "${SQL_DIR}/prime_meridian.sql" - "${SQL_DIR}/geodetic_datum.sql" - "${SQL_DIR}/vertical_datum.sql" - "${SQL_DIR}/conversion.sql" - "${SQL_DIR}/geodetic_crs.sql" - "${SQL_DIR}/projected_crs.sql" - "${SQL_DIR}/vertical_crs.sql" - "${SQL_DIR}/compound_crs.sql" - "${SQL_DIR}/helmert_transformation.sql" - "${SQL_DIR}/grid_transformation.sql" - "${SQL_DIR}/grid_transformation_custom.sql" - "${SQL_DIR}/other_transformation.sql" - "${SQL_DIR}/concatenated_operation.sql" - "${SQL_DIR}/alias_name.sql" - "${SQL_DIR}/supersession.sql" - "${SQL_DIR}/deprecation.sql" - "${SQL_DIR}/esri.sql" - "${SQL_DIR}/ignf.sql" - "${SQL_DIR}/grid_alternatives.sql" - "${SQL_DIR}/grid_alternatives_generated.sql" - "${SQL_DIR}/customizations.sql" - "${SQL_DIR}/commit.sql") +set(SQL_FILES + "${SQL_DIR}/begin.sql" + "${SQL_DIR}/proj_db_table_defs.sql" + "${SQL_DIR}/conversion_triggers.sql" + "${SQL_DIR}/metadata.sql" + "${SQL_DIR}/unit_of_measure.sql" + "${SQL_DIR}/area.sql" + "${SQL_DIR}/coordinate_system.sql" + "${SQL_DIR}/axis.sql" + "${SQL_DIR}/ellipsoid.sql" + "${SQL_DIR}/prime_meridian.sql" + "${SQL_DIR}/geodetic_datum.sql" + "${SQL_DIR}/vertical_datum.sql" + "${SQL_DIR}/conversion.sql" + "${SQL_DIR}/geodetic_crs.sql" + "${SQL_DIR}/projected_crs.sql" + "${SQL_DIR}/vertical_crs.sql" + "${SQL_DIR}/compound_crs.sql" + "${SQL_DIR}/helmert_transformation.sql" + "${SQL_DIR}/grid_transformation.sql" + "${SQL_DIR}/grid_transformation_custom.sql" + "${SQL_DIR}/other_transformation.sql" + "${SQL_DIR}/concatenated_operation.sql" + "${SQL_DIR}/alias_name.sql" + "${SQL_DIR}/supersession.sql" + "${SQL_DIR}/deprecation.sql" + "${SQL_DIR}/esri.sql" + "${SQL_DIR}/ignf.sql" + "${SQL_DIR}/grid_alternatives.sql" + "${SQL_DIR}/grid_alternatives_generated.sql" + "${SQL_DIR}/customizations.sql" + "${SQL_DIR}/commit.sql" +) diff --git a/include/proj/CMakeLists.txt b/include/proj/CMakeLists.txt index 0f889f743c..0d9abee3bd 100644 --- a/include/proj/CMakeLists.txt +++ b/include/proj/CMakeLists.txt @@ -2,6 +2,6 @@ set(installdest ${INCLUDEDIR}/proj) install( FILES util.hpp metadata.hpp common.hpp crs.hpp datum.hpp - coordinatesystem.hpp coordinateoperation.hpp io.hpp nn.hpp + coordinatesystem.hpp coordinateoperation.hpp io.hpp nn.hpp DESTINATION ${installdest} ) diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt index 3ca48226b4..caf72383c5 100644 --- a/man/CMakeLists.txt +++ b/man/CMakeLists.txt @@ -1,6 +1,13 @@ -install (FILES man1/proj.1 man1/cs2cs.1 man1/geod.1 man1/cct.1 man1/gie.1 +install(FILES + man1/proj.1 + man1/cs2cs.1 + man1/geod.1 + man1/cct.1 + man1/gie.1 DESTINATION share/man/man1) -install (FILES man3/pj_init.3 man3/geodesic.3 +install(FILES + man3/pj_init.3 + man3/geodesic.3 DESTINATION share/man/man3) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 122227bf4f..48c785a50f 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -3,71 +3,77 @@ include(lib_proj.cmake) # configure executable build -option(BUILD_CCT "Build cct (coordinate conversion and transformation tool)" ON) -option(BUILD_CS2CS "Build cs2cs (coordinate systems to coordinate systems translation tool)" ON) -option(BUILD_GEOD "Build geod (computation of geodesic lines)" ON) -option(BUILD_GIE "Build gie (geospatial integrity investigation environment - a PROJ.4 test tool)" ON) -option(BUILD_PROJ "Build proj (cartographic projection tool : latlong <-> projected coordinates)" ON) -option(BUILD_PROJINFO "Build projinfo (SRS and coordinate operation metadata/query tool)" ON) +option(BUILD_CCT + "Build cct (coordinate conversion and transformation tool)" ON) +option(BUILD_CS2CS + "Build cs2cs (coordinate systems to coordinate systems translation tool)" ON) +option(BUILD_GEOD + "Build geod (computation of geodesic lines)" ON) +option(BUILD_GIE + "Build gie (geospatial integrity investigation environment)" ON) +option(BUILD_PROJ + "Build proj (cartographic projection tool)" ON) +option(BUILD_PROJINFO + "Build projinfo (SRS and coordinate operation metadata/query tool)" ON) if(NOT MSVC) - if (NOT APPLE) + if(NOT APPLE) # Use relative path so that package is relocatable set(CMAKE_INSTALL_RPATH "\$ORIGIN/../${LIBDIR}") - else () - set (CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${LIBDIR}") + else() + set(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/${LIBDIR}") # TO DO: cmake 2.8.12 introduces a way to make the install tree # relocatable with OSX via # (1) set(CMAKE_MACOSX_RPATH ON) and # (2) setting the INSTALL_RPATH property on the executables to # "@loader_path/../${LIBDIR}" - endif () + endif() -else () +else() # Linking to setargv.obj enables wildcard globbing for the # command line utilities, when compiling with MSVC - # https://docs.microsoft.com/da-dk/cpp/c-language/expanding-wildcard-arguments + # https://docs.microsoft.com/cpp/c-language/expanding-wildcard-arguments set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} setargv.obj") -endif () +endif() if(BUILD_CCT) - include(bin_cct.cmake) - set(BIN_TARGETS ${BIN_TARGETS} cct) -endif(BUILD_CCT) + include(bin_cct.cmake) + set(BIN_TARGETS ${BIN_TARGETS} cct) +endif() if(BUILD_CS2CS) - include(bin_cs2cs.cmake) - set(BIN_TARGETS ${BIN_TARGETS} cs2cs) -endif(BUILD_CS2CS) + include(bin_cs2cs.cmake) + set(BIN_TARGETS ${BIN_TARGETS} cs2cs) +endif() if(BUILD_GEOD) include(bin_geod.cmake) include(bin_geodtest.cmake) set(BIN_TARGETS ${BIN_TARGETS} geod) -endif(BUILD_GEOD) +endif() if(BUILD_PROJ) include(bin_proj.cmake) set(BIN_TARGETS ${BIN_TARGETS} binproj) -endif(BUILD_PROJ) +endif() if(BUILD_PROJINFO) include(bin_projinfo.cmake) set(BIN_TARGETS ${BIN_TARGETS} binprojinfo) -endif(BUILD_PROJINFO) +endif() if(BUILD_GIE) - include(bin_gie.cmake) - set(BIN_TARGETS ${BIN_TARGETS} gie) -endif(BUILD_GIE) + include(bin_gie.cmake) + set(BIN_TARGETS ${BIN_TARGETS} gie) +endif() -if (MSVC OR CMAKE_CONFIGURATION_TYPES) +if(MSVC OR CMAKE_CONFIGURATION_TYPES) if(BIN_TARGETS) # Add _d suffix for your debug versions of the tools - set_target_properties (${BIN_TARGETS} PROPERTIES + set_target_properties(${BIN_TARGETS} PROPERTIES DEBUG_POSTFIX ${CMAKE_DEBUG_POSTFIX}) - endif(BIN_TARGETS) -endif () + endif() +endif() diff --git a/src/bin_cct.cmake b/src/bin_cct.cmake index e400caf37b..9c4b08044a 100644 --- a/src/bin_cct.cmake +++ b/src/bin_cct.cmake @@ -1,4 +1,8 @@ -set(CCT_SRC apps/cct.cpp apps/proj_strtod.cpp apps/proj_strtod.h) +set(CCT_SRC + apps/cct.cpp + apps/proj_strtod.cpp + apps/proj_strtod.h +) set(CCT_INCLUDE apps/optargpm.h) source_group("Source Files\\Bin" FILES ${CCT_SRC}) @@ -6,8 +10,8 @@ source_group("Source Files\\Bin" FILES ${CCT_SRC}) add_executable(cct ${CCT_SRC} ${CCT_INCLUDE}) target_link_libraries(cct ${PROJ_LIBRARIES}) install(TARGETS cct - RUNTIME DESTINATION ${BINDIR}) + RUNTIME DESTINATION ${BINDIR}) if(MSVC AND BUILD_LIBPROJ_SHARED) - target_compile_definitions(cct PRIVATE PROJ_MSVC_DLL_IMPORT=1) + target_compile_definitions(cct PRIVATE PROJ_MSVC_DLL_IMPORT=1) endif() diff --git a/src/bin_cs2cs.cmake b/src/bin_cs2cs.cmake index d520192cb2..9b2f2f4f19 100644 --- a/src/bin_cs2cs.cmake +++ b/src/bin_cs2cs.cmake @@ -1,14 +1,15 @@ -set(CS2CS_SRC apps/cs2cs.cpp - apps/emess.cpp +set(CS2CS_SRC + apps/cs2cs.cpp + apps/emess.cpp ) source_group("Source Files\\Bin" FILES ${CS2CS_SRC}) add_executable(cs2cs ${CS2CS_SRC} ${CS2CS_INCLUDE}) target_link_libraries(cs2cs ${PROJ_LIBRARIES}) -install(TARGETS cs2cs - RUNTIME DESTINATION ${BINDIR}) +install(TARGETS cs2cs + RUNTIME DESTINATION ${BINDIR}) if(MSVC AND BUILD_LIBPROJ_SHARED) - target_compile_definitions(cs2cs PRIVATE PROJ_MSVC_DLL_IMPORT=1) + target_compile_definitions(cs2cs PRIVATE PROJ_MSVC_DLL_IMPORT=1) endif() diff --git a/src/bin_geod.cmake b/src/bin_geod.cmake index 049da318c9..7221958a89 100644 --- a/src/bin_geod.cmake +++ b/src/bin_geod.cmake @@ -1,7 +1,8 @@ -set(GEOD_SRC apps/geod.cpp - apps/geod_set.cpp - apps/geod_interface.cpp - apps/emess.cpp +set(GEOD_SRC + apps/geod.cpp + apps/geod_set.cpp + apps/geod_interface.cpp + apps/emess.cpp ) set(GEOD_INCLUDE apps/geod_interface.h) @@ -11,8 +12,8 @@ source_group("Source Files\\Bin" FILES ${GEOD_SRC} ${GEOD_INCLUDE}) add_executable(geod ${GEOD_SRC} ${GEOD_INCLUDE}) target_link_libraries(geod ${PROJ_LIBRARIES}) install(TARGETS geod - RUNTIME DESTINATION ${BINDIR}) + RUNTIME DESTINATION ${BINDIR}) if(MSVC AND BUILD_LIBPROJ_SHARED) - target_compile_definitions(geod PRIVATE PROJ_MSVC_DLL_IMPORT=1) + target_compile_definitions(geod PRIVATE PROJ_MSVC_DLL_IMPORT=1) endif() diff --git a/src/bin_geodtest.cmake b/src/bin_geodtest.cmake index 31de499d99..4cc9819764 100644 --- a/src/bin_geodtest.cmake +++ b/src/bin_geodtest.cmake @@ -1,4 +1,4 @@ -set(GEODTEST_SRC tests/geodtest.cpp ) +set(GEODTEST_SRC tests/geodtest.cpp) set(GEODTEST_INCLUDE) source_group("Source Files\\Bin" FILES ${GEODTEST_SRC} ${GEODTEST_INCLUDE}) @@ -9,8 +9,8 @@ target_link_libraries(geodtest ${PROJ_LIBRARIES}) # Do not install # Instead run as a test -add_test (NAME geodesic-test COMMAND geodtest) +add_test(NAME geodesic-test COMMAND geodtest) if(MSVC AND BUILD_LIBPROJ_SHARED) - target_compile_definitions(geodtest PRIVATE PROJ_MSVC_DLL_IMPORT=1) + target_compile_definitions(geodtest PRIVATE PROJ_MSVC_DLL_IMPORT=1) endif() diff --git a/src/bin_gie.cmake b/src/bin_gie.cmake index 497315f904..a96c4c1ce8 100644 --- a/src/bin_gie.cmake +++ b/src/bin_gie.cmake @@ -1,6 +1,8 @@ -set(GIE_SRC apps/gie.cpp - apps/proj_strtod.cpp - apps/proj_strtod.h) +set(GIE_SRC + apps/gie.cpp + apps/proj_strtod.cpp + apps/proj_strtod.h +) set(GIE_INCLUDE apps/optargpm.h) source_group("Source Files\\Bin" FILES ${GIE_SRC}) @@ -8,8 +10,8 @@ source_group("Source Files\\Bin" FILES ${GIE_SRC}) add_executable(gie ${GIE_SRC} ${GIE_INCLUDE}) target_link_libraries(gie ${PROJ_LIBRARIES}) install(TARGETS gie - RUNTIME DESTINATION ${BINDIR}) + RUNTIME DESTINATION ${BINDIR}) if(MSVC AND BUILD_LIBPROJ_SHARED) - target_compile_definitions(gie PRIVATE PROJ_MSVC_DLL_IMPORT=1) + target_compile_definitions(gie PRIVATE PROJ_MSVC_DLL_IMPORT=1) endif() diff --git a/src/bin_proj.cmake b/src/bin_proj.cmake index 76e2ae9fec..c55ccfda5c 100644 --- a/src/bin_proj.cmake +++ b/src/bin_proj.cmake @@ -1,5 +1,6 @@ -set(PROJ_SRC apps/proj.cpp - apps/emess.cpp +set(PROJ_SRC + apps/proj.cpp + apps/emess.cpp ) source_group("Source Files\\Bin" FILES ${PROJ_SRC}) @@ -7,12 +8,12 @@ source_group("Source Files\\Bin" FILES ${PROJ_SRC}) #Executable add_executable(binproj ${PROJ_SRC}) set_target_properties(binproj - PROPERTIES - OUTPUT_NAME proj) + PROPERTIES + OUTPUT_NAME proj) target_link_libraries(binproj ${PROJ_LIBRARIES}) -install(TARGETS binproj - RUNTIME DESTINATION ${BINDIR}) +install(TARGETS binproj + RUNTIME DESTINATION ${BINDIR}) if(MSVC AND BUILD_LIBPROJ_SHARED) - target_compile_definitions(binproj PRIVATE PROJ_MSVC_DLL_IMPORT=1) + target_compile_definitions(binproj PRIVATE PROJ_MSVC_DLL_IMPORT=1) endif() diff --git a/src/bin_projinfo.cmake b/src/bin_projinfo.cmake index ea6f1006c3..0691d73963 100644 --- a/src/bin_projinfo.cmake +++ b/src/bin_projinfo.cmake @@ -5,12 +5,12 @@ source_group("Source Files\\Bin" FILES ${PROJINFO_SRC}) #Executable add_executable(binprojinfo ${PROJINFO_SRC}) set_target_properties(binprojinfo - PROPERTIES - OUTPUT_NAME projinfo) + PROPERTIES + OUTPUT_NAME projinfo) target_link_libraries(binprojinfo ${PROJ_LIBRARIES}) -install(TARGETS binprojinfo - RUNTIME DESTINATION ${BINDIR}) +install(TARGETS binprojinfo + RUNTIME DESTINATION ${BINDIR}) if(MSVC AND BUILD_LIBPROJ_SHARED) - target_compile_definitions(binprojinfo PRIVATE PROJ_MSVC_DLL_IMPORT=1) + target_compile_definitions(binprojinfo PRIVATE PROJ_MSVC_DLL_IMPORT=1) endif() diff --git a/src/lib_proj.cmake b/src/lib_proj.cmake index f28a1d68df..72a8cc5902 100644 --- a/src/lib_proj.cmake +++ b/src/lib_proj.cmake @@ -6,48 +6,52 @@ message(STATUS "") # default config, shared on unix and static on Windows if(UNIX) - set(BUILD_LIBPROJ_SHARED_DEFAULT ON ) -endif(UNIX) -if( WIN32) - set(BUILD_LIBPROJ_SHARED_DEFAULT OFF) -endif(WIN32) -option(BUILD_LIBPROJ_SHARED "Build libproj library shared." ${BUILD_LIBPROJ_SHARED_DEFAULT}) + set(BUILD_LIBPROJ_SHARED_DEFAULT ON) +endif() +if(WIN32) + set(BUILD_LIBPROJ_SHARED_DEFAULT OFF) +endif() +option(BUILD_LIBPROJ_SHARED + "Build libproj library shared." ${BUILD_LIBPROJ_SHARED_DEFAULT}) if(BUILD_LIBPROJ_SHARED) set(PROJ_LIBRARY_TYPE SHARED) -else(BUILD_LIBPROJ_SHARED) +else() set(PROJ_LIBRARY_TYPE STATIC) -endif(BUILD_LIBPROJ_SHARED) +endif() option(USE_THREAD "Build libproj with thread/mutex support " ON) if(NOT USE_THREAD) - add_definitions( -DMUTEX_stub) -endif(NOT USE_THREAD) + add_definitions(-DMUTEX_stub) +endif() find_package(Threads QUIET) -if(USE_THREAD AND Threads_FOUND AND CMAKE_USE_WIN32_THREADS_INIT ) - add_definitions( -DMUTEX_win32) -elseif(USE_THREAD AND Threads_FOUND AND CMAKE_USE_PTHREADS_INIT ) - add_definitions( -DMUTEX_pthread) +if(USE_THREAD AND Threads_FOUND AND CMAKE_USE_WIN32_THREADS_INIT) + add_definitions(-DMUTEX_win32) +elseif(USE_THREAD AND Threads_FOUND AND CMAKE_USE_PTHREADS_INIT) + add_definitions(-DMUTEX_pthread) elseif(USE_THREAD AND NOT Threads_FOUND) - message(FATAL_ERROR "No thread library found and thread/mutex support is required by USE_THREAD option") + message(FATAL_ERROR + "No thread library found and thread/mutex support is " + "required by USE_THREAD option") endif() option(ENABLE_LTO "Build library with LTO optimization (if available)." OFF) if(ENABLE_LTO) - if("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") - include (CheckCXXSourceCompiles) - SET(CMAKE_REQUIRED_FLAGS "-Wl,-flto") - check_cxx_source_compiles("int main(){ return 0; }" COMPILER_SUPPORTS_FLTO_FLAG) - IF(COMPILER_SUPPORTS_FLTO_FLAG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") - ENDIF() - else() - include(CheckCXXCompilerFlag) - CHECK_CXX_COMPILER_FLAG("-flto" COMPILER_SUPPORTS_FLTO_FLAG) - if(COMPILER_SUPPORTS_FLTO_FLAG) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") - endif() + if("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") + include(CheckCXXSourceCompiles) + set(CMAKE_REQUIRED_FLAGS "-Wl,-flto") + check_cxx_source_compiles("int main(){ return 0; }" + COMPILER_SUPPORTS_FLTO_FLAG) + if(COMPILER_SUPPORTS_FLTO_FLAG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") endif() + else() + include(CheckCXXCompilerFlag) + check_cxx_compiler_flag("-flto" COMPILER_SUPPORTS_FLTO_FLAG) + if(COMPILER_SUPPORTS_FLTO_FLAG) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto") + endif() + endif() endif() @@ -55,196 +59,247 @@ endif() ### library source list and include_list ### ############################################## -SET(SRC_LIBPROJ_PROJECTIONS - projections/aeqd.cpp - projections/gnom.cpp - projections/laea.cpp - projections/mod_ster.cpp - projections/nsper.cpp - projections/nzmg.cpp - projections/ortho.cpp - projections/stere.cpp - projections/sterea.cpp - projections/aea.cpp - projections/bipc.cpp - projections/bonne.cpp - projections/eqdc.cpp - projections/isea.cpp - projections/ccon.cpp - projections/imw_p.cpp - projections/krovak.cpp - projections/lcc.cpp - projections/poly.cpp - projections/rpoly.cpp - projections/sconics.cpp - projections/rouss.cpp - projections/cass.cpp - projections/cc.cpp - projections/cea.cpp - projections/eqc.cpp - projections/gall.cpp - projections/labrd.cpp - projections/lsat.cpp - projections/misrsom.cpp - projections/merc.cpp - projections/mill.cpp - projections/ocea.cpp - projections/omerc.cpp - projections/somerc.cpp - projections/tcc.cpp - projections/tcea.cpp - projections/times.cpp - projections/tmerc.cpp - projections/tobmerc.cpp - projections/airy.cpp - projections/aitoff.cpp - projections/august.cpp - projections/bacon.cpp - projections/bertin1953.cpp - projections/chamb.cpp - projections/hammer.cpp - projections/lagrng.cpp - projections/larr.cpp - projections/lask.cpp - projections/latlong.cpp - projections/nicol.cpp - projections/ob_tran.cpp - projections/oea.cpp - projections/tpeqd.cpp - projections/vandg.cpp - projections/vandg2.cpp - projections/vandg4.cpp - projections/wag7.cpp - projections/lcca.cpp - projections/geos.cpp - projections/boggs.cpp - projections/collg.cpp - projections/comill.cpp - projections/crast.cpp - projections/denoy.cpp - projections/eck1.cpp - projections/eck2.cpp - projections/eck3.cpp - projections/eck4.cpp - projections/eck5.cpp - projections/fahey.cpp - projections/fouc_s.cpp - projections/gins8.cpp - projections/gstmerc.cpp - projections/gn_sinu.cpp - projections/goode.cpp - projections/igh.cpp - projections/hatano.cpp - projections/loxim.cpp - projections/mbt_fps.cpp - projections/mbtfpp.cpp - projections/mbtfpq.cpp - projections/moll.cpp - projections/nell.cpp - projections/nell_h.cpp - projections/patterson.cpp - projections/putp2.cpp - projections/putp3.cpp - projections/putp4p.cpp - projections/putp5.cpp - projections/putp6.cpp - projections/qsc.cpp - projections/robin.cpp - projections/sch.cpp - projections/sts.cpp - projections/urm5.cpp - projections/urmfps.cpp - projections/wag2.cpp - projections/wag3.cpp - projections/wink1.cpp - projections/wink2.cpp - projections/healpix.cpp - projections/natearth.cpp - projections/natearth2.cpp - projections/calcofi.cpp - projections/eqearth.cpp +set(SRC_LIBPROJ_PROJECTIONS + projections/aeqd.cpp + projections/gnom.cpp + projections/laea.cpp + projections/mod_ster.cpp + projections/nsper.cpp + projections/nzmg.cpp + projections/ortho.cpp + projections/stere.cpp + projections/sterea.cpp + projections/aea.cpp + projections/bipc.cpp + projections/bonne.cpp + projections/eqdc.cpp + projections/isea.cpp + projections/ccon.cpp + projections/imw_p.cpp + projections/krovak.cpp + projections/lcc.cpp + projections/poly.cpp + projections/rpoly.cpp + projections/sconics.cpp + projections/rouss.cpp + projections/cass.cpp + projections/cc.cpp + projections/cea.cpp + projections/eqc.cpp + projections/gall.cpp + projections/labrd.cpp + projections/lsat.cpp + projections/misrsom.cpp + projections/merc.cpp + projections/mill.cpp + projections/ocea.cpp + projections/omerc.cpp + projections/somerc.cpp + projections/tcc.cpp + projections/tcea.cpp + projections/times.cpp + projections/tmerc.cpp + projections/tobmerc.cpp + projections/airy.cpp + projections/aitoff.cpp + projections/august.cpp + projections/bacon.cpp + projections/bertin1953.cpp + projections/chamb.cpp + projections/hammer.cpp + projections/lagrng.cpp + projections/larr.cpp + projections/lask.cpp + projections/latlong.cpp + projections/nicol.cpp + projections/ob_tran.cpp + projections/oea.cpp + projections/tpeqd.cpp + projections/vandg.cpp + projections/vandg2.cpp + projections/vandg4.cpp + projections/wag7.cpp + projections/lcca.cpp + projections/geos.cpp + projections/boggs.cpp + projections/collg.cpp + projections/comill.cpp + projections/crast.cpp + projections/denoy.cpp + projections/eck1.cpp + projections/eck2.cpp + projections/eck3.cpp + projections/eck4.cpp + projections/eck5.cpp + projections/fahey.cpp + projections/fouc_s.cpp + projections/gins8.cpp + projections/gstmerc.cpp + projections/gn_sinu.cpp + projections/goode.cpp + projections/igh.cpp + projections/hatano.cpp + projections/loxim.cpp + projections/mbt_fps.cpp + projections/mbtfpp.cpp + projections/mbtfpq.cpp + projections/moll.cpp + projections/nell.cpp + projections/nell_h.cpp + projections/patterson.cpp + projections/putp2.cpp + projections/putp3.cpp + projections/putp4p.cpp + projections/putp5.cpp + projections/putp6.cpp + projections/qsc.cpp + projections/robin.cpp + projections/sch.cpp + projections/sts.cpp + projections/urm5.cpp + projections/urmfps.cpp + projections/wag2.cpp + projections/wag3.cpp + projections/wink1.cpp + projections/wink2.cpp + projections/healpix.cpp + projections/natearth.cpp + projections/natearth2.cpp + projections/calcofi.cpp + projections/eqearth.cpp ) -SET(SRC_LIBPROJ_CONVERSIONS - conversions/axisswap.cpp - conversions/cart.cpp - conversions/geoc.cpp - conversions/geocent.cpp - conversions/unitconvert.cpp +set(SRC_LIBPROJ_CONVERSIONS + conversions/axisswap.cpp + conversions/cart.cpp + conversions/geoc.cpp + conversions/geocent.cpp + conversions/unitconvert.cpp ) -SET(SRC_LIBPROJ_TRANSFORMATIONS - transformations/affine.cpp - transformations/deformation.cpp - transformations/helmert.cpp - transformations/hgridshift.cpp - transformations/horner.cpp - transformations/molodensky.cpp - transformations/vgridshift.cpp +set(SRC_LIBPROJ_TRANSFORMATIONS + transformations/affine.cpp + transformations/deformation.cpp + transformations/helmert.cpp + transformations/hgridshift.cpp + transformations/horner.cpp + transformations/molodensky.cpp + transformations/vgridshift.cpp ) -SET(SRC_LIBPROJ_ISO19111 - iso19111/static.cpp - iso19111/util.cpp - iso19111/metadata.cpp - iso19111/common.cpp - iso19111/crs.cpp - iso19111/datum.cpp - iso19111/coordinatesystem.cpp - iso19111/coordinateoperation.cpp - iso19111/io.cpp - iso19111/internal.cpp - iso19111/factory.cpp - iso19111/c_api.cpp +set(SRC_LIBPROJ_ISO19111 + iso19111/static.cpp + iso19111/util.cpp + iso19111/metadata.cpp + iso19111/common.cpp + iso19111/crs.cpp + iso19111/datum.cpp + iso19111/coordinatesystem.cpp + iso19111/coordinateoperation.cpp + iso19111/io.cpp + iso19111/internal.cpp + iso19111/factory.cpp + iso19111/c_api.cpp ) -SET(SRC_LIBPROJ_CORE - pj_list.h proj_internal.h proj_math.h - aasincos.cpp adjlon.cpp - dmstor.cpp auth.cpp - deriv.cpp ell_set.cpp ellps.cpp errno.cpp - factors.cpp fwd.cpp init.cpp inv.cpp - list.cpp malloc.cpp mlfn.cpp msfn.cpp proj_mdist.cpp - open_lib.cpp param.cpp phi2.cpp pr_list.cpp - qsfn.cpp strerrno.cpp - tsfn.cpp units.cpp ctx.cpp log.cpp zpoly1.cpp rtodms.cpp - release.cpp gauss.cpp - fileapi.cpp - gc_reader.cpp gridcatalog.cpp - nad_cvt.cpp nad_init.cpp nad_intr.cpp - apply_gridshift.cpp datums.cpp datum_set.cpp transform.cpp - geocent.cpp geocent.h utils.cpp gridinfo.cpp gridlist.cpp - jniproj.cpp mutex.cpp initcache.cpp apply_vgridshift.cpp geodesic.c - strtod.cpp math.cpp - 4D_api.cpp pipeline.cpp - internal.cpp - wkt_parser.hpp wkt_parser.cpp - wkt1_parser.h wkt1_parser.cpp - wkt1_generated_parser.h wkt1_generated_parser.c - wkt2_parser.h wkt2_parser.cpp - wkt2_generated_parser.h wkt2_generated_parser.c - ${CMAKE_CURRENT_BINARY_DIR}/proj_config.h +set(SRC_LIBPROJ_CORE + 4D_api.cpp + aasincos.cpp + adjlon.cpp + apply_gridshift.cpp + apply_vgridshift.cpp + auth.cpp + ctx.cpp + datum_set.cpp + datums.cpp + deriv.cpp + dmstor.cpp + ell_set.cpp + ellps.cpp + errno.cpp + factors.cpp + fileapi.cpp + fwd.cpp + gauss.cpp + gc_reader.cpp + geocent.cpp + geocent.h + geodesic.c + gridcatalog.cpp + gridinfo.cpp + gridlist.cpp + init.cpp + initcache.cpp + internal.cpp + inv.cpp + jniproj.cpp + list.cpp + log.cpp + malloc.cpp + math.cpp + mlfn.cpp + msfn.cpp + mutex.cpp + nad_cvt.cpp + nad_init.cpp + nad_intr.cpp + open_lib.cpp + param.cpp + phi2.cpp + pipeline.cpp + pj_list.h + pr_list.cpp + proj_internal.h + proj_math.h + proj_mdist.cpp + qsfn.cpp + release.cpp + rtodms.cpp + strerrno.cpp + strtod.cpp + transform.cpp + tsfn.cpp + units.cpp + utils.cpp + wkt1_generated_parser.c + wkt1_generated_parser.h + wkt1_parser.cpp + wkt1_parser.h + wkt2_generated_parser.c + wkt2_generated_parser.h + wkt2_parser.cpp + wkt2_parser.h + wkt_parser.cpp + wkt_parser.hpp + zpoly1.cpp + ${CMAKE_CURRENT_BINARY_DIR}/proj_config.h ) set(HEADERS_LIBPROJ - proj_api.h - proj.h - proj_experimental.h - proj_constants.h - geodesic.h + proj_api.h + proj.h + proj_experimental.h + proj_constants.h + geodesic.h ) # Group source files for IDE source explorers (e.g. Visual Studio) -source_group("Header Files" FILES ${HEADERS_LIBPROJ}) -source_group("Source Files\\Core" FILES ${SRC_LIBPROJ_CORE}) -source_group("Source Files\\Conversions" FILES ${SRC_LIBPROJ_CONVERSIONS}) -source_group("Source Files\\Projections" FILES ${SRC_LIBPROJ_PROJECTIONS}) -source_group("Source Files\\Transformations" FILES ${SRC_LIBPROJ_TRANSFORMATIONS}) -source_group("Source Files\\ISO19111" FILES ${SRC_LIBPROJ_ISO19111}) +source_group("Header Files" + FILES ${HEADERS_LIBPROJ}) +source_group("Source Files\\Core" + FILES ${SRC_LIBPROJ_CORE}) +source_group("Source Files\\Conversions" + FILES ${SRC_LIBPROJ_CONVERSIONS}) +source_group("Source Files\\Projections" + FILES ${SRC_LIBPROJ_PROJECTIONS}) +source_group("Source Files\\Transformations" + FILES ${SRC_LIBPROJ_TRANSFORMATIONS}) +source_group("Source Files\\ISO19111" + FILES ${SRC_LIBPROJ_ISO19111}) include_directories(${CMAKE_SOURCE_DIR}/include) -include_directories( ${CMAKE_CURRENT_BINARY_DIR}) +include_directories(${CMAKE_CURRENT_BINARY_DIR}) source_group("CMake Files" FILES CMakeLists.txt) @@ -258,45 +313,48 @@ option(JNI_SUPPORT "Build support of java/jni wrapping for proj library" OFF) find_package(JNI QUIET) if(JNI_SUPPORT AND NOT JNI_FOUND) message(FATAL_ERROR "jni support is required but jni is not found") -endif(JNI_SUPPORT AND NOT JNI_FOUND) +endif() boost_report_value(JNI_SUPPORT) if(JNI_SUPPORT) - set(SRC_LIBPROJ_CORE ${SRC_LIBPROJ_CORE} - jniproj.cpp ) - set(HEADERS_LIBPROJ ${HEADERS_LIBPROJ} - org_proj4_PJ.h) + set(SRC_LIBPROJ_CORE + ${SRC_LIBPROJ_CORE} jniproj.cpp) + set(HEADERS_LIBPROJ + ${HEADERS_LIBPROJ} org_proj4_PJ.h) source_group("Source Files\\JNI" FILES ${SRC_LIBPROJ_JNI}) add_definitions(-DJNI_ENABLED) - include_directories( ${JNI_INCLUDE_DIRS}) + include_directories(${JNI_INCLUDE_DIRS}) boost_report_value(JNI_INCLUDE_DIRS) -endif(JNI_SUPPORT) +endif() ################################################# ## targets: libproj and proj_config.h ################################################# -set(ALL_LIBPROJ_SOURCES ${SRC_LIBPROJ_CORE} - ${SRC_LIBPROJ_CONVERSIONS} - ${SRC_LIBPROJ_PROJECTIONS} - ${SRC_LIBPROJ_TRANSFORMATIONS} - ${SRC_LIBPROJ_ISO19111} +set(ALL_LIBPROJ_SOURCES + ${SRC_LIBPROJ_CORE} + ${SRC_LIBPROJ_CONVERSIONS} + ${SRC_LIBPROJ_PROJECTIONS} + ${SRC_LIBPROJ_TRANSFORMATIONS} + ${SRC_LIBPROJ_ISO19111} ) -set(ALL_LIBPROJ_HEADERS ${HEADERS_LIBPROJ} ) +set(ALL_LIBPROJ_HEADERS ${HEADERS_LIBPROJ}) # Core targets configuration string(TOLOWER "${PROJECT_INTERN_NAME}" PROJECTNAMEL) set(PROJ_CORE_TARGET ${PROJECTNAMEL}) proj_target_output_name(${PROJ_CORE_TARGET} PROJ_CORE_TARGET_OUTPUT_NAME) -add_library( ${PROJ_CORE_TARGET} - ${PROJ_LIBRARY_TYPE} - ${ALL_LIBPROJ_SOURCES} - ${ALL_LIBPROJ_HEADERS} - ${PROJ_RESOURCES} ) +add_library( + ${PROJ_CORE_TARGET} + ${PROJ_LIBRARY_TYPE} + ${ALL_LIBPROJ_SOURCES} + ${ALL_LIBPROJ_HEADERS} + ${PROJ_RESOURCES} +) -if (NOT CMAKE_VERSION VERSION_LESS 2.8.11) - target_include_directories (${PROJ_CORE_TARGET} INTERFACE +if(NOT CMAKE_VERSION VERSION_LESS 2.8.11) + target_include_directories(${PROJ_CORE_TARGET} INTERFACE $) -endif () +endif() if(WIN32) set_target_properties(${PROJ_CORE_TARGET} @@ -319,45 +377,47 @@ else() endif() set_target_properties(${PROJ_CORE_TARGET} - PROPERTIES - LINKER_LANGUAGE CXX) + PROPERTIES + LINKER_LANGUAGE CXX) ############################################## # Link properties ############################################## set(PROJ_LIBRARIES ${PROJ_CORE_TARGET}) -set(PROJ_LIBRARIES ${PROJ_LIBRARIES} PARENT_SCOPE) # hack, required for test/unit +# hack, required for test/unit +set(PROJ_LIBRARIES ${PROJ_LIBRARIES} PARENT_SCOPE) if(UNIX) - find_library(M_LIB m) - if(M_LIB) - TARGET_LINK_LIBRARIES(${PROJ_CORE_TARGET} -lm) - endif() -endif(UNIX) + find_library(M_LIB m) + if(M_LIB) + target_link_libraries(${PROJ_CORE_TARGET} -lm) + endif() +endif() if(USE_THREAD AND Threads_FOUND AND CMAKE_USE_PTHREADS_INIT) - TARGET_LINK_LIBRARIES(${PROJ_CORE_TARGET} ${CMAKE_THREAD_LIBS_INIT}) -endif(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}) -TARGET_LINK_LIBRARIES(${PROJ_CORE_TARGET} ${SQLITE3_LIBRARY}) +target_link_libraries(${PROJ_CORE_TARGET} ${SQLITE3_LIBRARY}) if(MSVC) - target_compile_definitions(${PROJ_CORE_TARGET} PRIVATE PROJ_MSVC_DLL_EXPORT=1) + target_compile_definitions(${PROJ_CORE_TARGET} + PRIVATE PROJ_MSVC_DLL_EXPORT=1) endif() ############################################## # install ############################################## install(TARGETS ${PROJ_CORE_TARGET} - EXPORT targets - RUNTIME DESTINATION ${BINDIR} - LIBRARY DESTINATION ${LIBDIR} - ARCHIVE DESTINATION ${LIBDIR} - FRAMEWORK DESTINATION ${FRAMEWORKDIR}) + EXPORT targets + RUNTIME DESTINATION ${BINDIR} + LIBRARY DESTINATION ${LIBDIR} + ARCHIVE DESTINATION ${LIBDIR} + FRAMEWORK DESTINATION ${FRAMEWORKDIR}) if(NOT BUILD_FRAMEWORKS_AND_BUNDLE) install(FILES ${ALL_LIBPROJ_HEADERS} - DESTINATION ${INCLUDEDIR}) -endif(NOT BUILD_FRAMEWORKS_AND_BUNDLE) + DESTINATION ${INCLUDEDIR}) +endif() ############################################## # Core configuration summary diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index b618091b44..ae721d468c 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -17,7 +17,8 @@ proj_add_gie_test("GIGS-5101.1-jhs" "gigs/5101.1-jhs.gie") proj_add_gie_test("GIGS-5101.2-jhs" "gigs/5101.2-jhs.gie") proj_add_gie_test("GIGS-5101.3-jhs" "gigs/5101.3-jhs.gie") proj_add_gie_test("GIGS-5101.4-jhs-etmerc" "gigs/5101.4-jhs-etmerc.gie") -#proj_add_gie_test("GIGS-5101.4-jhs" "gigs/5101.4-jhs.gie") # Same as above, but using etmerc instead of tmerc +# Same as above, but using etmerc instead of tmerc +#proj_add_gie_test("GIGS-5101.4-jhs" "gigs/5101.4-jhs.gie") proj_add_gie_test("GIGS-5102.1" "gigs/5102.1.gie") #proj_add_gie_test("GIGS-5102.2" "gigs/5102.2.gie") proj_add_gie_test("GIGS-5103.1" "gigs/5103.1.gie") diff --git a/test/cli/CMakeLists.txt b/test/cli/CMakeLists.txt index 0c4ccf1ba0..4e1ab75a5d 100644 --- a/test/cli/CMakeLists.txt +++ b/test/cli/CMakeLists.txt @@ -5,11 +5,11 @@ set(CS2CS_BIN "cs2cs") set(PROJ_BIN "proj") set(PROJINFO_BIN "projinfo") set(CCT_BIN "cct") -proj_add_test_script_sh("test27" PROJ_BIN ) -proj_add_test_script_sh("test83" PROJ_BIN ) -proj_add_test_script_sh("testvarious" CS2CS_BIN ) +proj_add_test_script_sh("test27" PROJ_BIN) +proj_add_test_script_sh("test83" PROJ_BIN) +proj_add_test_script_sh("testvarious" CS2CS_BIN) proj_add_test_script_sh("testdatumfile" CS2CS_BIN "connu") proj_add_test_script_sh("testIGNF" CS2CS_BIN "ntf_r93.gsb") proj_add_test_script_sh("testntv2" CS2CS_BIN "ntv2_0.gsb") -proj_add_test_script_sh("testprojinfo" PROJINFO_BIN ) -proj_add_test_script_sh("testcct" CCT_BIN ) +proj_add_test_script_sh("testprojinfo" PROJINFO_BIN) +proj_add_test_script_sh("testcct" CCT_BIN) diff --git a/test/unit/CMakeLists.txt b/test/unit/CMakeLists.txt index 58638fa45e..9b160be864 100644 --- a/test/unit/CMakeLists.txt +++ b/test/unit/CMakeLists.txt @@ -2,12 +2,12 @@ option(USE_EXTERNAL_GTEST "Compile against external GTest" OFF) -if (USE_EXTERNAL_GTEST) +if(USE_EXTERNAL_GTEST) message(STATUS "Using external GTest") find_package(GTest 1.8.1 CONFIG REQUIRED) -else (USE_EXTERNAL_GTEST) +else() message(STATUS "Using internal GTest") @@ -23,11 +23,11 @@ string(REGEX REPLACE "\\-W[a-z\\-]+" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # Source https://github.com/google/googletest/blob/master/googletest/README.md # Download and unpack googletest at configure time configure_file( - ${CMAKE_SOURCE_DIR}/test/googletest/CMakeLists.txt.in - ${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt) + ${CMAKE_SOURCE_DIR}/test/googletest/CMakeLists.txt.in + ${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt) execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . RESULT_VARIABLE result - WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download ) + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download) if(result) message(FATAL_ERROR "CMake step for googletest failed: ${result}") endif() @@ -43,9 +43,10 @@ set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) # Add googletest directly to our build. This defines # the gtest and gtest_main targets. option(INSTALL_GTEST "Enable installation of googletest" OFF) -add_subdirectory(${CMAKE_BINARY_DIR}/googletest-src - ${CMAKE_BINARY_DIR}/googletest-build - EXCLUDE_FROM_ALL) +add_subdirectory( + ${CMAKE_BINARY_DIR}/googletest-src + ${CMAKE_BINARY_DIR}/googletest-build + EXCLUDE_FROM_ALL) # FIXME: Deal with our old-school CMakeLists.txt behaving badly set(CMAKE_C_FLAGS "${_save_c_flags}") @@ -56,14 +57,14 @@ unset(_save_cxx_flags) # Provide the same target name as find_package(GTest) add_library(GTest::gtest ALIAS gtest) -endif(USE_EXTERNAL_GTEST) +endif() # USE_EXTERNAL_GTEST # # Build PROJ unit tests # if("${CMAKE_C_COMPILER_ID}" STREQUAL "MSVC" AND BUILD_LIBPROJ_SHARED) -add_definitions(-DPROJ_MSVC_DLL_IMPORT=1) + add_definitions(-DPROJ_MSVC_DLL_IMPORT=1) endif() include_directories(${CMAKE_SOURCE_DIR}/include) @@ -86,31 +87,31 @@ target_link_libraries(proj_errno_string_test add_test(NAME proj_errno_string_test COMMAND proj_errno_string_test) add_executable(proj_angular_io_test - main.cpp - proj_angular_io_test.cpp) + main.cpp + proj_angular_io_test.cpp) target_link_libraries(proj_angular_io_test - GTest::gtest - ${PROJ_LIBRARIES}) + GTest::gtest + ${PROJ_LIBRARIES}) add_test(NAME proj_angular_io_test COMMAND proj_angular_io_test) add_executable(proj_context_test - main.cpp - proj_context_test.cpp) + main.cpp + proj_context_test.cpp) target_link_libraries(proj_context_test - GTest::gtest - ${PROJ_LIBRARIES}) + GTest::gtest + ${PROJ_LIBRARIES}) add_test(NAME proj_context_test COMMAND proj_context_test) -if (MSVC AND BUILD_LIBPROJ_SHARED) -# ph_phi2_test not compatible of a .dll build +if(MSVC AND BUILD_LIBPROJ_SHARED) + # ph_phi2_test not compatible of a .dll build else() -add_executable(pj_phi2_test - main.cpp - pj_phi2_test.cpp) -target_link_libraries(pj_phi2_test - GTest::gtest - ${PROJ_LIBRARIES}) -add_test(NAME pj_phi2_test COMMAND pj_phi2_test) + add_executable(pj_phi2_test + main.cpp + pj_phi2_test.cpp) + target_link_libraries(pj_phi2_test + GTest::gtest + ${PROJ_LIBRARIES}) + add_test(NAME pj_phi2_test COMMAND pj_phi2_test) endif() add_executable(proj_test_cpp_api