diff options
author | Stephen Kelly <steveire@gmail.com> | 2013-09-18 15:30:55 (GMT) |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2013-10-09 22:33:33 (GMT) |
commit | 617ee7c567128edaeba3a4947c48249182d345c5 (patch) | |
tree | 5eec24c9c4d185b865366218bd7265ee6fd5f4c1 | |
parent | 7e4910fe47d667e059e42ac6395b0f4726f17064 (diff) | |
download | CMake-617ee7c567128edaeba3a4947c48249182d345c5.zip CMake-617ee7c567128edaeba3a4947c48249182d345c5.tar.gz CMake-617ee7c567128edaeba3a4947c48249182d345c5.tar.bz2 |
Add a test for SYSTEM headers in INTERFACE libraries.
3 files changed, 51 insertions, 0 deletions
diff --git a/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt b/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt index aec6ff9..1f5c93b 100644 --- a/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt +++ b/Tests/IncludeDirectories/SystemIncludeDirectories/CMakeLists.txt @@ -17,3 +17,31 @@ target_include_directories(upstream SYSTEM PUBLIC add_library(consumer consumer.cpp) target_link_libraries(consumer upstream) target_compile_options(consumer PRIVATE -Werror=unused-variable) + +add_library(iface IMPORTED INTERFACE) +set_property(TARGET iface PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_CURRENT_SOURCE_DIR}/systemlib_header_only") + +add_library(imported_consumer imported_consumer.cpp) +target_link_libraries(imported_consumer iface) +target_compile_options(imported_consumer PRIVATE -Werror=unused-variable) + +macro(do_try_compile error_option) + set(TC_ARGS + IFACE_TRY_COMPILE_${error_option} + "${CMAKE_CURRENT_BINARY_DIR}/try_compile_iface" "${CMAKE_CURRENT_SOURCE_DIR}/imported_consumer.cpp" + LINK_LIBRARIES iface + ) + if (${error_option} STREQUAL WITH_ERROR) + list(APPEND TC_ARGS COMPILE_DEFINITIONS -Werror=unused-variable) + endif() + try_compile(${TC_ARGS}) +endmacro() + +do_try_compile(NO_ERROR) +if (NOT IFACE_TRY_COMPILE_NO_ERROR) + message(SEND_ERROR "try_compile failed with imported target.") +endif() +do_try_compile(WITH_ERROR) +if (NOT IFACE_TRY_COMPILE_WITH_ERROR) + message(SEND_ERROR "try_compile failed with imported target with error option.") +endif() diff --git a/Tests/IncludeDirectories/SystemIncludeDirectories/imported_consumer.cpp b/Tests/IncludeDirectories/SystemIncludeDirectories/imported_consumer.cpp new file mode 100644 index 0000000..1dbe819 --- /dev/null +++ b/Tests/IncludeDirectories/SystemIncludeDirectories/imported_consumer.cpp @@ -0,0 +1,7 @@ + +#include "systemlib.h" + +int main() +{ + return systemlib(); +} diff --git a/Tests/IncludeDirectories/SystemIncludeDirectories/systemlib_header_only/systemlib.h b/Tests/IncludeDirectories/SystemIncludeDirectories/systemlib_header_only/systemlib.h new file mode 100644 index 0000000..93622c4 --- /dev/null +++ b/Tests/IncludeDirectories/SystemIncludeDirectories/systemlib_header_only/systemlib.h @@ -0,0 +1,16 @@ + +#ifndef SYSTEMLIB_H +#define SYSTEMLIB_H + +int systemlib() +{ + return 0; +} + +int unusedFunc() +{ + int unused; + return systemlib(); +} + +#endif |