diff --git a/Source/CursesDialog/form/CMakeLists.txt b/Source/CursesDialog/form/CMakeLists.txt index 618aef2f1..2ec21eca7 100644 --- a/Source/CursesDialog/form/CMakeLists.txt +++ b/Source/CursesDialog/form/CMakeLists.txt @@ -50,3 +50,8 @@ TARGET_LINK_LIBRARIES(cmForm ${CURSES_LIBRARY}) IF(CURSES_EXTRA_LIBRARY) TARGET_LINK_LIBRARIES(cmForm ${CURSES_EXTRA_LIBRARY}) ENDIF(CURSES_EXTRA_LIBRARY) + +# See internal_stdio_core.h.in for explanation. +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/internal_stdio_core.h.in + ${CMAKE_CURRENT_BINARY_DIR}/internal/stdio_core.h + @ONLY IMMEDIATE) diff --git a/Source/CursesDialog/form/form.h b/Source/CursesDialog/form/form.h index 197b5101f..cb291c48e 100644 --- a/Source/CursesDialog/form/form.h +++ b/Source/CursesDialog/form/form.h @@ -39,27 +39,7 @@ #include #include - #include -#ifdef __cplusplus -#ifndef va_list -/* - Some compilers move va_list into the std:: namespace and there is no way to - tell that this has been done. Playing with things being included before or - after stdarg.h does not solve things because we do not have control over what - the user does. - This hack solves this problem by moving va_list to our own namespace that is - local for forms. -*/ -namespace std {} /* Required for platforms that do not have std:: */ -namespace cmakeForms_VA_LIST -{ - using namespace std; - typedef va_list hack_va_list; -} -#define va_list cmakeForms_VA_LIST::hack_va_list -#endif /* va_list */ -#endif /* __cplusplus */ #ifdef __cplusplus extern "C" { diff --git a/Source/CursesDialog/form/internal_stdio_core.h.in b/Source/CursesDialog/form/internal_stdio_core.h.in new file mode 100644 index 000000000..ae5910c3b --- /dev/null +++ b/Source/CursesDialog/form/internal_stdio_core.h.in @@ -0,0 +1,5 @@ +/* This is a hack to work around a bug in MIPSpro 7.4 on some SGIs. + We need to include stdarg.h before the stdio core to avoid putting + va_list in the std namespace and never in the global namespace. */ +#include +#include_next diff --git a/Utilities/cmxmlrpc/CMakeLists.txt b/Utilities/cmxmlrpc/CMakeLists.txt index f23bf97ad..c13b7806d 100644 --- a/Utilities/cmxmlrpc/CMakeLists.txt +++ b/Utilities/cmxmlrpc/CMakeLists.txt @@ -77,6 +77,11 @@ CONFIGURE_FILE( "${CMAKE_CURRENT_BINARY_DIR}/xmlrpc_amconfig.h" ) +# See internal_stdio_core.h.in for explanation. +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/internal_stdio_core.h.in + ${CMAKE_CURRENT_BINARY_DIR}/internal/stdio_core.h + @ONLY IMMEDIATE) + SET(xmlrpc_SRCS #XmlRpcCpp.cpp xmlrpc_array.c diff --git a/Utilities/cmxmlrpc/internal_stdio_core.h.in b/Utilities/cmxmlrpc/internal_stdio_core.h.in new file mode 100644 index 000000000..ae5910c3b --- /dev/null +++ b/Utilities/cmxmlrpc/internal_stdio_core.h.in @@ -0,0 +1,5 @@ +/* This is a hack to work around a bug in MIPSpro 7.4 on some SGIs. + We need to include stdarg.h before the stdio core to avoid putting + va_list in the std namespace and never in the global namespace. */ +#include +#include_next diff --git a/Utilities/cmxmlrpc/xmlrpc.h b/Utilities/cmxmlrpc/xmlrpc.h index fdea16197..69160a200 100644 --- a/Utilities/cmxmlrpc/xmlrpc.h +++ b/Utilities/cmxmlrpc/xmlrpc.h @@ -29,26 +29,6 @@ #include #include -#ifdef __cplusplus -#ifndef va_list -/* - Some compilers move va_list into the std:: namespace and there is no way to - tell that this has been done. Playing with things being included before or - after stdarg.h does not solve things because we do not have control over what - the user does. - This hack solves this problem by moving va_list to our own namespace that is - local for forms. -*/ -namespace std {} /* Required for platforms that do not have std:: */ -namespace xmlrpc_VA_LIST -{ - using namespace std; - typedef va_list hack_va_list; -} -#define va_list xmlrpc_VA_LIST::hack_va_list -#endif /* va_list */ -#endif /* __cplusplus */ - #include #ifdef HAVE_UNICODE_WCHAR