]> https://gitweb.dealii.org/ - dealii-svn.git/commitdiff
Figure out a flag that can be used to deprecate functions.
authorbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 28 Aug 2012 17:50:13 +0000 (17:50 +0000)
committerbangerth <bangerth@0785d39b-7218-0410-832d-ea1e28bc413d>
Tue, 28 Aug 2012 17:50:13 +0000 (17:50 +0000)
git-svn-id: https://svn.dealii.org/trunk@26148 0785d39b-7218-0410-832d-ea1e28bc413d

deal.II/aclocal.m4
deal.II/configure
deal.II/include/deal.II/base/config.h.in

index 73d5fafe1f673cb24cfa32d61e7f91768a9dd98d..8fbe0c44b4b9f5b59ad77e09cc5274c0b3d12bdb 100644 (file)
@@ -435,8 +435,10 @@ AC_DEFUN(DEAL_II_SET_CXX_FLAGS, dnl
     dnl BOOST uses long long, so don't warn about this
     CXXFLAGSG="$CXXFLAGSG -Wno-long-long"
 
-    dnl See whether the gcc we use already has a flag for C++2011 features.
+    dnl See whether the gcc we use already has a flag for C++2011 features
+    dnl and whether we can mark functions as deprecated with an attributed
     DEAL_II_CHECK_CXX1X
+    DEAL_II_CHECK_DEPRECATED
 
 
     dnl On some gcc 4.3 snapshots, a 'const' qualifier on a return type triggers a
@@ -1336,6 +1338,74 @@ AC_DEFUN(DEAL_II_CHECK_CXX1X_COMPONENTS, dnl
 ])
 
 
+
+dnl -------------------------------------------------------------
+dnl See if the compiler understands the attribute to mark functions
+dnl as deprecated.
+dnl
+dnl Usage: DEAL_II_CHECK_DEPRECATED
+dnl
+dnl -------------------------------------------------------------
+AC_DEFUN(DEAL_II_CHECK_DEPRECATED, dnl
+[
+  AC_MSG_CHECKING(whether compiler has attributes to deprecate functions)
+
+
+  OLD_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS=""
+
+  dnl First see if the following compiles without error (it should
+  dnl produce a warning but we don't care about this
+  AC_TRY_COMPILE(
+     [
+          int old_fn () __attribute__((deprecated));
+          int old_fn ();
+          int (*fn_ptr)() = old_fn;
+     ],
+     [;],
+     [
+       test1=yes
+     ],
+     [
+       test1=no
+     ])
+
+  dnl Now try this again with -Werror. It should now fail
+  CXXFLAGS=-Werror
+  AC_TRY_COMPILE(
+     [
+          int old_fn () __attribute__((deprecated));
+          int old_fn ();
+          int (*fn_ptr)() = old_fn;
+     ],
+     [;],
+     [
+       test2=yes
+     ],
+     [
+       test2=no
+     ])
+  CXXFLAGS="${OLD_CXXFLAGS}"
+
+  if test "$test1$test2" = "yesno" ; then
+    AC_MSG_RESULT(yes)
+    AC_DEFINE(DEAL_II_DEPRECATED, [__attribute__((deprecated))],
+              [If the compiler supports this, 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.])
+  else
+    AC_MSG_RESULT(no)
+    AC_DEFINE(DEAL_II_DEPRECATED, [],
+              [If the compiler supports this, 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.])
+  fi
+])
+
+
+
 dnl -------------------------------------------------------------
 dnl Determine the C compiler in use. Return the name and possibly
 dnl version of this compiler in CC_VERSION. This function is almost
index 6cbe57e52a7b3890f37f2f204782c7d1fc7871d7..2dc9370956986009c6ccc65c1f1d7443d5bc63b3 100755 (executable)
@@ -4515,6 +4515,82 @@ $as_echo "no" >&6; }
   fi
 
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler has attributes to deprecate functions" >&5
+$as_echo_n "checking whether compiler has attributes to deprecate functions... " >&6; }
+
+
+  OLD_CXXFLAGS="$CXXFLAGS"
+  CXXFLAGS=""
+
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+          int old_fn () __attribute__((deprecated));
+          int old_fn ();
+          int (*fn_ptr)() = old_fn;
+
+int
+main ()
+{
+;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+       test1=yes
+
+else
+
+       test1=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+    CXXFLAGS=-Werror
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+          int old_fn () __attribute__((deprecated));
+          int old_fn ();
+          int (*fn_ptr)() = old_fn;
+
+int
+main ()
+{
+;
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+
+       test2=yes
+
+else
+
+       test2=no
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CXXFLAGS="${OLD_CXXFLAGS}"
+
+  if test "$test1$test2" = "yesno" ; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+$as_echo "#define DEAL_II_DEPRECATED __attribute__((deprecated))" >>confdefs.h
+
+  else
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+$as_echo "#define DEAL_II_DEPRECATED /**/" >>confdefs.h
+
+  fi
+
+
 
                     CXXFLAGS="-Wreturn-type -Werror"
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether qualifiers in return types lead to a warning" >&5
index 4e3186b63522859e521f41729279067689f02475..a0a9a5346a5ba7d66c68c34fd5e4bc82cb672aa1 100644 (file)
    member functions. */
 #undef DEAL_II_CONST_MEMBER_DEDUCTION_BUG
 
+/* If the compiler supports this, 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. */
+#undef DEAL_II_DEPRECATED
+
 /* disable the function parser in contrib */
 #undef DEAL_II_DISABLE_PARSER
 

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.