summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRalf Habacker <ralf.habacker@freenet.de>2018-10-25 20:13:17 +0200
committerRalf Habacker <ralf.habacker@freenet.de>2018-10-25 20:13:17 +0200
commitf7e9b8a7379ce28e68bf1bd57e6f8d30602b938d (patch)
tree59e0005a49f0869f4f5b6e56c640ff4c41ea8070
parente87a3ba5601943687b09a5f119b9a637ce955b93 (diff)
downloaddbus-f7e9b8a7379ce28e68bf1bd57e6f8d30602b938d.tar.gz
Revert "Refactor cmake checks for DBUS_VA_COPY and DBUS_VA_COPY_ARRAY"
This reverts commit bd6ece893a45e8103a696ee64adc1baa2096c422, which was added without a final review.
-rw-r--r--cmake/ConfigureChecks.cmake114
-rw-r--r--cmake/config.h.cmake16
2 files changed, 61 insertions, 69 deletions
diff --git a/cmake/ConfigureChecks.cmake b/cmake/ConfigureChecks.cmake
index 9f2008a1..4afa5bd0 100644
--- a/cmake/ConfigureChecks.cmake
+++ b/cmake/ConfigureChecks.cmake
@@ -79,69 +79,6 @@ epoll_create1 (EPOLL_CLOEXEC);
}" DBUS_HAVE_LINUX_EPOLL)
CHECK_C_SOURCE_COMPILES("
-#include <stdarg.h>
-#include <stdlib.h>
-static void f (int i, ...) {
- va_list args1, args2;
- va_start (args1, i);
- va_copy (args2, args1);
- if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
- exit (1);
- va_end (args1); va_end (args2);
-}
-int main() {
- f (0, 42);
- return 0;
-}
-" HAVE_VA_COPY)
-
-CHECK_C_SOURCE_COMPILES("
-#include <stdarg.h>
-#include <stdlib.h>
-static void f (int i, ...) {
- va_list args1, args2;
- va_start (args1, i);
- __va_copy (args2, args1);
- if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
- exit (1);
- va_end (args1); va_end (args2);
-}
-int main() {
- f (0, 42);
- return 0;
-}
-" HAVE___VA_COPY)
-
-if(HAVE_VA_COPY)
- set(DBUS_VA_COPY va_copy CACHE STRING "va_copy function")
-elseif(HAVE___VA_COPY)
- set(DBUS_VA_COPY __va_copy CACHE STRING "va_copy function")
-else()
- # this is used for msvc < 2013
- set(DBUS_VA_COPY _DBUS_VA_COPY_ASSIGN)
-endif()
-
-CHECK_C_SOURCE_COMPILES("
-#include <stdarg.h>
-#include <stdlib.h>
-static void f (int i, ...) {
- va_list args1, args2;
- va_start (args1, i);
- args2 = args1;
- if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
- exit (1);
- va_end (args1); va_end (args2);
-}
-int main() {
- f (0, 42);
- return 0;
-}
-" VA_COPY_AS_ARRAY)
-if (NOT VA_COPY_AS_ARRAY)
- set(DBUS_VA_COPY_AS_ARRAY 1 CACHE STRING "'va_lists' cannot be copies as values")
-endif()
-
-CHECK_C_SOURCE_COMPILES("
int main() {
int a = 4;
int b = __sync_sub_and_fetch(&a, 4);
@@ -245,3 +182,54 @@ endif(SIZEOF_INT EQUAL 2)
find_program(DOXYGEN doxygen)
find_program(XMLTO xmlto)
+
+if(MSVC)
+ SET(DBUS_VA_COPY_FUNC "_DBUS_VA_COPY_ASSIGN")
+else(MSVC)
+write_file("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/cmake_try_compile.c" "#include <stdarg.h>
+ #include <stdlib.h>
+ static void f (int i, ...) {
+ va_list args1, args2;
+ va_start (args1, i);
+ va_copy (args2, args1);
+ if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+ exit (1);
+ va_end (args1); va_end (args2);
+ }
+ int main() {
+ f (0, 42);
+ return 0;
+ }
+")
+try_compile(DBUS_HAVE_VA_COPY
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/cmake_try_compile.c)
+
+if(DBUS_HAVE_VA_COPY)
+ SET(DBUS_VA_COPY_FUNC va_copy CACHE STRING "va_copy function")
+else(DBUS_HAVE_VA_COPY)
+ write_file("${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/cmake_try_compile.c" "#include <stdarg.h>
+ #include <stdlib.h>
+ static void f (int i, ...) {
+ va_list args1, args2;
+ va_start (args1, i);
+ __va_copy (args2, args1);
+ if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+ exit (1);
+ va_end (args1); va_end (args2);
+ }
+ int main() {
+ f (0, 42);
+ return 0;
+ }
+ ")
+ try_compile(DBUS_HAVE___VA_COPY
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/cmake_try_compile.c)
+ if(DBUS_HAVE___VA_COPY)
+ SET(DBUS_VA_COPY_FUNC __va_copy CACHE STRING "va_copy function")
+ else(DBUS_HAVE___VA_COPY)
+ SET(DBUS_VA_COPY_AS_ARRAY "1" CACHE STRING "'va_lists' cannot be copies as values")
+ endif(DBUS_HAVE___VA_COPY)
+endif(DBUS_HAVE_VA_COPY)
+endif(MSVC) # _not_ MSVC
diff --git a/cmake/config.h.cmake b/cmake/config.h.cmake
index af19a805..1c66118e 100644
--- a/cmake/config.h.cmake
+++ b/cmake/config.h.cmake
@@ -71,14 +71,18 @@
# define DBUS_ENABLE_X11_AUTOLAUNCH 1
#endif
-/* A 'va_copy' style function */
-#cmakedefine DBUS_VA_COPY @DBUS_VA_COPY@
-
-/* for msvc */
#define _DBUS_VA_COPY_ASSIGN(a1,a2) { a1 = a2; }
-/* 'va_lists' cannot be copies as values */
-#cmakedefine DBUS_VA_COPY_AS_ARRAY 1
+#cmakedefine DBUS_VA_COPY_FUNC
+#if (defined DBUS_VA_COPY_FUNC)
+# define DBUS_VA_COPY @DBUS_VA_COPY_FUNC@
+#endif
+
+#ifdef DBUS_VA_COPY_FUNC
+#undef DBUS_VA_COPY_FUNC
+#endif
+
+#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@