aboutsummaryrefslogtreecommitdiff
path: root/cmake/Proj4Version.cmake
diff options
context:
space:
mode:
authorHoward Butler <howard@hobu.co>2014-09-13 21:05:12 +0000
committerHoward Butler <howard@hobu.co>2014-09-13 21:05:12 +0000
commit532a0f5408f84510abebb2e58da8b7dac7b90ea7 (patch)
treec6bde5aeae55cbf44d66a1979eee86503bb9d97b /cmake/Proj4Version.cmake
parenta008db13413e40fbdf162d03ae94c1c04fff39d9 (diff)
downloadPROJ-532a0f5408f84510abebb2e58da8b7dac7b90ea7.tar.gz
PROJ-532a0f5408f84510abebb2e58da8b7dac7b90ea7.zip
Start implementation of CMake support for proj.4 #243
git-svn-id: http://svn.osgeo.org/metacrs/proj/trunk@2523 4e78687f-474d-0410-85f9-8d5e500ac6b2
Diffstat (limited to 'cmake/Proj4Version.cmake')
-rw-r--r--cmake/Proj4Version.cmake59
1 files changed, 59 insertions, 0 deletions
diff --git a/cmake/Proj4Version.cmake b/cmake/Proj4Version.cmake
new file mode 100644
index 00000000..72db4310
--- /dev/null
+++ b/cmake/Proj4Version.cmake
@@ -0,0 +1,59 @@
+################################################################################
+# Proj4Version.cmake - part of CMake configuration of Proj4 library
+################################################################################
+# Copyright (C) 2010 Mateusz Loskot <mateusz@loskot.net>
+#
+# Distributed under the Boost Software License, Version 1.0
+################################################################################
+# Macros in this module:
+#
+# proj_version - defines version information for PROJ library
+# (best known as PROJ4 because MAJOR version is 4 since a very long time)
+################################################################################
+
+# Defines version information for PROJ library
+#
+# proj_version(MAJOR major_version MINOR minor_version PATCH patch_level)
+#
+# MAJOR.MINOR version is used to set SOVERSION
+#
+
+macro(proj_version)
+ parse_arguments(THIS_VERSION "MAJOR;MINOR;PATCH;"
+ ""
+ ${ARGN})
+
+ # Set version components
+ set(${PROJECT_INTERN_NAME}_VERSION_MAJOR ${THIS_VERSION_MAJOR})
+ set(${PROJECT_INTERN_NAME}_VERSION_MINOR ${THIS_VERSION_MINOR})
+ set(${PROJECT_INTERN_NAME}_VERSION_PATCH ${THIS_VERSION_PATCH})
+
+ # Set VERSION string
+ set(${PROJECT_INTERN_NAME}_VERSION
+ "${${PROJECT_INTERN_NAME}_VERSION_MAJOR}.${${PROJECT_INTERN_NAME}_VERSION_MINOR}.${${PROJECT_INTERN_NAME}_VERSION_PATCH}")
+
+ # Set SOVERSION based on major and minor
+ set(${PROJECT_INTERN_NAME}_SOVERSION
+ "${${PROJECT_INTERN_NAME}_VERSION_MAJOR}.${${PROJECT_INTERN_NAME}_VERSION_MINOR}")
+
+ # Set ABI version string used to name binary output
+ # On Windows, ABI version is specified using binary file name suffix.
+ # On Unix, suffix ix empty and SOVERSION is used instead.
+ if (UNIX)
+ set(${PROJECT_INTERN_NAME}_ABI_VERSION ${${PROJECT_INTERN_NAME}_SOVERSION})
+ elseif(WIN32)
+ set(${PROJECT_INTERN_NAME}_ABI_VERSION
+ "${${PROJECT_INTERN_NAME}_VERSION_MAJOR}_${${PROJECT_INTERN_NAME}_VERSION_MINOR}")
+ else()
+ message(FATAL_ERROR "Ambiguous target platform with unknown ABI version scheme. Giving up.")
+ endif()
+
+ message(STATUS "")
+ boost_report_value(${PROJECT_INTERN_NAME}_VERSION)
+ if(UNIX)
+ boost_report_value(${PROJECT_INTERN_NAME}_SOVERSION)
+ endif(UNIX)
+ if(WIN32)
+ boost_report_value(${PROJECT_INTERN_NAME}_ABI_VERSION)
+ endif(WIN32)
+endmacro()