fix return codes in the error case -- Haroon Rafique <haroon.rafique@utoronto.ca>
[rrdtool.git] / configure.ac
index a7ff714..9027802 100644 (file)
@@ -6,11 +6,11 @@ dnl
 dnl
 
 dnl tell automake the this script is for rrdtool
-AC_INIT(src/rrd_tool.c)
-AC_CONFIG_AUX_DIR(config)
-AC_CANONICAL_TARGET([])
-AM_INIT_AUTOMAKE(rrdtool, 1.1.0)
+AC_INIT([rrdtool],[1.1.0])
+AC_CANONICAL_TARGET
+AM_INIT_AUTOMAKE
 AM_CONFIG_HEADER(config.h)
+# AC_CONFIG_AUX_DIR(config)
 
 dnl all our local stuff like install scripts and include files
 dnl is in there
@@ -25,7 +25,7 @@ dnl where we install our stuff ...
 AC_PREFIX_DEFAULT( /usr/local/rrdtool-1.1.0 )
 
 dnl Minimum Autoconf version required.
-AC_PREREQ(2.52)
+AC_PREREQ(2.58)
 
 dnl At the TOP of the HEADER
 
@@ -158,9 +158,12 @@ AC_SUBST(PERLFLAGS)
 dnl Checks for libraries.
 AC_CHECK_FUNC(acos, , AC_CHECK_LIB(m, acos))
 
-AC_DEFUN(EX_CHECK_ALL,
+AC_DEFUN([EX_CHECK_ALL],
 [ AC_CHECK_LIB($1,$2,
-  [ AC_CHECK_HEADER($3,[LIBS="-l$1 ${LIBS}"],AC_MSG_ERROR([Adjust CPPFLAGS so that the $4 header $3 gets found])) ],
+  [ AC_CHECK_HEADER($3,[LIBS="-l$1 ${LIBS}"],[
+     [ $echo "#include <$3>" | $CC -E - > /dev/null ] 
+     AC_MSG_ERROR([Adjust CPPFLAGS so that the $4 header $3 AND its dependencies gets found])
+  ] ) ],
   [ AC_MSG_ERROR([
 ############################################################################
 I could not find a working copy of $4. Check config.log for hints on why
@@ -180,12 +183,91 @@ The last tested version of $4 is $5.
 ]
 )
  
+dnl How the vertical axis label is printed
+AC_ARG_VAR(RRDGRAPH_YLEGEND_ANGLE, 
+ [Vertical label angle: 90.0 (default) or 270.0])
+AC_DEFINE_UNQUOTED(RRDGRAPH_YLEGEND_ANGLE,${RRDGRAPH_YLEGEND_ANGLE:-90.0},
+ [Vertical label angle: 90.0 (default) or 270.0])
+
+
+AC_ARG_ENABLE(rrdcgi,[  --disable-rrdcgi        disable building of rrdcgi],
+[],[enable_rrdcgi=yes])
+AM_CONDITIONAL(BUILD_RRDCGI,[test $enable_rrdcgi != no])
+if test $enable_rrdcgi != no; then
 EX_CHECK_ALL(cgi,        cgiInit,                   cgi.h,                  cgilib,      0.5,    http://www.infodrom.org/projects/cgilib)
+fi
 EX_CHECK_ALL(art_lgpl_2, art_vpath_add_point,       libart_lgpl/libart.h,   libart_lgpl, 2.3.16, ftp://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/)
 EX_CHECK_ALL(z,          zlibVersion,               zlib.h,                 zlib,        1.2.1,  http://www.gzip.org/zlib/)
 EX_CHECK_ALL(png,        png_access_version_number, png.h,                  libpng,      1.2.5,  http://prdownloads.sourceforge.net/libpng/)
 EX_CHECK_ALL(freetype,   FT_Init_FreeType,          ft2build.h,             freetype,    2.1.5,  http://prdownloads.sourceforge.net/freetype/)
-
+dnl Check for pthreads (pieces of code from Bert Driehuis)
+AC_SUBST(MULTITHREAD_CFLAGS)
+AC_SUBST(MULTITHREAD_LDFLAGS)
+
+AC_DEFUN(AC_CHECK_PTHREAD, [
+   AC_MSG_CHECKING([pthreads: trying no flags])
+   AC_CACHE_VAL(ac_cv_flag_pthread,[
+       AC_TRY_LINK([
+               #include <pthread.h>
+       ],
+       [pthread_exit(0);],
+       eval "ac_cv_flag_pthread=no",
+       [
+               AC_MSG_RESULT([didn't work])
+               AC_MSG_CHECKING([pthreads: trying to add -pthread])
+               ac_save_CFLAGS="$CFLAGS"
+               CFLAGS="$CFLAGS -pthread"
+     AC_TRY_LINK([
+       #include <pthread.h>
+       ],
+       [pthread_exit(0);],
+       eval "ac_cv_flag_pthread=yes",
+       AC_MSG_ERROR([Can't figure out pthreads])
+     )
+     CFLAGS="$ac_save_CFLAGS"
+       ])
+   ])
+   if test "$ac_cv_flag_pthread" = "no"; then
+     AC_MSG_RESULT([good, -pthread flag not necessary])
+   else
+     AC_MSG_RESULT([adding -pthread flag])
+     MULTITHREAD_CFLAGS="-pthread"
+   fi
+   AC_MSG_CHECKING([for libpthread])
+   AC_CACHE_VAL(ac_cv_lib_pthread,[
+     ac_save_LIBS="$LIBS"
+     LIBS="-lpthread"
+     AC_TRY_LINK([
+       #include <pthread.h>
+       ],
+       [pthread_exit(0);],
+       eval "ac_cv_lib_pthread=-lphtread",
+       eval "ac_cv_lib_pthread=no"
+     )
+     LIBS="$ac_save_LIBS"
+   ])
+   if test "$ac_cv_lib_pthread" = "no"; then
+     AC_MSG_RESULT([no -lpthread necessary])
+   else
+     AC_MSG_RESULT([adding -lpthread to LIBS])
+     MULTITHREAD_LDFLAGS="-lpthread"
+   fi
+])
+AC_ARG_ENABLE(pthread,[  --disable-pthread       disable multithread support],
+[],[enable_pthread=yes])
+if test $enable_pthread != no; then 
+       AC_CHECK_PTHREAD
+fi
+AM_CONDITIONAL(BUILD_MULTITHREAD,[test $enable_pthread != no])
+  
 dnl Check for Perl.
 AC_PATH_PROG(PERL, perl, no)
 if test "x$PERL" = "xno"; then
@@ -259,9 +341,7 @@ if test "x$GCC" = "xyes"; then
   oCFLAGS=$CFLAGS
   CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline -W"
   AC_CACHE_CHECK(if we can use GCC-specific compiler options, rd_cv_gcc_opt,
-                [AC_TRY_COMPILE( , return 0 ,
-                    rd_cv_gcc_opt=yes,
-                    rd_cv_gcc_opt=no )
+                [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[return 0 ]])],[rd_cv_gcc_opt=yes],[rd_cv_gcc_opt=no ])
                ]
         )
   if test $rd_cv_gcc_opt = no; then
@@ -293,32 +373,28 @@ AC_CHECK_FUNCS(tzset opendir readdir chdir chroot getuid setlocale strerror stre
 dnl HP-UX 11.00 does not have finite but does have isfinite as a macro
 AC_CHECK_FUNCS(fpclassify, ,
   [AC_MSG_CHECKING(for fpclassify with <math.h>)
-    AC_TRY_LINK([#include <math.h>], [float f = 0.0; fpclassify(f)],
-      AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_FPCLASSIFY), AC_MSG_RESULT(no))])
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[float f = 0.0; fpclassify(f)]])],[AC_MSG_RESULT(yes)
+      AC_DEFINE(HAVE_FPCLASSIFY)],[AC_MSG_RESULT(no)])])
 AC_CHECK_FUNCS(finite, ,
   [AC_CHECK_FUNCS(isfinite, ,
     [AC_MSG_CHECKING(for isfinite with <math.h>)
-    AC_TRY_LINK([#include <math.h>], [float f = 0.0; isfinite(f)],
-      AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_ISFINITE), AC_MSG_RESULT(no))])])
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[float f = 0.0; isfinite(f)]])],[AC_MSG_RESULT(yes)
+      AC_DEFINE(HAVE_ISFINITE)],[AC_MSG_RESULT(no)])])])
 AC_CHECK_FUNCS(isinf, ,
   [AC_MSG_CHECKING(for isinf with <math.h>)
-    AC_TRY_LINK([#include <math.h>], [float f = 0.0; isinf(f)],
-      AC_MSG_RESULT(yes)
-      AC_DEFINE(HAVE_ISINF), AC_MSG_RESULT(no))])
+    AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <math.h>]], [[float f = 0.0; isinf(f)]])],[AC_MSG_RESULT(yes)
+      AC_DEFINE(HAVE_ISINF)],[AC_MSG_RESULT(no)])])
 
 dnl what does realloc do if it gets called with a NULL pointer
 
 AC_CACHE_CHECK([if realloc can deal with NULL], rd_cv_null_realloc,
-[AC_TRY_RUN([#include <stdlib.h>
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[#include <stdlib.h>
              int main(void){
               char *x = NULL;
              x = realloc (x,10);
              if (x==NULL) return 1;
              return 0;
-             }],
-           [rd_cv_null_realloc=yes],[rd_cv_null_realloc=nope],:)])
+             }]])],[rd_cv_null_realloc=yes],[rd_cv_null_realloc=nope],[:])])
 
 if test x"$rd_cv_null_realloc" = xnope; then
 AC_DEFINE(NO_NULL_REALLOC)
