Notebook: fix crash if no param
[calf.git] / configure.ac
blob624d2fd9ba31ce3d65b6c96305487e776341b4c0
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],[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 # Sordi
67 AC_CHECK_PROG(SORDI_ENABLED, sordi, yes, no)
69 if test "$have_jack_header" = "yes"; then
70   PKG_CHECK_MODULES(JACK_DEPS, jack >= 0.103.0,
71     AC_CHECK_LIB([jack], [jack_port_register], JACK_FOUND="yes", ),)
74 if test "$JACK_FOUND" = "yes"; then
75   PKG_CHECK_MODULES(JACK_MIDI_DEPS, jack >= 0.105.0, OLD_JACK="no", OLD_JACK="yes")
78 PKG_CHECK_MODULES(LV2_DEPS, lv2core >= 6, LV2_FOUND="yes", LV2_FOUND="no")
80 PKG_CHECK_MODULES(LASH_DEPS, lash-1.0 >= 0.6.0,
81   AC_CHECK_LIB([lash], [lash_client_is_being_restored], LASH_0_6_FOUND="yes", LASH_0_6_FOUND="no"),
82   LASH_0_6_FOUND="no")
83 if test "$LASH_0_6_FOUND" = "yes"; then
84   LASH_FOUND="yes"
85 else
86   PKG_CHECK_MODULES(LASH_DEPS, lash-1.0 >= 0.5.2, LASH_FOUND="yes", LASH_FOUND="no")
88 PKG_CHECK_MODULES(SLV2_HACK, slv2 <= 0.6.1, SLV2_UNSUPPORTED="yes", SLV2_UNSUPPORTED="no")
90 ############################################################################################
91 # Assign initial values to feature control variables
93 LV2_ENABLED=$LV2_FOUND
94 LASH_ENABLED=$LASH_FOUND
96 if test "$JACK_FOUND" = "yes" -o "$LV2_FOUND" = "yes"; then
97   PKG_CHECK_MODULES(GUI_DEPS, gtk+-2.0 >= 2.12.0 cairo >= 1.2.0,
98     GUI_ENABLED="yes",
99     GUI_ENABLED="no (GTK+ 2.12 and cairo 1.2 or newer required)"
100   )
103 ############################################################################################
104 # Look for settings and installed libraries to determine what to compile/install/use
105 if test "$LV2_FOUND" = "yes"; then
106   AC_MSG_CHECKING([whether to allow LV2])
107   AC_ARG_WITH(lv2,
108     AC_HELP_STRING([--without-lv2],[disable LV2 interface]),
109       [if test "$withval" = "no"; then LV2_ENABLED="no"; fi],[])
110   AC_MSG_RESULT($LV2_ENABLED)
113 if test "$LASH_FOUND" = "yes"; then
114   AC_MSG_CHECKING([whether to allow LASH])
115   AC_ARG_WITH(lash,
116     AC_HELP_STRING([--without-lash],[disable LASH compatibility (GPL)]),
117       [if test "$withval" = "no"; then LASH_ENABLED="no"; fi],[])
118   AC_MSG_RESULT($LASH_ENABLED)
121 AC_MSG_CHECKING([whether to enable experimental/unfinished features])
122 AC_ARG_ENABLE(experimental,
123   AC_HELP_STRING([--enable-experimental],[enable unfinished features - not recommended!]),
124   [set_enable_experimental="$enableval"],
125   [set_enable_experimental="no"])
126 AC_MSG_RESULT($set_enable_experimental)
128 AC_MSG_CHECKING([whether to enable debugging mode])
129 AC_ARG_ENABLE(debug,
130   AC_HELP_STRING([--enable-debug],[enable debug mode - slow!]),
131   [set_enable_debug="$enableval"],
132   [set_enable_debug="no"])
133 AC_MSG_RESULT($set_enable_debug)
135 AC_MSG_CHECKING([whether to compile with SSE])
136 AC_ARG_ENABLE(sse,
137   AC_HELP_STRING([--enable-sse],[compile with SSE extensions]),
138   [set_enable_sse="$enableval"],
139   [set_enable_sse="no"])
140 AC_MSG_RESULT($set_enable_sse)
142 ############################################################################################
143 # Compute status shell variables
145 if test "$GUI_ENABLED" = "yes" -a "$JACK_FOUND" = "yes"; then
146   JACK_ENABLED="yes"
149 if test "$GUI_ENABLED" = "yes" -a "$LV2_ENABLED" = "yes"; then
150   LV2_GUI_ENABLED="yes"
153 if test "$set_enable_debug" = "yes"; then
154   CXXFLAGS="$CXXFLAGS -O0 -g -Wall"
155 else
156   CXXFLAGS="$CXXFLAGS -O3 -finline-functions -finline-functions-called-once -Wall"
159 if test "$set_enable_sse" = "yes"; then
160   CXXFLAGS="$CXXFLAGS -msse -mfpmath=sse"
163 ############################################################################################
164 # Create automake conditional symbols
165 AM_CONDITIONAL(USE_JACK, test "$JACK_ENABLED" = "yes")
166 AM_CONDITIONAL(USE_LV2, test "$LV2_ENABLED" = "yes")
167 AM_CONDITIONAL(USE_GUI, test "$GUI_ENABLED" = "yes")
168 AM_CONDITIONAL(USE_LV2_GUI, test "$LV2_GUI_ENABLED" = "yes")
169 AM_CONDITIONAL(USE_LASH, test "$LASH_ENABLED" = "yes")
170 AM_CONDITIONAL(USE_LASH_0_6, test "$LASH_0_6_ENABLED" = "yes")
171 AM_CONDITIONAL(USE_DEBUG, test "$set_enable_debug" = "yes")
172 AM_CONDITIONAL(USE_SORDI, test "$SORDI_ENABLED" = "yes")
174 ############################################################################################
175 # Create autoconf symbols for config.h
176 if test "$LV2_ENABLED" = "yes"; then
177   AC_DEFINE(USE_LV2, 1, [LV2 wrapper will be built])
179 if test "$JACK_ENABLED" = "yes"; then
180   AC_DEFINE(USE_JACK, 1, [JACK I/O will be used])
182 if test "$OLD_JACK" = "yes"; then
183   AC_DEFINE(OLD_JACK, 1, [Old JACK version (with extra nframes argument) is to be used])
185 if test "$LASH_ENABLED" = "yes"; then
186   AC_DEFINE(USE_LASH, 1, "LASH Audio Session Handler client functionality is enabled")
187   if test "$LASH_0_6_FOUND" = "yes"; then
188     AC_DEFINE(USE_LASH_0_6, 1, "Unstable LASH API is enabled")
189   fi
191 if test "$LV2_GUI_ENABLED" = "yes"; then
192   AC_DEFINE(USE_LV2_GUI, 1, [GTK+ GUI executable will be used for LV2])
194 if test "$set_enable_experimental" = "yes"; then
195   AC_DEFINE([ENABLE_EXPERIMENTAL], [1], "Experimental features are enabled")
197 if test "$SORDI_ENABLED" = "yes"; then
198   AC_DEFINE(USE_SORDI, 1, "Sordi sanity checks are enabled")
200 ############################################################################################
201 # Output directories
202 if test "$LV2_ENABLED" == "yes"; then
203   AC_MSG_CHECKING(where to install LV2 plugins)
204   AC_ARG_WITH(lv2_dir,
205     AC_HELP_STRING([--with-lv2-dir],[install LV2 calf.lv2 bundle to DIR (default=$prefix/lib/lv2/)]),
206     ,
207     [with_lv2_dir="$prefix/lib/lv2/"])
208   AC_MSG_RESULT($with_lv2_dir)
209   AC_SUBST(with_lv2_dir)
212 ############################################################################################
213 # Other defines
214 AC_DEFINE_UNQUOTED(PKGLIBDIR,"$prefix/share/calf/",[Calf shared data directory (bitmaps, GUI XML etc.)])
215 AC_DEFINE_UNQUOTED(PKGDOCDIR,"$prefix/share/doc/calf/",[Calf documentation directory])
217 ############################################################################################
218 # Output files for configure step
219 AC_CONFIG_FILES([Makefile
220                  calf.desktop
221                  gui/Makefile
222                  icons/Makefile
223                  src/Makefile
224                  src/calf/Makefile])
226 ############################################################################################
227 # Configuration message
228 AC_MSG_RESULT([
229     Calf configured
231     Debug mode:                  $set_enable_debug
232     With SSE:                    $set_enable_sse
233     Experimental plugins:        $set_enable_experimental
234     Common GUI code:             $GUI_ENABLED
235     LV2 enabled:                 $LV2_ENABLED
236     LV2 GTK+ GUI enabled:        $LV2_GUI_ENABLED
237     JACK host enabled:           $JACK_ENABLED
238     LASH enabled:                $LASH_ENABLED])
239 if test "$LASH_ENABLED" = "yes"; then
240   AC_MSG_RESULT([    Unstable LASH API:           $LASH_0_6_FOUND])
242 AC_MSG_RESULT([    Old-style JACK MIDI:         $OLD_JACK
243     
244     Installation prefix:         $prefix
245     
246     Note: due to usage of GPL-licensed libraries (FFTW) in this version,
247     the linked binary will be covered by GPL, even though the source is
248     LGPL-licensed. The only way to get an LGPL binary is by removing
249     or reimplementing parts that depend on FFTW.
252 if test "$SLV2_UNSUPPORTED" == "yes" -a "$LV2_ENABLED" == "yes"; then 
253     AC_MSG_RESULT([
254 WARNING:
255 An incompatible version of slv2 library has been found on this system.
257 Some features of Calf LV2 plugins (and other LV2 plugins) may not work
258 as expected in hosts that use currently installed version of libslv2.
260 Please upgrade to slv2 0.6.2 or newer version.
264 AC_OUTPUT