boinc/m4/sah_namespace.m4

107 lines
2.9 KiB
Plaintext

# Berkeley Open Infrastructure for Network Computing
# http://boinc.berkeley.edu
# Copyright (C) 2005 University of California
#
# This is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation;
# either version 2.1 of the License, or (at your option) any later version.
#
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU Lesser General Public License for more details.
#
# To view the GNU Lesser General Public License visit
# http://www.gnu.org/copyleft/lesser.html
# or write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# Revision Log:
# $Log$
# Revision 1.4 2005/12/24 20:08:03 rwalton
# *** empty log message ***
#
# Revision 1.3 2005/05/10 15:43:56 korpela
# Fixed bug in caching of SAH_FUNCS_IN_NAMESPACE results.
#
# Revision 1.2 2005/05/06 00:31:05 korpela
# Added caching of results to SAH_CHECK_NAMESPACES and SAH_FUNCS_IN_NAMESPACE
#
# Revision 1.1 2003/12/11 18:38:24 korpela
# Added checked macro files into boinc
#
# Revision 1.5 2003/12/03 23:46:11 korpela
# Fixed "sah_namespaces.m4" not to rely on "tr".
#
#
AC_PREREQ([2.54])
AC_DEFUN([SAH_LC_TO_DEFN],[
$1=`echo $2 | $AWK '{split($[]1,a,"(");print a[[ 1 ]]}' | $as_tr_cpp`
])
AC_DEFUN([SAH_NS_TO_DEFN],[
$1=`echo $2 | $as_tr_cpp`
])
AC_DEFUN([SAH_CHECK_NAMESPACES],[
AC_LANG_PUSH(C++)
AC_CACHE_CHECK([for C++ namespaces],
[sah_cv_have_namespaces],[
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([
#define CONFIG_TEST
namespace foo {
int foo(void) { return(0); }
}
],[
return foo::foo();
])
], [sah_cv_have_namespaces="yes"], [sah_cv_have_namespaces="no"])
])
if test "${sah_cv_have_namespaces}" = "yes" ; then
AC_DEFINE(HAVE_NAMESPACES,[1],[Define if your C++ compiler supports namespaces])
fi
AC_LANG_POP(C++)
])
AC_DEFUN([SAH_FUNCS_IN_NAMESPACE],[
AC_LANG_PUSH(C++)
for func_name in $1
do
func_name=m4_quote($func_name)
t_ns=m4_quote($2)
SAH_LC_TO_DEFN(ac_func_upper,[$func_name])
SAH_LC_TO_DEFN(ac_namespace_upper,[$t_ns])
ac_uc_defn=`echo HAVE_"$ac_namespace_upper"_$ac_func_upper`
AC_CACHE_CHECK([for $func_name in namespace $t_ns],
[sah_cv_func_$2_$ac_func_upper],[
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([[
#define CONFIG_TEST
$sah_cxx_includes
]],
[[
$2::$func_name ;
]])],
[
eval sah_cv_func_$2_$ac_func_upper="yes"
],
[
eval sah_cv_func_$2_$ac_func_upper="no"
]
)
])
if test "`eval echo '${'sah_cv_func_$2_$ac_func_upper'}'`" = "yes" ; then
AC_DEFINE_UNQUOTED([$ac_uc_defn], [1],
["Define to 1 if $func_name is in namespace $t_ns::" ])
fi
done
AC_LANG_POP(C++)
])