File: configure.ac

package info (click to toggle)
stk 5.0.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 5,908 kB
  • sloc: cpp: 33,513; ansic: 3,216; sh: 2,900; tcl: 2,444; perl: 114; objc: 60; makefile: 54
file content (274 lines) | stat: -rw-r--r-- 9,284 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
# Process this file with autoconf to produce a configure script.
AC_INIT([STK],[5.0.0],[gary.scavone@mcgill.ca],[stk])
AC_CONFIG_AUX_DIR(config)
AC_CONFIG_SRCDIR(src/Stk.cpp)
AC_CONFIG_FILES(Makefile src/Makefile projects/demo/Makefile projects/effects/Makefile projects/ragamatic/Makefile projects/examples/Makefile projects/examples/libMakefile projects/eguitar/Makefile)

# Fill GXX with something before test.
AC_SUBST( GXX, ["no"] )

# standards version
m4_include([m4/ax_cxx_compile_stdcxx.m4])
AX_CXX_COMPILE_STDCXX(11, noext, mandatory)

# Checks for programs.
AC_PROG_CXX(g++ CC c++ cxx)
AC_PROG_RANLIB
AC_PATH_PROG(AR, ar, no)
if [[ $AR = "no" ]] ; then
    AC_MSG_ERROR("Could not find ar - needed to create a library");
fi

