From bb412d009a8496f9b34b0289aa568ee282734bfb Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Wed, 11 Jul 2012 17:06:37 +0200 Subject: GenerateExportHeader: Add newlines to separate the compiler output. Make the error logs more readable. --- Tests/Module/GenerateExportHeader/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'Tests/Module') diff --git a/Tests/Module/GenerateExportHeader/CMakeLists.txt b/Tests/Module/GenerateExportHeader/CMakeLists.txt index 4a5b1cb5a3..454f37a6d7 100644 --- a/Tests/Module/GenerateExportHeader/CMakeLists.txt +++ b/Tests/Module/GenerateExportHeader/CMakeLists.txt @@ -23,13 +23,13 @@ set( CMAKE_INCLUDE_CURRENT_DIR ON ) macro(TEST_FAIL value msg) if (${value}) - message (SEND_ERROR "Test fail:" ${msg} ${Out} ) + message (SEND_ERROR "Test fail:" "${msg}\n" ${Out} ) endif () endmacro() macro(TEST_PASS value msg) if (NOT ${value}) - message (SEND_ERROR "Test fail:" ${msg} ${Out} ) + message (SEND_ERROR "Test fail:" "${msg}\n" ${Out} ) endif () endmacro() -- cgit v1.2.1 From 74f24b28423751bd775b66e13078db2fa71a932d Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Mon, 16 Jul 2012 10:05:22 +0200 Subject: Tests/Module/GenerateExportHeader: Test exported free-function --- Tests/Module/GenerateExportHeader/libsharedtest/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) (limited to 'Tests/Module') diff --git a/Tests/Module/GenerateExportHeader/libsharedtest/CMakeLists.txt b/Tests/Module/GenerateExportHeader/libsharedtest/CMakeLists.txt index a5804fcfba..2a97d8f831 100644 --- a/Tests/Module/GenerateExportHeader/libsharedtest/CMakeLists.txt +++ b/Tests/Module/GenerateExportHeader/libsharedtest/CMakeLists.txt @@ -8,6 +8,7 @@ macro(shared_build_fail Source Message) endmacro() shared_build_pass("Libshared l; return l.libshared_exported();" "Failed to build exported") +shared_build_pass("return libshared_exported();" "Failed to build exported function.") # if (COMPILER_HAS_DEPRECATED) # shared_build_fail("Libshared l; return l.libshared_deprecated();" "Built use of deprecated class method. This should not be possible.") -- cgit v1.2.1 From 7e24997fedbcaa4f1db8e295ca1845dadf50ff55 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 23 May 2013 07:44:04 +0200 Subject: GenerateExportHeader: Generate only C identifiers as defines The variables in this module are used to configure a header file with defines whose name depends on the name of the target. As valid names of targets may be invalid for use as defines, convert the names of the defines used to C identifiers first. This is already done in C++ code for the DEFINE_SYMBOL property. This is not as simple as ensuring that the BASE_NAME is a C identifier, because most of the define names are configurable, and because use of a BASE_NAME which is not a C identifier, such as 4square can become a C identifier by specifying a prefix in the generate_export_header macro. --- Tests/Module/GenerateExportHeader/CMakeLists.txt | 3 +++ .../Module/GenerateExportHeader/c_identifier/CMakeLists.txt | 13 +++++++++++++ .../c_identifier/c_identifier_class.cpp | 7 +++++++ .../GenerateExportHeader/c_identifier/c_identifier_class.h | 13 +++++++++++++ Tests/Module/GenerateExportHeader/c_identifier/main.cpp | 8 ++++++++ 5 files changed, 44 insertions(+) create mode 100644 Tests/Module/GenerateExportHeader/c_identifier/CMakeLists.txt create mode 100644 Tests/Module/GenerateExportHeader/c_identifier/c_identifier_class.cpp create mode 100644 Tests/Module/GenerateExportHeader/c_identifier/c_identifier_class.h create mode 100644 Tests/Module/GenerateExportHeader/c_identifier/main.cpp (limited to 'Tests/Module') diff --git a/Tests/Module/GenerateExportHeader/CMakeLists.txt b/Tests/Module/GenerateExportHeader/CMakeLists.txt index 4a5b1cb5a3..cc954ffa3a 100644 --- a/Tests/Module/GenerateExportHeader/CMakeLists.txt +++ b/Tests/Module/GenerateExportHeader/CMakeLists.txt @@ -168,6 +168,9 @@ add_subdirectory(lib_shared_and_statictest) add_subdirectory(override_symbol) add_subdirectory(nodeprecated) add_subdirectory(prefix) +if(NOT BORLAND) + add_subdirectory(c_identifier) +endif() if (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} MATCHES Clang)) # We deliberately call deprecated methods, and test for that elsewhere. diff --git a/Tests/Module/GenerateExportHeader/c_identifier/CMakeLists.txt b/Tests/Module/GenerateExportHeader/c_identifier/CMakeLists.txt new file mode 100644 index 0000000000..9f8c8efe6a --- /dev/null +++ b/Tests/Module/GenerateExportHeader/c_identifier/CMakeLists.txt @@ -0,0 +1,13 @@ +project(c_identifier) + +set(c_identifier_lib_SRCS + c_identifier_class.cpp +) + +add_library(7c-identifier-lib++ SHARED c_identifier_class.cpp) + +generate_export_header(7c-identifier-lib++) + +add_executable(c_identifier_exe main.cpp) + +target_link_libraries(c_identifier_exe 7c-identifier-lib++) diff --git a/Tests/Module/GenerateExportHeader/c_identifier/c_identifier_class.cpp b/Tests/Module/GenerateExportHeader/c_identifier/c_identifier_class.cpp new file mode 100644 index 0000000000..d252c8e8f1 --- /dev/null +++ b/Tests/Module/GenerateExportHeader/c_identifier/c_identifier_class.cpp @@ -0,0 +1,7 @@ + +#include "c_identifier_class.h" + +int CIdentifierClass::someMethod() const +{ + return 0; +} diff --git a/Tests/Module/GenerateExportHeader/c_identifier/c_identifier_class.h b/Tests/Module/GenerateExportHeader/c_identifier/c_identifier_class.h new file mode 100644 index 0000000000..741efdcec0 --- /dev/null +++ b/Tests/Module/GenerateExportHeader/c_identifier/c_identifier_class.h @@ -0,0 +1,13 @@ + +#ifndef C_IDENTIFIER_CLASS_H +#define C_IDENTIFIER_CLASS_H + +#include "7c-identifier-lib++_export.h" + +class _7C_IDENTIFIER_LIB___EXPORT CIdentifierClass +{ +public: + int someMethod() const; +}; + +#endif diff --git a/Tests/Module/GenerateExportHeader/c_identifier/main.cpp b/Tests/Module/GenerateExportHeader/c_identifier/main.cpp new file mode 100644 index 0000000000..68beebb8fa --- /dev/null +++ b/Tests/Module/GenerateExportHeader/c_identifier/main.cpp @@ -0,0 +1,8 @@ + +#include "c_identifier_class.h" + +int main(int argc, char **argv) +{ + CIdentifierClass cic; + return cic.someMethod(); +} -- cgit v1.2.1 From 0e9f4bc00c6b26f254e74063e4026ac33b786513 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Sat, 18 May 2013 12:12:18 +0200 Subject: Introduce target property _VISIBILITY_PRESET This is initialized by CMAKE__VISIBILITY_PRESET. The target property is used as the operand to the -fvisibility= compile option with GNU compilers and clang. --- Tests/Module/GenerateExportHeader/CMakeLists.txt | 2 ++ .../GenerateExportHeader/visibility_preset/CMakeLists.txt | 13 +++++++++++++ .../Module/GenerateExportHeader/visibility_preset/main.cpp | 9 +++++++++ .../visibility_preset/visibility_preset.cpp | 7 +++++++ .../visibility_preset/visibility_preset.h | 13 +++++++++++++ 5 files changed, 44 insertions(+) create mode 100644 Tests/Module/GenerateExportHeader/visibility_preset/CMakeLists.txt create mode 100644 Tests/Module/GenerateExportHeader/visibility_preset/main.cpp create mode 100644 Tests/Module/GenerateExportHeader/visibility_preset/visibility_preset.cpp create mode 100644 Tests/Module/GenerateExportHeader/visibility_preset/visibility_preset.h (limited to 'Tests/Module') diff --git a/Tests/Module/GenerateExportHeader/CMakeLists.txt b/Tests/Module/GenerateExportHeader/CMakeLists.txt index 4a5b1cb5a3..359a1e3f54 100644 --- a/Tests/Module/GenerateExportHeader/CMakeLists.txt +++ b/Tests/Module/GenerateExportHeader/CMakeLists.txt @@ -141,6 +141,8 @@ endmacro() include(GenerateExportHeader) +add_subdirectory(visibility_preset) + add_compiler_export_flags() set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/Tests/Module/GenerateExportHeader/visibility_preset/CMakeLists.txt b/Tests/Module/GenerateExportHeader/visibility_preset/CMakeLists.txt new file mode 100644 index 0000000000..ffa938057f --- /dev/null +++ b/Tests/Module/GenerateExportHeader/visibility_preset/CMakeLists.txt @@ -0,0 +1,13 @@ + +set(CMAKE_CXX_VISIBILITY_PRESET hidden) + +if (CMAKE_CXX_FLAGS MATCHES "-fvisibility=hidden") + message(SEND_ERROR "Do not use add_compiler_export_flags before adding this directory") +endif() + +add_library(visibility_preset SHARED visibility_preset.cpp) +generate_export_header(visibility_preset) + +add_executable(visibility_preset_exe main.cpp) + +target_link_libraries(visibility_preset_exe visibility_preset) diff --git a/Tests/Module/GenerateExportHeader/visibility_preset/main.cpp b/Tests/Module/GenerateExportHeader/visibility_preset/main.cpp new file mode 100644 index 0000000000..89c397784e --- /dev/null +++ b/Tests/Module/GenerateExportHeader/visibility_preset/main.cpp @@ -0,0 +1,9 @@ + +#include "visibility_preset.h" + +int main() +{ + VisibilityPreset vp; + vp.someMethod(); + return 0; +} diff --git a/Tests/Module/GenerateExportHeader/visibility_preset/visibility_preset.cpp b/Tests/Module/GenerateExportHeader/visibility_preset/visibility_preset.cpp new file mode 100644 index 0000000000..c97dec6e29 --- /dev/null +++ b/Tests/Module/GenerateExportHeader/visibility_preset/visibility_preset.cpp @@ -0,0 +1,7 @@ + +#include "visibility_preset.h" + +void VisibilityPreset::someMethod() +{ + +} diff --git a/Tests/Module/GenerateExportHeader/visibility_preset/visibility_preset.h b/Tests/Module/GenerateExportHeader/visibility_preset/visibility_preset.h new file mode 100644 index 0000000000..8becbe1891 --- /dev/null +++ b/Tests/Module/GenerateExportHeader/visibility_preset/visibility_preset.h @@ -0,0 +1,13 @@ + +#ifndef VISIBILITY_PRESET_H +#define VISIBILITY_PRESET_H + +#include "visibility_preset_export.h" + +class VISIBILITY_PRESET_EXPORT VisibilityPreset +{ +public: + void someMethod(); +}; + +#endif -- cgit v1.2.1 From cd1fa537a03377974a4d0a27e592785f931a41e5 Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Thu, 23 May 2013 15:32:17 +0200 Subject: Add a COMPILE_OPTION for a VISIBILITY_INLINES_HIDDEN target property. This corresponds to the g++ and clang++ option -fvisibility-inlines-hidden on linux. On Windows with MinGW, this corresponds to -fno-keep-inline-dllexport. That option is not supported by clang currently. --- Tests/Module/GenerateExportHeader/visibility_preset/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'Tests/Module') diff --git a/Tests/Module/GenerateExportHeader/visibility_preset/CMakeLists.txt b/Tests/Module/GenerateExportHeader/visibility_preset/CMakeLists.txt index ffa938057f..2571d2224e 100644 --- a/Tests/Module/GenerateExportHeader/visibility_preset/CMakeLists.txt +++ b/Tests/Module/GenerateExportHeader/visibility_preset/CMakeLists.txt @@ -1,9 +1,13 @@ set(CMAKE_CXX_VISIBILITY_PRESET hidden) +set(CMAKE_VISIBILITY_INLINES_HIDDEN 1) if (CMAKE_CXX_FLAGS MATCHES "-fvisibility=hidden") message(SEND_ERROR "Do not use add_compiler_export_flags before adding this directory") endif() +if (CMAKE_CXX_FLAGS MATCHES "-fvisibility-inlines-hidden") + message(SEND_ERROR "Do not use add_compiler_export_flags before adding this directory") +endif() add_library(visibility_preset SHARED visibility_preset.cpp) generate_export_header(visibility_preset) -- cgit v1.2.1