Add missing -l clause for FFTW in benchmark tool.
[calf.git] / configure.ac
blob3e793f634e09651abe78abfad60ed9297ad46228
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(srfftw.h, true, AC_MSG_ERROR([Single-precision FFTW2 header (srfftw.h) not found]))
54 AC_CHECK_LIB(srfftw, true, AC_MSG_ERROR([Single-precision FFTW2 library (libsrfftw) 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 gthread-2.0 >= 2.0.0, true, AC_MSG_ERROR([Calf requires glib2 and gthread2]))
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 AC_MSG_CHECKING([whether to compile with SSE])
132 AC_ARG_ENABLE(sse,
133   AC_HELP_STRING([--enable-sse],[compile with SSE extensions]),
134   [set_enable_sse="$enableval"],
135   [set_enable_sse="no"])
136 AC_MSG_RESULT($set_enable_sse)
138 ############################################################################################
139 # Compute status shell variables
141 if test "$GUI_ENABLED" = "yes" -a "$JACK_FOUND" = "yes"; then
142   JACK_ENABLED="yes"
145 if test "$GUI_ENABLED" = "yes" -a "$LV2_ENABLED" = "yes"; then
146   LV2_GUI_ENABLED="yes"
149 if test "$set_enable_debug" = "yes"; then
150   CXXFLAGS="$CXXFLAGS -O0 -g -Wall"
151 else
152   CXXFLAGS="$CXXFLAGS -O3 -finline-functions -finline-functions-called-once -Wall"
155 if test "$set_enable_sse" = "yes"; then
156   CXXFLAGS="$CXXFLAGS -msse -mfpmath=sse"
159 ############################################################################################
160 # Create automake conditional symbols
161 AM_CONDITIONAL(USE_JACK, test "$JACK_ENABLED" = "yes")
162 AM_CONDITIONAL(USE_LV2, test "$LV2_ENABLED" = "yes")
163 AM_CONDITIONAL(USE_GUI, test "$GUI_ENABLED" = "yes")
164 AM_CONDITIONAL(USE_LV2_GUI, test "$LV2_GUI_ENABLED" = "yes")
165 AM_CONDITIONAL(USE_LASH, test "$LASH_ENABLED" = "yes")
166 AM_CONDITIONAL(USE_LASH_0_6, test "$LASH_0_6_ENABLED" = "yes")
167 AM_CONDITIONAL(USE_DEBUG, test "$set_enable_debug" = "yes")
169 ############################################################################################
170 # Create autoconf symbols for config.h
171 if test "$LV2_ENABLED" = "yes"; then
172   AC_DEFINE(USE_LV2, 1, [LV2 wrapper will be built])
174 if test "$JACK_ENABLED" = "yes"; then
175   AC_DEFINE(USE_JACK, 1, [JACK I/O will be used])
177 if test "$OLD_JACK" = "yes"; then
178   AC_DEFINE(OLD_JACK, 1, [Old JACK version (with extra nframes argument) is to be used])
180 if test "$LASH_ENABLED" = "yes"; then
181   AC_DEFINE(USE_LASH, 1, "LASH Audio Session Handler client functionality is enabled")
182   if test "$LASH_0_6_FOUND" = "yes"; then
183     AC_DEFINE(USE_LASH_0_6, 1, "Unstable LASH API is enabled")
184   fi
186 if test "$LV2_GUI_ENABLED" = "yes"; then
187   AC_DEFINE(USE_LV2_GUI, 1, [GTK+ GUI executable will be used for LV2])
189 if test "$set_enable_experimental" = "yes"; then
190   AC_DEFINE([ENABLE_EXPERIMENTAL], [1], "Experimental features are enabled")
193 ############################################################################################
194 # Output directories
195 if test "$LV2_ENABLED" == "yes"; then
196   AC_MSG_CHECKING(where to install LV2 plugins)
197   AC_ARG_WITH(lv2_dir,
198     AC_HELP_STRING([--with-lv2-dir],[install LV2 calf.lv2 bundle to DIR (default=$prefix/lib/lv2/)]),
199     ,
200     [with_lv2_dir="$prefix/lib/lv2/"])
201   AC_MSG_RESULT($with_lv2_dir)
202   AC_SUBST(with_lv2_dir)
205 ############################################################################################
206 # Other defines
207 AC_DEFINE_UNQUOTED(PKGLIBDIR,"$prefix/share/calf/",[Calf shared data directory (bitmaps, GUI XML etc.)])
208 AC_DEFINE_UNQUOTED(PKGDOCDIR,"$prefix/share/doc/calf/",[Calf documentation directory])
210 ############################################################################################
211 # Output files for configure step
212 AC_CONFIG_FILES([Makefile
213                  calf.desktop
214                  gui/Makefile
215                  gui/calf.rc
216                  icons/Makefile
217                  src/Makefile
218                  src/calf/Makefile])
220 ############################################################################################
221 # Configuration message
222 AC_MSG_RESULT([
223     Calf configured
225     Debug mode:                  $set_enable_debug
226     With SSE:                    $set_enable_sse
227     Experimental plugins:        $set_enable_experimental
228     Common GUI code:             $GUI_ENABLED
229     LV2 enabled:                 $LV2_ENABLED
230     LV2 GTK+ GUI enabled:        $LV2_GUI_ENABLED
231     JACK host enabled:           $JACK_ENABLED
232     LASH enabled:                $LASH_ENABLED])
233 if test "$LASH_ENABLED" = "yes"; then
234   AC_MSG_RESULT([    Unstable LASH API:           $LASH_0_6_FOUND])
236 AC_MSG_RESULT([    Old-style JACK MIDI:         $OLD_JACK
237     
238     Installation prefix:         $prefix
239     
240     Note: due to usage of GPL-licensed libraries (FFTW) in this version,
241     the linked binary will be covered by GPL, even though the source is
242     LGPL-licensed. The only way to get an LGPL binary is by removing
243     or reimplementing parts that depend on FFTW.
246 if test "$SLV2_UNSUPPORTED" == "yes" -a "$LV2_ENABLED" == "yes"; then 
247     AC_MSG_RESULT([
248 WARNING:
249 An incompatible version of slv2 library has been found on this system.
251 Some features of Calf LV2 plugins (and other LV2 plugins) may not work
252 as expected in hosts that use currently installed version of libslv2.
254 Please upgrade to slv2 0.6.2 or newer version.
258 AC_OUTPUT