configure.ac 8.84 KB
dnl A tool for maintaining an RPM based distribution
dnl
dnl Copyright 2006 (C) Davide Madrisan <davide.madrisan@gmail.com>
dnl Copyright 2007-2014 (C) Silvan Calarco <silvan.calarco@mambasoft.it>
dnl
dnl This program is free software; you can redistribute it and/or modify it under
dnl the terms of version 2 of the GNU General Public License as published by the
dnl Free Software Foundation.
dnl
dnl This program is distributed in the hope that it will be useful, but WITHOUT
dnl ANY WARRANTY, to the extent permitted by law; without even the implied
dnl warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
dnl See the GNU General Public License for more details.
dnl
dnl You should have received a copy of the GNU General Public License along with
dnl this program; if not, write to the Free Software Foundation, Inc.,
dnl 59 Temple Place, Suite 330, Boston, MA  02111-1307, USA.

dnl Process this file with autoconf to produce a configure script.


dnl Initialization
dnl ------------------------------------------------------------
m4_define(PROG_NAME, [distromatic])
m4_define(PROG_BUGREPORT, [silvan.calarco@mambasoft.it])
m4_define(PROG_VERSION,dnl
regexp(m4_include(VERSION),[.*=[ \t]*\([.0-9A-Za-z]+\)],[\1]))

AC_PREREQ(2.59)
AC_INIT([PROG_NAME],[PROG_VERSION],[PROG_BUGREPORT],[PROG_NAME])

AC_CONFIG_SRCDIR(src/distromatic.c)
AC_CONFIG_HEADERS(src/include/config.h:src/include/config.h.in)
AC_COPYRIGHT(dnl
[Copyright 2006 by Davide Madrisan <davide.madrisan@gmail.com>
])

dnl set `ac_aux_dir' = 'config'
dnl ------------------------------------------------------------
AC_CONFIG_AUX_DIR(config)
AC_SUBST(ac_aux_dir)

dnl Just to display the version number of this program
dnl ------------------------------------------------------------
AC_MSG_CHECKING([for PROG_NAME version])
AC_MSG_RESULT([PROG_VERSION])

dnl Set and display default target architecture
dnl ------------------------------------------------------------
AC_MSG_CHECKING([for the default target architecture])
DEFAULT_ARCH="i586"
AC_SUBST(DEFAULT_ARCH)
AC_MSG_RESULT([$DEFAULT_ARCH])

dnl Compute the canonical build-system type variable, `build' and
dnl its three individual parts `build_cpu', `build_vendor', `build_os'
dnl ------------------------------------------------------------
AC_CANONICAL_TARGET

AM_INIT_AUTOMAKE([1.7 foreign dist-bzip2 nostdinc])

AM_GNU_GETTEXT([external])

AC_REVISION($Revision: 1.4 $)

