summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
authorJeff Bailey <jeffbailey@google.com>2014-03-14 08:49:10 +0800
committerJeremy Kerr <jk@ozlabs.org>2014-07-16 08:43:08 +0800
commite39ce1c5ae8bd4bcd5a6e6997d994919f402fcf6 (patch)
tree8ffd90763759036c3667816a148df699e3ccec77 /configure.ac
parent5d46b27435464c603340179bc2dbad45358f2d14 (diff)
downloadpetitboot-e39ce1c5ae8bd4bcd5a6e6997d994919f402fcf6.zip
petitboot-e39ce1c5ae8bd4bcd5a6e6997d994919f402fcf6.tar.gz
autotools: Make petitboot autoreconfable
The standard way to regenerate the autotools bits is with 'autoreconf', but that doesn't work with our custom bootstrap script. We only need the bootstrap script to generate the version in configure.ac, which we can easily do with m4_esyscmd_s instead. This change allows autoreconfiguration with `autoreconf -f -i`. Includes changes proposed by Yann E. Morin <yann.morin.1998@free.fr>, and modifications from the original patch from Jeremy Kerr <jk@ozlabs.org> Signed-off-by: Jeff Bailey <jeffbailey@google.com> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac276
1 files changed, 276 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..3d2ec18
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,276 @@
+## configure.ac -- Process this file with autoconf to produce configure
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+#
+
+AC_INIT([petitboot],
+ [m4_esyscmd_s([./version.sh])],
+ [Geoff Levand <geoff@infradead.org>])
+
+AC_CONFIG_MACRO_DIR([m4])
+
+AC_PREFIX_DEFAULT([/usr/local])
+
+AS_IF([test "x$CFLAGS" = "x"], [AC_SUBST([CFLAGS], [""])])
+
+AC_PROG_CC
+AC_PROG_LEX
+AC_PROG_YACC
+AC_PROG_INSTALL
+
+AM_INIT_AUTOMAKE
+AC_GNU_SOURCE
+LT_INIT
+
+AX_WITH_CURSES
+AX_WITH_CURSES_MENU
+AX_WITH_CURSES_FORM
+
+AM_CONDITIONAL([WITH_NCURSES], [test "x$ax_cv_curses" = "xyes"])
+
+if test "x$ax_cv_curses" = xyes; then
+ if test "x$ax_cv_menu" != xyes; then
+ AC_MSG_ERROR([--with-ncurses requires the ncurses menu library])
+ fi
+ if test "x$ax_cv_form" != xyes; then
+ AC_MSG_ERROR([--with-ncurses requires the ncurses form library])
+ fi
+fi
+
+AC_CHECK_LIB([udev], [udev_new],
+ [],
+ [AC_MSG_FAILURE([The libudev development library is required by petitboot. Try installing the package libudev-dev or libudev-devel.])]
+)
+
+AC_CHECK_HEADERS([stdarg.h])
+AC_CHECK_HEADERS([varargs.h])
+
+dnl Checking for va_copy availability
+AC_MSG_CHECKING([for va_copy])
+AC_TRY_LINK([#include <stdarg.h>
+va_list ap1,ap2;], [va_copy(ap1,ap2);],
+have_va_copy=yes,
+have_va_copy=no)
+AC_MSG_RESULT($have_va_copy)
+if test x"$have_va_copy" = x"yes"; then
+ AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
+else
+ AC_MSG_CHECKING([for __va_copy])
+ AC_TRY_LINK([#include <stdarg.h>
+ va_list ap1,ap2;], [__va_copy(ap1,ap2);],
+ have___va_copy=yes,
+ have___va_copy=no)
+ AC_MSG_RESULT($have___va_copy)
+ if test x"$have___va_copy" = x"yes"; then
+ AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
+ fi
+fi
+
+AC_ARG_WITH(
+ [twin-x11],
+ [AS_HELP_STRING([--with-twin-x11],
+ [build x11 GUI programs using the twin window system [default=yes]]
+ )],
+ [],
+ [with_twin_x11=yes]
+)
+AM_CONDITIONAL([WITH_TWIN_X11], [test "x$with_twin_x11" = "xyes"])
+
+AC_ARG_WITH(
+ [twin-fbdev],
+ [AS_HELP_STRING(
+ [--with-twin-fbdev],
+ [build frame buffer GUI programs using the twin window system [default=no]]
+ )],
+ [],
+ [with_twin_fbdev=yes]
+)
+AM_CONDITIONAL([WITH_TWIN_FBDEV], [test "x$with_twin_fbdev" = "xyes"])
+
+AM_CONDITIONAL(
+ [WITH_TWIN],
+ [test "x$with_twin_x11" = "xyes" || test "x$with_twin_fbdev" = "xyes"])
+
+AS_IF(
+ [test "x$with_twin_x11" = "xyes" || test "x$with_twin_fbdev" = "xyes"],
+ [PKG_CHECK_MODULES(
+ [twin],
+ [libtwin],
+ [SAVE_LIBS="$LIBS" LIBS="$LIBS $twin_LIBS"
+ AC_CHECK_LIB(
+ [twin],
+ [twin_feature_init],
+ [],
+ [AC_MSG_FAILURE([--with-twin was given but the test for libtwin failed.])]
+ )
+ LIBS="$SAVE_LIBS"
+ ],
+ [AC_MSG_RESULT([$twin_PKG_ERRORS])
+ AC_MSG_FAILURE([ Consider adjusting PKG_CONFIG_PATH environment variable])
+ ]
+ )]
+)
+
+AS_IF(
+ [test "x$with_twin_x11" = "xyes"],
+ [SAVE_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $twin_CFLAGS"
+ AC_CHECK_HEADERS(
+ [libtwin/twin_x11.h],
+ [],
+ [AC_MSG_FAILURE([ --with-twin-x11 given but libtwin/twin_x11.h not found])]
+ )
+ CPPFLAGS="$SAVE_CPPFLAGS"
+ ]
+)
+
+AS_IF(
+ [test "x$with_twin_fbdev" = "xyes"],
+ [SAVE_CPPFLAGS="$CPPFLAGS" CPPFLAGS="$CPPFLAGS $twin_CFLAGS"
+ AC_CHECK_HEADERS(
+ [libtwin/twin_fbdev.h],
+ [],
+ [AC_MSG_FAILURE([ --with-twin-fbdev given but libtwin/twin_fbdev.h not found])]
+ )
+ CPPFLAGS="$SAVE_CPPFLAGS"
+ ]
+)
+
+AC_ARG_ENABLE(
+ [busybox],
+ [AS_HELP_STRING(
+ [--enable-busybox],
+ [build programs with extra support for busybox [default=no]])
+ ],
+ [],
+ [enable_busybox=no]
+)
+#AM_CONDITIONAL([ENABLE_BUSYBOX], [test "x$enable_busybox" = "xyes"])
+
+AC_ARG_ENABLE(
+ [ps3],
+ [AS_HELP_STRING(
+ [--enable-ps3],
+ [build additional programs for the PS3 game console [default=no]]
+ )],
+ [],
+ [enable_ps3=no]
+)
+AM_CONDITIONAL([ENABLE_PS3], [test "x$enable_ps3" = "xyes"])
+
+AC_ARG_ENABLE(
+ [debug],
+ [AS_HELP_STRING([--enable-debug],
+ [build programs with extra debug info [default=no]]
+ )],
+ [],
+ [enable_debug=check]
+)
+#AM_CONDITIONAL([ENABLE_DEBUG], [test "x$enable_debug" = "xyes"])
+
+AC_ARG_ENABLE(
+ [test-valgrind],
+ [AS_HELP_STRING([--enable-test-valgrind],
+ [run all tests with valgrind]
+ )],
+)
+AM_CONDITIONAL([ENABLE_TEST_VALGRIND], [test "x$enable_test_valgrind" = "xyes"])
+
+# host program paths
+AC_DEFUN([DEFINE_HOST_PROG],
+ [
+ AC_ARG_VAR([HOST_PROG_$1], [Path to "$2" on the host [default $3]])
+ if test "x$HOST_PROG_$1" = "x"; then
+ HOST_PROG_$1="$3"
+ fi
+ AC_DEFINE_UNQUOTED(HOST_PROG_$1, ["$HOST_PROG_$1"],
+ [Path to "$2" on the host])
+ ])
+
+DEFINE_HOST_PROG(CP, cp, [/bin/cp])
+DEFINE_HOST_PROG(KEXEC, kexec, [/sbin/kexec])
+DEFINE_HOST_PROG(MOUNT, mount, [/bin/mount])
+DEFINE_HOST_PROG(SHUTDOWN, shutdown, [/sbin/shutdown])
+DEFINE_HOST_PROG(SFTP, sftp, [/usr/bin/sftp])
+DEFINE_HOST_PROG(TFTP, tftp, [/usr/bin/tftp])
+DEFINE_HOST_PROG(UMOUNT, umount, [/bin/umount])
+DEFINE_HOST_PROG(WGET, wget, [/usr/bin/wget])
+DEFINE_HOST_PROG(IP, ip, [/sbin/ip])
+DEFINE_HOST_PROG(UDHCPC, udhcpc, [/sbin/udhcpc])
+
+AC_ARG_WITH(
+ [tftp],
+ [AS_HELP_STRING([--with-tftp=TYPE],
+ [Use TYPE-type ftp client (either hpa or busybox) [default=runtime-check]]
+ )],
+ [],
+ [with_tftp=detect]
+)
+
+case x$with_tftp in
+'xhpa')
+ tftp_type='TFTP_TYPE_HPA'
+ ;;
+'xbusybox')
+ tftp_type='TFTP_TYPE_BUSYBOX'
+ ;;
+*)
+ tftp_type='TFTP_TYPE_UNKNOWN'
+ ;;
+esac
+
+AC_DEFINE_UNQUOTED(TFTP_TYPE, $tftp_type, [tftp client type])
+
+default_cflags="--std=gnu99 -g \
+ -Wall -W -Wunused -Wstrict-prototypes -Wmissing-prototypes \
+ -Wmissing-declarations -Wredundant-decls"
+
+AC_ARG_ENABLE(
+ [werror],
+ [AS_HELP_STRING([--enable-werror],
+ [build programs with -Werror]
+ )],
+ [default_cflags="$default_cflags -Werror"]
+)
+
+AS_IF(
+ [test "x$enable_debug" = "xyes"],
+ [AC_SUBST([DEFAULT_CFLAGS], ["$default_cflags -O0 -DDEBUG"])],
+ [AC_SUBST([DEFAULT_CFLAGS], ["$default_cflags -O2 -DNDEBUG"])]
+)
+
+
+AC_SUBST([LIBTOOL_DEPS])
+AC_SUBST([DESTDIR])
+AC_SUBST([pkgsysconfdir], ["${sysconfdir}/${package}"])
+
+AC_CONFIG_HEADERS([config.h])
+AC_CONFIG_FILES([
+ Makefile
+ discover/Makefile
+ discover/grub2/Makefile
+ lib/Makefile
+ man/Makefile
+ test/Makefile
+ test/lib/Makefile
+ test/parser/Makefile
+ test/urls/Makefile
+ ui/Makefile
+ ui/common/Makefile
+ ui/ncurses/Makefile
+ ui/test/Makefile
+ ui/twin/Makefile
+ utils/Makefile
+])
+
+AC_OUTPUT
OpenPOWER on IntegriCloud