summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Antonuk <alan.antonuk@gmail.com>2021-04-02 06:28:05 +0000
committerAlan Antonuk <alan.antonuk@gmail.com>2021-04-01 23:40:05 -0700
commit188d1be3e3498c5843b8f9fc439b828c64af57fd (patch)
tree7b9699e5a71248c9a06453220331b704ef5d2bdb
parentd5bbafae56ddcc3fcbef49b35271b7abab8c2621 (diff)
downloadrabbitmq-c-188d1be3e3498c5843b8f9fc439b828c64af57fd.tar.gz
cmake: use modern version of project() command
This also gets rid of a non-top-level project command that probably shouldn't be used. Signed-off-by: GitHub <noreply@github.com>
-rw-r--r--CMakeLists.txt35
-rw-r--r--cmake/VersionFunctions.cmake21
-rw-r--r--librabbitmq/CMakeLists.txt2
3 files changed, 33 insertions, 25 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 473642a..2b330f4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,15 +4,6 @@ if(${CMAKE_VERSION} VERSION_LESS 3.12)
cmake_policy(VERSION ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION})
endif()
-project(rabbitmq-c "C")
-
-set(CMAKE_C_STANDARD 90)
-set(CMAKE_C_STANDARD_REQUIRED ON)
-set(CMAKE_C_EXTENSIONS ON)
-
-set(CMAKE_C_VISIBILITY_PRESET hidden)
-set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
-
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
# Follow all steps below in order to calculate new ABI version when updating the library
@@ -27,23 +18,21 @@ set(RMQ_SOVERSION_CURRENT 9)
set(RMQ_SOVERSION_REVISION 1)
set(RMQ_SOVERSION_AGE 5)
-math(EXPR RMQ_SOVERSION_MAJOR "${RMQ_SOVERSION_CURRENT} - ${RMQ_SOVERSION_AGE}")
-math(EXPR RMQ_SOVERSION_MINOR "${RMQ_SOVERSION_AGE}")
-math(EXPR RMQ_SOVERSION_PATCH "${RMQ_SOVERSION_REVISION}")
-
-set(RMQ_VERSION ${RMQ_SOVERSION_MAJOR}.${RMQ_SOVERSION_MINOR}.${RMQ_SOVERSION_PATCH})
-set(RMQ_SOVERSION ${RMQ_SOVERSION_MAJOR})
+include(VersionFunctions)
+get_library_version(VERSION)
+compute_soversion(${RMQ_SOVERSION_CURRENT} ${RMQ_SOVERSION_REVISION} ${RMQ_SOVERSION_AGE} RMQ_VERSION RMQ_SOVERSION)
-file(STRINGS librabbitmq/amqp.h _API_VERSION_MAJOR REGEX "^#define AMQP_VERSION_MAJOR [0-9]+$")
-file(STRINGS librabbitmq/amqp.h _API_VERSION_MINOR REGEX "^#define AMQP_VERSION_MINOR [0-9]+$")
-file(STRINGS librabbitmq/amqp.h _API_VERSION_PATCH REGEX "^#define AMQP_VERSION_PATCH [0-9]+$")
+project(rabbitmq-c
+ VERSION ${VERSION}
+ DESCRIPTION "C RabbitMQ AMQP client library"
+ LANGUAGES C)
-string(REGEX MATCH "[0-9]+" _API_VERSION_MAJOR ${_API_VERSION_MAJOR})
-string(REGEX MATCH "[0-9]+" _API_VERSION_MINOR ${_API_VERSION_MINOR})
-string(REGEX MATCH "[0-9]+" _API_VERSION_PATCH ${_API_VERSION_PATCH})
+set(CMAKE_C_STANDARD 90)
+set(CMAKE_C_STANDARD_REQUIRED ON)
+set(CMAKE_C_EXTENSIONS ON)
-# VERSION to match what is in autotools
-set(VERSION ${_API_VERSION_MAJOR}.${_API_VERSION_MINOR}.${_API_VERSION_PATCH})
+set(CMAKE_C_VISIBILITY_PRESET hidden)
+set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)
set(default_build_type "Release")
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
diff --git a/cmake/VersionFunctions.cmake b/cmake/VersionFunctions.cmake
new file mode 100644
index 0000000..27ec3a7
--- /dev/null
+++ b/cmake/VersionFunctions.cmake
@@ -0,0 +1,21 @@
+function(get_library_version VERSION_ARG)
+ file(STRINGS librabbitmq/amqp.h _API_VERSION_MAJOR REGEX "^#define AMQP_VERSION_MAJOR [0-9]+$")
+ file(STRINGS librabbitmq/amqp.h _API_VERSION_MINOR REGEX "^#define AMQP_VERSION_MINOR [0-9]+$")
+ file(STRINGS librabbitmq/amqp.h _API_VERSION_PATCH REGEX "^#define AMQP_VERSION_PATCH [0-9]+$")
+
+ string(REGEX MATCH "[0-9]+" _API_VERSION_MAJOR ${_API_VERSION_MAJOR})
+ string(REGEX MATCH "[0-9]+" _API_VERSION_MINOR ${_API_VERSION_MINOR})
+ string(REGEX MATCH "[0-9]+" _API_VERSION_PATCH ${_API_VERSION_PATCH})
+
+ # VERSION to match what is in autotools
+ set(${VERSION_ARG} ${_API_VERSION_MAJOR}.${_API_VERSION_MINOR}.${_API_VERSION_PATCH} PARENT_SCOPE)
+endfunction()
+
+function(compute_soversion CURRENT REVISION AGE VERSION SOVERSION)
+ math(EXPR MAJOR "${CURRENT} - ${AGE}")
+ math(EXPR MINOR "${AGE}")
+ math(EXPR PATCH "${REVISION}")
+
+ set(${VERSION} ${MAJOR}.${MINOR}.${PATCH} PARENT_SCOPE)
+ set(${SOVERSION} ${MAJOR} PARENT_SCOPE)
+endfunction() \ No newline at end of file
diff --git a/librabbitmq/CMakeLists.txt b/librabbitmq/CMakeLists.txt
index d8dcd26..ba9edf4 100644
--- a/librabbitmq/CMakeLists.txt
+++ b/librabbitmq/CMakeLists.txt
@@ -1,5 +1,3 @@
-project(librabbitmq "C")
-
if (REGENERATE_AMQP_FRAMING)
set(AMQP_CODEGEN_PY "${CMAKE_CURRENT_BINARY_DIR}/amqp_codegen.py")
set(CODEGEN_PY "${CMAKE_CURRENT_BINARY_DIR}/codegen.py")