From: bangerth Date: Thu, 27 Sep 2012 21:42:36 +0000 (+0000) Subject: My first cmake patch: Determine whether the compiler understands the __attribute__... X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f43739b0768aa1ea1bf341a68765b1a829d1cefc;p=dealii-svn.git My first cmake patch: Determine whether the compiler understands the __attribute__((deprecated)) syntax and if so use it. git-svn-id: https://svn.dealii.org/branches/branch_cmake@26806 0785d39b-7218-0410-832d-ea1e28bc413d --- diff --git a/deal.II/cmake/checks/check_for_compiler_features.cmake b/deal.II/cmake/checks/check_for_compiler_features.cmake index c2ea8eaad2..7363c14813 100644 --- a/deal.II/cmake/checks/check_for_compiler_features.cmake +++ b/deal.II/cmake/checks/check_for_compiler_features.cmake @@ -399,3 +399,32 @@ IF(NOT CMAKE_SYSTEM_NAME MATCHES "CYGWIN") ENABLE_IF_SUPPORTED(DEAL_II_C_FLAGS_DEBUG "-Wa,--compress-debug-sections") ENDIF() + + +# +# Gcc and some other compilers have an attribute of the form +# __attribute__((deprecated)) that can be used to make the +# compiler warn whenever a deprecated function is used. See +# if this attribute is available. +# +# If it is, set the variable DEAL_II_DEPRECATED to its value. If +# it isn't, set it to an empty string (actually, to a single +# space, since the empty string causes CMAKE to #undef the +# variable in config.h), i.e., to something the compiler will +# ignore +# +CHECK_CXX_SOURCE_COMPILES( + " + int old_fn () __attribute__((deprecated)); + int old_fn () { return 0; } + int (*fn_ptr)() = old_fn; + + int main () {} + " + DEAL_II_COMPILER_HAS_ATTRIBUTE_DEPRECATED) + +IF(DEAL_II_COMPILER_HAS_ATTRIBUTE_DEPRECATED) + SET(DEAL_II_DEPRECATED "__attribute__((deprecated))") +ELSE() + SET(DEAL_II_DEPRECATED " ") +ENDIF() diff --git a/deal.II/include/deal.II/base/config.h.in b/deal.II/include/deal.II/base/config.h.in index 41b9e6440f..61ba163bc7 100644 --- a/deal.II/include/deal.II/base/config.h.in +++ b/deal.II/include/deal.II/base/config.h.in @@ -435,7 +435,7 @@ /* If the compiler supports it, then this variable is defined to a string that when written after a function name makes the compiler emit a warning whenever this function is used somewhere that its use is deprecated. */ -#define DEAL_II_DEPRECATED +#cmakedefine DEAL_II_DEPRECATED @DEAL_II_DEPRECATED@