From 4fc47424774657a44fc6ac118d1d1abb360db38c Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 23 Apr 2015 10:53:39 -0400 Subject: [PATCH] Tests: Fix ExportImport on AIX with GCC The iface_test_bld gets the excludedFromAll include directory with "-isystem" because it is added indirectly through an imported target. On AIX with GCC the -isystem flag causes sources to be preprocessed as: # 3 "/.../excludedFromAll.h" 2 3 4 The flags after the file name are documented here: https://gcc.gnu.org/onlinedocs/cpp/Preprocessor-Output.html and the "4" flag says that following content is extern "C". This causes the excludedFromAll function to be declared as a C symbol and not mangled for C++, which fails to link later because the symbol is really provided as C++. Work around this by setting the NO_SYSTEM_FROM_IMPORTED target property on iface_test_bld. Somehow iface_test_exp does not end up with -isystem so we do not need this workaround for that target. --- Tests/ExportImport/Import/A/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/ExportImport/Import/A/CMakeLists.txt b/Tests/ExportImport/Import/A/CMakeLists.txt index ced7b03eb..17d983a75 100644 --- a/Tests/ExportImport/Import/A/CMakeLists.txt +++ b/Tests/ExportImport/Import/A/CMakeLists.txt @@ -255,6 +255,7 @@ add_subdirectory(excludedFromAll) add_executable(iface_test_bld iface_test.cpp) target_link_libraries(iface_test_bld bld_testSharedLibDepends) +set_property(TARGET iface_test_bld PROPERTY NO_SYSTEM_FROM_IMPORTED 1) set_property(TARGET bld_testSharedLibRequired APPEND PROPERTY LINK_INTERFACE_LIBRARIES