aboutsummaryrefslogtreecommitdiff
path: root/tests/freealut/admin/CMakeModules/FindCompilerVisibility.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'tests/freealut/admin/CMakeModules/FindCompilerVisibility.cmake')
-rw-r--r--tests/freealut/admin/CMakeModules/FindCompilerVisibility.cmake37
1 files changed, 37 insertions, 0 deletions
diff --git a/tests/freealut/admin/CMakeModules/FindCompilerVisibility.cmake b/tests/freealut/admin/CMakeModules/FindCompilerVisibility.cmake
new file mode 100644
index 00000000..2d5282bd
--- /dev/null
+++ b/tests/freealut/admin/CMakeModules/FindCompilerVisibility.cmake
@@ -0,0 +1,37 @@
+SET(VAR HAVE_VISIBILITY)
+
+IF(NOT DEFINED ${VAR})
+ SET(SOURCE
+"void __attribute__((visibility(\"default\"))) test() {}
+#ifdef __INTEL_COMPILER
+#error ICC breaks with binutils and visibility
+#endif
+int main(){}
+")
+ FILE(WRITE "${CMAKE_BINARY_DIR}/CMakeTmp/src.c" "${SOURCE}")
+
+ MESSAGE(STATUS "Performing Test ${VAR}")
+ TRY_COMPILE(${VAR}
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}/CMakeTmp/src.c
+ CMAKE_FLAGS
+ "-DCOMPILE_DEFINITIONS:STRING=-fvisibility=hidden"
+ OUTPUT_VARIABLE OUTPUT)
+
+ WRITE_FILE(${CMAKE_BINARY_DIR}/CMakeOutput.log
+ "Performing manual C SOURCE FILE Test ${VAR} with the following output:\n"
+ "${OUTPUT}\n"
+ "Source file was:\n${SOURCE}\n" APPEND)
+
+ SET(${VAR} ${${VAR}} CACHE INTERNAL "Test Visibility")
+ IF(${VAR})
+ MESSAGE(STATUS "Performing Test ${VAR} - Success")
+ ELSE(${VAR})
+ MESSAGE(STATUS "Performing Test ${VAR} - Failed")
+ ENDIF(${VAR})
+ENDIF(NOT DEFINED ${VAR})
+
+IF(${VAR})
+ ADD_DEFINITIONS(-fvisibility=hidden)
+ ADD_DEFINITIONS(-DHAVE_GCC_VISIBILITY)
+ENDIF(${VAR})