]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Keep cmake defines GLIB_VERSION_... in sync with autotools.
authorRalf Habacker <ralf.habacker@freenet.de>
Tue, 3 Mar 2015 12:17:27 +0000 (13:17 +0100)
committerRalf Habacker <ralf.habacker@freenet.de>
Tue, 3 Mar 2015 15:37:32 +0000 (16:37 +0100)
This patch adds autotools related cmake macros autoinit() and autodefine().

Bug: https://bugs.freedesktop.org/show_bug.cgi?id=89284
Reviewed-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
cmake/CMakeLists.txt
cmake/config.h.cmake
cmake/modules/MacrosAutotools.cmake

index adc6d4b2b02f54150bb1dc5c64c7b762fa7c8266..69221296b7bf37ac93e579ade0f18f9238e07525 100644 (file)
@@ -15,7 +15,8 @@ endif(COMMAND cmake_policy)
 
 # detect version
 include(MacrosAutotools)
-autoversion(../configure.ac dbus)
+autoinit(../configure.ac)
+autoversion(dbus)
 # used by file version info
 set (DBUS_PATCH_VERSION "0")
 
@@ -183,6 +184,11 @@ if (UNIX AND NOT DBUS_DISABLE_ASSERT)
        add_definitions(-DDBUS_BUILT_R_DYNAMIC)
 endif (UNIX AND NOT DBUS_DISABLE_ASSERT)
 
+if(DBUS_WITH_GLIB)
+    autodefine(GLIB_VERSION_MIN_REQUIRED)
+    autodefine(GLIB_VERSION_MAX_ALLOWED)
+endif()
+
 SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG}  -D_DEBUG")
 
 #########################################################################
index cd4720c9a023ca6ec2be50c6dee9a938ac02d329..88c2caa31325c1de97410b657f9a7d454780f575 100644 (file)
 
 #cmakedefine DBUS_VA_COPY_AS_ARRAY @DBUS_VA_COPY_AS_ARRAY@
 
+#cmakedefine DBUS_WITH_GLIB 1
+#cmakedefine GLIB_VERSION_MIN_REQUIRED @GLIB_VERSION_MIN_REQUIRED@
+#cmakedefine GLIB_VERSION_MAX_ALLOWED  @GLIB_VERSION_MAX_ALLOWED@
+
 // headers
 /* Define to 1 if you have dirent.h */
 #cmakedefine   HAVE_DIRENT_H 1
index 2b1c59d4c98e2f29ab8efc393f4b0d1edc90bbba..a218db9a0d24c754ac1f5137b28737035c8a11d1 100644 (file)
@@ -1,6 +1,21 @@
 #
+# cmake package for autotools support
+#
 # @Author Ralf Habacker
 # 
+
+#
+# load autotools configure file into an internal list named _configure_ac
+#
+macro(autoinit config)
+    set(_configure_ac_name ${config})
+    file(READ ${config} _configure_ac_raw)
+    # Convert file contents into a CMake list (where each element in the list
+    # is one line of the file)
+    STRING(REGEX REPLACE ";" "\\\\;" _configure_ac "${_configure_ac_raw}")
+    STRING(REGEX REPLACE "\n" ";" _configure_ac "${_configure_ac}")
+endmacro()
+
 # extracts version information from autoconf config file
 # and set related cmake variables
 # 
 #   ${prefix}_LIBRARY_REVISION
 #   ${prefix}_LIBRARY_CURRENT
 # 
-macro(autoversion config prefix)
-       file (READ ${config} _configure_ac)
-       string(TOUPPER ${prefix} prefix_upper)
-       string (REGEX REPLACE ".*${prefix}_major_version], .([0-9]+).*" "\\1" ${prefix_upper}_MAJOR_VERSION ${_configure_ac})
-       string (REGEX REPLACE ".*${prefix}_minor_version], .([0-9]+).*" "\\1" ${prefix_upper}_MINOR_VERSION ${_configure_ac})
-       string (REGEX REPLACE ".*${prefix}_micro_version], .([0-9]+).*" "\\1" ${prefix_upper}_MICRO_VERSION ${_configure_ac})
-       set (${prefix_upper}_VERSION ${${prefix_upper}_MAJOR_VERSION}.${${prefix_upper}_MINOR_VERSION}.${${prefix_upper}_MICRO_VERSION})
-       set (${prefix_upper}_VERSION_STRING "${${prefix_upper}_VERSION}")
-       string (REGEX REPLACE ".*LT_AGE=([0-9]+).*" "\\1" ${prefix_upper}_LIBRARY_AGE ${_configure_ac})
-       string (REGEX REPLACE ".*LT_CURRENT=([0-9]+).*" "\\1" ${prefix_upper}_LIBRARY_CURRENT ${_configure_ac})
-       string (REGEX REPLACE ".*LT_REVISION=([0-9]+).*" "\\1" ${prefix_upper}_LIBRARY_REVISION ${_configure_ac})
+macro(autoversion prefix)
+    string(TOUPPER ${prefix} prefix_upper)
+    string (REGEX REPLACE ".*${prefix}_major_version], .([0-9]+).*" "\\1" ${prefix_upper}_MAJOR_VERSION ${_configure_ac_raw})
+    string (REGEX REPLACE ".*${prefix}_minor_version], .([0-9]+).*" "\\1" ${prefix_upper}_MINOR_VERSION ${_configure_ac_raw})
+    string (REGEX REPLACE ".*${prefix}_micro_version], .([0-9]+).*" "\\1" ${prefix_upper}_MICRO_VERSION ${_configure_ac_raw})
+    set (${prefix_upper}_VERSION ${${prefix_upper}_MAJOR_VERSION}.${${prefix_upper}_MINOR_VERSION}.${${prefix_upper}_MICRO_VERSION})
+    set (${prefix_upper}_VERSION_STRING "${${prefix_upper}_VERSION}")
+    string (REGEX REPLACE ".*LT_AGE=([0-9]+).*" "\\1" ${prefix_upper}_LIBRARY_AGE ${_configure_ac_raw})
+    string (REGEX REPLACE ".*LT_CURRENT=([0-9]+).*" "\\1" ${prefix_upper}_LIBRARY_CURRENT ${_configure_ac_raw})
+    string (REGEX REPLACE ".*LT_REVISION=([0-9]+).*" "\\1" ${prefix_upper}_LIBRARY_REVISION ${_configure_ac_raw})
 endmacro()
 
 #
@@ -87,6 +101,21 @@ macro(autopackage name version url support_url)
 ")
 endmacro(autopackage)
 
+#
+# define a cmake variable from autotools AC_DEFINE statement
+#
+macro(autodefine name)
+    foreach(line ${_configure_ac})
+        if(line MATCHES ".*AC_DEFINE(.*${name}.*).*")
+            string (REGEX REPLACE ".*AC_DEFINE(.*).*" "\\1" value ${line})
+            string (REGEX REPLACE ".*,(.*),.*" "\\1" value2 ${value})
+            string (REPLACE "[" "" value3 ${value2})
+            string (REPLACE "]" "" value4 ${value3})
+            set(${name} ${value4})
+        endif()
+    endforeach()
+endmacro()
+
 #
 # parses config.h template and create cmake equivalent 
 # not implemented yet