annotate configure.ac @ 1583:0510dea7ef84 dev/refactor-piper-related

Introduce some POD structs for describing an external server application and the desired libraries to load from it, and disambiguating between empty list request and invalid list request. This allows for overriding PiperVampPluginFactory behaviour for using a PluginScan to populate the list request.
author Lucas Thompson <lucas.thompson@qmul.ac.uk>
date Fri, 10 Feb 2017 11:15:19 +0000
parents 782025ae1249
children e5ead8c8f5ed
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@1075 56 CXXFLAGS_ANY="-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@1534 92 # the git repo. Check for a newer release or, if that's not found with
Chris@1534 93 # pkg-config, check for that specific symbol (mangled).
Chris@1534 94 AC_MSG_NOTICE([checking specifically for a newer Cap'n Proto than the 0.5.3 release])
Chris@1534 95 SV_MODULE_REQUIRED([capnp],[capnp >= 0.5.4],[capnp/common.h],[capnp],[_ZN5capnp29expectedSizeInWordsFromPrefixEN2kj8ArrayPtrIKNS_4wordEEE])
Chris@1534 96 SV_MODULE_REQUIRED([kj],[kj >= 0.5.4],[kj/common.h],[kj],[_ZN2kj20BufferedOutputStreamD0Ev])
Chris@350 97
Chris@350 98 SV_MODULE_OPTIONAL([liblo],[],[lo/lo.h],[lo],[lo_address_new])
Chris@1035 99 SV_MODULE_OPTIONAL([portaudio],[portaudio-2.0 >= 19],[portaudio.h],[portaudio],[Pa_IsFormatSupported])
Chris@350 100 SV_MODULE_OPTIONAL([JACK],[jack >= 0.100],[jack/jack.h],[jack],[jack_client_open])
Chris@350 101 SV_MODULE_OPTIONAL([libpulse],[libpulse >= 0.9],[pulse/pulseaudio.h],[pulse],[pa_stream_new])
Chris@350 102 SV_MODULE_OPTIONAL([lrdf],[lrdf >= 0.2],[lrdf.h],[lrdf],[lrdf_init])
Chris@350 103 SV_MODULE_OPTIONAL([oggz],[oggz >= 1.0.0],[oggz/oggz.h],[oggz],[oggz_run])
Chris@350 104 SV_MODULE_OPTIONAL([fishsound],[fishsound >= 1.0.0],[fishsound/fishsound.h],[fishsound],[fish_sound_new])
Chris@350 105 SV_MODULE_OPTIONAL([mad],[mad >= 0.15.0],[mad.h],[mad],[mad_decoder_init])
Chris@350 106 SV_MODULE_OPTIONAL([id3tag],[id3tag >= 0.15.0],[id3tag.h],[id3tag],[id3_tag_new])
Chris@350 107
Chris@488 108 # Link in -lX11 if it exists -- this is for the X error handler
Chris@488 109 SV_MODULE_OPTIONAL([X11],[x11 >= 1.0.0],[X11/X.h],[x11],[XGetErrorText])
Chris@488 110
Chris@350 111 AC_SUBST(PERL)
Chris@350 112 AC_SUBST(XARGS)
Chris@350 113 AC_SUBST(MAKEDEPEND)
Chris@350 114 AC_SUBST(SHA1SUM)
Chris@350 115 AC_SUBST(CUT)
Chris@350 116
Chris@350 117 AC_SUBST(CFLAGS)
Chris@350 118 AC_SUBST(CXXFLAGS)
Chris@350 119 AC_SUBST(CXXFLAGS_MINIMAL)
Chris@560 120 AC_SUBST(LDFLAGS)
Chris@350 121 AC_SUBST(HAVES)
Chris@350 122 AC_SUBST(LIBS)
Chris@350 123
Chris@350 124 AC_SUBST(CC)
Chris@350 125 AC_SUBST(CXX)
Chris@350 126
Chris@361 127 AC_SUBST(QMAKE_CONFIG)
Chris@361 128
Chris@941 129 AC_CONFIG_FILES([config.pri])
Chris@350 130
Chris@517 131 AC_OUTPUT
Chris@350 132
Chris@521 133 if ! $QMAKE -r sonic-visualiser.pro; then
Chris@350 134 AC_MSG_ERROR([qmake failed: Command was "$QMAKE -r"])
Chris@350 135 fi
Chris@350 136
Chris@350 137 AC_MSG_NOTICE([
Chris@350 138
Chris@350 139 Configuration complete.
Chris@350 140 Please check the above messages for any warnings that you
Chris@350 141 might care about, and then run "make".
Chris@350 142
Chris@350 143 The file config.pri contains the configuration settings for
Chris@350 144 qmake. If you want to adjust these by hand, edit config.pri
Chris@548 145 and run "$QMAKE -r" again to regenerate the Makefile.
Chris@350 146 ])