@@ -330,10 +406,10 @@ dnl   FUNCTION-BODY, [ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]])
 
 AC_C_BIGENDIAN
 
-AC_DEFUN(AC_IEEE
+AC_DEFUN([AC_IEEE]
 AC_MSG_CHECKING([if IEEE math works $1])
 AC_CACHE_VAL([rd_cv_ieee_$2],
-[AC_TRY_RUN([$3
+[AC_RUN_IFELSE([AC_LANG_SOURCE([[$3
 
 #if HAVE_MATH_H
 #  include <math.h>
@@ -397,11 +473,7 @@ int main(void){
     if (! inf > 0) {printf ("not inf > 0 ... "); return 1;}
     if (! -inf < 0) {printf ("not -inf < 0 ... "); return 1;}
     return 0;
- }],
-
-rd_cv_ieee_$2=yes,
-rd_cv_ieee_$2=no,
-:)])
+ }]])],[rd_cv_ieee_$2=yes],[rd_cv_ieee_$2=no],[:])])
 dnl these we run regardles is cached or not
 if test x${rd_cv_ieee_$2} = "xyes"; then
  AC_MSG_RESULT(yes)
@@ -451,6 +523,7 @@ AC_CONFIG_FILES([examples/shared-demo.pl                    \
           examples/bigtops.pl                          \
           examples/minmax.pl                           \
           examples/cgi-demo.cgi                                \
+          examples/4charts.pl                                  \
           examples/Makefile                            \
           doc/Makefile                                 \
           src/Makefile                                 \