# Checks for header files.
m4_warn([obsolete],
[The preprocessor macro `STDC_HEADERS' is obsolete.
  Except in unusual embedded environments, you can safely include all
  ISO C90 headers unconditionally.])dnl
# Autoupdate added the next two lines to ensure that your configure
# script's behavior did not change.  They are probably safe to remove.
AC_CHECK_INCLUDES_DEFAULT
AC_PROG_EGREP

AC_CHECK_HEADERS(fcntl.h sys/ioctl.h sys/time.h termio.h unistd.h)

# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_TYPE_SIZE_T
m4_warn([obsolete],
[Update your code to rely only on HAVE_SYS_TIME_H,
then remove this warning and the obsolete code below it.
All current systems provide time.h; it need not be checked for.
Not all systems provide sys/time.h, but those that do, all allow
you to include it and time.h simultaneously.])dnl
AC_CHECK_HEADERS_ONCE([sys/time.h])
# Obsolete code to be removed.
if test $ac_cv_header_sys_time_h = yes; then
  AC_DEFINE([TIME_WITH_SYS_TIME],[1],[Define to 1 if you can safely include both <sys/time.h>
	     and <time.h>.  This macro is obsolete.])
fi
# End of obsolete code.

AC_C_BIGENDIAN
AC_EGREP_CPP(yes,
[#ifndef WORDS_BIGENDIAN
  yes
#endif
], [AC_SUBST( byte_order, [-D__LITTLE_ENDIAN__] )] )

AC_MSG_CHECKING(for RAWWAVE_PATH argument)
AC_SUBST( rawwaves, $RAWWAVE_PATH )
AC_MSG_RESULT($RAWWAVE_PATH)

AC_MSG_CHECKING(for INCLUDE_PATH argument)
AC_SUBST( include, $INCLUDE_PATH )
AC_MSG_RESULT($INCLUDE_PATH)

# Check for realtime support disable
AC_MSG_CHECKING(whether to compile realtime support)
AC_ARG_ENABLE(realtime,
         [  --disable-realtime = only compile generic non-realtime classes],
         realtime=$enableval)
if test "$realtime" = "no"; then
   AC_SUBST( sound_api, [] )
else
   AC_SUBST( realtime, [yes] )
fi
AC_MSG_RESULT($realtime)

AC_MSG_CHECKING(whether to build the static library)
AC_ARG_ENABLE(static,
         [  --disable-static = do not compile static library ],
	 build_static=$enableval,
	 build_static=yes)
AC_SUBST(build_static)
AC_MSG_RESULT($build_static)

AC_MSG_CHECKING(whether to build the shared library)
AC_ARG_ENABLE(shared,
         [  --enable-shared = compile the shared library ],
	 build_shared=$enableval,
	 build_shared=no)
AC_SUBST(build_shared)
AC_MSG_RESULT($build_shared)

if test x$build_static = xno -a x$build_shared = xno ; then
        AC_MSG_ERROR([ both static and shared libraries are disabled], 1)
fi

# Check for math library
AC_CHECK_LIB(m, cos, , AC_MSG_ERROR(math library is needed!))

# Check for debug
AC_MSG_CHECKING(whether to compile debug version)
AC_ARG_ENABLE(debug,
        [  --enable-debug = enable various debug output],
        debug=$enableval)
if test "$debug" = "yes"; then
   AC_SUBST( cppflag, ["-D_STK_DEBUG_ -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__"] )
   AC_SUBST( cxxflag, ["-g"] )
   AC_SUBST( object_path, [Debug] )
else
  AC_SUBST( debug, [no] )
  AC_SUBST( cppflag, [] )
  AC_SUBST( cxxflag, [-O3] )
  AC_SUBST( object_path, [Release] )
fi
AC_MSG_RESULT($debug)

# Checks for functions
if test $realtime = yes; then
  AC_CHECK_FUNCS(select socket)
  AC_CHECK_FUNC(gettimeofday, [cppflag="$cppflag -DHAVE_GETTIMEOFDAY"], )
fi

# For -I and -D flags
CPPFLAGS="$CPPFLAGS $cppflag"

# For debugging and optimization ...
CXXFLAGS="$cxxflag $CXXFLAGS"

# Check compiler and use -Wall if gnu.
if [test $GXX = "yes" ;] then
  AC_SUBST( cxxflag, [-Wall] )
fi

CXXFLAGS="$CXXFLAGS $cxxflag"

AC_CANONICAL_HOST

basesharedname="libstk-\$(RELEASE)"

AC_SUBST( sharedlib, ["libstk.so"] )
AC_SUBST( sharedname, [${basesharedname}.so] )
AC_SUBST( libflags, ["-shared -Wl,-soname,${basesharedname}.so -o $sharedname"] )
case $host in
  *-apple*)
  AC_SUBST( sharedlib, ["libstk.dylib"] )
  AC_SUBST( sharedname, ["${basesharedname}.dylib"] )
  AC_SUBST( libflags, ["-dynamiclib -install_name \$(libdir)/${basesharedname}.dylib -o ${basesharedname}.dylib"] )
esac

if test $realtime = yes; then
  # Checks for package options and external software
  AC_MSG_CHECKING(for audio API)

  AC_ARG_WITH(jack, [  --with-jack = choose JACK server support (mac and linux only)])
  AS_IF([test "x$with_jack" == "xyes"], [
api="$api -D__UNIX_JACK__"
  AC_MSG_RESULT(using JACK)
  AC_CHECK_LIB(jack, jack_client_open, , AC_MSG_ERROR(JACK support requires the jack library!))])

  case $host in
    *-*-netbsd*)
    AS_IF([test "$api" == ""], [
      AC_MSG_RESULT(using OSS)
      api="$api -D__LINUX_OSS__"
      LIBS="$LIBS -lossaudio"
      AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR(RtAudio requires the pthread library!))])
    ;;

    *-*-freebsd*)
    AS_IF([test "$api" == ""], [
      AC_MSG_RESULT(using OSS)
      api="$api -D__LINUX_OSS__"
      LIBS="$LIBS -lossaudio"
      AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR(RtAudio requires the pthread library!))])
    ;;

    *-*-linux*)
    # Look for ALSA flag
    AC_ARG_WITH(alsa, [  --with-alsa = choose native ALSA API support (linux only)])
    AS_IF([test "x$with_alsa" == "xyes"], [
    api="$api -D__LINUX_ALSA__"
    AC_MSG_RESULT(using ALSA)
    AC_CHECK_LIB(asound, snd_pcm_open, , AC_MSG_ERROR(ALSA support requires the asound library!))])

    # Look for PulseAudio flag
    AC_ARG_WITH(pulse, [  --with-pulse = choose PulseAudio support (linux only)])
    AS_IF([test "x$with_pulse" == "xyes"], [
    api="$api -D__LINUX_PULSE__"
    AC_MSG_RESULT(using PulseAudio)
    AC_CHECK_LIB(pulse, pa_proplist_gets, , AC_MSG_ERROR(PulseAudio support requires the libpulse library!))
    AC_CHECK_LIB(pulse-simple, pa_simple_new, , AC_MSG_ERROR(PulseAudio support requires the libpulse-simple library!))])

    # Look for OSS flag
    AC_ARG_WITH(oss, [  --with-oss = choose OSS API support (unixes only)])
    AS_IF([test "x$with_oss" == "xyes"], [
    api="$api -D__LINUX_OSS__ -D__LINUX_ALSA__"
    AC_MSG_RESULT(using OSS)
    AC_CHECK_LIB(asound, snd_pcm_open, , AC_MSG_ERROR(OSS support requires ALSA for RtMidi!))])

    # If no audio api flags specified, use ALSA
    AS_IF([test "$api" == ""], [
      AC_MSG_RESULT(using ALSA)
      AC_SUBST( api, [-D__LINUX_ALSA__] )
      AC_CHECK_LIB(asound, snd_pcm_open, , AC_MSG_ERROR(ALSA support requires the asound library!))
    ])

    AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR(RtAudio requires the pthread library!))
    ;;

    *-apple*)
    # Look for Core flag
    AC_ARG_WITH(core, [  --with-core = choose CoreAudio API support (mac only)])
    AS_IF([test "x$with_core" == "xyes"], [
    api="$api -D__MACOSX_CORE__"
    AC_MSG_RESULT(using CoreAudio)
    AC_CHECK_HEADER(CoreAudio/CoreAudio.h, [], [AC_MSG_ERROR(CoreAudio header files not found!)] )
    LIBS="$LIBS -framework CoreAudio -framework CoreFoundation -framework CoreMIDI" ])

    # If no audio api flags specified, use CoreAudio
    AS_IF([test "$api" == ""], [
      AC_SUBST( api, [-D__MACOSX_CORE__] )
      AC_MSG_RESULT(using CoreAudio)
      AC_CHECK_HEADER(CoreAudio/CoreAudio.h,
      [],
      [AC_MSG_ERROR(CoreAudio header files not found!)] )
      AC_SUBST( LIBS, ["-framework CoreAudio -framework CoreFoundation -framework CoreMIDI"] )
    ])

    AC_CHECK_LIB(pthread, pthread_create, , AC_MSG_ERROR(RtAudio requires the pthread library!))
    ;;

    *-mingw32*)
    AC_ARG_WITH(asio, [  --with-asio = choose ASIO API support (windoze only)])
    AS_IF([test "x$with_asio" == "xyes"], [
    api="$api -D__WINDOWS_ASIO__"
    AC_MSG_RESULT(using ASIO)
    AC_SUBST( objects, ["asio.o asiodrivers.o asiolist.o iasiothiscallresolver.o"] ) ])

    # Look for DirectSound flag
    AC_ARG_WITH(ds, [  --with-ds = choose DirectSound API support (windoze only)])
    AS_IF([test "x$with_ds" == "xyes"], [
    api="$api -D__WINDOWS_DS__"
    AC_MSG_RESULT(using DirectSound)
    LIBS="-ldsound $LIBS" ])

    # Look for WASAPI flag
    AC_ARG_WITH(wasapi, [  --with-wasapi = choose Windows Audio Session API support (windoze only)])
    AS_IF([test "x$with_wasapi" == "xyes"], [
    api="$api -D__WINDOWS_WASAPI__"
    AC_MSG_RESULT(using WASAPI)
    LIBS="-luuid -lksuser $LIBS" ])

    # If no audio api flags specified, use DirectSound
    AS_IF([test "$api" == ""], [
      AC_SUBST( api, [-D__WINDOWS_DS__] )
      AC_MSG_RESULT(using DirectSound)
      LIBS="-ldsound -lwinmm $LIBS"
    ])

    api="$api -D__WINDOWS_MM__"
    LIBS="-lole32 -lwinmm -lwsock32 $LIBS"
    ;;

    *)
    # Default case for unknown realtime systems.
    AC_MSG_ERROR(Unknown system type for realtime support ... try --disable-realtime argument!)
    ;;
  esac

CPPFLAGS="$CPPFLAGS $api"
fi

AC_OUTPUT