annotate configure.ac @ 1683:203372cdba61 scale-ticks

Change loop to something that feels more correct, though it makes no difference to the tests here. More tests, one failing.
author Chris Cannam
date Thu, 04 May 2017 08:32:41 +0100
parents e86e23110e42
children 3c5a87970daa
rev   line source
Chris@350 1
Chris@941 2 AC_INIT([Sonic Visualiser], [], cannam@all-day-breakfast.com)
Chris@350 3
Chris@351 4 AC_CONFIG_SRCDIR(main/main.cpp)
Chris@350 5
Chris@350 6 # Autoconf will set CXXFLAGS; we don't usually want it to, because we
Chris@350 7 # either define our own flags (at least if GCC is in use) or else use
Chris@350 8 # the user's preferences. We need to ensure CXXFLAGS is only set if
Chris@350 9 # the user has expressly set it. So, save the user's (or empty)
Chris@350 10 # setting now and restore it after Autoconf has done its bit of
Chris@350 11 # piddling about.
Chris@350 12 USER_CXXFLAGS="$CXXFLAGS"
Chris@350 13
Chris@405 14 # If the user supplied CFLAGS but not CXXFLAGS, use CFLAGS instead
Chris@405 15 if test x"$USER_CXXFLAGS" = x; then
Chris@405 16 if test x"$CFLAGS" != x; then
Chris@405 17 USER_CXXFLAGS="$CFLAGS"
Chris@405 18 fi
Chris@405 19 fi
Chris@405 20
Chris@350 21 AC_LANG_CPLUSPLUS
Chris@350 22
Chris@350 23 AC_PROG_CC
Chris@350 24 AC_PROG_CXX
Chris@350 25 AC_PROG_INSTALL
Chris@350 26 AC_PROG_MKDIR_P
Chris@350 27
Chris@884 28 # We are daringly making use of C++11 now
Chris@884 29 AX_CXX_COMPILE_STDCXX_11(noext)
Chris@884 30
Chris@350 31 AC_HEADER_STDC
Chris@350 32
Chris@350 33 # These are the flags Autoconf guesses for us; we use them later if
Chris@350 34 # the user has set none and we are not using GCC (so lack our own
Chris@350 35 # preferred flags)
Chris@350 36 AUTOCONF_CXXFLAGS="$CXXFLAGS"
Chris@350 37
Chris@350 38 PKG_PROG_PKG_CONFIG
Chris@350 39
Chris@350 40 SV_CHECK_QT
Chris@350 41
Chris@350 42 SV_DEFINES_DEBUG="-DDEBUG -DBUILD_DEBUG -DWANT_TIMING"
Chris@1483 43 SV_DEFINES_RELEASE="-DNDEBUG -DBUILD_RELEASE -DNO_TIMING -DNO_HIT_COUNTS"
Chris@350 44 SV_DEFINES_MINIMAL="$SV_DEFINES_RELEASE"
Chris@350 45
Chris@350 46 # Now we have: USER_CXXFLAGS contains any flags the user set
Chris@350 47 # explicitly; AUTOCONF_CXXFLAGS contains flags that Autoconf thought
Chris@350 48 # we should use. If we have GCC, we override the latter but then
Chris@350 49 # allow ourselves to be overridden (later) by the former
Chris@350 50
Chris@350 51 CXXFLAGS_DEBUG="$AUTOCONF_CXXFLAGS"
Chris@350 52 CXXFLAGS_RELEASE="$AUTOCONF_CXXFLAGS"
Chris@350 53 CXXFLAGS_MINIMAL="$AUTOCONF_CXXFLAGS"
Chris@350 54
Chris@350 55 if test "x$GCC" = "xyes"; then
Chris@1615 56 CXXFLAGS_ANY="-std=c++11 -fpic -Wall -Wextra -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe"
Chris@1075 57 CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g -Werror"
Chris@1465 58 CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0 -O3 -ffast-math"
Chris@922 59 CXXFLAGS_MINIMAL="$CXXFLAGS_ANY -g0 -O0"
Chris@350 60 fi
Chris@350 61
Chris@350 62 CXXFLAGS_BUILD="$CXXFLAGS_RELEASE"
Chris@350 63 SV_DEFINES_BUILD="$SV_DEFINES_RELEASE"
Chris@350 64
Chris@361 65 QMAKE_CONFIG="release"
Chris@361 66
Chris@350 67 AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug],[enable debug support [default=no]])],[AC_MSG_NOTICE([enabling debug build])
Chris@361 68 QMAKE_CONFIG="debug"
Chris@350 69 CXXFLAGS_BUILD="$CXXFLAGS_DEBUG"
Chris@350 70 SV_DEFINES_BUILD="$SV_DEFINES_DEBUG"])
Chris@350 71
Chris@350 72 if test x"$USER_CXXFLAGS" != x; then
Chris@350 73 AC_MSG_NOTICE([The CXXFLAGS environment variable is set to "$USER_CXXFLAGS".])
Chris@350 74 AC_MSG_NOTICE(Overriding default compiler flags with the above user setting.)
Chris@350 75 CXXFLAGS_BUILD="$USER_CXXFLAGS"
Chris@350 76 CXXFLAGS_MINIMAL="$USER_CXXFLAGS"
Chris@350 77 fi
Chris@350 78
Chris@350 79 CXXFLAGS="$CXXFLAGS_BUILD $SV_DEFINES_BUILD"
Chris@350 80
Chris@350 81 SV_MODULE_REQUIRED([bz2],[],[bzlib.h],[bz2],[BZ2_bzReadOpen])
Chris@350 82 SV_MODULE_REQUIRED([fftw3],[fftw3 >= 3.0.0],[fftw3.h],[fftw3],[fftw_execute])
Chris@350 83 SV_MODULE_REQUIRED([fftw3f],[fftw3f >= 3.0.0],[fftw3.h],[fftw3f],[fftwf_execute])
Chris@350 84 SV_MODULE_REQUIRED([sndfile],[sndfile >= 1.0.16],[sndfile.h],[sndfile],[sf_open])
Chris@1035 85 SV_MODULE_REQUIRED([libsamplerate],[samplerate >= 0.1.2],[samplerate.h],[samplerate],[src_new])
Chris@350 86 SV_MODULE_REQUIRED([rubberband],[rubberband],[rubberband/RubberBandStretcher.h],[rubberband],[rubberband_new])
Chris@572 87 SV_MODULE_REQUIRED([sord],[sord-0 >= 0.5],[sord/sord.h],[sord-0],[sord_world_new])
Chris@572 88 SV_MODULE_REQUIRED([serd],[serd-0 >= 0.5],[serd/serd.h],[serd-0],[serd_reader_read_file])
Chris@1534 89
Chris@1534 90 # Cap'n Proto 0.5.3 is the latest release at the time of writing, but
Chris@1534 91 # it lacks the expectedSizeInWordsFromPrefix function which exists in
Chris@1614 92 # the git repo. Our check is for that specific symbol, which would
Chris@1616 93 # indicate a git clone, or for a newer release via pkg-config.
Chris@1616 94 PKG_CHECK_MODULES([capnp],[capnp > 0.5.3],[HAVES="$HAVES HAVE_CAPNP";CXXFLAGS="$CXXFLAGS $capnp_CFLAGS";LIBS="$LIBS $capnp_LIBS"],[AC_MSG_NOTICE([Failed to find required module capnp using pkg-config, trying again by old-fashioned means])])
Chris@1614 95 if test -z "$capnp_LIBS" ; then
Chris@1614 96 AC_COMPILE_IFELSE([
Chris@1614 97 AC_LANG_SOURCE([[
Chris@1614 98 #include <capnp/serialize.h>
Chris@1614 99 int main() {
Chris@1614 100 kj::Array<capnp::word> prefix;
Chris@1614 101 return capnp::expectedSizeInWordsFromPrefix(prefix.asPtr());
Chris@1614 102 }]])],
Chris@1614 103 [HAVES="$HAVES HAVE_CAPNP";LIBS="$LIBS -lcapnp -lkj"],
Chris@1614 104 [AC_MSG_ERROR([Failed to find appropriate capnp library])]
Chris@1614 105 )
Chris@1614 106 fi
Chris@350 107
Chris@350 108 SV_MODULE_OPTIONAL([liblo],[],[lo/lo.h],[lo],[lo_address_new])
Chris@1035 109 SV_MODULE_OPTIONAL([portaudio],[portaudio-2.0 >= 19],[portaudio.h],[portaudio],[Pa_IsFormatSupported])
Chris@350 110 SV_MODULE_OPTIONAL([JACK],[jack >= 0.100],[jack/jack.h],[jack],[jack_client_open])
Chris@350 111 SV_MODULE_OPTIONAL([libpulse],[libpulse >= 0.9],[pulse/pulseaudio.h],[pulse],[pa_stream_new])
Chris@350 112 SV_MODULE_OPTIONAL([lrdf],[lrdf >= 0.2],[lrdf.h],[lrdf],[lrdf_init])
Chris@350 113 SV_MODULE_OPTIONAL([oggz],[oggz >= 1.0.0],[oggz/oggz.h],[oggz],[oggz_run])
Chris@350 114 SV_MODULE_OPTIONAL([fishsound],[fishsound >= 1.0.0],[fishsound/fishsound.h],[fishsound],[fish_sound_new])
Chris@350 115 SV_MODULE_OPTIONAL([mad],[mad >= 0.15.0],[mad.h],[mad],[mad_decoder_init])
Chris@350 116 SV_MODULE_OPTIONAL([id3tag],[id3tag >= 0.15.0],[id3tag.h],[id3tag],[id3_tag_new])
Chris@350 117
Chris@488 118 # Link in -lX11 if it exists -- this is for the X error handler
Chris@488 119 SV_MODULE_OPTIONAL([X11],[x11 >= 1.0.0],[X11/X.h],[x11],[XGetErrorText])
Chris@488 120
Chris@350 121 AC_SUBST(PERL)
Chris@350 122 AC_SUBST(XARGS)
Chris@350 123 AC_SUBST(MAKEDEPEND)
Chris@350 124 AC_SUBST(SHA1SUM)
Chris@350 125 AC_SUBST(CUT)
Chris@350 126
Chris@350 127 AC_SUBST(CFLAGS)
Chris@350 128 AC_SUBST(CXXFLAGS)
Chris@350 129 AC_SUBST(CXXFLAGS_MINIMAL)
Chris@560 130 AC_SUBST(LDFLAGS)
Chris@350 131 AC_SUBST(HAVES)
Chris@350 132 AC_SUBST(LIBS)
Chris@350 133
Chris@350 134 AC_SUBST(CC)
Chris@350 135 AC_SUBST(CXX)
Chris@350 136
Chris@361 137 AC_SUBST(QMAKE_CONFIG)
Chris@361 138
Chris@941 139 AC_CONFIG_FILES([config.pri])
Chris@350 140
Chris@517 141 AC_OUTPUT
Chris@350 142
Chris@521 143 if ! $QMAKE -r sonic-visualiser.pro; then
Chris@350 144 AC_MSG_ERROR([qmake failed: Command was "$QMAKE -r"])
Chris@350 145 fi
Chris@350 146
Chris@350 147 AC_MSG_NOTICE([
Chris@350 148
Chris@350 149 Configuration complete.
Chris@350 150 Please check the above messages for any warnings that you
Chris@350 151 might care about, and then run "make".
Chris@350 152
Chris@350 153 The file config.pri contains the configuration settings for
Chris@350 154 qmake. If you want to adjust these by hand, edit config.pri
Chris@548 155 and run "$QMAKE -r" again to regenerate the Makefile.
Chris@350 156 ])