dnl dnl configure.ac for kexec-tools dnl dnl dnl ---Required AC_INIT(kexec-tools, 2.0.26.git) AC_CONFIG_AUX_DIR(./config) AC_CONFIG_HEADERS([include/config.h]) AC_LANG(C) AC_PROG_CC dnl -- Compilation platform configuration dnl -- the host specifices the host machine for the kexec binary, the dnl -- the target specifies the architecture of the kernel to be kexeced. AC_CANONICAL_HOST AC_CANONICAL_TARGET dnl Compute ARCH from target cpu info case $target_cpu in i?86 ) ARCH="i386" ;; powerpc ) ARCH="ppc" SUBARCH="BE" ;; powerpc64 ) ARCH="ppc64" SUBARCH="BE" ;; powerpc64le ) ARCH="ppc64" SUBARCH="LE" ;; aarch64* ) ARCH="arm64" ;; arm* ) ARCH="arm" ;; s390x|s390 ) ARCH="s390" ;; sh4|sh4a|sh3|sh ) ARCH="sh" ;; mips* ) ARCH="mips" ;; cris|crisv32 ) ARCH="cris" ;; ia64|x86_64|alpha|m68k ) ARCH="$target_cpu" ;; hppa*) ARCH="hppa" ;; loongarch*) ARCH="loongarch" ;; * ) AC_MSG_ERROR([unsupported architecture $target_cpu]) ;; esac if test "$ARCH" = "x86_64" ; then case $target in *x32 ) SUBARCH="x32" ;; * ) SUBARCH="" ;; esac fi dnl ---Options OBJDIR=`pwd`/objdir if test "${host_alias}" ; then OBJDIR="$OBJDIR-${host_alias}" fi if test "x$BUILD_CFLAGS" = "x" ; then BUILD_CFLAGS='-O2 -Wall' fi if test "x$TARGET_CFLAGS" = "x" ; then TARGET_CFLAGS='-O2 -Wall' fi AC_ARG_WITH([objdir], AC_HELP_STRING([--with-objdir=],[select directory for object files]), [ OBJDIR="$withval" ], [ OBJDIR="$OBJDIR" ]) AC_ARG_WITH([gamecube], AC_HELP_STRING([--with-gamecube],[enable gamecube support]), AC_DEFINE(WITH_GAMECUBE, 1, [Define to include gamecube support])) AC_ARG_WITH([zlib], AC_HELP_STRING([--without-zlib],[disable zlib support]), [ with_zlib="$withval"], [ with_zlib=yes ] ) AC_ARG_WITH([lzma], AC_HELP_STRING([--without-lzma],[disable lzma support]), [ with_lzma="$withval"], [ with_lzma=yes ] ) AC_ARG_WITH([xen], AC_HELP_STRING([--without-xen], [disable extended xen support]), [ with_xen="$withval"], [ with_xen=yes ] ) AC_ARG_WITH([booke], AC_HELP_STRING([--with-booke],[build for booke]), AC_DEFINE(CONFIG_BOOKE,1, [Define to build for BookE])) dnl ---Programs dnl To specify a different compiler, just 'export CC=/path/to/compiler' if test "${build}" != "${host}" ; then AC_CHECK_PROGS(BUILD_CC, [${build_alias}-gcc ${build}-gcc gcc]) else BUILD_CC="$CC" fi dnl Find the compiler tool chain AC_PROG_CPP AC_CHECK_TOOL([LD], ld, "no", $PATH) AC_CHECK_TOOL([AS], as, "no", $PATH) AC_CHECK_TOOL([OBJCOPY], objcopy, "no", $PATH) AC_CHECK_TOOL([AR], ar, "", $PATH) AC_CHECK_TOOL([STRIP], strip, "no", $PATH) dnl Find compiler for target if test "${target}" != "${host}" ; then AC_CHECK_PROGS(TARGET_CC, [${target_alias}-gcc ${target}-gcc gcc]) AC_CHECK_PROGS(TARGET_LD, [${target_alias}-ld ${target}-ld ld]) else TARGET_CC="$CC" TARGET_LD="$LD" fi AC_MSG_CHECKING([whether $TARGET_CC accepts -fno-zero-initialized-in-bss]) saved_CFLAGS="$CFLAGS" saved_CC="$CC" CC="$TARGET_CC" CFLAGS="$CFLAGS -fno-zero-initialized-in-bss" AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,,)], PURGATORY_EXTRA_CFLAGS="-fno-zero-initialized-in-bss" AC_MSG_RESULT([Yes]), AC_MSG_RESULT([No])) CFLAGS="$saved_CFLAGS" CC="$saved_CC" AC_SUBST(PURGATORY_EXTRA_CFLAGS, [$PURGATORY_EXTRA_CFLAGS]) dnl Find the helper functions AC_PROG_INSTALL AC_CHECK_PROG([CHMOD], chmod, chmod, "no", [$PATH]) AC_CHECK_PROG([MKDIR], mkdir, mkdir, "no", [$PATH]) AC_CHECK_PROG([RM], rm, rm, "no", [$PATH]) AC_CHECK_PROG([CP], cp, cp, "no", [$PATH]) AC_CHECK_PROG([LN], ln, ln, "no", [$PATH]) AC_CHECK_PROG([TAR], tar, tar, "no", [$PATH]) AC_CHECK_PROG([RPMBUILD], rpmbuild, rpmbuild, "no", [$PATH]) AC_CHECK_PROG([SED], sed, sed, "no", [$PATH]) AC_CHECK_PROG([FIND], find, find, "no", [$PATH]) AC_CHECK_PROG([XARGS], xargs, xargs, "no", [$PATH]) AC_CHECK_PROG([DIRNAME], dirname, dirname, "no", [$PATH]) dnl See if I have a usable copy of zlib available if test "$with_zlib" = yes ; then AC_CHECK_HEADER(zlib.h, [AC_CHECK_LIB(z, inflateInit_, , AC_MSG_NOTICE([zlib support disabled]))]) fi dnl See if I have a usable copy of lzma available if test "$with_lzma" = yes ; then AC_CHECK_HEADER(lzma.h, [AC_CHECK_LIB(lzma, lzma_code, , AC_MSG_NOTICE([lzma support disabled]))]) fi dnl find Xen control stack libraries if test "$with_xen" = yes ; then AC_CHECK_HEADER(xenctrl.h, [AC_CHECK_LIB(xenctrl, xc_kexec_load, , AC_MSG_NOTICE([Xen support disabled]))]) fi dnl Link libxenctrl.so at run-time rather than build-time if test "$with_xen" = dl ; then AC_CHECK_HEADER(dlfcn.h, [AC_CHECK_LIB(dl, dlopen, , AC_MSG_ERROR([Dynamic library linking not available]))], AC_MSG_ERROR([Dynamic library linking header not available])) AC_DEFINE(CONFIG_LIBXENCTRL_DL, 1, [Define to 1 to link libxenctrl.so at run-time rather than build-time]) AC_CHECK_HEADER(xenctrl.h, [AC_CHECK_LIB(xenctrl, xc_kexec_load, AC_DEFINE(HAVE_LIBXENCTRL, 1, ), # required define, and prevent -lxenctrl AC_MSG_NOTICE([Xen support disabled]))]) fi dnl Check for the Xen kexec_status hypercall - reachable from --with-xen=yes|dl if test "$ac_cv_lib_xenctrl_xc_kexec_load" = yes ; then AC_CHECK_LIB(xenctrl, xc_kexec_status, AC_DEFINE(HAVE_KEXEC_CMD_STATUS, 1, [The kexec_status call is available]), AC_MSG_NOTICE([The kexec_status call is not available])) fi dnl ---Sanity checks if test "$CC" = "no"; then AC_MSG_ERROR([cc not found]); fi if test "$CPP" = "no"; then AC_MSG_ERROR([cpp not found]); fi if test "$LD" = "no"; then AC_MSG_ERROR([ld not found]); fi if test "$AS" = "no"; then AC_MSG_ERROR([as not found]); fi if test "$OBJCOPY" = "no"; then AC_MSG_ERROR([objcopy not found]); fi if test "$AR" = "no"; then AC_MSG_ERROR([ar not found]); fi if test "$MKDIR" = "no"; then AC_MSG_ERROR([ mkdir not found]); fi if test "$RM" = "no"; then AC_MSG_ERROR([ rm not found]); fi if test "$CP" = "no"; then AC_MSG_ERROR([ cp not found]); fi if test "$LN" = "no"; then AC_MSG_ERROR([ ln not found]); fi if test "$TAR" = "no"; then AC_MSG_ERROR([ tar not found]); fi if test "$RPM" = "no"; then AC_MSG_ERROR([ rpm not found]); fi if test "$SED" = "no"; then AC_MSG_ERROR([ sed not found]); fi if test "$FIND" = "no"; then AC_MSG_ERROR([ find not found]); fi if test "$XARGS" = "no"; then AC_MSG_ERROR([ xargs not found]); fi if test "$DIRNAME" = "no"; then AC_MSG_ERROR([ dirname not found]); fi if test "$STRIP" = "no"; then AC_MSG_ERROR([ strip not found]); fi dnl ---Output variables... AC_SUBST([BUILD_CC]) AC_SUBST([BUILD_CFLAGS]) AC_SUBST([TARGET_CC]) AC_SUBST([TARGET_LD]) AC_SUBST([TARGET_CFLAGS]) AC_SUBST([ASFLAGS]) AC_SUBST([ARCH]) AC_SUBST([SUBARCH]) AC_SUBST([OBJDIR]) AC_SUBST([INSTALL]) dnl ---Output AC_OUTPUT([Makefile])