X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=configure.ac;h=675008ffb56e916ddfcd2dfc6d53c607b8903277;hb=3af5c3a185fc23b8fb9d528a9c0a14f70093ac70;hp=501e00e88e32f55fa030cb470d0aa2f22ab9fb40;hpb=6777db4e48d23b9841ebd5e081c8dd3f4437a586;p=ncmpc.git diff --git a/configure.ac b/configure.ac index 501e00e..675008f 100644 --- a/configure.ac +++ b/configure.ac @@ -1,133 +1,470 @@ -dnl -dnl $Id: configure.ac,v 1.10 2004/03/18 09:33:43 kalle Exp $ -dnl +AC_PREREQ(2.60) +AC_INIT(ncmpc, 0.27, max@duempel.org) + +VERSION_MAJOR=0 +VERSION_MINOR=27 +VERSION_REVISION=0 +VERSION_EXTRA=0 + +AC_CONFIG_SRCDIR([src/main.c]) +AC_CONFIG_AUX_DIR(build) +AM_INIT_AUTOMAKE([foreign 1.11 dist-xz subdir-objects]) +AM_SILENT_RULES +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_MACRO_DIR([m4]) -AC_INIT(main.c) -AM_INIT_AUTOMAKE(ncmpc, 0.10.0-svn) dnl Check for programs -AC_PROG_CC +AC_PROG_CC_C99 AC_PROG_INSTALL -dnl AC_PROG_LIBTOOL +AX_WITH_CURSES + +AS_IF([ test "x$ax_cv_curses" = xno ], + [AC_MSG_ERROR([No curses support detected.]) + ]) dnl ======================================================= dnl initialize variables dnl ======================================================= +dnl i18n +ALL_LINGUAS=`grep -v '^\#' $srcdir/po/LINGUAS` + set -- $CFLAGS -CFLAGS="-Wall $CFLAGS" + dnl -dnl Check for types +dnl ncmpc-mini dnl -AC_CHECK_TYPE(socklen_t, - AC_DEFINE(HAVE_SOCKLEN_T, 1, socklen_t defined in sys/socket.h), -) +AC_ARG_ENABLE(mini, + AS_HELP_STRING([--enable-mini], + [Build ncmpc-mini, i.e. without all optional features @<:@default=no@:>@]),, + [enable_mini=no]) + +AM_CONDITIONAL(NCMPC_MINI, test x$enable_mini = xyes) +if test "x$enable_mini" = xyes; then + AC_DEFINE([NCMPC_MINI], [1], [Build ncmpc-mini, which disables lots of features]) + auto=no + disable_mini=no + auto_mini=no +else + auto=auto + disable_mini=yes + auto_mini=auto +fi -dnl -dnl Check for headers -dnl +AC_CANONICAL_HOST + +case "$host_os" in +mingw32* | windows*) + LIBS="$LIBS -lws2_32" + + AC_CONFIG_FILES([ + src/win/ncmpc_win32_rc.rc + ]) + AC_CHECK_TOOL(WINDRES, windres) + HAVE_WINDOWS=1 + ;; +*) + AC_CHECK_FUNC([socket], + [], + [AC_CHECK_LIB([socket],[socket],[LIBS="$LIBS -lsocket"], + [AC_MSG_ERROR(No UNIX socket API found)]) + ]) + + AC_CHECK_FUNC([gethostbyname], + [], + [AC_CHECK_LIB([nsl],[gethostbyname],[LIBS="$LIBS -lnsl"], + [AC_MSG_ERROR(No UNIX gethostbyname API found)]) + ]) + + HAVE_WINDOWS=0 +esac +AM_CONDITIONAL([HAVE_WINDOWS], [test $HAVE_WINDOWS -eq 1]) + +dnl multi-byte character support + +AC_ARG_ENABLE([multibyte], + AS_HELP_STRING([--disable-multibyte], + [Disable multibyte character support @<:@default=yes@:>@]),, + [enable_multibyte=$disable_mini]) + +if test x$enable_multibyte = xyes; then + AC_DEFINE([ENABLE_MULTIBYTE], [1], [Enable multibyte character support]) +else + if test "x$ax_cv_curses_enhanced" = xyes; then + AC_MSG_WARN(wide characters without multibyte characters makes little sense) + fi +fi -AC_CHECK_HEADER(libgen.h, - AC_DEFINE(HAVE_LIBGEN_H, 1, glibc - libgen.h), - ,) +dnl Check for GLib +PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.30],, + [AC_MSG_ERROR([glib 2.30 is required])]) -AC_CHECK_HEADER(locale.h, - AC_DEFINE(HAVE_LOCALE_H, 1, locale.h), - ,) +dnl Check for libmpdclient 2.9 +PKG_CHECK_MODULES([LIBMPDCLIENT], [libmpdclient >= 2.9],, + [AC_MSG_ERROR([libmpdclient2 is required])]) +dnl i18n -dnl -dnl Check for functions -dnl -AC_CHECK_FUNCS(basename strcasestr) +AC_ARG_ENABLE([locale], + AS_HELP_STRING([--disable-locale], + [Disable locale support @<:@default=auto@:>@]),, + [enable_locale=$auto_mini]) +if test x$enable_locale = xyes; then + AC_CHECK_HEADER([locale.h],, + [AC_MSG_ERROR(locale.h is unavailable)]) +fi -dnl -dnl Check for libraries -dnl +if test x$enable_locale = xauto; then + AC_CHECK_HEADER([locale.h], + [enable_locale=yes], + [enable_locale=no]) +fi + +if test x$enable_locale = xyes; then + AC_DEFINE([ENABLE_LOCALE], [1], [Locale support is enabled]) +fi + +if test x$enable_mini != xyes; then + AM_NLS +else + USE_NLS=no +fi + +if test x$USE_NLS = xyes; then + AM_GLIB_GNU_GETTEXT + GETTEXT_PACKAGE=$PACKAGE + AC_SUBST(GETTEXT_PACKAGE) + AC_DEFINE_UNQUOTED([GETTEXT_PACKAGE], + ["${GETTEXT_PACKAGE}"], + [gettext domain]) + USE_NLS=$gt_cv_have_gettext + if test x$USE_NLS != xyes; then + AC_MSG_WARN([NLS support disabled!]) + fi +else + AM_PO_SUBDIRS +fi + +dnl Networking + +AC_ARG_ENABLE(tcp, + AS_HELP_STRING([--disable-tcp], + [Disable TCP support @<:@default=enabled@:>@]),, + [enable_tcp=$disable_mini]) +if test "x$enable_tcp" = xyes; then + AC_DEFINE([ENABLE_TCP], 1, [Define to enable TCP support]) + AC_SEARCH_LIBS([gethostbyname], [nsl]) + AC_CHECK_FUNCS([getaddrinfo]) +fi + +AC_ARG_ENABLE([async-connect], + AS_HELP_STRING([--enable-async-connect], + [Disable asynchronous connect @<:@default=yes@:>@]),, + [enable_async_connect=$disable_mini]) +AM_CONDITIONAL(ENABLE_ASYNC_CONNECT, test x$enable_async_connect = xyes) +if test "x$enable_async_connect" = xyes; then + AC_DEFINE([ENABLE_ASYNC_CONNECT], [1], [Enable asynchronous connect?]) +fi + +dnl enable colors +AC_ARG_ENABLE([colors], + AS_HELP_STRING([--enable-colors], + [Enable color support]),, + [enable_colors=auto]) +AC_MSG_CHECKING([whether to include color support]) +AS_IF([ test "x$enable_colors" = xyes || test "x$enable_colors" = xauto ], + [AS_IF([ test "x$disable_mini" = xyes], + [AS_IF([ test "x$ax_cv_curses_color" = xyes ], + [AC_MSG_RESULT([yes]) + AC_DEFINE([ENABLE_COLORS], [1], [Enable color support])], + [AS_IF([ test "x$enable_colors" = xyes ], + AC_MSG_ERROR(["No color support found in curses library"]) + AC_MSG_RESULT([no]), + AC_MSG_RESULT([no]) + ) + ]) + ], + [AC_MSG_RESULT([no]) + AC_MSG_WARN(["Colors disabled due to mini mode being enabled."])] + )], + [AC_MSG_RESULT([no])]) + +dnl test for LIRC support + +AC_ARG_ENABLE([lirc], + AS_HELP_STRING([--enable-lirc], + [Enable LIRC support]),, + [enable_lirc=no]) +if test x$enable_lirc = xyes; then + PKG_CHECK_MODULES([LIBLIRCCLIENT], [lirc],, + [PKG_CHECK_MODULES([LIBLIRCCLIENT], [liblircclient0],, + [AC_MSG_ERROR([lirc not found])] + )] + ) + + AC_DEFINE([ENABLE_LIRC], [1], [Enable LIRC support]) +fi + +AM_CONDITIONAL(ENABLE_LIRC, test x$enable_lirc = xyes) + + +dnl Optional screen - help screen +AC_MSG_CHECKING([whether to include the help screen]) +AC_ARG_ENABLE([help-screen], + AS_HELP_STRING([--enable-help-screen], + [Enable the help screen @<:@default=yes@:>@]),, + [enable_help_screen=$disable_mini]) +AC_MSG_RESULT([$enable_help_screen]) +if test "x$enable_help_screen" = "xyes" ; then + AC_DEFINE(ENABLE_HELP_SCREEN, 1, [Enable the help screen]) +fi -dnl iconv -AM_ICONV +AM_CONDITIONAL(ENABLE_HELP_SCREEN, test x$enable_help_screen = xyes) + +dnl Optional - curses getmouse support + +MPD_WITH_LIBRARY([CURSES], + [AC_CHECK_FUNC([getmouse], + [ax_cv_curses_mouse=yes], + [ax_cv_curses_mouse=no])]) + +AC_ARG_ENABLE([mouse], + AS_HELP_STRING([--enable-mouse], + [Enable curses getmouse support @<:@default=yes@:>@]),, + [enable_mouse=auto]) + +AC_MSG_CHECKING([whether to include mouse support]) + +AS_IF([ test "x$enable_mouse" = xyes || test "x$enable_mouse" = xauto ], + [AS_IF([ test "x$disable_mini" = xyes], + [AS_IF([ test "x$ax_cv_curses_mouse" = xyes ], + [AC_MSG_RESULT([yes]) + AC_DEFINE([HAVE_GETMOUSE], [1], [Enable mouse support])], + [AC_MSG_RESULT([no]) + AS_IF([ test "x$enable_mouse" = xyes ], + [AC_MSG_ERROR(["No mouse support found in curses library"]) + ]) + ]) + ], + [AC_MSG_RESULT([no]) + AC_MSG_WARN("Mouse disabled due to mini mode being enabled.")] + )], + [AC_MSG_RESULT([no])]) + +dnl Optional screen - artist +AC_MSG_CHECKING([whether to include the artist screen]) +AC_ARG_ENABLE([artist-screen], + AS_HELP_STRING([--enable-artist-screen], + [Enable artist screen @<:@default=yes@:>@]),, + [enable_artist_screen=$disable_mini]) +AC_MSG_RESULT([$enable_artist_screen]) +if test "x$enable_artist_screen" = "xyes" ; then + AC_DEFINE(ENABLE_ARTIST_SCREEN, 1, [Enable artist screen]) +fi -dnl nl_langinfo() -AM_LANGINFO_CODESET +AM_CONDITIONAL(ENABLE_ARTIST_SCREEN, test x$enable_artist_screen = xyes) + +dnl Optional screen - search +AC_MSG_CHECKING([whether to include the search screen]) +AC_ARG_ENABLE([search-screen], + AS_HELP_STRING([--enable-search-screen], + [Enable search screen (EXPERIMENTAL) @<:@default=yes@:>@]),, + [enable_search_screen=$disable_mini]) +AC_MSG_RESULT([$enable_search_screen]) +if test "x$enable_search_screen" = "xyes" ; then + AC_DEFINE(ENABLE_SEARCH_SCREEN, 1, [Enable search screen]) +fi -dnl ncurses -AC_CHECK_LIB(ncurses, initscr,, [AC_MSG_ERROR(ncurses library is required)]) +AM_CONDITIONAL(ENABLE_SEARCH_SCREEN, test x$enable_search_screen = xyes) + +dnl Optional screen - song viewer +AC_MSG_CHECKING([whether to include the song viewer screen]) +AC_ARG_ENABLE([song-screen], + AS_HELP_STRING([--enable-song-screen], + [Enable song viewer screen @<:@default=yes@:>@]),, + [enable_song_screen=$disable_mini]) +AC_MSG_RESULT([$enable_song_screen]) +if test "x$enable_song_screen" = "xyes" ; then + AC_DEFINE(ENABLE_SONG_SCREEN, 1, [Enable song viewer screen]) +fi -dnl glib-2.0 -AM_PATH_GLIB_2_0(, , [AC_MSG_ERROR(glib-2.x is required)], glib) +AM_CONDITIONAL(ENABLE_SONG_SCREEN, test x$enable_song_screen = xyes) + +dnl Optional screen - key editor +AC_MSG_CHECKING([whether to include the key editor screen]) +AC_ARG_ENABLE([key-screen], + AS_HELP_STRING([--enable-key-screen], + [Enable key editor screen @<:@default=yes@:>@]),, + [enable_key_screen=$disable_mini]) +AC_MSG_RESULT([$enable_key_screen]) +if test "x$enable_key_screen" = "xyes" ; then + AC_DEFINE(ENABLE_KEYDEF_SCREEN, 1, [Enable key editor screen]) +fi -dnl popt -AC_CHECK_LIB(popt, - poptGetArg, - LIBS="$LIBS -lpopt", - AC_MSG_ERROR(Missing popt command line parsing library)) +AM_CONDITIONAL(ENABLE_KEYDEF_SCREEN, test x$enable_key_screen = xyes) +dnl Optional screen - lyrics +AC_MSG_CHECKING([whether to include the lyrics screen]) +AC_ARG_ENABLE([lyrics-screen], + AS_HELP_STRING([--enable-lyrics-screen], + [Enable lyrics screen @<:@default=no@:>@]),, + [enable_lyrics_screen=no]) +case "$host_os" in +mingw32* | windows*) + AS_IF([ test "x$enable_lyrics_screen" = xyes ], + [AC_MSG_ERROR([Lyrics screen is not yet compatible with windows.]) + ]) +esac + +if test "x$enable_lyrics_screen" = "xyes" ; then + AC_DEFINE(ENABLE_LYRICS_SCREEN, 1, [Enable lyrics screen]) +fi + +AM_CONDITIONAL(ENABLE_LYRICS_SCREEN, test x$enable_lyrics_screen = xyes) + +AC_MSG_RESULT([$enable_lyrics_screen]) + +AC_ARG_WITH([lyrics-plugin-dir], + AS_HELP_STRING([[--with-lyrics-plugin-dir[=DIRECTORY]]], + [Directory where lyrics plugins are stored @<:@default=PREFIX/lib/ncmpc/lyrics@:>@]), + [lyrics_plugin_dir=$withval], + [lyrics_plugin_dir=""]) +if test "x${lyrics_plugin_dir}" = "x"; then + if test "x${prefix}" = "xNONE"; then + lyrics_plugin_dir="${ac_default_prefix}/lib/ncmpc/lyrics" + else + lyrics_plugin_dir="${prefix}/lib/ncmpc/lyrics" + fi +fi +AC_DEFINE_UNQUOTED([LYRICS_PLUGIN_DIR], ["$lyrics_plugin_dir"], + [Directory to search for lyrics plugins]) +AC_SUBST(lyrics_plugin_dir) +AM_CONDITIONAL(ENABLE_PLUGIN_LIBRARY, test x$enable_lyrics_screen = xyes) -dnl Debugging -AC_ARG_ENABLE(debug, - [ --enable-debug Enable debugging [default=no]], - , - enable_debug=no) +dnl Optional screen - outputs +AC_MSG_CHECKING([whether to include the outputs screen]) +AC_ARG_ENABLE([outputs-screen], + AS_HELP_STRING([--enable-outputs-screen], + [Enable outputs screen @<:@default=yes@:>@]),, + [enable_outputs_screen=$disable_mini]) -if test "$enable_debug" = yes; then - CFLAGS="$CFLAGS -g -DDEBUG" +if test "x$enable_outputs_screen" = "xyes" ; then + AC_DEFINE(ENABLE_OUTPUTS_SCREEN, 1, [Enable outputs screen]) fi -dnl Enable -AC_ARG_ENABLE(colors, - [ --enable-colors Enable colors [default=no]], - , - enable_colors=no) +AM_CONDITIONAL(ENABLE_OUTPUTS_SCREEN, test x$enable_outputs_screen = xyes) +AC_MSG_RESULT([$enable_outputs_screen]) -if test "$enable_colors" = yes; then - CFLAGS="$CFLAGS -DENABLE_COLORS" + +dnl Optional screen - client-to-client chat +AC_MSG_CHECKING([whether to include the chat screen]) +AC_ARG_ENABLE([chat-screen], + AC_HELP_STRING([--enable-chat-screen], + [Enable chat screen @<:@default=no@:>@]),, + [enable_chat_screen=no]) +if test "x$enable_chat_screen" = "xauto"; then + enable_chat_screen=yes +fi +AC_MSG_RESULT([$enable_chat_screen]) +if test "x$enable_chat_screen" = "xyes" ; then + AC_DEFINE(ENABLE_CHAT_SCREEN, 1, [Enable chat screen]) fi +AM_CONDITIONAL(ENABLE_CHAT_SCREEN, test x$enable_chat_screen = xyes) +AM_CONDITIONAL(ENABLE_SCREEN_TEXT, + test x$enable_lyrics_screen = xyes -o x$enable_chat_screen = xyes) -dnl Default charset -AC_ARG_WITH(default-charset, - [ --with-default-charset=ARG Default charset (ISO-8859-1)], - DEFAULT_CHARSET="ISO-8859-1") +dnl +dnl Windows OS Resource File +dnl +AC_SUBST(VERSION_MAJOR) +AC_SUBST(VERSION_MINOR) +AC_SUBST(VERSION_REVISION) +AC_SUBST(VERSION_EXTRA) -dnl Default host -AC_ARG_WITH(default-host, - [ --with-default-host=HOST Default host (localhost)], - DEFAULT_HOST="$withval", - DEFAULT_HOST="localhost") +dnl +dnl build options +dnl -dnl Default port -AC_ARG_WITH(default-port, - [ --with-default-port=PORT Default port (2100)], - DEFAULT_PORT="$withval", - DEFAULT_PORT="2100") +AC_ARG_ENABLE(werror, + AS_HELP_STRING([--enable-werror], + [Treat warnings as errors @<:@default=no@:>@]),, + enable_werror=no) +if test "x$enable_werror" = xyes; then + AX_APPEND_COMPILE_FLAGS([-Werror]) +fi -CFLAGS="$CFLAGS $GLIB_CFLAGS" -LIBS="$LIBS $GLIB_LIBS -lncurses" +AC_ARG_ENABLE(debug, + AS_HELP_STRING([--enable-debug], + [Enable debugging @<:@default=no@:>@]),, + enable_debug=no) +if test "x$enable_debug" = xno; then + AM_CFLAGS="$AM_CFLAGS -DNDEBUG" -dnl Autoheader -AC_DEFINE_UNQUOTED(DEFAULT_PORT, $DEFAULT_PORT, Default MPD port) -AC_DEFINE_UNQUOTED(DEFAULT_PORT_STR, "$DEFAULT_PORT", Default MPD port) -AC_DEFINE_UNQUOTED(DEFAULT_HOST, "$DEFAULT_HOST", Default MPD host) -AC_DEFINE_UNQUOTED(DEFAULT_CHARSET, "$DEFAULT_CHARSET", Default charset) + AX_APPEND_COMPILE_FLAGS([-ffunction-sections]) + AX_APPEND_COMPILE_FLAGS([-fdata-sections]) + AX_APPEND_LINK_FLAGS([-Wl,--gc-sections]) +fi -AM_CONFIG_HEADER(config.h) +AC_ARG_ENABLE(test, + AS_HELP_STRING([--enable-test], + [build the test programs @<:@default=no@:>@]),, + enable_test=$enable_debug) -AC_OUTPUT(Makefile) +AM_CONDITIONAL(ENABLE_TEST, test "x$enable_test" = xyes) + +dnl +dnl autogenerated documentation +dnl + +AC_ARG_ENABLE(documentation, + AS_HELP_STRING([--enable-documentation], + [build doxygen documentation @<:@default=no@:>@]),, + enable_documentation=no) + +if test x$enable_documentation = xyes; then + AC_PATH_PROG(DOXYGEN, doxygen) + if test x$DOXYGEN = x; then + AC_MSG_ERROR([doxygen not found]) + fi + AC_SUBST(DOXYGEN) +fi + +AM_CONDITIONAL(ENABLE_DOCUMENTATION, test x$enable_documentation = xyes) + +dnl +dnl CFLAGS +dnl + +AC_SUBST(AM_CFLAGS) + +AX_APPEND_COMPILE_FLAGS([-fvisibility=hidden]) +AX_APPEND_COMPILE_FLAGS([-ffast-math]) +AX_APPEND_COMPILE_FLAGS([-ftree-vectorize]) + +AX_APPEND_COMPILE_FLAGS([-Wall]) +AX_APPEND_COMPILE_FLAGS([-Wextra]) +AX_APPEND_COMPILE_FLAGS([-Wno-deprecated-declarations]) +AX_APPEND_COMPILE_FLAGS([-Wmissing-prototypes]) +AX_APPEND_COMPILE_FLAGS([-Wshadow]) +AX_APPEND_COMPILE_FLAGS([-Wpointer-arith]) +AX_APPEND_COMPILE_FLAGS([-Wstrict-prototypes]) +AX_APPEND_COMPILE_FLAGS([-Wcast-qual]) +AX_APPEND_COMPILE_FLAGS([-Wwrite-strings]) + + +dnl +dnl Generate output files +dnl -echo " -Configuration: - Install path: ${prefix} - Enable debugging: ${enable_debug} - Default MPD host: ${DEFAULT_HOST} - Default MPD port: ${DEFAULT_PORT} -" -echo +AC_CONFIG_FILES([Makefile po/Makefile.in po/Makefile]) +AC_OUTPUT(doc/doxygen.conf)