diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 398 |
1 files changed, 266 insertions, 132 deletions
diff --git a/configure.ac b/configure.ac index ecc13034..9a5f3b3e 100644 --- a/configure.ac +++ b/configure.ac @@ -1,228 +1,362 @@ -ENV_CFLAGS=$CFLAGS -CFLAGS="" - -AC_PREREQ(2.59) -dnl Update it right before the release since $pkgver_foo are all _post_ release snapshots -AC_INIT([Pacman package manager], 3.0.6, [pacman-dev@archlinux.org], [pacman]) -AC_LANG([C]) -AC_CONFIG_HEADERS(config.h) +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. +# Minimum version of autoconf required +AC_PREREQ(2.60) + +# UPDATING VERSION NUMBERS FOR RELEASES +# +# libalpm: +# current +# The most recent interface number that this library implements. +# revision +# The implementation number of the current interface. +# age +# The difference between the newest and oldest interfaces that this library +# implements. In other words, the library implements all the interface +# numbers in the range from number current - age to current. +# +# 1. Start with version information of `0:0:0' for each libtool library. +# 2. Update the version information only immediately before a public release of +# your software. More frequent updates are unnecessary, and only guarantee +# that the current interface number gets larger faster. +# 3. If the library source code has changed at all since the last update, then +# increment revision (`c:r:a' becomes `c:r+1:a'). +# 4. If any interfaces have been added, removed, or changed since the last +# update, increment current, and set revision to 0. +# 5. If any interfaces have been added since the last public release, then +# increment age. +# 6. If any interfaces have been removed since the last public release, then +# set age to 0. +# +# pacman: +# Extreme huge major changes: +# pacman_version_major += 1 +# pacman_version_minor = 0 +# pacman_version_micro = 0 +# +# Real releases: +# pacman_version_minor += 1 +# pacman_version_micro = 0 +# +# Bugfix releases: +# pacman_version_micro += 1 +# +# pacman_version_suffix should be similar to one of the following: +# For beta releases: [beta2] +# For code under development: [devel] +# For production releases: [] + +m4_define([lib_current], [2]) +m4_define([lib_revision], [0]) +m4_define([lib_age], [0]) + +m4_define([pacman_version_major], [3]) +m4_define([pacman_version_minor], [1]) +m4_define([pacman_version_micro], [0]) +m4_define([pacman_version_suffix], [devel]) +m4_define([pacman_version], + [pacman_version_major.pacman_version_minor.pacman_version_micro]) +m4_define([pacman_display_version], + pacman_version[]m4_ifdef([pacman_version_suffix],[pacman_version_suffix])) + +# Autoconf initialization +# AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS) +AC_INIT([Pacman Package Manager], [pacman_display_version], + [pacman-dev@archlinux.org], [pacman]) +AC_CONFIG_SRCDIR([config.h.in]) +AC_CONFIG_HEADERS([config.h]) + AC_CANONICAL_HOST AM_INIT_AUTOMAKE -AM_GNU_GETTEXT([external]) -AM_GNU_GETTEXT_VERSION(0.13.1) -dnl Define the libalpm version number here -LIB_MAJOR_VERSION=1 -LIB_MINOR_VERSION=0 -LIB_MICRO_VERSION=0 -LIB_VERSION=$LIB_MAJOR_VERSION.$LIB_MINOR_VERSION.$LIB_MICRO_VERSION -dnl Needed for libtool to create proper shared lib version. -dnl This is not completely correct- see -dnl http://sourceware.org/autobook/autobook/autobook_91.html for details. -LIB_VERSION_INFO=`expr $LIB_MAJOR_VERSION + $LIB_MINOR_VERSION`:$LIB_MICRO_VERSION:$LIB_MINOR_VERSION - -dnl Set subsitution values for version stuff in Makefiles and anywhere else +LIB_VERSION=`expr lib_current.lib_age`.lib_revision +LIB_VERSION_INFO="lib_current:lib_revision:lib_age" + +# Set subsitution values for version stuff in Makefiles and anywhere else, +# and put LIB_VERSION in config.h AC_SUBST(LIB_VERSION) AC_SUBST(LIB_VERSION_INFO) - -dnl Put version number in config.h AC_DEFINE_UNQUOTED([LIB_VERSION], ["$LIB_VERSION"], [libalpm version number]) -dnl Configuration files -dnl AC_CONFIG_FILES([etc/makepkg.conf] [etc/pacman.conf]) +# Help line for root directory +AC_ARG_WITH(root-dir, + AC_HELP_STRING([--with-root-dir=path], [set the location of pacman's root operating directory]), + [ROOTDIR=$withval], [ROOTDIR=/]) -AC_PROG_CC -AC_HEADER_STDC -AC_PROG_INSTALL -AC_CHECK_FUNCS([strverscmp]) -AM_PROG_LIBTOOL -AM_CONDITIONAL(LINKSTATIC, test "$enable_static" = "yes") +# Help line for package extension +AC_ARG_WITH(pkg-ext, + AC_HELP_STRING([--with-pkg-ext=ext], [set the file extension used by packages]), + [PKGEXT=$withval], [PKGEXT=.pkg.tar.gz]) + +# Help line for source package directory +AC_ARG_WITH(src-ext, + AC_HELP_STRING([--with-src-ext=ext], [set the file extension used by source packages]), + [SRCEXT=$withval], [SRCEXT=.src.tar.gz]) + +# Help line for database extension +AC_ARG_WITH(db-ext, + AC_HELP_STRING([--with-db-ext=ext], [set the file extension used by the database]), + [DBEXT=$withval], [DBEXT=.db.tar.gz]) -dnl Help line for doxygen +# Help line for doxygen AC_ARG_ENABLE(doxygen, - AC_HELP_STRING([--disable-doxygen], [Build API docs via Doxygen]), - [wantdoxygen=$enableval], [wantdoxygen=yes]) + AC_HELP_STRING([--enable-doxygen], [build your own API docs via Doxygen]), + [wantdoxygen=$enableval], [wantdoxygen=no]) -dnl Help line for config file -AC_ARG_WITH(config-file, - AC_HELP_STRING([--with-config-file=path], [Set the location of pacman's config file]), - [configfile=$withval], [configfile=/etc/pacman.conf]) +# Help line for asciidoc +AC_ARG_ENABLE(asciidoc, + AC_HELP_STRING([--enable-asciidoc], [build your own manpages with Asciidoc]), + [wantasciidoc=$enableval], [wantasciidoc=no]) -dnl Help line for debug +# Help line for debug AC_ARG_ENABLE(debug, - AC_HELP_STRING([--enable-debug], [Enable debugging support]), - [debug=$enableval], [debug=no]) + AC_HELP_STRING([--enable-debug], [enable debugging support]), + [debug=$enableval], [debug=no]) + +# Help line for abs +AC_ARG_ENABLE(abs, + AC_HELP_STRING([--disable-abs], [do not include Arch Linux Build System script]), + [includeabs=$enableval], [includeabs=yes]) + +# Help line for pacman.static +AC_ARG_ENABLE(pacman-static, + AC_HELP_STRING([--disable-pacman-static], [do not build static version of pacman]), + [pacmanstatic=$enableval], [pacmanstatic=yes]) + +# Checks for programs. +AC_PROG_AWK +AC_PROG_CC_C99 +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET +AC_PROG_RANLIB +AC_PROG_LIBTOOL +AC_CHECK_PROGS([PYTHON], [python2.5 python2.4 python], [false]) + +# find installed gettext +AM_GNU_GETTEXT([external]) +AM_GNU_GETTEXT_VERSION(0.13.1) + +# Check for libarchive +AC_CHECK_LIB([archive], [archive_read_data], , AC_MSG_ERROR([libarchive is needed to compile pacman!])) + +# Check for libdownload +AC_CHECK_LIB([download], [downloadParseURL], , AC_MSG_ERROR([libdownload is needed to compile pacman!])) + +# Checks for header files. +AC_CHECK_HEADERS([fcntl.h libintl.h limits.h locale.h string.h strings.h sys/ioctl.h sys/statvfs.h sys/time.h syslog.h wchar.h]) + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_INLINE +AC_TYPE_MODE_T +AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_STRUCT_TM +AC_TYPE_UID_T + +# Checks for library functions. +AC_FUNC_CLOSEDIR_VOID +AC_FUNC_FORK +AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK +AC_FUNC_MKTIME +AC_TYPE_SIGNAL +AC_CHECK_FUNCS([realpath regcomp strcasecmp strdup strerror strnlen \ + strndup strrchr strsep strstr strverscmp uname geteuid]) -dnl Help line for fakeroot -AC_ARG_ENABLE(fakeroot, - AC_HELP_STRING([--disable-fakeroot], [Disable fakeroot proof support]), - [fakeroot=$enableval], [fakeroot=yes]) +# Enable large file support if available +AC_SYS_LARGEFILE + +# Check if we can use symbol visibility support in GCC +GCC_VISIBILITY_CC +# Check if we have -fgnu89-inline flag +GCC_GNU89_INLINE_CC -dnl Host-dependant flags +# Host-dependant flags case "${host}" in *-*-cygwin*) - ENV_CFLAGS="$ENV_CFLAGS -DCYGWIN" + CFLAGS="$CFLAGS -DCYGWIN" ;; esac -dnl Check for architecture +# Check for architecture, used in default makepkg.conf +# (Note single space left after CARCHFLAGS) case "${host}" in - i686-*) + i686-*) CARCH="i686" - CARCHFLAGS="i686" - ARCHSWITCH="march" + CARCHFLAGS="-march=i686 " ;; - x86_64-*) + x86_64-*) CARCH="x86_64" - CARCHFLAGS="x86-64" - ARCHSWITCH="march" + CARCHFLAGS="-march=x86-64 " ;; - ia64-*) + ia64-*) CARCH="ia64" - CARCHFLAGS="ia64" - ARCHSWITCH="march" + CARCHFLAGS="-march=ia64 " ;; - sparc-*) + sparc-*) CARCH="sparc" - CARCHFLAGS="v9" - ARCHSWITCH="mcpu" + CARCHFLAGS="-mcpu=v9 " ;; ppc-* | powerpc-*) CARCH="ppc" - CARCHFLAGS="750" - ARCHSWITCH="mcpu" + CARCHFLAGS="-mcpu=750 " ;; - i386-*) + i386-*) CARCH="i386" - CARCHFLAGS="i386" - ARCHSWITCH="march" + CARCHFLAGS="-march=i386 " + ;; + arm-*) + CARCH="arm" + CARCHFLAGS="-march=armv4 " ;; *) - AC_MSG_ERROR([Your architecture is not supported]) + AC_MSG_WARN([[Your architecture is unknown for makepkg.conf, consider adding it to configure.ac]]) + CARCH="unknown" + CARCHFLAGS="" ;; esac -dnl Now do some things common to all architectures +# Now do some things common to all architectures CHOST="${host}" AC_SUBST(CARCH) AC_SUBST(CARCHFLAGS) -AC_SUBST(ARCHSWITCH) AC_SUBST(CHOST) -dnl Humor lowers blood pressure -AC_MSG_CHECKING(your blood pressure) -AC_MSG_RESULT([a bit high, but we can proceed]) - -dnl Check for doxygen support -AC_MSG_CHECKING(for doxygen) +# Check for doxygen support and status +AC_MSG_CHECKING([for doxygen]) if test "x$wantdoxygen" = "xyes" ; then - AC_CHECK_PROGS([DOXYGEN], [doxygen]) - if test $DOXYGEN ; then - AC_MSG_RESULT(yes) + AC_CHECK_PROGS([DOXYGEN], [doxygen]) + if test $DOXYGEN ; then + AC_MSG_RESULT([yes]) usedoxygen=yes - else - AC_MSG_RESULT(no, doxygen missing) + else + AC_MSG_RESULT([no, doxygen missing]) usedoxygen=no - fi + fi else - AC_MSG_RESULT(no, disabled by configure) + AC_MSG_RESULT([no, disabled by configure]) usedoxygen=no fi -AM_CONDITIONAL(HAS_DOXYGEN, test "x$usedoxygen" = "xyes") - -dnl Check for math -AC_CHECK_LIB([m], [sqrt], [AC_CHECK_HEADER([math.h], [LIBM='-lm'])]) -if test -z "$LIBM"; then - AC_MSG_ERROR("math library needed to compile pacman!"); -fi - -dnl Check for libarchive -AC_CHECK_LIB([archive], [archive_read_data], [AC_CHECK_HEADER([archive.h], [LIBARCHIVE='-larchive'])]) -if test -z "$LIBARCHIVE"; then - AC_MSG_ERROR("libarchive is needed to compile pacman!"); -fi - -dnl Check for libdownload -AC_CHECK_LIB([download], [downloadParseURL], [AC_CHECK_HEADER([download.h], [LIBDOWNLOAD='-ldownload'])]) -if test -z "$LIBDOWNLOAD"; then - AC_MSG_ERROR("libdownload is needed to compile pacman!"); -fi - -# Enable large file support if available -AC_SYS_LARGEFILE +AM_CONDITIONAL(USE_DOXYGEN, test "x$usedoxygen" = "xyes") -dnl Set config location -AC_MSG_CHECKING(for configuration file name) -if test -n "$configfile"; then - AC_DEFINE_UNQUOTED([PACCONF], "$configfile", [Location of pacman conf file]) - AC_MSG_RESULT(["$configfile"]) +# Check for asciidoc support and status +AC_MSG_CHECKING([for asciidoc]) +if test "x$wantasciidoc" = "xyes" ; then + AC_CHECK_PROGS([ASCIIDOC], [asciidoc]) + if test $ASCIIDOC ; then + AC_MSG_RESULT([yes]) + useasciidoc=yes + else + AC_MSG_RESULT([no, asciidoc missing]) + useasciidoc=no + fi else - AC_MSG_ERROR(["pacman config file (--with-config-file is not set"]) + AC_MSG_RESULT([no, disabled by configure]) + useasciidoc=no fi +AM_CONDITIONAL(USE_ASCIIDOC, test "x$useasciidoc" = "xyes") -dnl Enable or disable debug code +# Enable or disable debug code AC_MSG_CHECKING(for debug mode request) if test "x$debug" = "xyes" ; then + AC_MSG_RESULT(yes) AC_DEFINE([PACMAN_DEBUG], , [Enable debug code]) - CFLAGS="$CFLAGS -g -Wall -Werror -fstack-protector -std=c99" - LDFLAGS="$LDFLAGS -lmcheck" - AC_MSG_RESULT(yes) + # Check for mcheck + AC_CHECK_HEADERS([mcheck.h]) + # Check for -fstack-protector availability + GCC_STACK_PROTECT_LIB + GCC_STACK_PROTECT_CC + CFLAGS="$CFLAGS -Wall -Werror" else - CFLAGS="$CFLAGS -Wall -std=c99" - AC_MSG_RESULT(no) + AC_MSG_RESULT(no) + CFLAGS="$CFLAGS -Wall" fi -dnl Enable or disable fakeroot code -AC_MSG_CHECKING(for fakeroot proof support) -if test "x$fakeroot" = "xyes" ; then +# Enable or disable inclusion of abs script +AC_MSG_CHECKING(for inclusion of abs script) +if test "x$includeabs" = "xyes" ; then AC_MSG_RESULT(yes) + AC_DEFINE([INCLUDE_ABS], , [Include abs script]) else - AC_DEFINE([FAKEROOT], , [Disable fakeroot-proof code]) AC_MSG_RESULT(no) fi +AM_CONDITIONAL(INCLUDE_ABS, test "x$includeabs" = "xyes") -dnl Set CFLAGS to both $CFLAGS and ones from env ($ENV_CFLAGS) -CFLAGS="$CFLAGS $ENV_CFLAGS" +# Enable or disable inclusion of abs script +AC_MSG_CHECKING(whether to build pacman.static) +if test "x$pacmanstatic" = "xyes" ; then + AC_MSG_RESULT(yes) + AC_DEFINE([INCLUDE_PACMAN_STATIC], , [Build pacman.static]) +else + AC_MSG_RESULT(no) +fi +AM_CONDITIONAL(INCLUDE_PACMAN_STATIC, test "x$pacmanstatic" = "xyes") -dnl ========================================================================== +# Set root directory +AC_SUBST(ROOTDIR) +# Set package file extension +AC_SUBST(PKGEXT) +AC_DEFINE_UNQUOTED([PKGEXT], "$PKGEXT", [The file extension used by pacman packages]) +# Set source package file extension +AC_SUBST(SRCEXT) +AC_DEFINE_UNQUOTED([SRCEXT], "$SRCEXT", [The file extension used by pacman source packages]) +# Set database file extension +AC_SUBST(DBEXT) +AC_DEFINE_UNQUOTED([DBEXT], "$DBEXT", [The file extension used by pacman databases]) -AC_OUTPUT([ +# Configuration files +AC_CONFIG_FILES([ lib/libalpm/Makefile lib/libalpm/po/Makefile.in src/pacman/Makefile -src/pacman/po/Makefile.in src/util/Makefile scripts/Makefile doc/Makefile etc/Makefile -etc/makepkg.conf -etc/pacman.conf etc/pacman.d/Makefile -etc/pacman.d/mirrorlist etc/abs/Makefile +po/Makefile.in pactest/Makefile contrib/Makefile Makefile ]) +AC_OUTPUT echo " -pacman-$VERSION: +pacman_display_version: - prefix : ${prefix} + Build information: source code location : ${srcdir} + prefix : ${prefix} + sysconfdir : $(eval echo ${sysconfdir}) + conf file : $(eval echo ${sysconfdir})/pacman.conf + localstatedir : $(eval echo ${localstatedir}) + database dir : $(eval echo ${localstatedir})/lib/pacman/ + cache dir : $(eval echo ${localstatedir})/cache/pacman/pkg/ compiler : ${CC} compiler flags : ${CFLAGS} defines : ${DEFS} Architecture : ${CARCH} - Architecture flags : -${ARCHSWITCH}=${CARCHFLAGS} + Architecture flags : ${CARCHFLAGS} Host Type : ${CHOST} libalpm version : ${LIB_VERSION} pacman version : ${PACKAGE_VERSION} - pacman.conf location : ${configfile} + Directory and file information: + root working directory : ${ROOTDIR} + package extension : ${PKGEXT} + source pkg extension : ${SRCEXT} + database extension : ${DBEXT} + + Compilation options: Doxygen support : ${usedoxygen} + Asciidoc support : ${useasciidoc} debug support : ${debug} - fakeroot-proof support : ${fakeroot} + include abs : ${includeabs} + build pacman.static : ${pacmanstatic} " + +# vim:set ts=2 sw=2 noet: |