Add dependency on FFTW2. Note: this makes the resulting binary GPL-licensed.
[calf.git] / configure.ac
blob530ed77aa2c952886ea1c0f137bf5b1dee441228
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(rfftw.h, true, AC_MSG_ERROR([FFTW2 header (rfftw.h) not found]))
54 AC_CHECK_LIB(rfftw, true, AC_MSG_ERROR([FFTW2 library (librfftw) not found]))
56 # JACK
57 AC_CHECK_HEADERS([jack/jack.h], have_jack_header=yes, have_jack_header=no)
59 # GLib
60 PKG_CHECK_MODULES(GLIB_DEPS, glib-2.0 >= 2.0.0, true, AC_MSG_ERROR([glib-2.0 library not found]))
62 # Fluidsynth
63 PKG_CHECK_MODULES(FLUIDSYNTH_DEPS, fluidsynth >= 1.0.7, true, AC_MSG_ERROR([fluidsynth library not found]))
65 if test "$have_jack_header" = "yes"; then
66   PKG_CHECK_MODULES(JACK_DEPS, jack >= 0.103.0,
67     AC_CHECK_LIB([jack], [jack_port_register], JACK_FOUND="yes", ),)
70 if test "$JACK_FOUND" = "yes"; then
71   PKG_CHECK_MODULES(JACK_MIDI_DEPS, jack >= 0.105.0, OLD_JACK="no", OLD_JACK="yes")
74 PKG_CHECK_MODULES(LV2_DEPS, lv2core >= 1, LV2_FOUND="yes", LV2_FOUND="no")
76 PKG_CHECK_MODULES(LASH_DEPS, lash-1.0 >= 0.6.0,
77   AC_CHECK_LIB([lash], [lash_client_is_being_restored], LASH_0_6_FOUND="yes", LASH_0_6_FOUND="no"),
78   LASH_0_6_FOUND="no")
79 if test "$LASH_0_6_FOUND" = "yes"; then
80   LASH_FOUND="yes"
81 else
82   PKG_CHECK_MODULES(LASH_DEPS, lash-1.0 >= 0.5.2, LASH_FOUND="yes", LASH_FOUND="no")
84 PKG_CHECK_MODULES(SLV2_HACK, slv2 <= 0.6.1, SLV2_UNSUPPORTED="yes", SLV2_UNSUPPORTED="no")
86 ############################################################################################
87 # Assign initial values to feature control variables
89 LV2_ENABLED=$LV2_FOUND
90 LASH_ENABLED=$LASH_FOUND
92 if test "$JACK_FOUND" = "yes" -o "$LV2_FOUND" = "yes"; then
93   PKG_CHECK_MODULES(GUI_DEPS, gtk+-2.0 >= 2.12.0 cairo >= 1.2.0,
94     GUI_ENABLED="yes",
95     GUI_ENABLED="no (GTK+ 2.12 and cairo 1.2 or newer required)"
96   )
99 ############################################################################################
100 # Look for settings and installed libraries to determine what to compile/install/use
101 if test "$LV2_FOUND" = "yes"; then
102   AC_MSG_CHECKING([whether to allow LV2])
103   AC_ARG_WITH(lv2,
104     AC_HELP_STRING([--without-lv2],[disable LV2 interface]),
105       [if test "$withval" = "no"; then LV2_ENABLED="no"; fi],[])
106   AC_MSG_RESULT($LV2_ENABLED)
109 if test "$LASH_FOUND" = "yes"; then
110   AC_MSG_CHECKING([whether to allow LASH])
111   AC_ARG_WITH(lash,
112     AC_HELP_STRING([--without-lash],[disable LASH compatibility (GPL)]),
113       [if test "$withval" = "no"; then LASH_ENABLED="no"; fi],[])
114   AC_MSG_RESULT($LASH_ENABLED)
117 AC_MSG_CHECKING([whether to enable experimental/unfinished features])
118 AC_ARG_ENABLE(experimental,
119   AC_HELP_STRING([--enable-experimental],[enable unfinished features - not recommended!]),
120   [set_enable_experimental="$enableval"],
121   [set_enable_experimental="no"])
122 AC_MSG_RESULT($set_enable_experimental)
124 AC_MSG_CHECKING([whether to enable debugging mode])
125 AC_ARG_ENABLE(debug,
126   AC_HELP_STRING([--enable-debug],[enable debug mode - slow!]),
127   [set_enable_debug="$enableval"],
128   [set_enable_debug="no"])
129 AC_MSG_RESULT($set_enable_debug)
131 ############################################################################################
132 # Compute status shell variables
134 if test "$GUI_ENABLED" = "yes" -a "$JACK_FOUND" = "yes"; then
135   JACK_ENABLED="yes"
138 if test "$GUI_ENABLED" = "yes" -a "$LV2_ENABLED" = "yes"; then
139   LV2_GUI_ENABLED="yes"
142 if test "$set_enable_debug" = "yes"; then
143   CXXFLAGS="$CXXFLAGS -O0 -g -Wall"
144 else
145   CXXFLAGS="$CXXFLAGS -O3 -finline-functions -finline-functions-called-once -Wall"
148 ############################################################################################
149 # Create automake conditional symbols
150 AM_CONDITIONAL(USE_JACK, test "$JACK_ENABLED" = "yes")
151 AM_CONDITIONAL(USE_LV2, test "$LV2_ENABLED" = "yes")
152 AM_CONDITIONAL(USE_GUI, test "$GUI_ENABLED" = "yes")
153 AM_CONDITIONAL(USE_LV2_GUI, test "$LV2_GUI_ENABLED" = "yes")
154 AM_CONDITIONAL(USE_LASH, test "$LASH_ENABLED" = "yes")
155 AM_CONDITIONAL(USE_LASH_0_6, test "$LASH_0_6_ENABLED" = "yes")
156 AM_CONDITIONAL(USE_DEBUG, test "$set_enable_debug" = "yes")
158 ############################################################################################
159 # Create autoconf symbols for config.h
160 if test "$LV2_ENABLED" = "yes"; then
161   AC_DEFINE(USE_LV2, 1, [LV2 wrapper will be built])
163 if test "$JACK_ENABLED" = "yes"; then
164   AC_DEFINE(USE_JACK, 1, [JACK I/O will be used])
166 if test "$OLD_JACK" = "yes"; then
167   AC_DEFINE(OLD_JACK, 1, [Old JACK version (with extra nframes argument) is to be used])
169 if test "$LASH_ENABLED" = "yes"; then
170   AC_DEFINE(USE_LASH, 1, "LASH Audio Session Handler client functionality is enabled")
171   if test "$LASH_0_6_FOUND" = "yes"; then
172     AC_DEFINE(USE_LASH_0_6, 1, "Unstable LASH API is enabled")
173   fi
175 if test "$LV2_GUI_ENABLED" = "yes"; then
176   AC_DEFINE(USE_LV2_GUI, 1, [GTK+ GUI executable will be used for LV2])
178 if test "$set_enable_experimental" = "yes"; then
179   AC_DEFINE([ENABLE_EXPERIMENTAL], [1], "Experimental features are enabled")
182 ############################################################################################
183 # Output directories
184 if test "$LV2_ENABLED" == "yes"; then
185   AC_MSG_CHECKING(where to install LV2 plugins)
186   AC_ARG_WITH(lv2_dir,
187     AC_HELP_STRING([--with-lv2-dir],[install LV2 calf.lv2 bundle to DIR (default=$prefix/lib/lv2/)]),
188     ,
189     [with_lv2_dir="$prefix/lib/lv2/"])
190   AC_MSG_RESULT($with_lv2_dir)
191   AC_SUBST(with_lv2_dir)
194 ############################################################################################
195 # Other defines
196 AC_DEFINE_UNQUOTED(PKGLIBDIR,"$prefix/share/calf/",[Calf shared data directory (bitmaps, GUI XML etc.)])
198 ############################################################################################
199 # Output files for configure step
200 AC_CONFIG_FILES([Makefile
201                  calf.desktop
202                  gui/Makefile
203                  gui/calf.rc
204                  icons/Makefile
205                  src/Makefile
206                  src/calf/Makefile])
208 ############################################################################################
209 # Configuration message
210 AC_MSG_RESULT([
211     Calf configured
213     Debug mode:                  $set_enable_debug
214     Experimental plugins:        $set_enable_experimental
215     Common GUI code:             $GUI_ENABLED
216     LV2 enabled:                 $LV2_ENABLED
217     LV2 GTK+ GUI enabled:        $LV2_GUI_ENABLED
218     JACK host enabled:           $JACK_ENABLED
219     LASH enabled:                $LASH_ENABLED])
220 if test "$LASH_ENABLED" = "yes"; then
221   AC_MSG_RESULT([    Unstable LASH API:           $LASH_0_6_FOUND])
223 AC_MSG_RESULT([    Old-style JACK MIDI:         $OLD_JACK
224     
225     Installation prefix:         $prefix
226     
227     Note: due to usage of GPL-licensed libraries (FFTW) in this version,
228     the linked binary will be covered by GPL, even though the source is
229     LGPL-licensed. The only way to get an LGPL binary is by removing
230     or reimplementing parts that depend on FFTW.
233 if test "$SLV2_UNSUPPORTED" == "yes" -a "$LV2_ENABLED" == "yes"; then 
234     AC_MSG_RESULT([
235 WARNING:
236 An incompatible version of slv2 library has been found on this system.
238 Some features of Calf LV2 plugins (and other LV2 plugins) may not work
239 as expected in hosts that use currently installed version of libslv2.
241 Please upgrade to slv2 0.6.2 or newer version.
245 AC_OUTPUT