diff options
author | Nils Gladitz <nilsgladitz@gmail.com> | 2014-01-31 15:09:06 (GMT) |
---|---|---|
committer | Nils Gladitz <nilsgladitz@gmail.com> | 2014-02-01 08:55:24 (GMT) |
commit | efdcebddbdc47e91254461da40cec2be869a0940 (patch) | |
tree | 7af9af19107e401314c32e71ee28f413ef700c49 /Tests/VisibilityInlinesHidden | |
parent | f35c01e2a5e3834094fbd98eccfc2a686872fceb (diff) | |
download | CMake-efdcebddbdc47e91254461da40cec2be869a0940.zip CMake-efdcebddbdc47e91254461da40cec2be869a0940.tar.gz CMake-efdcebddbdc47e91254461da40cec2be869a0940.tar.bz2 |
VisibilityInlinesHidden: only apply -fvisibility-inlines-hidden to C++ sources
Diffstat (limited to 'Tests/VisibilityInlinesHidden')
-rw-r--r-- | Tests/VisibilityInlinesHidden/CMakeLists.txt | 14 | ||||
-rw-r--r-- | Tests/VisibilityInlinesHidden/bar.c | 1 | ||||
-rw-r--r-- | Tests/VisibilityInlinesHidden/foo.cpp | 11 | ||||
-rw-r--r-- | Tests/VisibilityInlinesHidden/verify.cmake | 14 |
4 files changed, 40 insertions, 0 deletions
diff --git a/Tests/VisibilityInlinesHidden/CMakeLists.txt b/Tests/VisibilityInlinesHidden/CMakeLists.txt new file mode 100644 index 0000000..8ebc39c --- /dev/null +++ b/Tests/VisibilityInlinesHidden/CMakeLists.txt @@ -0,0 +1,14 @@ +cmake_minimum_required(VERSION 2.8) + +project(VisibilityInlinesHidden) + +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/VisibilityInlinesHidden/bar.c b/Tests/VisibilityInlinesHidden/bar.c new file mode 100644 index 0000000..e425999 --- /dev/null +++ b/Tests/VisibilityInlinesHidden/bar.c @@ -0,0 +1 @@ +void bar() {} diff --git a/Tests/VisibilityInlinesHidden/foo.cpp b/Tests/VisibilityInlinesHidden/foo.cpp new file mode 100644 index 0000000..2b66b69 --- /dev/null +++ b/Tests/VisibilityInlinesHidden/foo.cpp @@ -0,0 +1,11 @@ +class Foo +{ +public: + void bar() {} +}; + +void baz() +{ + Foo foo; + foo.bar(); +} diff --git a/Tests/VisibilityInlinesHidden/verify.cmake b/Tests/VisibilityInlinesHidden/verify.cmake new file mode 100644 index 0000000..80dd13c --- /dev/null +++ b/Tests/VisibilityInlinesHidden/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() |