dnl Determine a C compiler to use. Define `CFLAGS', `EXEEXT', `OBJEXT'
dnl Define `CFLAGS' to `-g -O2' for the GNU C compiler, or `-g' for
dnl other compilers.
dnl If the C compiler is not in ANSI C mode by default, try to add an
dnl option to output variable `CC' to make it so.
dnl ------------------------------------------------------------
AC_PROG_CC
if test "x$ac_cv_prog_cc_stdc" = xno; then
   AC_MSG_ERROR([$CC is not an ANSI C compiler.])
fi
AM_PROG_CC_C_O
AC_ISC_POSIX
#AC_PROG_GCC_TRADITIONAL

#CFLAGS+=-O1
SUPPORTED_CFLAGS=

dnl cc_TRY_CFLAGS (CFLAGS, [ACTION-IF-WORKS], [ACTION-IF-FAILS])
dnl ------------------------------------------------------------
dnl Checks if $CC supports a given set of CFLAGS.
dnl If supported, the current CFLAGS is appended to SUPPORTED_CFLAGS
AC_DEFUN([cc_TRY_CFLAGS],
   [AC_MSG_CHECKING([whether compiler accepts $1])
   ac_save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $1"
   AC_COMPILE_IFELSE([AC_LANG_SOURCE([
      [[int x;]],
      [ac_cv_try_cflags_ok=yes
       SUPPORTED_CFLAGS="$SUPPORTED_CFLAGS $1"],
      [ac_cv_try_cflags_ok=no]])])
   CFLAGS="$ac_save_CFLAGS"
   AC_MSG_RESULT([$ac_cv_try_cflags_ok])
   if test x"$ac_cv_try_cflags_ok" = x"yes"; then
      ifelse([$2],[],[:],[$2])
   else
      ifelse([$3],[],[:],[$3])
   fi
])[]dnl @end [cc_TRY_CFLAGS]

cc_TRY_CFLAGS([-Wall])
cc_TRY_CFLAGS([-W])
cc_TRY_CFLAGS([-Wmissing-prototypes])
cc_TRY_CFLAGS([-Wstrict-prototypes])
cc_TRY_CFLAGS([-Wshadow])
#cc_TRY_CFLAGS([-Wunreachable-code])

AC_SUBST([CFLAGS], ["$CFLAGS $SUPPORTED_CFLAGS"])

dnl Check if C the compiler does not fully support the ANSI C qualifier
dnl `const'.
dnl ------------------------------------------------------------
AC_C_CONST

AC_LANG([C])

dnl Define `WORDS_BIGENDIAN' if a big-endian architecture is found
dnl AC_C_BIGENDIAN ([ACTION-IF-TRUE], [ACTION-IF-FALSE], [ACTION-IF-UNKNOWN])
dnl The default for ACTION-IF-TRUE is to define `WORDS_BIGENDIAN'.
dnl The default for ACTION-IF-FALSE is to do nothing.
dnl And finally, the default for ACTION-IF-UNKNOWN is to abort configure and tell
dnl the installer which variable he should preset to bypass this test.
dnl ------------------------------------------------------------
AC_C_BIGENDIAN

dnl Check for standard header files
dnl ------------------------------------------------------------
AC_HEADER_STDC
AC_HEADER_TIME

