Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-02 08:21:16

0001 dnl $Id: acinclude.m4,v 1.4 2012/10/17 09:48:21 bbannier Exp $
0002 dnl 
0003 dnl     This file is part of the RDBC
0004 dnl     Author: Valeriy Onuchin <onuchin@sirius.ihep.su>
0005 dnl
0006 
0007 dnl Local macros borrowed from libodbc++, ++ few macros added for RDBC
0008 
0009 
0010 dnl ------------------------------------------------------------------------
0011 dnl Find a file (or one of more files in a list of dirs)
0012 dnl ------------------------------------------------------------------------
0013 dnl
0014 AC_DEFUN([AC_FIND_FILE],
0015 [
0016 $3=NO
0017 for i in $2;
0018 do
0019   for j in $1;
0020   do
0021     if test -r "$i/$j"; then
0022       $3=$i
0023       break 2
0024     fi
0025   done
0026 done
0027 ])
0028 dnl Macro: AC_CHECK_CXX_STL
0029 dnl Sets $ac_cv_cxx_stl to yes or no
0030 dnl defines HAVE_CXX_STL if ok
0031 
0032 AC_DEFUN([AC_CHECK_CXX_STL],
0033 [
0034 AC_LANG_SAVE
0035 AC_LANG_CPLUSPLUS
0036 AC_MSG_CHECKING([whether STL is available])
0037 AC_CACHE_VAL(ac_cv_cxx_stl,
0038 [
0039 AC_TRY_COMPILE([
0040 #include <set>
0041 ],[
0042 std::set<int> t;
0043 t.insert(t.begin(),1);
0044 std::set<int>::iterator i=t.find(1);
0045 ],
0046 ac_cv_cxx_stl=yes,
0047 ac_cv_cxx_stl=no)
0048 ])
0049 AC_MSG_RESULT($ac_cv_cxx_stl)
0050 if test "x$ac_cv_cxx_stl" = "xyes"
0051 then
0052         AC_DEFINE(HAVE_CXX_STL)
0053 fi
0054 AC_LANG_RESTORE
0055 ])
0056 
0057 
0058 
0059 dnl Macro: AC_CHECK_CXX_EH
0060 dnl Sets $ac_cv_cxx_eh to yes or no
0061 
0062 AC_DEFUN([AC_CHECK_CXX_EH],
0063 [
0064 AC_LANG_SAVE
0065 AC_LANG_CPLUSPLUS
0066 AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS) has correct exception handling])
0067 AC_CACHE_VAL(ac_cv_cxx_eh,
0068 [
0069 AC_TRY_RUN(
0070 [
0071 #include <exception>
0072 #include <string.h>
0073 
0074 using namespace std;
0075 
0076 struct test : public exception {
0077         virtual const char* what() { return "test"; }
0078 };
0079 
0080 static void func() { throw test(); }
0081 int main(void)
0082 {
0083         try {
0084                 func();
0085         } catch(exception& e) {
0086                 return (strcmp(e.what(),"test")==0);
0087         } catch(...) { return 1; }
0088         return 1;
0089 }
0090 ],
0091 ac_cv_cxx_eh=yes,
0092 ac_cv_cxx_eh=no)
0093 ])
0094 AC_MSG_RESULT([$ac_cv_cxx_eh])
0095 if test "x$ac_cv_cxx_eh" = "xyes"
0096 then
0097         AC_DEFINE(HAVE_CXX_EH)
0098 fi
0099 AC_LANG_RESTORE
0100 ])
0101 
0102 
0103 dnl Macro: AC_CHECK_CXX_NS
0104 dnl Test if the c++ compiler supports namespaces
0105 dnl Set $ac_cv_cxx_ns to either yes or no
0106 dnl Define HAVE_CXX_NS if yes
0107 
0108 AC_DEFUN([AC_CHECK_CXX_NS],
0109 [
0110 AC_LANG_SAVE
0111 AC_LANG_CPLUSPLUS
0112 AC_MSG_CHECKING([whether the C++ compiler ($CXX $CXXFLAGS) supports namespaces])
0113 AC_CACHE_VAL(ac_cv_cxx_ns,
0114 [
0115 AC_TRY_COMPILE([
0116 namespace A {
0117         namespace B {
0118                 struct X {};
0119         };
0120 };
0121 ],[
0122         A::B::X x;
0123 ],
0124 ac_cv_cxx_ns=yes,
0125 ac_cv_cxx_ns=no)
0126 ])
0127 
0128 AC_MSG_RESULT([$ac_cv_cxx_ns])
0129 
0130 if test "x$ac_cv_cxx_ns" = "xyes"
0131 then
0132         AC_DEFINE(HAVE_CXX_NS)
0133 fi
0134 AC_LANG_RESTORE
0135 ])
0136 
0137 
0138 dnl Macro: AC_CHECK_THREADS
0139 dnl Test if we should compile with thread support
0140 AC_DEFUN([AC_CHECK_THREADS],
0141 [
0142 AC_MSG_CHECKING([whether to enable threads])
0143 
0144 enable_threads=yes
0145 
0146 if test "x$enable_threads" = "xyes" 
0147 then
0148         AC_MSG_RESULT(yes)
0149 
0150 # ok, now check for pthreads
0151 AC_CHECK_HEADER(pthread.h,[
0152         AC_DEFINE(HAVE_PTHREAD_H)
0153         ],[AC_MSG_ERROR([pthread.h not found. Consider not using --enable-threads])])
0154 
0155 # check if pthreads are in our default library environment
0156 AC_CHECK_FUNCS(pthread_create,pthreads_ok=yes,pthreads_ok=no)
0157 THREAD_LIBS=""
0158 
0159 if test "x$pthreads_ok" != xyes
0160 then
0161 
0162 AC_CHECK_LIB(pthread,pthread_create,
0163         pthreads_ok=yes
0164         THREAD_LIBS="-lpthread",pthreads_ok=no)
0165 fi
0166 
0167 if test "x$pthreads_ok" != xyes
0168 then
0169 
0170 # try libc_r (*BSD)
0171         AC_CHECK_LIB(c_r,pthread_create,
0172         pthreads_ok=yes
0173         THREAD_LIBS="-lc_r",pthreads_ok=no)
0174 fi
0175 
0176 if test "x$pthreads_ok" = xyes
0177 then
0178 # now we know we can use pthreads
0179         AC_DEFINE(ENABLE_THREADS)
0180         CXXFLAGS="-D_REENTRANT $CXXFLAGS"
0181         CFLAGS="-D_REENTRANT $CFLAGS"
0182 else
0183         AC_MSG_ERROR([Unable to find a POSIX threads environment.])
0184 fi
0185 else
0186         AC_MSG_RESULT(no)
0187 fi
0188 AC_SUBST(THREAD_LIBS)
0189 ])
0190 
0191 
0192 
0193 dnl Macro: AC_CHECK_IODBC
0194 dnl Checks for iodbc optionally in provided directories
0195 dnl sets shell variable iodbc_ok to yes or no.
0196 dnl Defines HAVE_LIBIODBC, HAVE_ISQL_H, HAVE_ISQLEXT_H if they are found
0197 AC_DEFUN([AC_CHECK_IODBC],
0198 [
0199 AC_LANG_SAVE
0200 AC_LANG_C
0201 AC_ARG_WITH(iodbc,
0202 [  --with-iodbc[=DIR]      Use iodbc, optionally installed in DIR],
0203 [
0204 if test "x$withval" != "xyes"
0205 then
0206         iodbc_dir=$withval
0207 else
0208         iodbc_dir="/usr/local"
0209 fi
0210 ])
0211 
0212 if test "x$iodbc_dir" = "x"
0213 then
0214         iodbc_dir="/usr/local"
0215 fi
0216 
0217 AC_ARG_WITH(iodbc-includes,
0218 [  --with-iodbc-includes=DIR Find iodbc headers in DIR],
0219 [iodbc_includes_dir=$withval],
0220 [iodbc_includes_dir="$iodbc_dir/include"]
0221 )
0222 
0223 AC_ARG_WITH(iodbc-libraries,
0224 [  --with-iodbc-libs=DIR Find iodbc libraries in DIR],
0225 [iodbc_libraries_dir=$withval],
0226 [iodbc_libraries_dir="$iodbc_dir/lib"]
0227 )
0228 
0229 save_CFLAGS="$CFLAGS"
0230 save_LIBS="$LIBS"
0231 
0232 CFLAGS="$CFLAGS -I$iodbc_includes_dir"
0233 LIBS="$LIBS -L$iodbc_libraries_dir"
0234 
0235 AC_CHECK_HEADERS([isql.h isqlext.h],
0236 [iodbc_ok=yes; odbc_headers="$odbc_headers $ac_hdr"],
0237 [iodbc_ok=no; break])
0238 
0239 if test "x$iodbc_ok" = "xyes"
0240 then
0241         AC_CHECK_LIB(iodbc,SQLConnect,[iodbc_ok=yes],[iodbc_ok=no])
0242 fi
0243 
0244 if test "x$iodbc_ok" = "xyes"
0245 then
0246         LIBS="$LIBS -liodbc"
0247         AC_DEFINE(HAVE_LIBIODBC)
0248         AC_DEFINE(HAVE_ISQL_H)
0249         AC_DEFINE(HAVE_ISQLEXT_H)
0250 else
0251         CFLAGS="$save_CFLAGS"
0252         LIBS="$save_LIBS"
0253 fi
0254 AC_LANG_RESTORE
0255 ])
0256 
0257 
0258 AC_DEFUN([AC_CHECK_ODBC],
0259 [
0260 AC_LANG_SAVE
0261 AC_LANG_C
0262 AC_MSG_CHECKING([whether unixODBC should be used])
0263 
0264 AC_ARG_WITH(odbc,
0265 [  --with-odbc[=DIR]       Use unixODBC, optionally installed in DIR],
0266 [
0267 if test "x$withval" != "xyes"
0268 then
0269         odbc_dir=$withval
0270 else
0271         odbc_dir="/usr/local"
0272 fi
0273 ])
0274 
0275 if test "x$odbc_dir" = "x"
0276 then
0277         AC_MSG_RESULT(no)
0278 else
0279         AC_MSG_RESULT(yes)
0280 
0281 AC_ARG_WITH(odbc-includes,
0282 [  --with-odbc-includes=DIR Find unixODBC headers in DIR],
0283 [odbc_includes_dir=$withval],
0284 [odbc_includes_dir="$odbc_dir/include"]
0285 )
0286 
0287 AC_ARG_WITH(odbc-libraries,
0288 [  --with-odbc-libs=DIR Find unixODBC libraries in DIR],
0289 [odbc_libraries_dir=$withval],
0290 [odbc_libraries_dir="$odbc_dir/lib"]
0291 )
0292 
0293 
0294 odbc_libraries_dir="$odbc_dir/lib"
0295 
0296 save_CPPFLAGS="$CPPFLAGS"
0297 save_LIBS="$LIBS"
0298 
0299 CPPFLAGS="$CPPFLAGS -I$odbc_includes_dir"
0300 LIBS="$LIBS -L$odbc_libraries_dir"
0301 
0302 AC_CHECK_HEADERS([sql.h sqlext.h],
0303 [odbc_ok=yes; odbc_headers="$odbc_headers $ac_hdr"],
0304 [odbc_ok=no; break]
0305 )
0306 
0307 if test "x$odbc_ok" = "xyes"
0308 then
0309         AC_CHECK_LIB(odbc,SQLConnect,[odbc_ok=yes],[odbc_ok=no])
0310 fi
0311 
0312 if test "x$odbc_ok" = "xyes"
0313 then
0314         LIBS="$LIBS -lodbc"
0315         AC_DEFINE(HAVE_LIBODBC)
0316         AC_DEFINE(HAVE_SQL_H)
0317         AC_DEFINE(HAVE_SQLEXT_H)
0318 else
0319         CPPFLAGS="$save_CPPFLAGS"
0320         LIBS="$save_LIBS"
0321 fi
0322 fi
0323 AC_LANG_RESTORE
0324 ])
0325 
0326 dnl Macro: AC_CHECK_ODBC_TYPE
0327 dnl Checks if $1 is a valid type in the ODBC environment,
0328 dnl and #defines it to $2 if not
0329 
0330 AC_DEFUN([AC_CHECK_ODBC_TYPE],
0331 [
0332 
0333 AC_MSG_CHECKING([for $1])
0334 AC_CACHE_VAL(ac_cv_odbc_$1,
0335 [
0336 AC_LANG_SAVE
0337 AC_LANG_C
0338 echo > conftest.c
0339 
0340 for i in $odbc_headers
0341 do
0342         echo "#include <$i>" >> conftest.c
0343 done
0344 
0345 echo "int main(void) { $1 x; return 0; }" >> conftest.c
0346 
0347 if $CC -c $CFLAGS $CPPFLAGS conftest.c > /dev/null 2> /dev/null
0348 then
0349         eval ac_cv_odbc_$1=yes
0350 else
0351         eval ac_cv_odbc_$2=no
0352 fi
0353 rm -f conftest*
0354 AC_LANG_RESTORE
0355 ])
0356 
0357 eval ac_odbc_check_res=$ac_cv_odbc_$1
0358 if test "x$ac_odbc_check_res" = "xyes"
0359 then
0360         AC_MSG_RESULT(yes)
0361 else
0362         AC_MSG_RESULT([no ($2)])
0363         AC_DEFINE($1,$2)
0364 fi
0365 ])
0366 
0367 dnl Macro: AC_CHECK_ROOT
0368 dnl Checks if ROOT installed
0369 dnl Defines: ROOT dependent LIBS, CPPFLAGS etc.
0370 AC_DEFUN([AC_CHECK_ROOT],
0371 [
0372 AC_LANG_SAVE
0373 AC_LANG_CPLUSPLUS
0374 
0375 ROOT_CPPFLAGS="`root-config --cflags`"
0376 ROOT_LIBS="`root-config --libs`"
0377 ROOTCINT=rootcint
0378 ROOT_GLIBS="`root-config --glibs`"
0379 ROOT_VER="`root-config --version | sed 's/\//\./'`"
0380 
0381 AC_SUBST(ROOT_VER)
0382 AC_SUBST(ROOTSYS)
0383 
0384 if test "$GCC" = "yes"; then
0385    GCC_VER="`g++ --version | perl -n -e 'if (($l) = m/(\d+\.\d+(\.\d+)?)/) {print $l;}'`"
0386    AC_SUBST(GCC_VER)
0387 fi
0388    
0389 LIBS="$LIBS $ROOT_LIBS"
0390 CPPFLAGS="$CPPFLAGS $ROOT_CPPFLAGS"
0391 
0392 AC_SUBST(ROOT_CPPFLAGS)
0393 AC_SUBST(ROOT_LIBS)
0394 AC_SUBST(ROOTCINT)
0395 
0396 AC_LANG_RESTORE
0397 ])
0398 
0399 dnl AC_ARG_WITH(libodbcxx,
0400 dnl [  --with-libodbcxx=DIR Find libodbc++ installed in DIR],
0401 dnl [libodbcxx_dir=$withval],
0402 dnl [libodbcxx_dir="/usr/local"]
0403 dnl )   
0404 
0405 ODBCXX_DIR="/usr/local"
0406 AC_SUBST(ODBCXX_DIR)
0407 
0408 
0409