annotate configure.ac @ 2049:fd4976627485

Fix inconsistency between centre frame actually set and centre frame notified as set, which caused the start frame location to creep out of place gradually as you page through
author Chris Cannam
date Tue, 30 Oct 2018 14:00:39 +0000
parents 810a0b8f5472
children 5ffcb4e10e1b
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@1976 54 CXXSTANDARD=c++14
Chris@350 55
Chris@350 56 if test "x$GCC" = "xyes"; then
Chris@1969 57 CXXFLAGS_ANY="-fpic -Wall -Wextra -Woverloaded-virtual -Wformat-nonliteral -Wformat-security -Winit-self -Wswitch-enum -Wconversion -pipe"
Chris@1789 58 CXXFLAGS_DEBUG="$CXXFLAGS_ANY -g -O2 -Werror"
Chris@1465 59 CXXFLAGS_RELEASE="$CXXFLAGS_ANY -g0 -O3 -ffast-math"
Chris@922 60 CXXFLAGS_MINIMAL="$CXXFLAGS_ANY -g0 -O0"
Chris@1976 61 LIBS_DEBUG="$LIBS"
Chris@1976 62 AX_CHECK_COMPILE_FLAG(--std=$CXXSTANDARD, [], [AC_MSG_NOTICE([Compiler does not appear to support $CXXSTANDARD, falling back to c++11])
Chris@1976 63 CXXSTANDARD=c++11])
Chris@350 64 fi
Chris@350 65
Chris@350 66 CXXFLAGS_BUILD="$CXXFLAGS_RELEASE"
Chris@350 67 SV_DEFINES_BUILD="$SV_DEFINES_RELEASE"
Chris@350 68
Chris@361 69 QMAKE_CONFIG="release"
Chris@361 70
Chris@350 71 AC_ARG_ENABLE(debug, [AS_HELP_STRING([--enable-debug],[enable debug support [default=no]])],[AC_MSG_NOTICE([enabling debug build])
Chris@361 72 QMAKE_CONFIG="debug"
Chris@350 73 CXXFLAGS_BUILD="$CXXFLAGS_DEBUG"
Chris@1754 74 SV_DEFINES_BUILD="$SV_DEFINES_DEBUG"
Chris@1754 75 LIBS="$LIBS_DEBUG"])
Chris@350 76
Chris@350 77 if test x"$USER_CXXFLAGS" != x; then
Chris@350 78 AC_MSG_NOTICE([The CXXFLAGS environment variable is set to "$USER_CXXFLAGS".])
Chris@350 79 AC_MSG_NOTICE(Overriding default compiler flags with the above user setting.)
Chris@350 80 CXXFLAGS_BUILD="$USER_CXXFLAGS"
Chris@350 81 CXXFLAGS_MINIMAL="$USER_CXXFLAGS"
Chris@350 82 fi
Chris@350 83
Chris@350 84 CXXFLAGS="$CXXFLAGS_BUILD $SV_DEFINES_BUILD"
Chris@350 85
Chris@350 86 SV_MODULE_REQUIRED([bz2],[],[bzlib.h],[bz2],[BZ2_bzReadOpen])
Chris@350 87 SV_MODULE_REQUIRED([fftw3],[fftw3 >= 3.0.0],[fftw3.h],[fftw3],[fftw_execute])
Chris@350 88 SV_MODULE_REQUIRED([fftw3f],[fftw3f >= 3.0.0],[fftw3.h],[fftw3f],[fftwf_execute])
Chris@350 89 SV_MODULE_REQUIRED([sndfile],[sndfile >= 1.0.16],[sndfile.h],[sndfile],[sf_open])
Chris@1035 90 SV_MODULE_REQUIRED([libsamplerate],[samplerate >= 0.1.2],[samplerate.h],[samplerate],[src_new])
Chris@350 91 SV_MODULE_REQUIRED([rubberband],[rubberband],[rubberband/RubberBandStretcher.h],[rubberband],[rubberband_new])
Chris@572 92 SV_MODULE_REQUIRED([sord],[sord-0 >= 0.5],[sord/sord.h],[sord-0],[sord_world_new])
Chris@572 93 SV_MODULE_REQUIRED([serd],[serd-0 >= 0.5],[serd/serd.h],[serd-0],[serd_reader_read_file])
Chris@1534 94
Chris@1695 95 # We need a Cap'n Proto version with the expectedSizeInWordsFromPrefix
Chris@1695 96 # function, which appeared in v0.6. If we can't find at least that
Chris@1695 97 # version with pkg-config, we check for the symbol with the compiler.
Chris@1695 98 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 99 if test -z "$capnp_LIBS" ; then
Chris@1614 100 AC_COMPILE_IFELSE([
Chris@1614 101 AC_LANG_SOURCE([[
Chris@1614 102 #include <capnp/serialize.h>
Chris@1614 103 int main() {
Chris@1614 104 kj::Array<capnp::word> prefix;
Chris@1614 105 return capnp::expectedSizeInWordsFromPrefix(prefix.asPtr());
Chris@1614 106 }]])],
Chris@1614 107 [HAVES="$HAVES HAVE_CAPNP";LIBS="$LIBS -lcapnp -lkj"],
Chris@1614 108 [AC_MSG_ERROR([Failed to find appropriate capnp library])]
Chris@1614 109 )
Chris@1614 110 fi
Chris@350 111
Chris@350 112 SV_MODULE_OPTIONAL([liblo],[],[lo/lo.h],[lo],[lo_address_new])
Chris@1035 113 SV_MODULE_OPTIONAL([portaudio],[portaudio-2.0 >= 19],[portaudio.h],[portaudio],[Pa_IsFormatSupported])
Chris@350 114 SV_MODULE_OPTIONAL([JACK],[jack >= 0.100],[jack/jack.h],[jack],[jack_client_open])
Chris@350 115 SV_MODULE_OPTIONAL([libpulse],[libpulse >= 0.9],[pulse/pulseaudio.h],[pulse],[pa_stream_new])
Chris@350 116 SV_MODULE_OPTIONAL([lrdf],[lrdf >= 0.2],[lrdf.h],[lrdf],[lrdf_init])
Chris@350 117 SV_MODULE_OPTIONAL([oggz],[oggz >= 1.0.0],[oggz/oggz.h],[oggz],[oggz_run])
Chris@350 118 SV_MODULE_OPTIONAL([fishsound],[fishsound >= 1.0.0],[fishsound/fishsound.h],[fishsound],[fish_sound_new])
Chris@350 119 SV_MODULE_OPTIONAL([mad],[mad >= 0.15.0],[mad.h],[mad],[mad_decoder_init])
Chris@350 120 SV_MODULE_OPTIONAL([id3tag],[id3tag >= 0.15.0],[id3tag.h],[id3tag],[id3_tag_new])
Chris@350 121
Chris@488 122 # Link in -lX11 if it exists -- this is for the X error handler
Chris@488 123 SV_MODULE_OPTIONAL([X11],[x11 >= 1.0.0],[X11/X.h],[x11],[XGetErrorText])
Chris@488 124
Chris@350 125 AC_SUBST(PERL)
Chris@350 126 AC_SUBST(XARGS)
Chris@350 127 AC_SUBST(MAKEDEPEND)
Chris@350 128 AC_SUBST(SHA1SUM)
Chris@350 129 AC_SUBST(CUT)
Chris@350 130
Chris@350 131 AC_SUBST(CFLAGS)
Chris@350 132 AC_SUBST(CXXFLAGS)
Chris@350 133 AC_SUBST(CXXFLAGS_MINIMAL)
Chris@1976 134 AC_SUBST(CXXSTANDARD)
Chris@560 135 AC_SUBST(LDFLAGS)
Chris@350 136 AC_SUBST(HAVES)
Chris@350 137 AC_SUBST(LIBS)
Chris@350 138
Chris@350 139 AC_SUBST(CC)
Chris@350 140 AC_SUBST(CXX)
Chris@350 141
Chris@1753 142 AC_SUBST(prefix)
Chris@1753 143
Chris@361 144 AC_SUBST(QMAKE_CONFIG)
Chris@361 145
Chris@941 146 AC_CONFIG_FILES([config.pri])
Chris@350 147
Chris@517 148 AC_OUTPUT
Chris@350 149
Chris@1808 150 if test -x repoint ; then
Chris@1709 151 if test -d .hg -o -d .git ; then
Chris@1808 152 if ! ./repoint install; then
Chris@1808 153 AC_MSG_ERROR([Repoint failed; please fix any reported errors and try again])
Chris@1709 154 fi
Chris@1709 155 else
Chris@1808 156 AC_MSG_NOTICE([Repoint executable found but not in an Hg or Git working-copy: not running it])
Chris@1709 157 if ! test -d vamp-plugin-sdk ; then
Chris@1709 158 AC_MSG_WARN([No vamp-plugin-sdk directory present, so external libraries might not have been updated])
Chris@1709 159 fi
Chris@1709 160 fi
Chris@1709 161 else
Chris@1808 162 AC_MSG_NOTICE([No Repoint executable found: assuming external libraries are already here])
Chris@1709 163 if ! test -d vamp-plugin-sdk ; then
Chris@1709 164 AC_MSG_WARN([No vamp-plugin-sdk directory present, so external libraries might not have been updated])
Chris@1707 165 fi
Chris@1706 166 fi
Chris@1709 167
Chris@521 168 if ! $QMAKE -r sonic-visualiser.pro; then
Chris@350 169 AC_MSG_ERROR([qmake failed: Command was "$QMAKE -r"])
Chris@350 170 fi
Chris@350 171
Chris@350 172 AC_MSG_NOTICE([
Chris@350 173
Chris@350 174 Configuration complete.
Chris@350 175 Please check the above messages for any warnings that you
Chris@350 176 might care about, and then run "make".
Chris@350 177
Chris@350 178 The file config.pri contains the configuration settings for
Chris@350 179 qmake. If you want to adjust these by hand, edit config.pri
Chris@548 180 and run "$QMAKE -r" again to regenerate the Makefile.
Chris@350 181 ])