annotate configure.ac @ 1866:65d244ee39f9

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