X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=configure.ac;h=68e0794e467413ffe9ca0eb427d65546504c5976;hb=bb7c99d3da80e09b951aaa3061e04549e7c82def;hp=7f7569e3c2bdd0cc9aa14906db316d732b4ba76d;hpb=081b9a03dc45d057b3c693719a5fd14889353e53;p=kconfig-frontends diff --git a/configure.ac b/configure.ac index 7f7569e..68e0794 100644 --- a/configure.ac +++ b/configure.ac @@ -1,46 +1,103 @@ # -*- Autoconf -*- # Process this file with autoconf to produce a configure script. +#--------------------------------------------------------------------------- +# Global initialisation + +#---------------------------------------- +# Prepare autoconf AC_PREREQ([2.67]) AC_INIT( [kconfig-frontends], [m4_esyscmd_s([./scripts/version.sh])], - [nobody@nowhere.org]) + [yann.morin.1998@free.fr]) AC_CONFIG_SRCDIR([frontends/conf/conf.c]) # Use a config.h to avoid brazilions -DHAVE_FOO on compile lines -AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_AUX_DIR([scripts]) +AC_CONFIG_HEADERS([scripts/.autostuff/config.h]) +AC_CONFIG_AUX_DIR([scripts/.autostuff/scripts]) +AC_CONFIG_MACRO_DIR([scripts/.autostuff/m4]) -# Checks for programs. -AC_PROG_CC -AC_PROG_CXX -AC_PROG_MAKE_SET - -# Checks for libraries. -# (none) +#---------------------------------------- +# Prepare automake -# Checks for header files. -AC_HEADER_STDC -# The folowing AC_CHECK_HEADERS was a single big line -AC_CHECK_HEADERS([ fcntl.h libintl.h limits.h locale.h ]) -AC_CHECK_HEADERS([ stdlib.h string.h sys/time.h unistd.h ]) +# We want to allow the user to override our default program-prefix, +# so we must set-it now, before automake has a chance to interpret +# it, but after the options are parsed, so as not to overwrite the +# value (if any) set by the user +AS_IF( + [test "$program_prefix" = NONE], + [program_prefix=kconfig-]) -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_C_INLINE -AC_TYPE_SIZE_T +AM_INIT_AUTOMAKE -# Checks for library functions. -AC_FUNC_MALLOC -AC_FUNC_REALLOC -AC_FUNC_ALLOCA -# The following AC_CHECK_FUNCS was a single big line -AC_CHECK_FUNCS([ bzero memmove memset ]) -AC_CHECK_FUNCS([ strcasecmp strchr strcspn strdup strncasecmp strpbrk strrchr strspn strtol ]) -AC_CHECK_FUNCS([ gettimeofday mkdir regcomp setlocale uname ]) +#---------------------------------------- +# Prepare libtool +LT_PREREQ([2.2.6]) +LT_INIT([disable-static]) -# End of the autoscan-detected stuff #--------------------------------------------------------------------------- +# Set misc options + +# By default, do not build with -Wall, unless the user asks for it +AC_ARG_ENABLE( + [wall], + [AS_HELP_STRING( + [--enable-wall], + [build with -Wall (default=no)])], + [AS_CASE( + ["$enableval"], + [yes], [wall_CFLAGS=-Wall], + [*], [wall_CFLAGS=""])]) +AC_SUBST([wall_CFLAGS],[${wall_CFLAGS}]) + +# By default, do not build with -Werror, unless the user asks for it +AC_ARG_ENABLE( + [werror], + [AS_HELP_STRING( + [--enable-werror], + [build with -Werror (default=no)])], + [AS_CASE( + ["$enableval"], + [yes], [werror_CFLAGS=-Werror], + [*], [werror_CFLAGS=""])]) +AC_SUBST([werror_CFLAGS],[${werror_CFLAGS}]) + +# Although there is a default (="linux") in the code, we do provide +# a default here, to get a consistent autostuff behavior +AC_ARG_ENABLE( + [root-menu-prompt], + [AS_HELP_STRING( + [--enable-root-menu-prompt=PROMPT], + [set the root-menu prompt (default=Configuration)])], + [AS_CASE( + ["$enableval"], + [yes], [root_menu=Configuration], + [no], [root_menu=], + [# Escape the $ signs, otherwise they would get munged by make + # Also, append a space at the end, to separate the package + # name from the literal 'Configuration' + root_menu="$( echo "$enableval" |sed -r -e 's/\$/\\$$/g;' )"])]) +AC_SUBST([root_menu], [${root_menu=Configuration}]) + +AC_ARG_ENABLE( + [config-prefix], + [AS_HELP_STRING( + [--enable-config-prefix=PREFIX], + [the prefix to the config option (default=CONFIG_)])], + [AS_CASE( + ["$enableval"], + [*" "*],[AC_MSG_ERROR([config prefix can not contain spaces: '$enableval'])], + [yes], [config_prefix=CONFIG_], + [no], [config_prefix=], + [config_prefix=$enableval])]) +AC_SUBST([config_prefix], [${config_prefix-CONFIG_}]) + +AC_ARG_ENABLE( + [utils], + [AS_HELP_STRING( + [--disable-utils], + [install utilities to manage .config files (default=no)])]) +AC_SUBST([enable_utils], [${enable_utils:-yes}]) #---------------------------------------- # Options to selectively enable/disable frontends @@ -49,75 +106,137 @@ AC_ARG_ENABLE( [conf], [AS_HELP_STRING( [--disable-conf], - [conf, the stdin-based frontend (default=enabled)])]) + [conf, the stdin-based frontend (default=auto)])]) AC_SUBST([enable_conf], [${enable_conf:-auto}]) AC_ARG_ENABLE( [mconf], [AS_HELP_STRING( [--disable-mconf], - [mconf, the traditional ncurses-based frontend (default=enabled)])]) + [mconf, the traditional ncurses-based frontend (default=auto)])]) AC_SUBST([enable_mconf], [${enable_mconf:-auto}]) AC_ARG_ENABLE( [nconf], [AS_HELP_STRING( [--disable-nconf], - [nconf, the modern ncurses-based frontend (default=enabled)])]) + [nconf, the modern ncurses-based frontend (default=auto)])]) AC_SUBST([enable_nconf], [${enable_nconf:-auto}]) AC_ARG_ENABLE( [gconf], [AS_HELP_STRING( [--disable-gconf], - [gconf, the GTK-based frontend (default=enabled)])]) + [gconf, the GTK-based frontend (default=auto)])]) AC_SUBST([enable_gconf], [${enable_gconf:-auto}]) AC_ARG_ENABLE( [qconf], [AS_HELP_STRING( [--disable-qconf], - [qconf, the QT-based frontend (default=enabled)])]) + [qconf, the QT-based frontend (default=auto)])]) AC_SUBST([enable_qconf], [${enable_qconf:-auto}]) +AC_ARG_ENABLE( + [frontends], + [AS_HELP_STRING( + [--enable-frontends=list], + [enables only the set of frontends in comma-separated 'list' + (default: auto selection), takes precedence over all + --enable-*conf, above])], + [for f in conf mconf nconf gconf qconf; do + AS_CASE( + ["$enableval"], + [yes], [eval enable_$f=yes], + ["$f"], [eval enable_$f=yes], + ["$f",*], [eval enable_$f=yes], + [*,"$f"], [eval enable_$f=yes], + [*,"$f",*], [eval enable_$f=yes], + [eval enable_$f=no]) + done]) +AC_SUBST([enable_frontends]) + +#---------------------------------------- +# What extra CFLAGS we will be using +AC_SUBST([kf_CFLAGS], ["$wall_CFLAGS $werror_CFLAGS"]) + +#---------------------------------------- +# Dependencies that will be needed, depending on the frontends +AS_CASE( + ["$enable_mconf":"$enable_nconf"], + [*yes*], [need_curses=yes], + [*auto*], [need_curses=auto], + [need_curses=no]) +[need_panel_menu="$enable_nconf"] +AS_CASE( + ["$enable_gconf":"$enable_qconf"], + [*yes*], [need_pkgconfig=yes], + [*auto*], [need_pkgconfig=yes], + [need_pkgconfig=no ]) +[need_gtk="$enable_gconf"] +[need_qt="$enable_qconf"] + +#--------------------------------------------------------------------------- +# Now check we have the required stuff + #---------------------------------------- # Some program checks -AC_PROG_RANLIB -AC_PROG_LEX -AC_PROG_YACC +AC_PROG_CC +AM_PROG_CC_C_O +AC_PROG_CXX +AC_C_INLINE +AC_PROG_MAKE_SET AC_CHECK_PROGS( [GPERF], [gperf]) AS_IF( [test -z "$GPERF"], [AC_MSG_ERROR([can not find gperf])]) +AS_IF( + [test "$need_pkgconfig" = "yes"], + [PKG_PROG_PKG_CONFIG()]) +AC_PROG_LEX AC_SUBST([AM_LFLAGS], ["-L -P zconf"]) +AC_PROG_YACC AC_SUBST([AM_YFLAGS], ["-t -l -p zconf"]) +#---------------------------------------- +# Check for standard headers +AC_HEADER_STDC +AC_HEADER_STDBOOL +AC_CHECK_HEADERS([ fcntl.h limits.h locale.h ]) +AC_CHECK_HEADERS([ stdlib.h string.h sys/time.h unistd.h ]) +AC_TYPE_SIZE_T + +#---------------------------------------- +# Checks for library functions. +AC_FUNC_MALLOC +AC_FUNC_REALLOC +AC_FUNC_ALLOCA +AC_CHECK_FUNCS([ bzero memmove memset ]) +AC_CHECK_FUNCS([ strcasecmp strchr strcspn strdup strncasecmp strpbrk strrchr strspn strtol ]) +AC_CHECK_FUNCS([ gettimeofday mkdir regcomp setlocale uname ]) + #---------------------------------------- # Check for gettext, for the kconfig frontends -AC_SUBST([GETTEXT]) +AC_SUBST([intl_CPPFLAGS]) AC_CHECK_HEADERS( [libintl.h], [ac_ct_gettext_hdr=$ac_header; break], - [AC_MSG_WARN([libintl is missing, frontends will not be localised])]) + [AC_MSG_WARN([libintl is missing, frontends will not be localised]) + intl_CPPFLAGS=-DKBUILD_NO_NLS]) AS_IF( [test -n "$ac_ct_gettext_hdr"], [AC_CHECK_DECL( [gettext],, [AC_MSG_WARN([gettext is missing, frontends will not be localised]) - GETTEXT=-DKBUILD_NO_NLS], + intl_CPPFLAGS=-DKBUILD_NO_NLS], [#include <$ac_ct_gettext_hdr>])]) #---------------------------------------- # Check for ncurses, for the mconf & nconf frontends -AS_CASE( - ["$enable_mconf":"$enable_nconf"], - [yes:*], [need_curses=yes], - [*:yes], [need_curses=yes], - [auto:*], [need_curses=auto], - [*:auto], [need_curses=auto], - [need_curses=no]) - AS_IF( [test "$need_curses" = "yes" -o "$need_curses" = "auto"], [AC_SUBST([CURSES_LOC]) + AC_SUBST([ncurses_LIBS]) + LIBS_old="$LIBS" + LIBS= AC_CHECK_HEADERS( [ncurses/ncurses.h ncurses/curses.h ncursesw/curses.h ncurses.h curses.h], [CURSES_LOC=$ac_header; break]) @@ -136,7 +255,9 @@ AS_IF( [AS_IF( [test "$need_curses" = "yes"], [AC_MSG_ERROR([could not find curses library (frontends: mconf/nconf)])], - [has_curses=no])])]) + [has_curses=no])]) + ncurses_LIBS="$LIBS" + LIBS=$LIBS_old]) AS_IF( [test "$has_curses" = "no" ], @@ -144,14 +265,16 @@ AS_IF( #---------------------------------------- # Check for libpanel and libmenu, for the nconf frontend -[need_panel_menu="$enable_nconf"] - AS_IF( [test "$need_panel_menu" = "yes" -o "$need_panel_menu" = "auto"], - [AC_SEARCH_LIBS( + [AC_SUBST([ncurses_extra_LIBS]) + LIBS_old="$LIBS" + LIBS= + AC_SEARCH_LIBS( [new_panel], - [panel], - [ac_ct_panel_lib_found=yes; break]) + [panelw panel], + [ac_ct_panel_lib_found=yes; break],, + [$ncurses_LIBS]) AS_IF( [test -z "$ac_ct_panel_lib_found"], [AS_IF( @@ -160,44 +283,24 @@ AS_IF( [has_panel_menu=no])]) AC_SEARCH_LIBS( [menu_init], - [menu], - [ac_ct_menu_lib_found=yes; break]) + [menuw menu], + [ac_ct_menu_lib_found=yes; break],, + [$ncurses_LIBS]) AS_IF( [test -z "$ac_ct_panel_lib_found"], [AS_IF( [test "$need_panel_menu" = "yes"], [AC_MSG_ERROR([could not find libmenu library (frontend: nconf)])], - [has_panel_menu=no])])]) + [has_panel_menu=no])]) + ncurses_extra_LIBS="$LIBS" + LIBS=$LIBS_old]) AS_IF( [test "$has_panel_menu" = "no" ], [enable_nconf=no]) -#---------------------------------------- -# Check if the lxdialog library should be built -AS_IF( - [test "$enable_mconf" = "yes" -o "$enable_mconf" = "auto"], - [need_lxdialog=yes], - [need_lxdialog=no]) - -#---------------------------------------- -# Check pkg-config if needed -AS_CASE( - ["$enable_gconf":"$enable_qconf"], - [yes:*], [need_pkgconfig=yes], - [*:yes], [need_pkgconfig=yes], - [auto:*], [need_pkgconfig=yes], - [*:auto], [need_pkgconfig=yes], - [need_pkgconfig=no ]) - -AS_IF( - [test "$need_pkgconfig" = "yes"], - [PKG_PROG_PKG_CONFIG()]) - #---------------------------------------- # Check headers and libs for gconf -[need_gtk="$enable_gconf"] - AS_IF( [test "$need_gtk" = "yes" -o "$need_gtk" = "auto"], [PKG_CHECK_MODULES( @@ -214,24 +317,46 @@ AS_IF( [enable_gconf=no]) #---------------------------------------- -# Check headers and libs for gconf -[need_qt="$enable_qconf"] - +# Check headers and libs for qconf AS_IF( [test "$need_qt" = "yes" -o "$need_qt" = "auto"], [PKG_CHECK_MODULES( [qt4], [QtCore QtGui Qt3Support], - [has_qt=yes], + [has_qt=yes; need_moc="$need_qt"], [AS_IF( [test "$need_qt" = "yes"], [AC_MSG_ERROR([could not find QT4 headers and/or libraries (frontend: qconf)])], - [has_qt=no])])]) + [has_qt=no; need_moc=no])])]) + +AC_ARG_VAR([MOC], [Qt meta object compiler (moc) command]) +AS_IF( + [test "$need_moc" = "yes" -o "$need_moc" = "auto"], + [QT4_BINDIR=`$PKG_CONFIG Qt --variable bindir` + AC_PATH_PROGS( + [MOC], + [moc-qt4 moc],, + [$QT4_BINDIR:$PATH]) + AS_IF( + [test -n "$MOC"], + [has_moc=yes], + [AS_IF( + [test "$need_moc" = "yes"], + [AC_MSG_ERROR([could not find moc (frontend: qconf)])], + [has_moc=no])])]) AS_IF( - [test "$has_qt" = "no" ], + [test "$has_qt" = "no" -o "$has_moc" = "no"], [enable_qconf=no]) +#---------------------------------------- +# Per-frontends extra libraries +AC_ARG_VAR([conf_EXTRA_LIBS], [Extra libraries to build the conf frontend] ) +AC_ARG_VAR([gconf_EXTRA_LIBS], [Extra libraries to build the gconf frontend]) +AC_ARG_VAR([mconf_EXTRA_LIBS], [Extra libraries to build the mconf frontend]) +AC_ARG_VAR([nconf_EXTRA_LIBS], [Extra libraries to build the nconf frontend]) +AC_ARG_VAR([qconf_EXTRA_LIBS], [Extra libraries to build the qconf frontend]) + #--------------------------------------------------------------------------- # Now, we know what frontends to enable AS_IF([test "$enable_conf" = "auto"], [enable_conf=yes ]) @@ -240,10 +365,22 @@ AS_IF([test "$enable_mconf" = "auto"], [enable_mconf=yes]) AS_IF([test "$enable_nconf" = "auto"], [enable_nconf=yes]) AS_IF([test "$enable_qconf" = "auto"], [enable_qconf=yes]) -#--------------------------------------------------------------------------- -# Prepare automake -AM_INIT_AUTOMAKE -AM_PROG_CC_C_O +#---------------------------------------- +# Check if the lxdialog library should be built +AS_IF( + [test "$enable_mconf" = "yes"], + [need_lxdialog=yes], + [need_lxdialog=no]) + +#---------------------------------------- +# Check if the images library should be built +AS_IF( + [test "$enable_gconf" = "yes" -o "$enable_qconf" = "yes"], + [need_images=yes], + [need_images=no]) + +#---------------------------------------- +# Setup automake conditional build AM_CONDITIONAL( [COND_conf], [test "$enable_conf" = "yes"]) @@ -262,12 +399,26 @@ AM_CONDITIONAL( AM_CONDITIONAL( [COND_lxdialog], [test "$need_lxdialog" = "yes"]) +AM_CONDITIONAL( + [COND_images], + [test "$need_images" = "yes"]) +AM_CONDITIONAL( + [COND_utils], + [test "$enable_utils" = "yes"]) + +#---------------------------------------- +# Get the version to apply to the parser shared library +AC_SUBST( + [KCONFIGPARSER_LIB_VERSION], + [m4_esyscmd_s([./scripts/version.sh --plain])]) #---------------------------------------- # Finalise AC_CONFIG_FILES([ Makefile + docs/Makefile libs/Makefile + libs/images/Makefile libs/lxdialog/Makefile libs/parser/Makefile frontends/Makefile @@ -276,22 +427,34 @@ AC_CONFIG_FILES([ frontends/nconf/Makefile frontends/gconf/Makefile frontends/qconf/Makefile + utils/Makefile + scripts/Makefile ]) AC_OUTPUT +#---------------------------------------- +# Pretty-print the configuration settings +[fe_list=] +AS_IF([test "$enable_conf" = "yes"], [fe_list="$fe_list conf" ]) +AS_IF([test "$enable_gconf" = "yes"], [fe_list="$fe_list gconf"]) +AS_IF([test "$enable_mconf" = "yes"], [fe_list="$fe_list mconf"]) +AS_IF([test "$enable_nconf" = "yes"], [fe_list="$fe_list nconf"]) +AS_IF([test "$enable_qconf" = "yes"], [fe_list="$fe_list qconf"]) + +[lib_list=] +AS_IF( + [test "$enable_shared" = "yes"], + [lib_list="$lib_list shared (version: $KCONFIGPARSER_LIB_VERSION)"]) +AS_IF( + [test "$enable_static" = "yes"], + [lib_list="$lib_list${lib_list:+,} static"]) + +AC_MSG_NOTICE() AC_MSG_NOTICE([Configured with:]) -AS_IF([test "$enable_conf" = "yes"], - [AC_MSG_NOTICE([ - conf: yes])], - [AC_MSG_NOTICE([ - conf: no])]) -AS_IF([test "$enable_gconf" = "yes"], - [AC_MSG_NOTICE([ - gconf: yes])], - [AC_MSG_NOTICE([ - gconf: no])]) -AS_IF([test "$enable_mconf" = "yes"], - [AC_MSG_NOTICE([ - mconf: yes])], - [AC_MSG_NOTICE([ - mconf: no])]) -AS_IF([test "$enable_nconf" = "yes"], - [AC_MSG_NOTICE([ - nconf: yes])], - [AC_MSG_NOTICE([ - nconf: no])]) -AS_IF([test "$enable_qconf" = "yes"], - [AC_MSG_NOTICE([ - qconf: yes])], - [AC_MSG_NOTICE([ - qconf: no])]) +AC_MSG_NOTICE([- parser library :$lib_list]) +AC_MSG_NOTICE([ - root-menu prompt : $root_menu]) +AC_MSG_NOTICE([ - config prefix : $config_prefix]) +AC_MSG_NOTICE([- frontends :$fe_list]) +AC_MSG_NOTICE([ - transform name : $program_transform_name]) +AC_MSG_NOTICE([- install utilities : $enable_utils]) +AC_MSG_NOTICE([- CFLAGS CXXFLAGS : $wall_CFLAGS $werror_CFLAGS])