diff options
author | Ralf Habacker <ralf.habacker@freenet.de> | 2018-10-25 20:13:17 +0200 |
---|---|---|
committer | Ralf Habacker <ralf.habacker@freenet.de> | 2018-10-25 20:13:17 +0200 |
commit | f7e9b8a7379ce28e68bf1bd57e6f8d30602b938d (patch) | |
tree | 59e0005a49f0869f4f5b6e56c640ff4c41ea8070 | |
parent | e87a3ba5601943687b09a5f119b9a637ce955b93 (diff) | |
download | dbus-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.cmake | 114 | ||||
-rw-r--r-- | cmake/config.h.cmake | 16 |
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@ |