diff options
| author | Howard Butler <howard@hobu.co> | 2015-02-22 23:06:13 +0000 |
|---|---|---|
| committer | Howard Butler <howard@hobu.co> | 2015-02-22 23:06:13 +0000 |
| commit | 4f2ff5857f6f554b7e5c25c139d8064e031c7b73 (patch) | |
| tree | a94374c80c26ee16a3ce9440a6dcd9f2b5712b98 /cmake | |
| parent | 41d8647cdff0c7550b77e7d225e2578ea736d777 (diff) | |
| download | PROJ-4f2ff5857f6f554b7e5c25c139d8064e031c7b73.tar.gz PROJ-4f2ff5857f6f554b7e5c25c139d8064e031c7b73.zip | |
More CMake churn #264
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2632 4e78687f-474d-0410-85f9-8d5e500ac6b2
Diffstat (limited to 'cmake')
| -rw-r--r-- | cmake/CMakeLists.txt | 29 | ||||
| -rw-r--r-- | cmake/project-config-version.cmake.in | 48 | ||||
| -rw-r--r-- | cmake/project-config.cmake.in | 28 |
3 files changed, 105 insertions, 0 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt new file mode 100644 index 00000000..dcb0a61a --- /dev/null +++ b/cmake/CMakeLists.txt @@ -0,0 +1,29 @@ +# proj-config.cmake for the install tree. It's installed in +# ${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 (NOT WIN32) + set (INSTALL_CMAKE_DIR "share/cmake/${PROJECT_INTERN_NAME}") + set (PROJECT_ROOT_DIR "../../..") +else () + set (INSTALL_CMAKE_DIR "cmake") + set (PROJECT_ROOT_DIR "..") +endif () + +string(TOLOWER "${PROJECT_INTERN_NAME}" PROJECT_NAME_LOWER) +configure_file (project-config.cmake.in project-config.cmake @ONLY) +configure_file (project-config-version.cmake.in + project-config-version.cmake @ONLY) +install (FILES + "${CMAKE_CURRENT_BINARY_DIR}/project-config.cmake" + DESTINATION "${INSTALL_CMAKE_DIR}" + RENAME "${PROJECT_NAME_LOWER}-config.cmake") +install (FILES + "${CMAKE_CURRENT_BINARY_DIR}/project-config-version.cmake" + DESTINATION "${INSTALL_CMAKE_DIR}" + RENAME "${PROJECT_NAME_LOWER}-config-version.cmake") +# Make information about the cmake targets (the library and the tools) +# available. +install (EXPORT targets + FILE ${PROJECT_NAME_LOWER}-targets.cmake + DESTINATION "${INSTALL_CMAKE_DIR}") diff --git a/cmake/project-config-version.cmake.in b/cmake/project-config-version.cmake.in new file mode 100644 index 00000000..5d57ee15 --- /dev/null +++ b/cmake/project-config-version.cmake.in @@ -0,0 +1,48 @@ +# Version checking for @PROJECT_INTERN_NAME@ + +set (PACKAGE_VERSION "@PROJ_VERSION@") +set (PACKAGE_VERSION_MAJOR "@PROJ_VERSION_MAJOR@") +set (PACKAGE_VERSION_MINOR "@PROJ_VERSION_MINOR@") +set (PACKAGE_VERSION_PATCH "@PROJ_VERSION_PATCH@") + +if (NOT PACKAGE_FIND_NAME STREQUAL "@PROJECT_INTERN_NAME@") + # Check package name (in particular, because of the way cmake finds + # package config files, the capitalization could easily be "wrong"). + # This is necessary to ensure that the automatically generated + # variables, e.g., <package>_FOUND, are consistently spelled. + set (REASON "package = @PROJECT_INTERN_NAME@, NOT ${PACKAGE_FIND_NAME}") + set (PACKAGE_VERSION_UNSUITABLE TRUE) +elseif (NOT (APPLE OR (NOT DEFINED CMAKE_SIZEOF_VOID_P) OR + CMAKE_SIZEOF_VOID_P EQUAL @CMAKE_SIZEOF_VOID_P@)) + # Reject if there's a 32-bit/64-bit mismatch (not necessary with Apple + # 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@") + # 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@") + # Reject if there's a mismatch in ${CMAKE_CROSSCOMPILING} + set (REASON "cross-compiling = @CMAKE_CROSSCOMPILING@") + set (PACKAGE_VERSION_UNSUITABLE TRUE) +elseif (CMAKE_CROSSCOMPILING AND + NOT (CMAKE_SYSTEM_NAME STREQUAL "@CMAKE_SYSTEM_NAME@" AND + CMAKE_SYSTEM_PROCESSOR STREQUAL "@CMAKE_SYSTEM_PROCESSOR@")) + # Reject if cross-compiling and there's a mismatch in the target system + set (REASON "target = @CMAKE_SYSTEM_NAME@-@CMAKE_SYSTEM_PROCESSOR@") + set (PACKAGE_VERSION_UNSUITABLE TRUE) +elseif (PACKAGE_FIND_VERSION) + if (PACKAGE_FIND_VERSION VERSION_EQUAL PACKAGE_VERSION) + set (PACKAGE_VERSION_EXACT TRUE) + elseif (PACKAGE_FIND_VERSION VERSION_LESS PACKAGE_VERSION + AND PACKAGE_FIND_VERSION_MAJOR EQUAL PACKAGE_VERSION_MAJOR) + set (PACKAGE_VERSION_COMPATIBLE TRUE) + endif () +endif () + +# If unsuitable, append the reason to the package version so that it's +# visible to the user. +if (PACKAGE_VERSION_UNSUITABLE) + set (PACKAGE_VERSION "${PACKAGE_VERSION} (${REASON})") +endif () diff --git a/cmake/project-config.cmake.in b/cmake/project-config.cmake.in new file mode 100644 index 00000000..6110dc61 --- /dev/null +++ b/cmake/project-config.cmake.in @@ -0,0 +1,28 @@ +# Configure @PROJECT_INTERN_NAME@ +# +# Set +# @PROJECT_INTERN_NAME@_FOUND = 1 +# @PROJECT_INTERN_NAME@_INCLUDE_DIRS = /usr/local/include +# @PROJECT_INTERN_NAME@_LIBRARIES = proj +# @PROJECT_INTERN_NAME@_LIBRARY_DIRS = /usr/local/lib +# @PROJECT_INTERN_NAME@_BINARY_DIRS = /usr/local/bin +# @PROJECT_INTERN_NAME@_VERSION = 4.9.1 (for example) + +message (STATUS "Reading ${CMAKE_CURRENT_LIST_FILE}") +# @PROJECT_INTERN_NAME@_VERSION is set by version file +message (STATUS + "@PROJECT_INTERN_NAME@ configuration, version ${@PROJECT_INTERN_NAME@_VERSION}") + +# Tell the user project where to find our headers and libraries +get_filename_component (_DIR ${CMAKE_CURRENT_LIST_FILE} PATH) +get_filename_component (_ROOT "${_DIR}/@PROJECT_ROOT_DIR@" ABSOLUTE) +set (@PROJECT_INTERN_NAME@_INCLUDE_DIRS "${_ROOT}/@INCLUDEDIR@") +set (@PROJECT_INTERN_NAME@_LIBRARY_DIRS "${_ROOT}/@LIBDIR@") +set (@PROJECT_INTERN_NAME@_BINARY_DIRS "${_ROOT}/@BINDIR@") + +set (@PROJECT_INTERN_NAME@_LIBRARIES proj) +# Read in the exported definition of the library +include ("${_DIR}/@PROJECT_NAME_LOWER@-targets.cmake") + +unset (_ROOT) +unset (_DIR) |