dnl Check for library functions for portability issues
dnl ------------------------------------------------------------
AC_CHECK_DECLS([getopt])
dnl If the `malloc' works correctly (`malloc (0)' returns a valid pointer),
dnl define `HAVE_MALLOC'
AC_CHECK_FUNCS([memcpy strchr])
AC_FUNC_MALLOC

dnl Check for needed header files, libraries and tools
dnl ------------------------------------------------------------
AC_CHECK_HEADERS(dirent.h ndir.h sys/ndir.h, break)
AC_CHECK_HEADERS(errno.h)

dnl Check for zlib library and header files
AC_CHECK_HEADER([zlib.h],
   AC_DEFINE(HAVE_ZLIB_H,1,
      [Define to 1 if you have the <zlib.h> header file.]),
   [AC_MSG_ERROR([Can't find zlib.h in your system])])
AC_CHECK_LIB(z,gzopen, [ZLIB="-lz"],
   [AC_MSG_ERROR([Can't find libz library in your system])])
LIBS="$LIBS $ZLIB"

dnl Check for rpm tool and needed libraries
AC_PATH_PROG(RPM_PATH,rpm,none)
if test "$RPM_PATH" = "none"; then
   AC_MSG_ERROR([RPM executable was not found in your system])
else
   AC_DEFINE_UNQUOTED([HAVE_RPM],1,[Define if RPM backend is available])

   dnl Check for RPM version
   AC_MSG_CHECKING(for RPM version)
   RPM_VERSION_RAW=`LANG= LC_ALL= $RPM_PATH --version | sed 's/^.* //'`
   RPM_VERSION_MAJOR=`echo $RPM_VERSION_RAW | cut -d. -f1`
   RPM_VERSION_MINOR=`echo $RPM_VERSION_RAW | cut -d. -f2`
   RPM_VERSION_MICRO=`echo $RPM_VERSION_RAW | cut -d. -f3`
   if test -z "$RPM_VERSION_MAJOR" -o -z "$RPM_VERSION_MINOR"; then
      AC_MSG_ERROR([can't parse RPM version])
   fi
   if test -z "$RPM_VERSION_MICRO"; then
      RPM_VERSION_MICRO=0
   fi
   AC_DEFINE_UNQUOTED([RPM_VERSION_MAJOR],$RPM_VERSION_MAJOR,[RPM major version])
   AC_DEFINE_UNQUOTED([RPM_VERSION_MINOR],$RPM_VERSION_MINOR,[RPM minor version])
   AC_DEFINE_UNQUOTED([RPM_VERSION_MICRO],$RPM_VERSION_MICRO,[RPM micro version])
   AC_DEFINE_UNQUOTED([RPM_VERSION],
      [((RPM_VERSION_MAJOR<<16)|(RPM_VERSION_MINOR<<8)|RPM_VERSION_MICRO)],
      [Define to the RPM version])
   AC_DEFINE_UNQUOTED([RPM_VERSION_RAW],"$RPM_VERSION_RAW",[RPM raw version])
   AC_MSG_RESULT($RPM_VERSION_RAW)

   dnl Check for RPM libraries and headers

   AC_CHECK_LIB(bz2,BZ2_bzopen, [],
                [AC_MSG_ERROR([Can't find libbz2 library in your system])])
   AC_CHECK_LIB(z,gzopen, [],
                [AC_MSG_ERROR([Can't find libz library in your system])])
   AC_CHECK_HEADERS(db1/db.h)

   CPPFLAGS="$CPPFLAGS -Doff64_t=__off64_t -I/usr/include/rpm"
   AC_CHECK_HEADER(rpm/rpmlib.h, [],
                   [AC_MSG_ERROR([Can't find rpmlib.h in your system])])

  if test $RPM_VERSION_MAJOR -lt 4; then
      RPMLIBS="-lrpm -lz -lbz2 -lpopt"
   else
      AC_CHECK_LIB(rpmdb,rpmdbOpen,
         [RPMDBLIBS="-lrpmdb"],
         [RPMDBLIBS="-ldb-3.1"],
         [-lrpm -lrpmio -lz -lbz2 -lpopt])
      RPMLIBS="-lrpm $RPMDBLIBS -lrpmio -lz -lbz2 -lpopt"
   fi
   AC_MSG_CHECKING(for RPM libraries)
   AC_MSG_RESULT($RPMLIBS)
   AC_SUBST(RPMLIBS)
fi
LIBS="$LIBS $RPMLIBS"

dnl Check for libiberty' library and header files
AC_CHECK_HEADERS([libiberty/libiberty.h], [],
   [AC_MSG_ERROR([Can't find libiberty.h in your system,]
   [check http://www.gnu.org/software/binutils/binutils.html for libiberty])])
AC_CHECK_LIB(iberty, freeargv,
   [LIBS="$LIBS -liberty"
    AC_DEFINE(HAVE_LIBIBERTY,1,
              [Define to 1 if you have the `libiberty' library (-liberty).])],
   [AC_MSG_ERROR([Can't find libiberty in your system,]
   [check http://www.gnu.org/software/binutils/binutils.html for libiberty])])

dnl Check for sqlite library and header files
PKG_CHECK_MODULES([SQLITE], [sqlite3])

dnl Set the default `prefix' variable to `/usr'
dnl ------------------------------------------------------------
dnl AC_PREFIX_DEFAULT([/usr])

dnl Generate the output files
dnl ------------------------------------------------------------
AC_CONFIG_FILES([Makefile po/Makefile.in]
                [config/Makefile]
                [html/Makefile]
                [html/index.php]
                [html/index.postnuke.php]
		[html/index.html]
                [src/Makefile]
                [src/include/Makefile]
                [src/include/globaldefs.h]
                [src/missing/Makefile])

AC_OUTPUT

cat <<_EOF

Good - your configure finished. Start make now.

_EOF

dnl configure.ac ends here