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.

316 lines
9.4KB

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