Fix the same memory leak in the phase graph widget.
[calf.git] / configure.ac
blobbab850d7312cf9a6ff2a71f17ba27e9c0cd84023
1 #                                               -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
4 AC_PREREQ(2.63)
5 AC_INIT([calf],[0.0.19-rc5],[wdev@foltman.com])
6 AC_CONFIG_SRCDIR([config.h.in])
7 AC_CONFIG_HEADER([config.h])
8 LT_INIT([dlopen])
9 LT_LANG([C++])
11 AM_INIT_AUTOMAKE(1.8)
13 if test "x$prefix" = "xNONE"; then 
14   prefix=$ac_default_prefix
17 # Checks for programs.
18 AC_PROG_INSTALL
20 ############################################################################################
21 # Set initial values of shell variables
22 LV2_GUI_ENABLED="no"
23 JACK_FOUND="no"
24 JACK_ENABLED="no"
25 OLD_JACK="no"
26 GUI_ENABLED="no"
27 LASH_ENABLED="no"
29 ############################################################################################
30 # Create configure substitutions for dependencies
32 AC_SUBST(GLIB_DEPS_CFLAGS)
33 AC_SUBST(GLIB_DEPS_LIBS)
34 AC_SUBST(GUI_DEPS_CFLAGS)
35 AC_SUBST(GUI_DEPS_LIBS)
36 AC_SUBST(JACK_DEPS_CFLAGS)
37 AC_SUBST(JACK_DEPS_LIBS)
38 AC_SUBST(FLUIDSYNTH_DEPS_CFLAGS)
39 AC_SUBST(FLUIDSYNTH_DEPS_LIBS)
41 ############################################################################################
42 # Detect dependencies
44 # Checks for libraries.
45 PKG_PROG_PKG_CONFIG
47 # Checks for header files.
48 AC_HEADER_STDC
49 AC_CHECK_HEADERS([memory.h stdint.h stdlib.h string.h time.h math.h])
51 AC_CHECK_HEADER(expat.h, true, AC_MSG_ERROR([Expat XML library not found]))
52 AC_CHECK_LIB(expat, XML_Parse, true, AC_MSG_ERROR([Expat XML library not found]))
53 AC_CHECK_HEADER(fftw3.h, true, AC_MSG_ERROR([FFTW3 header (fftw3.h) not found]))
54 AC_CHECK_LIB(fftw3, true, AC_MSG_ERROR([FFTW3 library (libfftw3) not found]))
55 AC_CHECK_LIB(fftw3f, true, AC_MSG_ERROR([Single-precision FFTW3 library (libfftw3f) not found]))
57 # JACK
58 AC_CHECK_HEADERS([jack/jack.h], have_jack_header=yes, have_jack_header=no)
60 # GLib
61 PKG_CHECK_MODULES(GLIB_DEPS, glib-2.0 >= 2.0.0 gthread-2.0 >= 2.0.0, true, AC_MSG_ERROR([Calf requires glib2 and gthread2]))
63 # Fluidsynth
64 PKG_CHECK_MODULES(FLUIDSYNTH_DEPS, fluidsynth >= 1.0.7, true, AC_MSG_ERROR([fluidsynth library not found]))
66 if test "$have_jack_header" = "yes"; then
67   PKG_CHECK_MODULES(JACK_DEPS, jack >= 0.103.0,
68     AC_CHECK_LIB([jack], [jack_port_register], JACK_FOUND="yes", ),)
71 if test "$JACK_FOUND" = "yes"; then
72   PKG_CHECK_MODULES(JACK_MIDI_DEPS, jack >= 0.105.0, OLD_JACK="no", OLD_JACK="yes")
75 PKG_CHECK_MODULES(LV2_DEPS, lv2 >= 1, LV2_FOUND="yes", LV2_FOUND="no")
77 PKG_CHECK_MODULES(LASH_DEPS, lash-1.0 >= 0.6.0,
78   AC_CHECK_LIB([lash], [lash_client_is_being_restored], LASH_0_6_FOUND="yes", LASH_0_6_FOUND="no"),
79   LASH_0_6_FOUND="no")
80 if test "$LASH_0_6_FOUND" = "yes"; then
81   LASH_FOUND="yes"
82 else
83   PKG_CHECK_MODULES(LASH_DEPS, lash-1.0 >= 0.5.2, LASH_FOUND="yes", LASH_FOUND="no")
85 PKG_CHECK_MODULES(SLV2_HACK, slv2 <= 0.6.1, SLV2_UNSUPPORTED="yes", SLV2_UNSUPPORTED="no")
87 ############################################################################################
88 # Assign initial values to feature control variables
90 LV2_ENABLED=$LV2_FOUND
91 LASH_ENABLED=$LASH_FOUND
93 if test "$JACK_FOUND" = "yes" -o "$LV2_FOUND" = "yes"; then
94   PKG_CHECK_MODULES(GUI_DEPS, gtk+-2.0 >= 2.12.0 cairo >= 1.2.0,
95     GUI_ENABLED="yes",
96     GUI_ENABLED="no (GTK+ 2.12 and cairo 1.2 or newer required)"
97   )
100 ############################################################################################
101 # Look for settings and installed libraries to determine what to compile/install/use
102 if test "$LV2_FOUND" = "yes"; then
103   AC_MSG_CHECKING([whether to allow LV2])
104   AC_ARG_WITH(lv2,
105     AC_HELP_STRING([--without-lv2],[disable LV2 interface]),
106       [if test "$withval" = "no"; then LV2_ENABLED="no"; fi],[])
107   AC_MSG_RESULT($LV2_ENABLED)
110 if test "$LASH_FOUND" = "yes"; then
111   AC_MSG_CHECKING([whether to allow LASH])
112   AC_ARG_WITH(lash,
113     AC_HELP_STRING([--without-lash],[disable LASH compatibility (GPL)]),
114       [if test "$withval" = "no"; then LASH_ENABLED="no"; fi],[])
115   AC_MSG_RESULT($LASH_ENABLED)
118 AC_MSG_CHECKING([whether to enable experimental/unfinished features])
119 AC_ARG_ENABLE(experimental,
120   AC_HELP_STRING([--enable-experimental],[enable unfinished features - not recommended!]),
121   [set_enable_experimental="$enableval"],
122   [set_enable_experimental="no"])
123 AC_MSG_RESULT($set_enable_experimental)
125 AC_MSG_CHECKING([whether to enable debugging mode])
126 AC_ARG_ENABLE(debug,
127   AC_HELP_STRING([--enable-debug],[enable debug mode - slow!]),
128   [set_enable_debug="$enableval"],
129   [set_enable_debug="no"])
130 AC_MSG_RESULT($set_enable_debug)
132 AC_MSG_CHECKING([whether to compile with SSE])
133 AC_ARG_ENABLE(sse,
134   AC_HELP_STRING([--enable-sse],[compile with SSE extensions]),
135   [set_enable_sse="$enableval"],
136   [set_enable_sse="no"])
137 AC_MSG_RESULT($set_enable_sse)
139 ############################################################################################
140 # Compute status shell variables
142 if test "$GUI_ENABLED" = "yes" -a "$JACK_FOUND" = "yes"; then
143   JACK_ENABLED="yes"
146 if test "$GUI_ENABLED" = "yes" -a "$LV2_ENABLED" = "yes"; then
147   LV2_GUI_ENABLED="yes"
150 if test "$set_enable_debug" = "yes"; then
151   CXXFLAGS="$CXXFLAGS -O0 -g -Wall"
152 else
153   CXXFLAGS="$CXXFLAGS -O3 -finline-functions -finline-functions-called-once -Wall"
156 if test "$set_enable_sse" = "yes"; then
157   CXXFLAGS="$CXXFLAGS -msse -mfpmath=sse"
160 ############################################################################################
161 # Create automake conditional symbols
162 AM_CONDITIONAL(USE_JACK, test "$JACK_ENABLED" = "yes")
163 AM_CONDITIONAL(USE_LV2, test "$LV2_ENABLED" = "yes")
164 AM_CONDITIONAL(USE_GUI, test "$GUI_ENABLED" = "yes")
165 AM_CONDITIONAL(USE_LV2_GUI, test "$LV2_GUI_ENABLED" = "yes")
166 AM_CONDITIONAL(USE_LASH, test "$LASH_ENABLED" = "yes")
167 AM_CONDITIONAL(USE_LASH_0_6, test "$LASH_0_6_ENABLED" = "yes")
168 AM_CONDITIONAL(USE_DEBUG, test "$set_enable_debug" = "yes")
170 ############################################################################################
171 # Create autoconf symbols for config.h
172 if test "$LV2_ENABLED" = "yes"; then
173   AC_DEFINE(USE_LV2, 1, [LV2 wrapper will be built])
175 if test "$JACK_ENABLED" = "yes"; then
176   AC_DEFINE(USE_JACK, 1, [JACK I/O will be used])
178 if test "$OLD_JACK" = "yes"; then
179   AC_DEFINE(OLD_JACK, 1, [Old JACK version (with extra nframes argument) is to be used])
181 if test "$LASH_ENABLED" = "yes"; then
182   AC_DEFINE(USE_LASH, 1, "LASH Audio Session Handler client functionality is enabled")
183   if test "$LASH_0_6_FOUND" = "yes"; then
184     AC_DEFINE(USE_LASH_0_6, 1, "Unstable LASH API is enabled")
185   fi
187 if test "$LV2_GUI_ENABLED" = "yes"; then
188   AC_DEFINE(USE_LV2_GUI, 1, [GTK+ GUI executable will be used for LV2])
190 if test "$set_enable_experimental" = "yes"; then
191   AC_DEFINE([ENABLE_EXPERIMENTAL], [1], "Experimental features are enabled")
194 ############################################################################################
195 # Output directories
196 if test "$LV2_ENABLED" == "yes"; then
197   AC_MSG_CHECKING(where to install LV2 plugins)
198   AC_ARG_WITH(lv2_dir,
199     AC_HELP_STRING([--with-lv2-dir],[install LV2 calf.lv2 bundle to DIR (default=$prefix/lib/lv2/)]),
200     ,
201     [with_lv2_dir="$prefix/lib/lv2/"])
202   AC_MSG_RESULT($with_lv2_dir)
203   AC_SUBST(with_lv2_dir)
206 ############################################################################################
207 # Other defines
208 AC_DEFINE_UNQUOTED(PKGLIBDIR,"$prefix/share/calf/",[Calf shared data directory (bitmaps, GUI XML etc.)])
209 AC_DEFINE_UNQUOTED(PKGDOCDIR,"$prefix/share/doc/calf/",[Calf documentation directory])
211 ############################################################################################
212 # Output files for configure step
213 AC_CONFIG_FILES([Makefile
214                  calf.desktop
215                  gui/Makefile
216                  gui/calf.rc
217                  icons/Makefile
218                  src/Makefile
219                  src/calf/Makefile])
221 ############################################################################################
222 # Configuration message
223 AC_MSG_RESULT([
224     Calf configured
226     Debug mode:                  $set_enable_debug
227     With SSE:                    $set_enable_sse
228     Experimental plugins:        $set_enable_experimental
229     Common GUI code:             $GUI_ENABLED
230     LV2 enabled:                 $LV2_ENABLED
231     LV2 GTK+ GUI enabled:        $LV2_GUI_ENABLED
232     JACK host enabled:           $JACK_ENABLED
233     LASH enabled:                $LASH_ENABLED])
234 if test "$LASH_ENABLED" = "yes"; then
235   AC_MSG_RESULT([    Unstable LASH API:           $LASH_0_6_FOUND])
237 AC_MSG_RESULT([    Old-style JACK MIDI:         $OLD_JACK
238     
239     Installation prefix:         $prefix
240     
241     Note: due to usage of GPL-licensed libraries (FFTW) in this version,
242     the linked binary will be covered by GPL, even though the source is
243     LGPL-licensed. The only way to get an LGPL binary is by removing
244     or reimplementing parts that depend on FFTW.
247 if test "$SLV2_UNSUPPORTED" == "yes" -a "$LV2_ENABLED" == "yes"; then 
248     AC_MSG_RESULT([
249 WARNING:
250 An incompatible version of slv2 library has been found on this system.
252 Some features of Calf LV2 plugins (and other LV2 plugins) may not work
253 as expected in hosts that use currently installed version of libslv2.
255 Please upgrade to slv2 0.6.2 or newer version.
259 AC_OUTPUT