annotate configure.ac @ 1745:3587df7758e7

Strangely the three files seem to be installed if we have them in this order, but not the other order. Must be missing something here.
author Chris Cannam
date Wed, 04 Oct 2017 21:03:24 +0100
parents 41a64dc57066
children e4cf3ec06955
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@1695 90 # We need a Cap'n Proto version with the expectedSizeInWordsFromPrefix
Chris@1695 91 # function, which appeared in v0.6. If we can't find at least that
Chris@1695 92 # version with pkg-config, we check for the symbol with the compiler.
Chris@1695 93 PKG_CHECK_MODULES([capnp],[capnp >= 0.6],[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 94 if test -z "$capnp_LIBS" ; then
Chris@1614 95 AC_COMPILE_IFELSE([
Chris@1614 96 AC_LANG_SOURCE([[
Chris@1614 97 #include <capnp/serialize.h>
Chris@1614 98 int main() {
Chris@1614 99 kj::Array<capnp::word> prefix;
Chris@1614 100 return capnp::expectedSizeInWordsFromPrefix(prefix.asPtr());
Chris@1614 101 }]])],
Chris@1614 102 [HAVES="$HAVES HAVE_CAPNP";LIBS="$LIBS -lcapnp -lkj"],
Chris@1614 103 [AC_MSG_ERROR([Failed to find appropriate capnp library])]
Chris@1614 104 )
Chris@1614 105 fi
Chris@350 106
Chris@350 107 SV_MODULE_OPTIONAL([liblo],[],[lo/lo.h],[lo],[lo_address_new])
Chris@1035 108 SV_MODULE_OPTIONAL([portaudio],[portaudio-2.0 >= 19],[portaudio.h],[portaudio],[Pa_IsFormatSupported])
Chris@350 109 SV_MODULE_OPTIONAL([JACK],[jack >= 0.100],[jack/jack.h],[jack],[jack_client_open])
Chris@350 110 SV_MODULE_OPTIONAL([libpulse],[libpulse >= 0.9],[pulse/pulseaudio.h],[pulse],[pa_stream_new])
Chris@350 111 SV_MODULE_OPTIONAL([lrdf],[lrdf >= 0.2],[lrdf.h],[lrdf],[lrdf_init])
Chris@350 112 SV_MODULE_OPTIONAL([oggz],[oggz >= 1.0.0],[oggz/oggz.h],[oggz],[oggz_run])
Chris@350 113 SV_MODULE_OPTIONAL([fishsound],[fishsound >= 1.0.0],[fishsound/fishsound.h],[fishsound],[fish_sound_new])
Chris@350 114 SV_MODULE_OPTIONAL([mad],[mad >= 0.15.0],[mad.h],[mad],[mad_decoder_init])
Chris@350 115 SV_MODULE_OPTIONAL([id3tag],[id3tag >= 0.15.0],[id3tag.h],[id3tag],[id3_tag_new])
Chris@350 116
Chris@488 117 # Link in -lX11 if it exists -- this is for the X error handler
Chris@488 118 SV_MODULE_OPTIONAL([X11],[x11 >= 1.0.0],[X11/X.h],[x11],[XGetErrorText])
Chris@488 119
Chris@350 120 AC_SUBST(PERL)
Chris@350 121 AC_SUBST(XARGS)
Chris@350 122 AC_SUBST(MAKEDEPEND)
Chris@350 123 AC_SUBST(SHA1SUM)
Chris@350 124 AC_SUBST(CUT)
Chris@350 125
Chris@350 126 AC_SUBST(CFLAGS)
Chris@350 127 AC_SUBST(CXXFLAGS)
Chris@350 128 AC_SUBST(CXXFLAGS_MINIMAL)
Chris@560 129 AC_SUBST(LDFLAGS)
Chris@350 130 AC_SUBST(HAVES)
Chris@350 131 AC_SUBST(LIBS)
Chris@350 132
Chris@350 133 AC_SUBST(CC)
Chris@350 134 AC_SUBST(CXX)
Chris@350 135
Chris@361 136 AC_SUBST(QMAKE_CONFIG)
Chris@361 137
Chris@941 138 AC_CONFIG_FILES([config.pri])
Chris@350 139
Chris@517 140 AC_OUTPUT
Chris@350 141
Chris@1709 142 if test -x vext ; then
Chris@1709 143 if test -d .hg -o -d .git ; then
Chris@1709 144 if ! ./vext install; then
Chris@1709 145 AC_MSG_ERROR([Vext failed; please fix any reported errors and try again])
Chris@1709 146 fi
Chris@1709 147 else
Chris@1709 148 AC_MSG_NOTICE([Vext executable found but not in an Hg or Git working-copy: not running it])
Chris@1709 149 if ! test -d vamp-plugin-sdk ; then
Chris@1709 150 AC_MSG_WARN([No vamp-plugin-sdk directory present, so external libraries might not have been updated])
Chris@1709 151 fi
Chris@1709 152 fi
Chris@1709 153 else
Chris@1709 154 AC_MSG_NOTICE([No Vext executable found: assuming external libraries are already here])
Chris@1709 155 if ! test -d vamp-plugin-sdk ; then
Chris@1709 156 AC_MSG_WARN([No vamp-plugin-sdk directory present, so external libraries might not have been updated])
Chris@1707 157 fi
Chris@1706 158 fi
Chris@1709 159
Chris@521 160 if ! $QMAKE -r sonic-visualiser.pro; then
Chris@350 161 AC_MSG_ERROR([qmake failed: Command was "$QMAKE -r"])
Chris@350 162 fi
Chris@350 163
Chris@350 164 AC_MSG_NOTICE([
Chris@350 165
Chris@350 166 Configuration complete.
Chris@350 167 Please check the above messages for any warnings that you
Chris@350 168 might care about, and then run "make".
Chris@350 169
Chris@350 170 The file config.pri contains the configuration settings for
Chris@350 171 qmake. If you want to adjust these by hand, edit config.pri
Chris@548 172 and run "$QMAKE -r" again to regenerate the Makefile.
Chris@350 173 ])