misc fixes to get rrdtool working without included libraries.
[rrdtool.git] / configure.ac
index c21395a..a7ff714 100644 (file)
@@ -10,7 +10,7 @@ AC_INIT(src/rrd_tool.c)
 AC_CONFIG_AUX_DIR(config)
 AC_CANONICAL_TARGET([])
 AM_INIT_AUTOMAKE(rrdtool, 1.1.0)
-AM_CONFIG_HEADER(config/config.h)
+AM_CONFIG_HEADER(config.h)
 
 dnl all our local stuff like install scripts and include files
 dnl is in there
@@ -136,21 +136,56 @@ char *strchr (), *strrchr ();
 ])
 
 
-dnl Define library subdirectory names here.
-CGI_LIB_DIR=libraries/cgilib-0.4
-FREETYPE_LIB_DIR=libraries/freetype-2.0.5
-ART_LIB_DIR=libraries/libart_lgpl-2.3.7
-PNG_LIB_DIR=libraries/libpng-1.2.0
-ZLIB_LIB_DIR=libraries/zlib-1.1.3
+
+dnl Check for the compiler and static/shared library creation.
+AC_PROG_CC
+AC_PROG_CPP
+AC_PROG_LIBTOOL
+
+dnl Checks for header files.
+AC_HEADER_STDC
+AC_HEADER_DIRENT
+AC_CHECK_HEADERS(sys/stat.h sys/types.h fcntl.h time.h locale.h fp_class.h malloc.h unistd.h ieeefp.h math.h sys/time.h sys/times.h sys/param.h sys/resource.h float.h)
+
+dnl Checks for typedefs, structures, and compiler characteristics.
+AC_C_CONST
+AC_HEADER_TIME
+AC_STRUCT_TM
 
 dnl substitute them in all the files listed in AC_OUTPUT
-AC_SUBST(CGI_LIB_DIR)
-AC_SUBST(ART_LIB_DIR)
-AC_SUBST(PNG_LIB_DIR)
-AC_SUBST(FREETYPE_LIB_DIR)
-AC_SUBST(ZLIB_LIB_DIR)
 AC_SUBST(PERLFLAGS)
 
