summaryrefslogtreecommitdiffstats
path: root/Tests/Visibility
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2015-05-22 19:24:18 (GMT)
committerBrad King <brad.king@kitware.com>2015-05-22 19:24:18 (GMT)
commit771f1b00dc1e9422e543534ca2ea823c98b3e2be (patch)
treed03ae2d748632c1029d0cedfaf99357e839b174d /Tests/Visibility
parentab55b3b5faac694c28d8725e235923803fb83a8d (diff)
downloadCMake-771f1b00dc1e9422e543534ca2ea823c98b3e2be.zip
CMake-771f1b00dc1e9422e543534ca2ea823c98b3e2be.tar.gz
CMake-771f1b00dc1e9422e543534ca2ea823c98b3e2be.tar.bz2
Tests: Rename Visibility{InlinesHidden =>}
We will soon generalize it to cover other visibility properties.
Diffstat (limited to 'Tests/Visibility')
-rw-r--r--Tests/Visibility/CMakeLists.txt13
-rw-r--r--Tests/Visibility/bar.c1
-rw-r--r--Tests/Visibility/foo.cpp11
-rw-r--r--Tests/Visibility/verify.cmake14
4 files changed, 39 insertions, 0 deletions
diff --git a/Tests/Visibility/CMakeLists.txt b/Tests/Visibility/CMakeLists.txt
new file mode 100644
index 0000000..df75630
--- /dev/null
+++ b/Tests/Visibility/CMakeLists.txt
@@ -0,0 +1,13 @@
+cmake_minimum_required(VERSION 3.2)
+project(Visibility)
+
+add_library(inlines_hidden SHARED foo.cpp bar.c)
+set_property(TARGET inlines_hidden PROPERTY VISIBILITY_INLINES_HIDDEN ON)
+target_compile_options(inlines_hidden PRIVATE -Werror)
+
+add_custom_command(TARGET inlines_hidden POST_BUILD
+ COMMAND ${CMAKE_COMMAND}
+ -DCMAKE_NM=${CMAKE_NM}
+ -DTEST_LIBRARY_PATH=$<TARGET_FILE:inlines_hidden>
+ -P ${CMAKE_CURRENT_SOURCE_DIR}/verify.cmake
+)
diff --git a/Tests/Visibility/bar.c b/Tests/Visibility/bar.c
new file mode 100644
index 0000000..e425999
--- /dev/null
+++ b/Tests/Visibility/bar.c
@@ -0,0 +1 @@
+void bar() {}
diff --git a/Tests/Visibility/foo.cpp b/Tests/Visibility/foo.cpp
new file mode 100644
index 0000000..2b66b69
--- /dev/null
+++ b/Tests/Visibility/foo.cpp
@@ -0,0 +1,11 @@
+class Foo
+{
+public:
+ void bar() {}
+};
+
+void baz()
+{
+ Foo foo;
+ foo.bar();
+}
diff --git a/Tests/Visibility/verify.cmake b/Tests/Visibility/verify.cmake
new file mode 100644
index 0000000..80dd13c
--- /dev/null
+++ b/Tests/Visibility/verify.cmake
@@ -0,0 +1,14 @@
+execute_process(COMMAND ${CMAKE_NM} -D ${TEST_LIBRARY_PATH}
+ RESULT_VARIABLE RESULT
+ OUTPUT_VARIABLE OUTPUT
+ ERROR_VARIABLE ERROR
+)
+
+if(NOT "${RESULT}" STREQUAL "0")
+ message(FATAL_ERROR "nm failed [${RESULT}] [${OUTPUT}] [${ERROR}]")
+endif()
+
+if(${OUTPUT} MATCHES "Foo[^\\n]*bar")
+ message(FATAL_ERROR
+ "Found Foo::bar() which should have been hidden [${OUTPUT}]")
+endif()