diff options
-rw-r--r-- | CMakeLists.txt | 3 | ||||
-rw-r--r-- | OpenAL32/OpenAL32.c | 2 | ||||
-rw-r--r-- | config.h.in | 3 |
3 files changed, 8 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 2aceb1ab..3084042c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -71,6 +71,9 @@ ELSE() # Set visibility options if available IF(NOT "${WIN32}") + CHECK_C_SOURCE_COMPILES("int foo() __attribute__((destructor)); + int main() {return 0;}" HAVE_GCC_DESTRUCTOR) + CHECK_C_SOURCE_COMPILES("int foo() __attribute__((visibility(\"default\"))); int main() {return 0;}" HAVE_GCC_VISIBILITY) IF("${HAVE_GCC_VISIBILITY}") diff --git a/OpenAL32/OpenAL32.c b/OpenAL32/OpenAL32.c index dab7ec31..b638d945 100644 --- a/OpenAL32/OpenAL32.c +++ b/OpenAL32/OpenAL32.c @@ -46,6 +46,7 @@ BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved) return TRUE; } #else +#ifdef HAVE_GCC_DESTRUCTOR static void my_deinit() __attribute__((destructor)); static void my_deinit() { @@ -59,3 +60,4 @@ static void my_deinit() DeleteCriticalSection(&g_mutex); } #endif +#endif diff --git a/config.h.in b/config.h.in index d8c26def..931d16ae 100644 --- a/config.h.in +++ b/config.h.in @@ -40,4 +40,7 @@ /* Define to the size of a void pointer type */ #cmakedefine SIZEOF_VOIDP ${SIZEOF_VOIDP} +/* Define if we have GCC's destructor attribute */ +#cmakedefine HAVE_GCC_DESTRUCTOR + #endif |