Split the deprecated available check from setting macro values.
This commit is contained in:
parent
1590d5fe4f
commit
9554e1013e
|
@ -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")
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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.")
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue