annotate configure.ac @ 2153:f57b0eea9201

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