jack1 codebase
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

312 lines
9.3KB

  1. dnl Process this file with autoconf to produce a configure script.
  2. AC_INIT(jackd/jackd.c)
  3. AC_CONFIG_AUX_DIR(.)
  4. dnl ---
  5. dnl HOWTO: updating the JACK version number
  6. dnl
  7. dnl major version = ask on jackit-devel :)
  8. dnl minor version = incremented when any of the public or internal
  9. dnl interfaces are changed
  10. dnl micro version = incremented when implementation-only
  11. dnl changes are made
  12. dnl ---
  13. JACK_MAJOR_VERSION=0
  14. JACK_MINOR_VERSION=83
  15. JACK_MICRO_VERSION=1
  16. dnl ---
  17. dnl HOWTO: updating the jack protocal version
  18. dnl
  19. dnl increment the protocol version whenever a change is
  20. dnl made to the way libjack communicates with jackd
  21. dnl that would break applications linked with an older
  22. dnl version of libjack.
  23. dnl ---
  24. JACK_PROTOCOL_VERSION=10
  25. dnl ---
  26. dnl HOWTO: updating the libjack interface version
  27. dnl
  28. dnl current = incremented whenever the public libjack API is changed
  29. dnl revision = incremented when the libjack implementation is changed
  30. dnl age = current libjack is both source and binary compatible with
  31. dnl libjack interfaces current,current-1,...,current-age
  32. dnl
  33. dnl Note! see libtool documentation for detailed documentation
  34. dnl
  35. dnl Note Also! until we reach CURRENT>=1, the rules are somewhat
  36. dnl slacker than this, and closer to those for the JACK version
  37. dnl number.
  38. dnl ---
  39. JACK_API_CURRENT=0
  40. JACK_API_REVISION=22
  41. JACK_API_AGE=0
  42. AC_SUBST(JACK_MAJOR_VERSION)
  43. AC_SUBST(JACK_MINOR_VERSION)
  44. AC_SUBST(JACK_MICRO_VERSION)
  45. AC_SUBST(JACK_PROTOCOL_VERSION)
  46. AC_SUBST(JACK_API_MAJOR_VERSION)
  47. AC_SUBST(JACK_API_MINOR_VERSION)
  48. AC_SUBST(JACK_API_MICRO_VERSION)
  49. JACK_SO_VERSION=${JACK_API_CURRENT}:${JACK_API_REVISION}:${JACK_API_AGE}
  50. JACK_VERSION=$JACK_MAJOR_VERSION.$JACK_MINOR_VERSION.${JACK_MICRO_VERSION}${BETA}
  51. JACK_RELEASE=$JACK_MAJOR_VERSION-$JACK_MINOR_VERSION-${JACK_MICRO_VERSION}${BETA}
  52. AC_SUBST(JACK_SO_VERSION)
  53. AC_SUBST(JACK_VERSION)
  54. AC_SUBST(JACK_RELEASE)
  55. AM_INIT_AUTOMAKE(jack-audio-connection-kit,${JACK_VERSION})
  56. AM_MAINTAINER_MODE
  57. AM_CONFIG_HEADER(config.h)
  58. AC_PROG_CC
  59. AC_PROG_CXX
  60. AC_PROG_LD
  61. AM_PROG_LIBTOOL
  62. AC_C_BIGENDIAN
  63. AC_CHECK_HEADERS(string.h strings.h)
  64. AC_CHECK_FUNC(getopt_long, , AC_MSG_ERROR([GNU getopt is required to build jack]))
  65. AC_CHECK_FUNC(gethostent, , AC_CHECK_LIB(nsl, gethostent))
  66. AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
  67. AC_CHECK_FUNC(connect, , AC_CHECK_LIB(inet, connect))
  68. AC_CHECK_FUNCS(on_exit atexit)
  69. dnl
  70. dnl look for system support for POSIX shm API
  71. dnl XXX this could probably be improved
  72. dnl
  73. AC_ARG_ENABLE(posix-shm, [ --enable-posix-shm use POSIX shm API ],
  74. TRY_POSIX_SHM=yes , TRY_POSIX_SHM=no )
  75. if test "x$TRY_POSIX_SHM" = "xyes"
  76. then
  77. AC_MSG_CHECKING([POSIX shm support (compile time) ])
  78. df | grep -s /dev/shm >/dev/null 2>&1
  79. if test $? = 0 ; then
  80. AC_DEFINE(USE_POSIX_SHM,1,[Use POSIX shared memory interface])
  81. AC_MSG_RESULT([found.
  82. JACK will use shm_open() and friends.])
  83. else
  84. AC_MSG_RESULT([not found.
  85. JACK will use System V shm API (shmget() and friends])
  86. fi
  87. else
  88. echo ' JACK will use System V shm API (shmget() and friends)'
  89. fi
  90. JACK_CORE_CFLAGS="-I\$(top_srcdir) -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -Wall"
  91. JACK_CFLAGS="$JACK_CORE_CFLAGS -g"
  92. JACK_OPT_CFLAGS="$JACK_CORE_CFLAGS -O3 -fomit-frame-pointer -ffast-math -fstrength-reduce -funroll-loops -fmove-all-movables"
  93. AC_ARG_ENABLE(optimize,
  94. [ --enable-optimize ask the compiler for its best optimizations],
  95. [ if test "x$enable_optimize" != "xno" ; then JACK_CFLAGS="$JACK_OPT_CFLAGS" ; fi ])
  96. AC_SUBST(JACK_CFLAGS)
  97. dnl
  98. dnl use JACK_CFLAGS for jackd compilation
  99. dnl
  100. CFLAGS=$JACK_CFLAGS
  101. AC_ARG_ENABLE(debug,
  102. [ --enable-debug enable debugging messages in jackd and libjack],
  103. [ if test "x$enable_debug" != "xno" ; then
  104. AC_DEFINE(DEBUG_ENABLED,,[Enable debugging messages])
  105. fi
  106. ]
  107. )
  108. USE_CAPABILITIES=false
  109. AC_ARG_ENABLE(capabilities,
  110. [ --enable-capabilities use libcap to gain realtime scheduling priviledges],
  111. [ if test "x$enable_capabilities" != "xno" ; then
  112. AC_CHECK_LIB(cap, capgetp,
  113. [AC_CHECK_HEADER(sys/capability.h,
  114. [HAVE_CAPABILITIES=true],
  115. [AC_MSG_WARN([*** no kernel support for capabilities])
  116. HAVE_CAPABILITIES=false]
  117. )],
  118. [AC_MSG_WARN([*** no libcap present])
  119. HAVE_CAPABILITIES=false]
  120. )
  121. if test "x$HAVE_CAPABILITIES" = "xtrue"; then
  122. AC_CHECK_PROG(HAVE_CAPABILITIES, md5sum, true, false)
  123. fi
  124. if test "x$HAVE_CAPABILITIES" = "xfalse"; then
  125. AC_MSG_WARN([*** required program md5sum not found])
  126. fi
  127. if test "x$HAVE_CAPABILITIES" = "xfalse"; then
  128. AC_MSG_ERROR([*** Capabilities support not present. Run configure again without --enable-capabilities.])
  129. fi
  130. USE_CAPABILITIES=true
  131. AC_DEFINE(USE_CAPABILITIES,,[Enable POSIX 1.e capabilities support])
  132. fi
  133. ]
  134. )
  135. with_oldtrans=yes
  136. AC_ARG_ENABLE(oldtrans,
  137. [ --disable-oldtrans remove old transport interfaces],
  138. [ if test "x$enable_oldtrans" = "xno" ; then
  139. with_oldtrans=no
  140. fi ])
  141. if test "x$with_oldtrans" != "xno" ; then
  142. AC_DEFINE(OLD_TRANSPORT,,[Include old transport interfaces])
  143. fi
  144. STRIPPED_JACKD=false
  145. AC_ARG_ENABLE(stripped-jackd,
  146. [ --enable-stripped-jackd strip jack before computing its md5 sum ],
  147. [ if test "x$USE_CAPABILITIES" != "xtrue" ; then
  148. AC_MSG_WARN([*** capabilities not enabled, stripped jackd has no effect])
  149. elif test "x$enable_stripped_jackd" != "xno"; then
  150. STRIPPED_JACKD=true
  151. fi
  152. ]
  153. )
  154. AC_ARG_ENABLE(timestamps,
  155. [ --enable-timestamps allow clients to use the JACK timestamp API ],
  156. [ if test "x$enable_debug" != "xno" ; then
  157. AC_DEFINE(WITH_TIMESTAMPS,,[Enable JACK timestamp API])
  158. fi
  159. ]
  160. )
  161. # plugins go in the addon dir.
  162. AS_AC_EXPAND(ADDON_DIR,${libdir}/jack)
  163. AC_SUBST(ADDON_DIR)
  164. AC_DEFINE_UNQUOTED(ADDON_DIR,"$ADDON_DIR",[Directory for plugins])
  165. AC_ARG_WITH(html-dir,
  166. [ --with-html-dir=PATH where to install the html documentation])
  167. if test "x$with_html_dir" = "x" ; then
  168. HTML_DIR='${pkgdatadir}'
  169. else
  170. HTML_DIR=$with_html_dir
  171. fi
  172. AC_SUBST(HTML_DIR)
  173. # allow specifying default tmpdir
  174. AC_ARG_WITH(default-tmpdir,
  175. [ --with-default-tmpdir=PATH where jackd and clients will put tmp files (/tmp)])
  176. if test "x$with_default_tmpdir" = "x" ; then
  177. DEFAULT_TMP_DIR=/tmp
  178. else
  179. DEFAULT_TMP_DIR=$with_default_tmpdir
  180. fi
  181. AC_SUBST(DEFAULT_TMP_DIR)
  182. AC_DEFINE_UNQUOTED(DEFAULT_TMP_DIR,"$DEFAULT_TMP_DIR",[Default tmp directory])
  183. # jack depends on alsa 0.9. some example apps depend on libsndfile.
  184. AC_CHECK_LIB(asound,snd_pcm_drop,
  185. [
  186. HAVE_ALSA="true"
  187. ALSA_LIBS=-lasound
  188. ],
  189. [
  190. HAVE_ALSA="false"
  191. AC_MSG_WARN([ALSA 0.9 support not found])
  192. ],
  193. [-lm]
  194. )
  195. AC_SUBST(ALSA_LIBS)
  196. AC_ARG_ENABLE(portaudio, [ --enable-portaudio Include PortAudio driver ],
  197. TRY_PORTAUDIO=yes , TRY_PORTAUDIO=no )
  198. HAVE_PA="false"
  199. if test "x$TRY_PORTAUDIO" = "xyes"
  200. then
  201. # check for portaudio V18
  202. AC_CHECK_LIB(portaudio, Pa_Initialize,
  203. [HAVE_PA="true" PA_LIBS=-lportaudio], [], [-lm -lpthread]
  204. )
  205. AC_SUBST(PA_LIBS)
  206. fi
  207. if test "x$HAVE_ALSA" != "xtrue" && test "x$HAVE_PA" != "xtrue"; then
  208. AC_MSG_ERROR(
  209. [*** Neither PortAudio nor ALSA audio available, aborting...])
  210. fi
  211. HAVE_SNDFILE=false
  212. PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0,[HAVE_SNDFILE=true], [true])
  213. if test x$HAVE_SNDFILE = xfalse; then
  214. AC_MSG_WARN([*** the jackrec example client will not be built])
  215. fi
  216. # on some systems, readline depends on termcap or ncurses, respectively
  217. READLINE_DEPS=""
  218. AC_CHECK_LIB(termcap, tgetent, [READLINE_DEPS="$READLINE_DEPS -ltermcap"])
  219. AC_CHECK_LIB(ncurses, tgetent, [READLINE_DEPS="$READLINE_DEPS -lncurses"])
  220. AC_CHECK_LIB(readline, readline,
  221. [HAVE_READLINE=true], [HAVE_READLINE=false], [$READLINE_DEPS]
  222. )
  223. if test x$HAVE_READLINE = xfalse; then
  224. AC_MSG_WARN([*** the jack_transport example client will not be built])
  225. fi
  226. AC_SUBST(READLINE_DEPS)
  227. # you need doxygen to make dist.
  228. AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, true, false)
  229. if test $HAVE_DOXYGEN = "false"; then
  230. AC_MSG_WARN([*** doxygen not found, docs will not be built])
  231. fi
  232. AM_CONDITIONAL(HAVE_SNDFILE, $HAVE_SNDFILE)
  233. AM_CONDITIONAL(HAVE_READLINE, $HAVE_READLINE)
  234. AM_CONDITIONAL(HAVE_DOXYGEN, $HAVE_DOXYGEN)
  235. AM_CONDITIONAL(USE_CAPABILITIES, $USE_CAPABILITIES)
  236. AM_CONDITIONAL(STRIPPED_JACKD, $STRIPPED_JACKD)
  237. AM_CONDITIONAL(HAVE_ALSA, $HAVE_ALSA)
  238. AM_CONDITIONAL(HAVE_PA, $HAVE_PA)
  239. AC_OUTPUT(
  240. Makefile
  241. jack.pc
  242. jack.spec
  243. jack/Makefile
  244. jack/version.h
  245. jackd/Makefile
  246. jackd/jackd.1
  247. libjack/Makefile
  248. drivers/Makefile
  249. drivers/alsa/Makefile
  250. drivers/dummy/Makefile
  251. drivers/portaudio/Makefile
  252. example-clients/Makefile
  253. doc/Makefile
  254. doc/reference.doxygen
  255. )