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.

279 lines
8.2KB

  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=71
  15. JACK_MICRO_VERSION=5
  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=6
  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=19
  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. SHM_FLAGS=-DUSE_POSIX_SHM
  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 $SHM_FLAGS"
  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. STRIPPED_JACKD=false
  136. AC_ARG_ENABLE(stripped-jackd,
  137. [ --enable-stripped-jackd strip jack before computing its md5 sum ],
  138. [ if test "x$USE_CAPABILITIES" != "xtrue" ; then
  139. AC_MSG_WARN([*** capabilities not enabled, stripped jackd has no effect])
  140. elif test "x$enable_stripped_jackd" != "xno"; then
  141. STRIPPED_JACKD=true
  142. fi
  143. ]
  144. )
  145. AC_ARG_ENABLE(timestamps,
  146. [ --enable-timestamps allow clients to use the JACK timestamp API ],
  147. [ if test "x$enable_debug" != "xno" ; then
  148. AC_DEFINE(WITH_TIMESTAMPS,,[Enable JACK timestamp API])
  149. fi
  150. ]
  151. )
  152. # plugins go in the addon dir.
  153. AS_AC_EXPAND(ADDON_DIR,${libdir}/jack)
  154. AC_SUBST(ADDON_DIR)
  155. AC_DEFINE_UNQUOTED(ADDON_DIR,"$ADDON_DIR",[Directory for plugins])
  156. AC_ARG_WITH(html-dir,
  157. [ --with-html-dir=PATH where to install the html documentation])
  158. if test "x$with_html_dir" = "x" ; then
  159. HTML_DIR='${pkgdatadir}'
  160. else
  161. HTML_DIR=$with_html_dir
  162. fi
  163. AC_SUBST(HTML_DIR)
  164. # allow specifying default tmpdir
  165. AC_ARG_WITH(default-tmpdir,
  166. [ --with-default-tmpdir=PATH where jackd and clients will put tmp files (/tmp)])
  167. if test "x$with_default_tmpdir" = "x" ; then
  168. DEFAULT_TMP_DIR=/tmp
  169. else
  170. DEFAULT_TMP_DIR=$with_default_tmpdir
  171. fi
  172. AC_SUBST(DEFAULT_TMP_DIR)
  173. AC_DEFINE_UNQUOTED(DEFAULT_TMP_DIR,"$DEFAULT_TMP_DIR",[Default tmp directory])
  174. # jack depends on alsa 0.9. some example apps depend on libsndfile.
  175. AC_CHECK_LIB(asound,snd_pcm_drop,
  176. [
  177. HAVE_ALSA="true"
  178. ALSA_LIBS=-lasound
  179. ],
  180. [
  181. HAVE_ALSA="false"
  182. AC_MSG_WARN([ALSA 0.9 support not found])
  183. ],
  184. [-lm]
  185. )
  186. AC_SUBST(ALSA_LIBS)
  187. dnl replace me with a proper test
  188. HAVE_SOLARIS="false"
  189. if test "x$HAVE_ALSA" != "xtrue"; then
  190. if test "x$HAVE_SOLARIS" != "xtrue"; then
  191. AC_MSG_ERROR([*** Neither Solaris nor ALSA audio support was found, aborting...])
  192. fi
  193. fi
  194. HAVE_SNDFILE=false
  195. PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0,[HAVE_SNDFILE=true], [true])
  196. if test x$HAVE_SNDFILE = xfalse; then
  197. AC_MSG_WARN([*** the jackrec example client will not be built])
  198. fi
  199. # you need doxygen to make dist.
  200. AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, true, false)
  201. if test $HAVE_DOXYGEN = "false"; then
  202. AC_MSG_WARN([*** doxygen not found, docs will not be built])
  203. fi
  204. AM_CONDITIONAL(HAVE_SNDFILE, $HAVE_SNDFILE)
  205. AM_CONDITIONAL(HAVE_DOXYGEN, $HAVE_DOXYGEN)
  206. AM_CONDITIONAL(USE_CAPABILITIES, $USE_CAPABILITIES)
  207. AM_CONDITIONAL(STRIPPED_JACKD, $STRIPPED_JACKD)
  208. AM_CONDITIONAL(HAVE_ALSA, $HAVE_ALSA)
  209. AM_CONDITIONAL(HAVE_SOLARIS, $HAVE_SOLARIS)
  210. AC_OUTPUT(
  211. Makefile
  212. jack.pc
  213. jack.spec
  214. jack/Makefile
  215. jack/version.h
  216. jackd/Makefile
  217. jackd/jackd.1
  218. libjack/Makefile
  219. drivers/Makefile
  220. drivers/alsa/Makefile
  221. drivers/solaris/Makefile
  222. example-clients/Makefile
  223. doc/Makefile
  224. doc/reference.doxygen
  225. )