1################################################################################
2# ProjVersion.cmake - part of CMake configuration of PROJ library
3################################################################################
4# Copyright (C) 2010 Mateusz Loskot <mateusz@loskot.net>
5#
6# Distributed under the Boost Software License, Version 1.0
7################################################################################
8# Macros in this module:
9#
10#   proj_version - defines version information for PROJ library
11################################################################################
12
13# Defines version information for PROJ library
14#
15# proj_version(MAJOR major_version MINOR minor_version PATCH patch_level)
16#
17#    MAJOR.MINOR version is used to set SOVERSION
18#
19
20include(CMakeParseArguments)
21
22macro(proj_version)
23  cmake_parse_arguments(THIS_VERSION
24    ""
25    "MAJOR;MINOR;PATCH"
26    ""
27    ${ARGN})
28
29  # Set version components
30  set(${PROJECT_NAME}_VERSION_MAJOR ${THIS_VERSION_MAJOR})
31  set(${PROJECT_NAME}_VERSION_MINOR ${THIS_VERSION_MINOR})
32  set(${PROJECT_NAME}_VERSION_PATCH ${THIS_VERSION_PATCH})
33
34  # Set VERSION string
35  set(${PROJECT_NAME}_VERSION
36    "${${PROJECT_NAME}_VERSION_MAJOR}.\
37${${PROJECT_NAME}_VERSION_MINOR}.\
38${${PROJECT_NAME}_VERSION_PATCH}")
39
40  # Set ABI version string used to name binary output
41  # On Windows, ABI version is specified using binary file name suffix.
42  if(WIN32)
43    set(${PROJECT_NAME}_ABI_VERSION
44      "${${PROJECT_NAME}_VERSION_MAJOR}_\
45${${PROJECT_NAME}_VERSION_MINOR}")
46  endif()
47
48  print_variable(${PROJECT_NAME}_VERSION)
49  if(WIN32)
50    print_variable(${PROJECT_NAME}_ABI_VERSION)
51  endif()
52endmacro()
53