X-Git-Url: https://git.sur5r.net/?p=kconfig-frontends;a=blobdiff_plain;f=configure.ac;h=150bc500cdaff67032544bfcbcbe5b4bf2b7d9af;hp=b8ced6710898493f7470760834d445c429dd9efc;hb=HEAD;hpb=775a5e27bd25b21ee69ad10789e3648001c0089d diff --git a/configure.ac b/configure.ac index b8ced67..150bc50 100644 --- a/configure.ac +++ b/configure.ac @@ -20,27 +20,17 @@ AC_CONFIG_MACRO_DIR([scripts/.autostuff/m4]) #---------------------------------------- # Prepare automake -# 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-]) - -AM_INIT_AUTOMAKE([foreign]) +AM_INIT_AUTOMAKE([foreign subdir-objects]) +# For releases, enable silent rules, unless the user explicitly +# disables them. +# For the devel tree, do build with verbose output, unless user +# explicitly enables silent rules AS_IF( - [test "$(${srcdir}/scripts/version.sh --internal)" = "hg"], + [test "$(${srcdir}/scripts/version.sh --internal)" = "git"], [AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) -AS_IF( - [test $AM_DEFAULT_VERBOSITY -eq 0], - [SILENT_MAKEFLAGS="--no-print-directory -s"], - [SILENT_MAKEFLAGS=""]) -AC_SUBST([SILENT_MAKEFLAGS]) - #---------------------------------------- # Prepare libtool m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) dnl Automake, we have a problem... @@ -63,7 +53,13 @@ AC_ARG_ENABLE( [*], [wall_CFLAGS=""])]) AC_SUBST([wall_CFLAGS],[${wall_CFLAGS}]) -# By default, do not build with -Werror, unless the user asks for it +# For releases, do not build with -Werror, unless the user explicitly +# requests to build with -Werror. +# For the devel tree, do build with -Werror by default, unless user +# explicitly disables -Werror +AS_IF( + [test "$(${srcdir}/scripts/version.sh --internal)" = "git"], + [werror_CFLAGS=-Werror]) AC_ARG_ENABLE( [werror], [AS_HELP_STRING( @@ -87,9 +83,7 @@ AC_ARG_ENABLE( [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;' )"])]) + root_menu="$( echo "$enableval" |sed -e 's/\$/\\$$/g;' )"])]) AC_SUBST([root_menu], [${root_menu=Configuration}]) AC_ARG_ENABLE( @@ -122,6 +116,13 @@ AC_SUBST([enable_L10n], [${enable_L10n:-yes}]) #---------------------------------------- # Options to selectively enable/disable frontends # All are selected by default +AC_ARG_ENABLE( + [kconfig], + [AS_HELP_STRING( + [--disable-kconfig], + [kconfig, the meta-frontend to all kconfig tools (default=yes)])]) +AC_SUBST([enable_kconfig], [${enable_kconfig:-yes}]) + AC_ARG_ENABLE( [conf], [AS_HELP_STRING( @@ -202,20 +203,67 @@ 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()]) +# Look for `lex'. If it cannot be found, autoconf sets $LEX to ':'. AC_PROG_LEX +AS_IF( + [test "$LEX" = ":"], + [AC_MSG_ERROR([can not find a lexer generator (such as lex or flex)])]) AC_SUBST([AM_LFLAGS], ["-L -P zconf"]) +# Look for `yacc'. If it cannot be found, autoconf sets $YACC to 'yacc'. AC_PROG_YACC +AS_IF( + [test "$YACC" = "yacc"], + [AC_CHECK_PROGS( + [YACC_IN_PATH], + [yacc])] + AS_IF( + [test -z "$YACC_IN_PATH"], + [AC_MSG_ERROR([can not find a parser generator (such as yacc or bison)])])) AC_SUBST([AM_YFLAGS], ["-t -l -p zconf"]) +#---------------------------------------- +# Special section to check for gperf. +AC_CHECK_PROGS( + [GPERF], + [gperf]) +AS_IF( + [test -z "$GPERF"], + [AC_MSG_ERROR([can not find gperf])]) + +# gperf 3.1 generates functions with 'size_t' instead of 'unsigned int' +AC_MSG_CHECKING([for the type used in gperf declarations]) +GPERF_LEN_TYPE= +AS_VAR_SET( + [GPERF_PROLOG], + [`echo foo,bar | ${GPERF} -L ANSI-C`]) +AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ + #include + ${GPERF_PROLOG} + const char * in_word_set(const char *, size_t); + ]]) + ], + [GPERF_LEN_TYPE='size_t'], + [ + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM( + [[ + #include + ${GPERF_PROLOG} + const char * in_word_set(const char *, unsigned int); + ]]) + ], + [GPERF_LEN_TYPE='unsigned int'], + [AC_MSG_RESULT([not size_t, not unsigned int. What else?]) + AC_MSG_FAILURE([unable to detect the type used in gperf declarations]) + ])]) +AC_MSG_RESULT([${GPERF_LEN_TYPE}]) +AC_SUBST([GPERF_LEN_TYPE]) + #---------------------------------------- # Check for gettext, for the kconfig frontends [has_gettext="$enable_L10n"] @@ -251,19 +299,28 @@ AC_SUBST([intl_LIBS]) # Check for ncurses, for the mconf & nconf frontends AS_IF( [test "$need_curses" = "yes" -o "$need_curses" = "auto"], - [AC_SUBST([CURSES_LOC]) + [AC_SUBST([ncurses_mconf_CPPFLAGS]) AC_SUBST([ncurses_LIBS]) LIBS_old="$LIBS" LIBS= AC_CHECK_HEADERS( [ncursesw/curses.h ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h], - [CURSES_LOC=$ac_header; break]) + [CURSES_LOC=$ac_header + ncurses_mconf_CPPFLAGS=-DCURSES_LOC=\\\"$ac_header\\\" + break # Stupid syntax-coloring in vim: "]) AS_IF( [test -z "$CURSES_LOC"], [AS_IF( [test "$need_curses" = "yes"], [AC_MSG_ERROR([could not find curses headers (frontends: mconf/nconf)])], [has_curses=no])]) + AS_CASE( + [$CURSES_LOC], + [ncursesw/*],[ncurses_mconf_CPPFLAGS="$ncurses_mconf_CPPFLAGS -DNCURSES_WIDECHAR=1"]) + AC_SEARCH_LIBS( + [setupterm], + [tinfo], + [break]) AC_SEARCH_LIBS( [initscr], [ncursesw ncurses curses], @@ -285,12 +342,12 @@ AS_IF( # Check for libpanel and libmenu, for the nconf frontend AS_IF( [test "$need_panel_menu" = "yes" -o "$need_panel_menu" = "auto"], - [AC_SUBST([ncurses_extra_LIBS]) - AC_SUBST([ncurses_extra_CPPFLAGS]) + [AC_SUBST([ncurses_nconf_CPPFLAGS]) + AC_SUBST([ncurses_panel_menu_LIBS]) AS_CASE( [$CURSES_LOC], - [ncursesw/*],[ncurses_extra_CPPFLAGS="-I/usr/include/ncursesw"], - [ncurses/*],[ncurses_extra_CPPFLAGS="-I/usr/include/ncurses"]) + [ncursesw/*],[ncurses_nconf_CPPFLAGS="-I/usr/include/ncursesw"], + [ncurses/*],[ncurses_nconf_CPPFLAGS="-I/usr/include/ncurses"]) LIBS_old="$LIBS" LIBS= AC_SEARCH_LIBS( @@ -315,7 +372,7 @@ AS_IF( [test "$need_panel_menu" = "yes"], [AC_MSG_ERROR([could not find libmenu library (frontend: nconf)])], [has_panel_menu=no])]) - ncurses_extra_LIBS="$LIBS" + ncurses_panel_menu_LIBS="$LIBS" LIBS=$LIBS_old]) AS_IF( @@ -344,22 +401,22 @@ AS_IF( AS_IF( [test "$need_qt" = "yes" -o "$need_qt" = "auto"], [PKG_CHECK_MODULES( - [qt4], - [QtCore QtGui Qt3Support], + [Qt5], + [Qt5Core Qt5Gui Qt5Widgets], [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)])], + [AC_MSG_ERROR([could not find Qt5 headers and/or libraries (frontend: qconf)])], [has_qt=no; need_moc=no])])]) -AC_ARG_VAR([MOC], [Qt meta object compiler (moc) command]) +AC_ARG_VAR([MOC], [Qt5 meta object compiler (moc) command]) AS_IF( [test "$need_moc" = "yes" -o "$need_moc" = "auto"], - [QT4_BINDIR=`$PKG_CONFIG Qt --variable bindir` + [QT5_BINDIR=`$PKG_CONFIG Qt5Core --variable host_bins` AC_PATH_PROGS( [MOC], - [moc-qt4 moc],, - [$QT4_BINDIR:$PATH]) + [moc-qt5 moc],, + [$QT5_BINDIR:$PATH]) AS_IF( [test -n "$MOC"], [has_moc=yes], @@ -404,6 +461,9 @@ AS_IF( #---------------------------------------- # Setup automake conditional build +AM_CONDITIONAL( + [COND_kconfig], + [test "$enable_kconfig" = "yes"]) AM_CONDITIONAL( [COND_conf], [test "$enable_conf" = "yes"]) @@ -438,26 +498,6 @@ 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 - frontends/conf/Makefile - frontends/mconf/Makefile - frontends/nconf/Makefile - frontends/gconf/Makefile - frontends/qconf/Makefile - utils/Makefile - scripts/Makefile -]) -AC_OUTPUT - #---------------------------------------- # Pretty-print the configuration settings [fe_list=] @@ -466,6 +506,15 @@ 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"]) +# The meta frontend is handled separatly, below, because we do not +# want it in the list of tools, kcfg_list. + +[kcfg_list="$fe_list"] +AS_IF([test "$enable_utils" = "yes"], [kcfg_list="$kcfg_list diff merge tweak"]) +AS_IF([test "$has_gettext" = "yes"], [kcfg_list="$kcfg_list gettext"]) +AC_SUBST([kcfg_list], [${kcfg_list}]) + +AS_IF([test "$enable_kconfig" = "yes"], [fe_list=" kconfig$fe_list"]) [lib_list=] AS_IF( @@ -475,13 +524,25 @@ AS_IF( [test "$enable_static" = "yes"], [lib_list="$lib_list${lib_list:+,} static"]) +#---------------------------------------- +# Finalise +# All generated files are generated by a Makefile rule, except Makefile +# itself of course. +# There is no generic solution in automake to generate a file from its +# .in source, so we'd have to provide custom, hand-made rules, which is +# not nice. So, we handle libs/parser/kconfig-parser.pc here. +AC_CONFIG_FILES([ + Makefile + libs/parser/kconfig-parser.pc +]) +AC_OUTPUT + AC_MSG_NOTICE() AC_MSG_NOTICE([Configured with:]) 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([ - localised : $has_gettext]) AC_MSG_NOTICE([- install utilities : $enable_utils]) AC_MSG_NOTICE([- CFLAGS CXXFLAGS : $wall_CFLAGS $werror_CFLAGS])