+dnl Checks for libraries.
+AC_CHECK_FUNC(acos, , AC_CHECK_LIB(m, acos))
+
+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_MSG_ERROR([
+############################################################################
+I could not find a working copy of $4. Check config.log for hints on why
+this is the case. Maybe you need to set LDFLAGS appropriately so that the
+linker can find lib$1. If you have not installed $4, you can get it
+either from its original home on
+
+   $6
+
+Or you can find an archive copy on
+
+   http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/pub/libs
+
+The last tested version of $4 is $5.
+############################################################################
+])] )
+]
+)
+EX_CHECK_ALL(cgi,        cgiInit,                   cgi.h,                  cgilib,      0.5,    http://www.infodrom.org/projects/cgilib)
+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 Perl.
 AC_PATH_PROG(PERL, perl, no)
 if test "x$PERL" = "xno"; then
@@ -161,7 +196,7 @@ else
        SO_EXT=`$PERL -e 'use Config; if (defined $Config{so} and $Config{so} ne 'a') {print "$Config{so}\n"} else {print "so\n"};'`
        AC_MSG_RESULT($SO_EXT)
         AC_MSG_CHECKING(for the C compiler perl wants to use to build its modules)
-        PROBLEMCC=`$PERL -e 'use Config; map {if (-x "$_/$Config{cc}"){exit 0}} split /:/, $ENV{PATH};print $Config{cc}'`
+        PROBLEMCC=`$PERL -e 'use Config; ($cc = $Config{cc}) =~ s/\s.*//; exit 0 if -x $cc; map {if (-x "$_/$cc"){exit 0}} split /:/, $ENV{PATH};print $Config{cc}'`
         if test x$PROBLEMCC != x; then
                 AC_MSG_RESULT(no)
                 echo Could not find the Compiler: '"'$PROBLEMCC'"'
@@ -213,26 +248,7 @@ AC_SUBST(TCL_SHLIB_SUFFIX)
 AC_SUBST(TCL_PACKAGE_PATH)
 AC_SUBST(TCL_LD_SEARCH_FLAGS)
 
-dnl Check for the compiler and static/shared library creation.
-AC_PROG_CC
-AC_PROG_CPP
-
-dnl don't build a shared library ...
-dnl this can be changed when running configure
-AC_DISABLE_SHARED
-AC_PROG_LIBTOOL
-
-dnl Checks for header files.
-AC_HEADER_STDC
-AC_CHECK_HEADERS(fcntl.h fp_class.h malloc.h unistd.h ieeefp.h math.h sys/time.h sys/times.h sys/param.h sys/resource.h float.h)
 
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-AC_HEADER_TIME
-AC_STRUCT_TM
-
-dnl Checks for libraries.
-AC_CHECK_FUNC(acos, , AC_CHECK_LIB(m, acos))
 
 dnl Check for nroff
 AC_PATH_PROGS(NROFF, gnroff nroff)
@@ -241,7 +257,7 @@ AC_PATH_PROGS(TROFF, groff troff)
 dnl Does the compiler like -Wall and -pedantic?
 if test "x$GCC" = "xyes"; then
   oCFLAGS=$CFLAGS
-  CFLAGS="$CFLAGS -Wall -pedantic -Wshadow -Wpointer-arith -Wcast-align -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline"
+  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,
@@ -254,7 +270,7 @@ if test "x$GCC" = "xyes"; then
 fi
 
 dnl add pic flag in any case this makes sure all our code is relocatable
-CFLAGS="$CFLAGS "`grep pic_flag= libtool | sed -e 's/.*pic_flag=//' -e 's/"//g'`
+CFLAGS="$CFLAGS "`grep pic_flag= libtool | head -1|sed -e 's/.*pic_flag=//' -e 's/"//g'`
 
 ZLIB_CFLAGS=$CFLAGS
 dnl it seems that hpux chockes on -fPIC for some reason
@@ -272,7 +288,7 @@ AC_FUNC_VPRINTF
 dnl for each function found we get a definition in config.h 
 dnl of the form HAVE_FUNCTION
 
-AC_CHECK_FUNCS(strerror snprintf vsnprintf fpclass class fp_class isnan memmove strchr mktime getrusage gettimeofday)
+AC_CHECK_FUNCS(tzset opendir readdir chdir chroot getuid setlocale strerror strerror_r snprintf vsnprintf fpclass class fp_class isnan memmove strchr mktime getrusage gettimeofday)
 
 dnl HP-UX 11.00 does not have finite but does have isfinite as a macro
 AC_CHECK_FUNCS(fpclassify, ,
@@ -409,22 +425,24 @@ AC_IEEE([out of the box], works, , , ,
        AC_IEEE([with the -mieee switch], mswitch, , , ,
          [CFLAGS="$_cflags -q float=rndsngl"
          AC_IEEE([with the -q float=rndsngl switch], qswitch, , , ,
-           [CFLAGS="$_cflags -OPT:IEEE_comparisons=ON"
-           AC_IEEE([with the -OPT:IEEE_comparisons=ON switch], ieeecmpswitch, , , ,
-             [CFLAGS=$_cflags
-             AC_IEEE([with fpsetmask(0)], mask,
-               [#include <floatingpoint.h>], [fpsetmask(0)],
-               [AC_DEFINE(MUST_DISABLE_FPMASK)
-              PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"],
-               [AC_IEEE([with signal(SIGFPE,SIG_IGN)], sigfpe,
-                 [#include <signal.h>], [signal(SIGFPE,SIG_IGN)],
-                 [AC_DEFINE(MUST_DISABLE_SIGFPE)
-                 PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"],           
-                 AC_MSG_ERROR([
+           [CFLAGS="$_cflags -OPT:IEEE_NaN_inf=ON"
+           AC_IEEE([with the -OPT:IEEE_NaN_inf=ON switch], ieeenaninfswitch, , , ,
+             [CFLAGS="$_cflags -OPT:IEEE_comparisons=ON"
+             AC_IEEE([with the -OPT:IEEE_comparisons=ON switch], ieeecmpswitch, , , ,
+               [CFLAGS=$_cflags
+               AC_IEEE([with fpsetmask(0)], mask,
+                 [#include <floatingpoint.h>], [fpsetmask(0)],
+                 [AC_DEFINE(MUST_DISABLE_FPMASK)
+                PERLFLAGS="CCFLAGS=-DMUST_DISABLE_FPMASK"],
+                 [AC_IEEE([with signal(SIGFPE,SIG_IGN)], sigfpe,
+                   [#include <signal.h>], [signal(SIGFPE,SIG_IGN)],
+                   [AC_DEFINE(MUST_DISABLE_SIGFPE)
+                   PERLFLAGS="CCFLAGS=-DMUST_DISABLE_SIGFPE"],         
+                   AC_MSG_ERROR([
 Your Compiler does not do propper IEEE math ... Please find out how to
 make IEEE math work with your compiler and let me know (oetiker@ee.ethz.ch).
 Check config.log to see what went wrong ...
-]))])])])])])])])])
+]))])])])])])])])])])
 
 
 AC_CONFIG_FILES([examples/shared-demo.pl                       \
@@ -435,12 +453,6 @@ AC_CONFIG_FILES([examples/shared-demo.pl                   \
           examples/cgi-demo.cgi                                \
           examples/Makefile                            \
           doc/Makefile                                 \
-          libraries/Makefile                            \
-          libraries/cgilib-0.4/Makefile                 \
-          libraries/libart_lgpl-2.3.7/Makefile         \
-          libraries/libpng-1.2.0/Makefile              \
-          libraries/zlib-1.1.3/Makefile                        \
-          libraries/freetype-2.0.5/Makefile            \
           src/Makefile                                 \
           bindings/Makefile                             \
           bindings/tcl/Makefile                                \
@@ -452,7 +464,7 @@ AC_OUTPUT
 AC_MSG_CHECKING(in)
 AC_MSG_RESULT(and out again)
 
-echo $ECHO_N "ordering CD from http://ee-staff.ethz.ch/~oetiker/wish $ECHO_C" 1>&6
+echo $ECHO_N "ordering CD from http://people.ee.ethz.ch/~oetiker/wish $ECHO_C" 1>&6
 sleep 1
 echo $ECHO_N ".$ECHO_C" 1>&6
 sleep 1
@@ -474,7 +486,7 @@ echo "If you want to install the perl"
 echo "modules in site-perl, try 'make site-perl-install'."
 echo 
 echo "       ... that wishlist is NO JOKE. If you find RRDtool useful"
-echo "make me happy. Go to http://ee-staff.ethz.ch/~oetiker/wish and"
+echo "make me happy. Go to http://people.ee.ethz.ch/~oetiker/wish and"
 echo "place an order."
 echo 
 echo "                               -- Tobi Oetiker <tobi@oetiker.ch>"