mirror of
https://github.com/Kitware/CMake.git
synced 2026-01-08 14:50:10 -06:00
ccmake: Fix compilation with ncurses on Solaris
On Solaris the ncurses header may define an `__attribute__` macro.
This breaks C++ headers that use `__attribute__(...)` syntax.
Somehow it causes references to unresolved symbols:
__gthrw_pthread_once
__gthrw_pthread_mutex_lock
__gthrw_pthread_mutex_unlock
instead of references to the correct symbols:
pthread_once
pthread_mutex_lock
pthread_mutex_unlock
Detect this case and undefine the `__attribute__` macro after
including the curses headers.
This commit is contained in:
@@ -5,6 +5,11 @@
|
||||
|
||||
#include "cmConfigure.h" // IWYU pragma: keep
|
||||
|
||||
// Record whether __attribute__ is currently defined. See purpose below.
|
||||
#ifndef __attribute__
|
||||
#define cm_no__attribute__
|
||||
#endif
|
||||
|
||||
#if defined(__hpux)
|
||||
#define _BOOL_DEFINED
|
||||
#include <sys/time.h>
|
||||
@@ -29,4 +34,12 @@ inline void curses_clear()
|
||||
#undef erase
|
||||
#undef clear
|
||||
|
||||
// The curses headers on some platforms (e.g. Solaris) may
|
||||
// define __attribute__ as a macro. This breaks C++ headers
|
||||
// in some cases, so undefine it now.
|
||||
#if defined(cm_no__attribute__) && defined(__attribute__)
|
||||
#undef __attribute__
|
||||
#endif
|
||||
#undef cm_no__attribute__
|
||||
|
||||
#endif // cmCursesStandardIncludes_h
|
||||
|
||||
Reference in New Issue
Block a user