summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/GenerateExportHeader.cmake22
-rw-r--r--Tests/Module/GenerateExportHeader/lib_shared_and_statictest/CMakeLists.txt2
-rw-r--r--Tests/Module/GenerateExportHeader/libsharedtest/CMakeLists.txt2
-rw-r--r--Tests/Module/GenerateExportHeader/libstatictest/CMakeLists.txt2
4 files changed, 21 insertions, 7 deletions
diff --git a/Modules/GenerateExportHeader.cmake b/Modules/GenerateExportHeader.cmake
index 92b9433..f690655 100644
--- a/Modules/GenerateExportHeader.cmake
+++ b/Modules/GenerateExportHeader.cmake
@@ -140,6 +140,20 @@ macro(_test_compiler_hidden_visibility)
endif()
endmacro()
+macro(_test_compiler_has_deprecated)
+ if (WIN32)
+ if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES Borland)
+ set(COMPILER_HAS_DEPRECATED TRUE)
+ endif()
+ else()
+ # TODO: Test properly for this
+ if(COMPILER_HAS_HIDDEN_VISIBILITY AND USE_COMPILER_HIDDEN_VISIBILITY)
+ set(COMPILER_HAS_DEPRECATED TRUE)
+ endif()
+ endif()
+ set(COMPILER_HAS_DEPRECATED "${COMPILER_HAS_DEPRECATED}" CACHE INTERNAL "Compiler support for a deprecated attribute")
+endmacro()
+
set(myDir ${CMAKE_CURRENT_LIST_DIR})
macro(_DO_SET_MACRO_VALUES TARGET_LIBRARY)
@@ -149,13 +163,11 @@ macro(_DO_SET_MACRO_VALUES TARGET_LIBRARY)
set(DEFINE_NO_EXPORT)
if(WIN32)
- message("Compiler is ${CMAKE_CXX_COMPILER_ID}")
- if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES Borland)
- message("Deprecation macro enabled.")
+ if (COMPILER_HAS_DEPRECATED)
set(DEFINE_DEPRECATED "__declspec(deprecated)")
endif()
else()
- if(COMPILER_HAS_HIDDEN_VISIBILITY AND USE_COMPILER_HIDDEN_VISIBILITY)
+ if(COMPILER_HAS_DEPRECATED)
set(DEFINE_DEPRECATED "__attribute__ ((__deprecated__))")
endif()
endif()
@@ -244,6 +256,7 @@ function(GENERATE_EXPORT_HEADER TARGET_LIBRARY)
return()
endif()
_test_compiler_hidden_visibility()
+ _test_compiler_has_deprecated()
_do_set_macro_values(${TARGET_LIBRARY})
_do_generate_export_header(${TARGET_LIBRARY} ${ARGN})
endfunction()
@@ -251,6 +264,7 @@ endfunction()
function(add_compiler_export_flags)
_test_compiler_hidden_visibility()
+ _test_compiler_has_deprecated()
if(NOT (USE_COMPILER_HIDDEN_VISIBILITY AND COMPILER_HAS_HIDDEN_VISIBILITY))
message(WARNING "Compiler doesn't have hidden visibility")
diff --git a/Tests/Module/GenerateExportHeader/lib_shared_and_statictest/CMakeLists.txt b/Tests/Module/GenerateExportHeader/lib_shared_and_statictest/CMakeLists.txt
index d25eed0..1401eec 100644
--- a/Tests/Module/GenerateExportHeader/lib_shared_and_statictest/CMakeLists.txt
+++ b/Tests/Module/GenerateExportHeader/lib_shared_and_statictest/CMakeLists.txt
@@ -17,7 +17,7 @@ endmacro()
static_variant_build_pass("return libshared_and_static_exported();" "Failed to build static variant")
shared_variant_build_pass("return libshared_and_static_exported();" "Failed to build shared variant")
-if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES Borland)
+if (COMPILER_HAS_DEPRECATED)
shared_variant_build_fail("return libshared_and_static_deprecated();" "Built shared deprecated variant")
static_variant_build_fail("return libshared_and_static_deprecated();" "Built static deprecated variant")
else()
diff --git a/Tests/Module/GenerateExportHeader/libsharedtest/CMakeLists.txt b/Tests/Module/GenerateExportHeader/libsharedtest/CMakeLists.txt
index 9edc53f..b763036 100644
--- a/Tests/Module/GenerateExportHeader/libsharedtest/CMakeLists.txt
+++ b/Tests/Module/GenerateExportHeader/libsharedtest/CMakeLists.txt
@@ -9,7 +9,7 @@ endmacro()
shared_build_pass("Libshared l; return l.libshared_exported();" "Failed to build exported")
-if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES Borland)
+if (COMPILER_HAS_DEPRECATED)
shared_build_fail("Libshared l; return l.libshared_deprecated();" "Built use of deprecated class method. This should not be possible.")
else()
shared_build_pass("Libshared l; return l.libshared_deprecated();" "Built use of deprecated class method. This should not be possible.")
diff --git a/Tests/Module/GenerateExportHeader/libstatictest/CMakeLists.txt b/Tests/Module/GenerateExportHeader/libstatictest/CMakeLists.txt
index 168cae8..14ca05b 100644
--- a/Tests/Module/GenerateExportHeader/libstatictest/CMakeLists.txt
+++ b/Tests/Module/GenerateExportHeader/libstatictest/CMakeLists.txt
@@ -9,7 +9,7 @@ endmacro()
static_build_pass("Libstatic l; return l.libstatic_exported();" "Failed to build exported.")
-if (NOT ${CMAKE_CXX_COMPILER_ID} MATCHES Borland)
+if (COMPILER_HAS_DEPRECATED)
static_build_fail("Libstatic l; return l.libstatic_deprecated();" "Built use of deprecated class method. This should not be possible.")
static_build_fail("libstatic_deprecated();" "Built use of deprecated function. This should not be possible.")
else()