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.

1027 lines
32KB

  1. dnl Process this file with autoconf to produce a configure script.
  2. dnl $Id$
  3. AC_INIT([jack-audio-connection-kit],[0.125.0rc1],
  4. [jack-devel@lists.jackaudio.org],[],[http://www.jackaudio.org/])
  5. AC_CONFIG_SRCDIR([jackd/jackd.c])
  6. AC_CONFIG_MACRO_DIR([m4])
  7. AC_CONFIG_AUX_DIR(config)
  8. AC_LANG([C])
  9. dnl
  10. dnl Check for existing JACK installs
  11. dnl
  12. AC_ARG_ENABLE(force-install,
  13. AC_HELP_STRING([--enable-force-install],
  14. [force installation when another Jack is found]),
  15. [FORCE_INSTALL=$enableval])
  16. AC_MSG_CHECKING([existing, conflicting JACK installs])
  17. not_overwriting=0
  18. installs=
  19. for dir in /usr/lib /usr/local/lib /opt/lib ; do
  20. if test -d $dir ; then
  21. if test $(find $dir/ -name 'libjack.so.*' 2>/dev/null | wc -l) -gt 0 ; then
  22. if echo $prefix/lib | grep -vs $dir >/dev/null 2>&1 ; then
  23. not_overwriting=$(expr $not_overwriting + 1)
  24. fi
  25. installs="$installs $dir"
  26. fi
  27. fi
  28. done
  29. if test "x$FORCE_INSTALL" != "xyes" -a $not_overwriting -gt 0 ; then
  30. AC_MSG_RESULT(yes)
  31. echo
  32. echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
  33. echo "You appear to have at least one existing installation of JACK."
  34. echo
  35. echo "Complete or partial JACK installs exist in:$installs"
  36. echo
  37. echo "Installing this version will leave at least one of these"
  38. echo "existing installations installed and this will probably break"
  39. echo "JACK on your machine. "
  40. echo
  41. echo "Before building, you should first remove the existing JACK"
  42. echo "installation(s). "
  43. echo
  44. echo "Alternatively use ./configure --enable-force-install to force"
  45. echo "overwriting the existing install."
  46. echo
  47. echo "WARNING: ON ANY DEBIAN-DERIVED DISTRIBUTION (Debian, Ubuntu etc)"
  48. echo "CHANGING THE INSTALLATION PREFIX WILL NOT PRODUCE A WORKING JACK"
  49. echo "INSTALL. Please contact the distribution packager for JACK and"
  50. echo "ask them to fix their packaging."
  51. echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
  52. if test "x$FORCE_INSTALL" != "xyes"; then
  53. exit 1
  54. fi
  55. fi
  56. AC_MSG_RESULT(no)
  57. AC_CONFIG_AUX_DIR(config)
  58. AC_CANONICAL_BUILD
  59. dnl ---
  60. dnl HOWTO: updating the JACK version number
  61. dnl
  62. dnl major version = ask on jackit-devel :)
  63. dnl minor version = incremented when any of the public or internal
  64. dnl interfaces are changed
  65. dnl micro version = incremented when implementation-only
  66. dnl changes are made
  67. dnl ---
  68. JACK_MAJOR_VERSION=$(echo $PACKAGE_VERSION | sed "s/\..*//")
  69. JACK_MINOR_VERSION=$(echo $PACKAGE_VERSION | sed "s/${JACK_MAJOR_VERSION}\.//;s/\..*//")
  70. JACK_MICRO_VERSION=$(echo $PACKAGE_VERSION | sed "s/.*\.//g")
  71. if test "${JACK_MAJOR_VERSION}.${JACK_MINOR_VERSION}.${JACK_MICRO_VERSION}" != "${PACKAGE_VERSION}" ; then
  72. echo "ooops"
  73. echo "Found : ${JACK_MAJOR_VERSION}.${JACK_MINOR_VERSION}.${JACK_MICRO_VERSION}"
  74. echo "Expected : ${PACKAGE_VERSION}"
  75. exit 1
  76. fi
  77. dnl ---
  78. dnl HOWTO: updating the jack protocol version
  79. dnl
  80. dnl increment the protocol version whenever a change is
  81. dnl made to the way libjack communicates with jackd
  82. dnl that would break applications statically linked with an older
  83. dnl version of libjack. NOTE: statically linking to libjack
  84. dnl is a huge mistake.
  85. dnl ---
  86. JACK_PROTOCOL_VERSION=25
  87. dnl ---
  88. dnl HOWTO: updating the libjack interface version
  89. dnl
  90. dnl current = incremented whenever the public libjack API is changed
  91. dnl revision = incremented when the libjack implementation is changed
  92. dnl age = current libjack is both source and binary compatible with
  93. dnl libjack interfaces current,current-1,...,current-age
  94. dnl
  95. dnl Note! see libtool documentation for detailed documentation
  96. dnl
  97. dnl Note Also! until we reach CURRENT>=1, the rules are somewhat
  98. dnl slacker than this, and closer to those for the JACK version
  99. dnl number.
  100. dnl ---
  101. JACK_API_CURRENT=0
  102. JACK_API_REVISION=28
  103. JACK_API_AGE=0
  104. AC_SUBST(JACK_PROTOCOL_VERSION)
  105. AC_DEFINE_UNQUOTED(PROTOCOL_VERSION, "$JACK_PROTOCOL_VERSION", [Protocol version])
  106. AC_SUBST(JACK_API_MAJOR_VERSION)
  107. AC_SUBST(JACK_API_MINOR_VERSION)
  108. AC_SUBST(JACK_API_MICRO_VERSION)
  109. JACK_SO_VERSION=${JACK_API_CURRENT}:${JACK_API_REVISION}:${JACK_API_AGE}
  110. JACK_VERSION=$JACK_MAJOR_VERSION.$JACK_MINOR_VERSION.${JACK_MICRO_VERSION}${BETA}
  111. JACK_RELEASE=$JACK_MAJOR_VERSION-$JACK_MINOR_VERSION-${JACK_MICRO_VERSION}${BETA}
  112. AC_SUBST(JACK_SO_VERSION)
  113. dnl JACK_VERSION is needed for doxygen
  114. AC_SUBST(JACK_VERSION)
  115. AC_SUBST(JACK_RELEASE)
  116. AM_INIT_AUTOMAKE
  117. m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
  118. dnl
  119. dnl save any user-provided CFLAGS so we can forget
  120. dnl about any nonsense that configure generates
  121. dnl
  122. ORIGINAL_CFLAGS="$CFLAGS"
  123. AM_CONFIG_HEADER(config.h)
  124. AC_ENABLE_STATIC(no)
  125. AC_ENABLE_SHARED(yes)
  126. AC_PROG_CC
  127. AC_PROG_CXX
  128. AC_PROG_LD
  129. AM_PROG_LIBTOOL
  130. AC_PROG_LN_S
  131. AM_PROG_CC_C_O
  132. AC_C_BIGENDIAN
  133. dnl
  134. dnl now use those user-provided CFLAGS
  135. dnl and dump whatever nonsense configure generated
  136. dnl while looking for a compiler
  137. dnl
  138. CFLAGS="$ORIGINAL_CFLAGS"
  139. AC_MSG_CHECKING([platform dependencies])
  140. HOST_DEFAULT_TMP_DIR=/dev/shm
  141. case "${host_os}" in
  142. freebsd*)
  143. # current FreeBSD header files conflict with the OSS driver's
  144. # barrier code, this may be fixed in 5.3, stay tuned.
  145. USE_BARRIER="no"
  146. ;;
  147. openbsd*)
  148. # pthread_barrier* not implemented
  149. USE_BARRIER="no"
  150. # need small realtime stack
  151. JACK_THREAD_STACK_TOUCH=10000
  152. ;;
  153. darwin*)
  154. JACK_THREAD_STACK_TOUCH=10000 # need small realtime stack
  155. JACK_CPP_VARARGS_BROKEN=1
  156. JACK_DO_NOT_MLOCK=1
  157. JACK_USE_MACH_THREADS=1
  158. OS_LDFLAGS="-framework CoreAudio -framework CoreServices -framework AudioUnit"
  159. TRY_POSIX_SHM=yes # POSIX shm works better
  160. HOST_DEFAULT_TMP_DIR=/tmp
  161. ;;
  162. esac
  163. AC_SUBST(OS_LDFLAGS)
  164. #
  165. # We need to establish suitable defaults for a 64-bit OS
  166. libnn=lib
  167. case "${host_os}" in
  168. linux*)
  169. case "${host_cpu}" in
  170. x86_64|mips64|ppc64|sparc64|s390x)
  171. libnn=lib64
  172. ;;
  173. esac
  174. ;;
  175. solaris*)
  176. ## libnn=lib/sparcv9 ## on 64-bit only, but that's compiler-specific
  177. ;;
  178. esac
  179. ## take care not to override the command-line setting
  180. if test "${libdir}" = '${exec_prefix}/lib'; then
  181. libdir='${exec_prefix}/'${libnn}
  182. fi
  183. # system-dependent config.h values
  184. test "x$JACK_THREAD_STACK_TOUCH" = "x" && JACK_THREAD_STACK_TOUCH=500000
  185. AC_DEFINE_UNQUOTED(JACK_THREAD_STACK_TOUCH,
  186. [$JACK_THREAD_STACK_TOUCH],
  187. [Guaranteed size of realtime stack])
  188. if test "x$JACK_CPP_VARARGS_BROKEN" != "x"; then
  189. AC_DEFINE_UNQUOTED(JACK_CPP_VARARGS_BROKEN,
  190. [$JACK_CPP_VARARGS_BROKEN],
  191. [CPP has a broken varargs implementation])
  192. fi
  193. if test "x$JACK_USE_MACH_THREADS" != "x"; then
  194. AC_DEFINE_UNQUOTED(JACK_USE_MACH_THREADS,
  195. [$JACK_USE_MACH_THREADS],
  196. [Use MACH threads where possible])
  197. fi
  198. # headers
  199. AC_CHECK_HEADERS(string.h strings.h alloca.h db.h, [],
  200. AC_MSG_ERROR([*** a required header file is missing]))
  201. AC_CHECK_HEADERS(getopt.h, [], [
  202. for d in /Developer/SDKs/MacOSX10.3.0.sdk/usr/include/ ; do
  203. AC_CHECK_HEADERS($d/getopt.h, [], [CFLAGS="$CFLAGS -I$d"])
  204. done])
  205. AC_CHECK_HEADER(/usr/include/nptl/pthread.h,
  206. [CFLAGS="$CFLAGS -I/usr/include/nptl"])
  207. # functions and libraries
  208. AC_CHECK_FUNC(getopt_long, [],
  209. AC_MSG_ERROR([*** JACK requires GNU getopt_long]))
  210. AC_CHECK_FUNC(gethostent, [], AC_CHECK_LIB(nsl, gethostent))
  211. AC_CHECK_FUNC(setsockopt, [], AC_CHECK_LIB(socket, setsockopt))
  212. AC_CHECK_FUNC(connect, [], AC_CHECK_LIB(inet, connect))
  213. AC_CHECK_FUNC(dlopen, [],
  214. AC_CHECK_LIB(dl, dlopen, [],
  215. AC_MSG_ERROR([*** JACK requires dynamic load support])))
  216. AC_CHECK_FUNC(pthread_create, [],
  217. AC_CHECK_LIB(pthread, pthread_create, [],
  218. AC_MSG_ERROR([*** JACK requires POSIX threads support])))
  219. AC_CHECK_FUNCS(on_exit atexit)
  220. AC_CHECK_FUNCS(posix_memalign)
  221. AC_CHECK_LIB(m, sin)
  222. AC_CHECK_LIB(db, db_create,[],
  223. AC_MSG_ERROR([*** JACK requires Berkeley DB libraries (libdb...)]))
  224. echo -n "Checking for ppoll()... "
  225. AC_EGREP_CPP( ppoll,
  226. [
  227. #define _GNU_SOURCE
  228. #include <poll.h>
  229. ], [
  230. AC_DEFINE(HAVE_PPOLL,1,"Whether ppoll is available")
  231. echo "yes"
  232. ],[
  233. AC_DEFINE(HAVE_PPOLL,0,"Whether ppoll is available")
  234. echo "no"
  235. ] )
  236. AC_CHECK_FUNC(clock_gettime,
  237. [
  238. AC_DEFINE(HAVE_CLOCK_GETTIME,0,"Whether or not clock_gettime can be found in system libraries")
  239. ],
  240. #
  241. # if not found, check librt specifically
  242. #
  243. AC_CHECK_LIB(rt, clock_gettime,
  244. [
  245. AC_DEFINE(HAVE_CLOCK_GETTIME,1,"Whether or not clock_gettime can be found in system libraries")
  246. OS_LDFLAGS="$OS_LDFLAGS -lrt"
  247. ])
  248. )
  249. # should we use mlockall() on this platform?
  250. if test "x$JACK_DO_NOT_MLOCK" = "x"; then
  251. AC_CHECK_HEADER(sys/mman.h,
  252. [AC_CHECK_FUNC(mlockall,
  253. [AC_DEFINE(USE_MLOCK, 1, [Use POSIX memory locking])])])
  254. fi
  255. # look for system support for POSIX shm API
  256. AC_ARG_ENABLE(posix-shm,
  257. AC_HELP_STRING([--enable-posix-shm], [use POSIX shm API (default=auto)]),
  258. [TRY_POSIX_SHM=$enableval])
  259. if test "x$TRY_POSIX_SHM" = "xyes"
  260. then
  261. AC_CHECK_FUNC(shm_open, [],
  262. AC_CHECK_LIB(rt, shm_open, [], [TRY_POSIX_SHM=no]))
  263. fi
  264. AC_MSG_CHECKING([shared memory support])
  265. if test "x$TRY_POSIX_SHM" = "xyes"
  266. then
  267. AC_MSG_RESULT([POSIX shm_open().])
  268. AC_DEFINE(USE_POSIX_SHM,1,[Use POSIX shared memory interface])
  269. JACK_SHM_TYPE='"POSIX"'
  270. USE_POSIX_SHM="true"
  271. else
  272. AC_MSG_RESULT([System V shmget().])
  273. JACK_SHM_TYPE='"System V"'
  274. USE_POSIX_SHM="false"
  275. fi
  276. AC_DEFINE_UNQUOTED(JACK_SHM_TYPE, [$JACK_SHM_TYPE],
  277. [JACK shared memory type])
  278. AM_CONDITIONAL(USE_POSIX_SHM, $USE_POSIX_SHM)
  279. JACK_CORE_CFLAGS="-I\$(top_srcdir)/config -I\$(top_srcdir) \
  280. -I\$(top_srcdir)/include -I\$(top_builddir)/include \
  281. -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -Wall"
  282. JACK_LIBC_HELPER_FLAGS=
  283. AC_ARG_ENABLE(ancient_libc,
  284. AC_HELP_STRING([--enable-ancient-libc],[Add required CFLAGS for libc versions too old to expose PThread R/W Lock and other modern code]),
  285. JACK_LIBC_HELPER_FLAGS="-D_XOPEN_SOURCE=600 -D_BSD_SOURCE",
  286. JACK_LIBC_HELPER_FLAGS=""
  287. )
  288. JACK_CORE_CFLAGS="$JACK_CORE_CFLAGS $JACK_LIBC_HELPER_FLAGS"
  289. case $build_os in
  290. # we need weak linkage which appeared in 10.2, but lets ask for 10.4 anyway
  291. darwin*) JACK_CORE_CFLAGS="$JACK_CORE_CFLAGS -mmacosx-version-min=10.4" ;;
  292. esac
  293. AC_ARG_WITH(cpu-target,
  294. [ --with-cpu-target=cpu-type explicit, overriding argument for gcc -march= flag])
  295. dnl
  296. dnl figure out how best to optimize
  297. dnl JOQ: this should be done via config/configure.hosts
  298. dnl
  299. dnl ----------------------------------------------------------------------
  300. if test "$build_cpu" = "powerpc64" ; then
  301. AC_ARG_ENABLE(cell,
  302. AC_HELP_STRING([--enable-cell],[enable Cell BE support (default=no)]),,
  303. [ enable_cell=no ])
  304. if test "x$enable_cell" = xyes; then
  305. AC_DEFINE(ENABLE_CELLBE, 1, [Define to 1 if you need support for the Cell BE.])
  306. fi
  307. fi
  308. if test "build_cpu" = "powerpc" -o "$build_cpu" = "powerpc64" ; then
  309. AC_DEFINE(POWERPC, 1, "Are we running a ppc CPU?")
  310. ############################
  311. # Check for Altivec assembly
  312. ############################
  313. AC_ARG_ENABLE(altivec,
  314. AC_HELP_STRING([--enable-altivec],[enable Altivec support (default=auto)]),,
  315. [ enable_altivec=yes ])
  316. if test "x$enable_altivec" = xyes; then
  317. AC_MSG_CHECKING(whether we can compile Altivec code)
  318. AC_COMPILE_IFELSE([AC_LANG_SOURCE([asm ("vand %v0, %v0, %v0");])],
  319. AC_DEFINE(USE_ALTIVEC, 1, [Define to 1 if Altivec assembly is available.])
  320. AC_DEFINE(HAVE_ALTIVEC_LINUX, 1, "Is there Altivec Support ?")
  321. ALTIVEC_OPT_FLAGS="-maltivec -mabi=altivec"
  322. AC_MSG_RESULT(yes)
  323. ,
  324. enable_altivec=no
  325. AC_MSG_RESULT(no)
  326. AC_MSG_WARN([The assembler does not support the Altivec command set.])
  327. )
  328. fi
  329. dnl -mcpu=7450 does not reliably work with gcc 3.*
  330. JACK_OPT_CFLAGS="-O2 -mcpu=7400 $ALTIVEC_OPT_FLAGS -mhard-float -mpowerpc-gfxopt"
  331. if test "$build_cpu" = "powerpc64"; then
  332. JACK_OPT_CFLAGS="-O2 -mcpu=powerpc64 $ALTIVEC_OPT_FLAGS -mhard-float"
  333. fi
  334. elif echo $build_cpu | egrep '(i.86|x86_64)' >/dev/null; then
  335. dnl Check for SSE usability
  336. if test -r /proc/cpuinfo ; then
  337. procflags=`grep '^flags' /proc/cpuinfo`
  338. if echo $procflags | grep -s sse ; then
  339. cpu_supports_sse=yes
  340. fi
  341. else
  342. # this is not linux, but assume that if the processor
  343. # is x86 then is supports SSE
  344. cpu_supports_sse=yes
  345. AC_MSG_WARN([Assuming your x86/x86_64 system can support SSE. Use --disable-sse if this is not the case])
  346. fi
  347. AC_ARG_ENABLE(optimization-by-compiler,
  348. AC_HELP_STRING([--enable-optimization-by-compiler],[use compiler (NOT processor) capabilities to determine optimization flags (default=no)]),
  349. optimization_by_compiler=yes,
  350. optimization_by_compiler=no
  351. )
  352. AC_ARG_ENABLE(optimization-by-cpu,
  353. AC_HELP_STRING([--enable-optimization-by-cpu],[use processor capabilities to determine optimization flags (default=yes)]),,
  354. optimization_by_cpu=yes
  355. )
  356. AC_ARG_ENABLE(sse,
  357. AC_HELP_STRING([--enable-sse],[enable SSE support (default=auto)]),,
  358. enable_sse=yes)
  359. if test "x$enable_sse" = xyes; then
  360. AC_MSG_CHECKING(whether we can compile SSE code)
  361. AC_COMPILE_IFELSE([AC_LANG_SOURCE([asm ("movntps %xmm0, 0");])],
  362. [
  363. if test x$optimization_by_cpu = xyes ; then
  364. if test x$cpu_supports_sse = xyes ; then
  365. SSE_FLAGS="-msse -mfpmath=sse"
  366. fi
  367. else
  368. SSE_FLAGS="-msse -mfpmath=sse"
  369. fi
  370. AC_MSG_RESULT(yes)
  371. ],
  372. [
  373. enable_sse=no
  374. AC_MSG_RESULT(no)
  375. AC_MSG_WARN([The assembler does not support the SSE command set.])
  376. ])
  377. fi
  378. AC_DEFINE(x86, 1, "Nope it's intel")
  379. COMMON_X86_OPT_FLAGS="-O3 -fomit-frame-pointer -ffast-math -funroll-loops"
  380. dnl
  381. dnl its a little sad that OS X doesn't make it possible to identify
  382. dnl the build_cpu a little more precisely. on os x we always get "i386"
  383. dnl as the CPU type. we miss out on some possible optimizations as
  384. dnl a result. oh well.
  385. dnl
  386. if test x$with_cpu_target != x ; then
  387. JACK_OPT_CFLAGS="-march=$with_cpu_target -mtune=$with_cpu_target"
  388. else
  389. case ${host_os} in
  390. darwin*) # apple gcc, not GNU
  391. JACK_OPT_CFLAGS="-mtune=generic" ;;
  392. *) # any other gcc
  393. JACK_OPT_CFLAGS="-march=native -mtune=native" ;;
  394. esac
  395. fi
  396. dnl
  397. dnl do not add h/w specific flags if asked to let compiler
  398. dnl to the optimization
  399. dnl
  400. if test x$optimization_by_compiler != xyes ; then
  401. JACK_OPT_CFLAGS="$COMMON_X86_OPT_FLAGS $JACK_OPT_CFLAGS $SSE_FLAGS"
  402. else
  403. JACK_OPT_CFLAGS="$COMMON_X86_OPT_FLAGS"
  404. fi
  405. fi
  406. AC_ARG_ENABLE(dynsimd,
  407. AC_HELP_STRING([--enable-dynsimd],[enable dynamic SIMD selection (default=no)]),,
  408. enable_dynsimd=no)
  409. if test "x$enable_dynsimd" = xyes; then
  410. AC_DEFINE(USE_DYNSIMD, 1, [Define to 1 to use dynamic SIMD selection.])
  411. dnl This needs update once there's more than x86/x86-64 supported
  412. SIMD_CFLAGS="-O -msse -msse2 -m3dnow"
  413. AC_SUBST(SIMD_CFLAGS)
  414. fi
  415. AC_ARG_ENABLE(optimize,
  416. AC_HELP_STRING([--enable-optimize],
  417. [optimize code, based on CPU or compiler, as separately selected (default=no)]),
  418. [ if test x$enable_optimize != xno ; then
  419. AC_MSG_WARN([optimization in use.........................])
  420. else
  421. # no optimization, so lets get debugging symbols instead
  422. JACK_OPT_CFLAGS="-g"
  423. AC_MSG_WARN([no optimization.........................])
  424. fi
  425. ],
  426. [
  427. # no optimization, so lets get debugging symbols instead
  428. JACK_OPT_CFLAGS="-g"
  429. AC_MSG_WARN([no optimization.........................])
  430. ]
  431. )
  432. JACK_CFLAGS="$JACK_CORE_CFLAGS $JACK_OPT_CFLAGS"
  433. dnl
  434. dnl most makefiles use JACK_CFLAGS, but simd code needs JACK_CORE_CFLAGS
  435. dnl
  436. AC_SUBST(JACK_CFLAGS)
  437. AC_SUBST(JACK_CORE_CFLAGS)
  438. dnl
  439. dnl use JACK_CFLAGS for jackd compilation
  440. dnl
  441. CFLAGS="$CFLAGS $JACK_CFLAGS"
  442. # allow buffer resizing unless --disable-resize specified
  443. buffer_resizing=yes
  444. AC_ARG_ENABLE(resize,
  445. AC_HELP_STRING([--enable-resize], [enable buffer resizing feature (default=yes)]),
  446. [
  447. if test x$enable_resize = xno ; then
  448. buffer_resizing=no
  449. fi
  450. ]
  451. )
  452. if test x$buffer_resizing != xno; then
  453. AC_DEFINE(DO_BUFFER_RESIZE,,[Enable buffer resizing])
  454. fi
  455. AC_ARG_ENABLE(valgrind-clean,
  456. AC_HELP_STRING([--enable-valgrind-clean],[spend a few extra CPU cycles avoiding unnecessary valgrind warnings (default=no)]),
  457. [
  458. if test x$enable_valgrind_clean != xno ; then
  459. AC_DEFINE(VALGRIND_CLEAN,,[clean up for valgrind])
  460. fi
  461. ]
  462. )
  463. AC_ARG_ENABLE(debug,
  464. AC_HELP_STRING([--enable-debug],
  465. [enable debugging messages in jackd and libjack (default=no)]),
  466. [
  467. if test x$enable_debug != xno ; then
  468. AC_DEFINE(DEBUG_ENABLED,,[Enable debugging messages])
  469. fi
  470. ]
  471. )
  472. AC_ARG_ENABLE(timestamps,
  473. AC_HELP_STRING([--enable-timestamps],
  474. [allow clients to use the JACK timestamp API (JACK developers only) (default=no)]),
  475. [
  476. if test x$enable_timestamps != xno ; then
  477. AC_DEFINE(WITH_TIMESTAMPS,,[Enable JACK timestamp API])
  478. fi
  479. ]
  480. )
  481. AC_ARG_ENABLE(preemption-check,
  482. AC_HELP_STRING([--enable-preemption-check],
  483. [check for inappropriate realtime preemption (requires a specially built Linux kernel) (default=no)]),
  484. [
  485. if test x$enable_preemption_check != xno ; then
  486. echo checking for realtime preemption bugs
  487. AC_DEFINE(DO_PREEMPTION_CHECKING,,
  488. [check realtime preemption])
  489. fi
  490. ])
  491. USE_CAPABILITIES=false
  492. AC_ARG_ENABLE(capabilities,
  493. AC_HELP_STRING([--enable-capabilities],[!!! LINUX 2.4 KERNELS ONLY !!! use libcap to gain realtime scheduling priviledges]),
  494. [ if test "x$enable_capabilities" != "xno" ; then
  495. AC_CHECK_LIB(cap, capgetp,
  496. [AC_CHECK_HEADER(sys/capability.h,
  497. [HAVE_CAPABILITIES=true],
  498. [AC_MSG_WARN([*** no kernel support for capabilities])
  499. HAVE_CAPABILITIES=false]
  500. )],
  501. [AC_MSG_WARN([*** no libcap present])
  502. HAVE_CAPABILITIES=false]
  503. )
  504. if test "x$HAVE_CAPABILITIES" = "xtrue"; then
  505. AC_CHECK_PROG(HAVE_CAPABILITIES, md5sum, true, false)
  506. fi
  507. if test "x$HAVE_CAPABILITIES" = "xfalse"; then
  508. AC_MSG_WARN([*** required program md5sum not found])
  509. fi
  510. if test "x$HAVE_CAPABILITIES" = "xfalse"; then
  511. AC_MSG_ERROR([*** Capabilities support not present. Run configure again without --enable-capabilities.])
  512. fi
  513. USE_CAPABILITIES=true
  514. AC_DEFINE(USE_CAPABILITIES,,[Enable POSIX 1.e capabilities support])
  515. fi
  516. ]
  517. )
  518. with_oldtrans=yes
  519. AC_ARG_ENABLE(oldtrans,
  520. AC_HELP_STRING([--disable-oldtrans],[remove old transport interfaces (default=yes)]),
  521. [ if test "x$enable_oldtrans" = "xno" ; then
  522. with_oldtrans=no
  523. fi
  524. ]
  525. )
  526. if test "x$with_oldtrans" != "xno" ; then
  527. AC_DEFINE(OLD_TRANSPORT,,[Include old transport interfaces])
  528. fi
  529. STRIPPED_JACKD=false
  530. AC_ARG_ENABLE(stripped-jackd,
  531. AC_HELP_STRING([--enable-stripped-jackd],[strip jack before computing its md5 sum (useful only with Linux 2.4 kernel)]),
  532. [ if test "x$USE_CAPABILITIES" != "xtrue" ; then
  533. AC_MSG_WARN([*** capabilities not enabled, stripped jackd has no effect])
  534. elif test "x$enable_stripped_jackd" != "xno"; then
  535. STRIPPED_JACKD=true
  536. fi
  537. ]
  538. )
  539. # plugins go in the addon dir.
  540. ADDON_DIR='${libdir}/jack'
  541. AC_SUBST(ADDON_DIR)
  542. AS_AC_EXPAND(ADDON_DIR_EXPANDED,${libdir}/jack)
  543. AC_DEFINE_UNQUOTED(ADDON_DIR,"$ADDON_DIR_EXPANDED",[Directory for plugins])
  544. AC_ARG_WITH(html-dir,
  545. AC_HELP_STRING([--with-html-dir=PATH],[where to install the html documentation]))
  546. if test "x$with_html_dir" = "x" ; then
  547. HTML_DIR='${pkgdatadir}'
  548. else
  549. HTML_DIR=$with_html_dir
  550. fi
  551. AC_SUBST(HTML_DIR)
  552. # allow specifying default tmpdir
  553. AC_ARG_WITH(default-tmpdir,
  554. AC_HELP_STRING([--with-default-tmpdir],[where jackd and clients will put tmp files (default=/dev/shm)]))
  555. if test "x$with_default_tmpdir" = "x" ; then
  556. DEFAULT_TMP_DIR=$HOST_DEFAULT_TMP_DIR
  557. else
  558. DEFAULT_TMP_DIR=$with_default_tmpdir
  559. fi
  560. AC_SUBST(DEFAULT_TMP_DIR)
  561. AC_DEFINE_UNQUOTED(DEFAULT_TMP_DIR,"$DEFAULT_TMP_DIR",[Default tmp directory])
  562. # Check for barrier functions in the pthreads library. The default
  563. # option setting may be OS-dependent, otherwise it's "yes".
  564. test "x$USE_BARRIER" = "x" && USE_BARRIER="yes"
  565. AC_ARG_WITH(barrier,
  566. AC_HELP_STRING([--without-barrier],
  567. [avoid using pthread barrier functions (only used by OSS driver)]),
  568. [ USE_BARRIER=$withval ])
  569. if test "x$USE_BARRIER" = "xyes"; then
  570. AC_CHECK_LIB([pthread], [pthread_barrier_init],
  571. AC_DEFINE(USE_BARRIER, 1, [Use pthread barrier functions]))
  572. fi
  573. # some example-clients need libsndfile
  574. HAVE_SNDFILE=false
  575. PKG_CHECK_MODULES(SNDFILE, sndfile >= 1.0,[HAVE_SNDFILE=true], [true])
  576. if test x$HAVE_SNDFILE = xfalse; then
  577. AC_MSG_WARN([*** the jackrec example client will not be built])
  578. fi
  579. # NetJack backend and internal client need libsamplerate
  580. HAVE_SAMPLERATE=false
  581. PKG_CHECK_MODULES(SAMPLERATE, samplerate >= 0.1.2,[HAVE_SAMPLERATE=true], [true])
  582. if test x$HAVE_SAMPLERATE = xfalse; then
  583. AC_MSG_WARN([*** the NetJack backend and internal client will not be built])
  584. AC_DEFINE(HAVE_SAMPLERATE,0,"Whether libsamplerate is available")
  585. else
  586. NETJACK_CFLAGS="$NETJACK_CFLAGS $SAMPLERATE_CFLAGS"
  587. NETJACK_LIBS="$NETJACK_LIBS $SAMPLERATE_LIBS"
  588. AC_DEFINE(HAVE_SAMPLERATE,1,"Whether libsamplerate is available")
  589. fi
  590. # if we have Fons Adriensen's zita libs installed, we can build the zita-based
  591. # internal clients for using additional (ALSA) devices with JACK
  592. HAVE_ZITA_BRIDGE_DEPS=false
  593. HAVE_ZITA_RESAMPLE=false
  594. HAVE_ZITA_ALSA_PCMI=false
  595. case $build_os in
  596. linux*)
  597. AC_CHECK_LIB(zita-resampler, _Z28zita_resampler_major_versionv,
  598. [
  599. HAVE_ZITA_RESAMPLE=true
  600. AC_MSG_RESULT(yes)
  601. ])
  602. AC_CHECK_LIB(zita-alsa-pcmi, _Z28zita_alsa_pcmi_major_versionv,
  603. [
  604. HAVE_ZITA_ALSA_PCMI=true
  605. AC_MSG_RESULT(yes)
  606. ])
  607. AC_ARG_ENABLE(zalsa,
  608. AC_HELP_STRING([--enable-zalsa],[Build clients using Fons Adriensen\'s Zita libraries for access to multiple devices (default=yes if required libraries are present)]),
  609. [
  610. if test x$enable_zalsa != xno -a x$HAVE_ZITA_RESAMPLE = xtrue -a x$HAVE_ZITA_ALSA_PCMI = xtrue ; then
  611. AC_DEFINE(HAVE_ZITA_BRIDGE_DEPS,1,"Whether we have the libs needed for Zita ALSA bridge support")
  612. HAVE_ZITA_BRIDGE_DEPS=true
  613. fi
  614. ],
  615. [
  616. if test x$HAVE_ZITA_RESAMPLE = xtrue -a x$HAVE_ZITA_ALSA_PCMI = xtrue ; then
  617. AC_DEFINE(HAVE_ZITA_BRIDGE_DEPS,1,"Whether we have the libs needed for Zita ALSA bridge support")
  618. HAVE_ZITA_BRIDGE_DEPS=true
  619. fi
  620. ]
  621. )
  622. ;;
  623. esac
  624. AM_CONDITIONAL(HAVE_ZITA_ALSA_PCMI, $HAVE_ZITA_ALSA_PCMI)
  625. # Celt low-latency audio codec. netjack transmission via internet.
  626. HAVE_CELT=false
  627. PKG_CHECK_MODULES(CELT, celt >= 0.8.0,[HAVE_CELT=true], [true])
  628. if test x$HAVE_CELT = xfalse; then
  629. PKG_CHECK_MODULES(CELT, celt >= 0.7.0,[HAVE_CELT=true], [true])
  630. if test x$HAVE_CELT = xfalse; then
  631. PKG_CHECK_MODULES(CELT, celt >= 0.5.0,[HAVE_CELT=true], [true])
  632. if test x$HAVE_CELT = xfalse; then
  633. AC_DEFINE(HAVE_CELT,0,"Whether CELT is available")
  634. AC_MSG_RESULT(no)
  635. AC_MSG_WARN([*** NetJack will not be built with celt support])
  636. else
  637. AC_DEFINE(HAVE_CELT,1,"Whether CELT is available")
  638. AC_DEFINE(HAVE_CELT_API_0_5,1,"Whether CELT API is 0.5 API")
  639. AC_DEFINE(HAVE_CELT_API_0_7,0,"Whether CELT API is 0.7 API")
  640. AC_DEFINE(HAVE_CELT_API_0_8,0,"Whether CELT API is 0.8 API")
  641. AC_MSG_RESULT(yes (0.5))
  642. NETJACK_LIBS="$NETJACK_LIBS $CELT_LIBS"
  643. fi
  644. else
  645. AC_DEFINE(HAVE_CELT,1,"Whether CELT is available")
  646. AC_MSG_RESULT(yes (0.7))
  647. AC_DEFINE(HAVE_CELT_API_0_5,0,"Whether CELT API is 0.5 API")
  648. AC_DEFINE(HAVE_CELT_API_0_7,1,"Whether CELT API is 0.7 API")
  649. AC_DEFINE(HAVE_CELT_API_0_8,0,"Whether CELT API is 0.8 API")
  650. NETJACK_LIBS="$NETJACK_LIBS $CELT_LIBS"
  651. fi
  652. else
  653. AC_DEFINE(HAVE_CELT,1,"Whether CELT is available")
  654. AC_MSG_RESULT(yes (0.7))
  655. AC_DEFINE(HAVE_CELT_API_0_5,0,"Whether CELT API is 0.5 API")
  656. AC_DEFINE(HAVE_CELT_API_0_7,0,"Whether CELT API is 0.7 API")
  657. AC_DEFINE(HAVE_CELT_API_0_8,1,"Whether CELT API is 0.8 API")
  658. NETJACK_LIBS="$NETJACK_LIBS $CELT_LIBS"
  659. fi
  660. AC_SUBST(NETJACK_LIBS)
  661. AC_SUBST(NETJACK_CFLAGS)
  662. # Note: A bug in pkg-config causes problems if the first occurence of
  663. # PKG_CHECK_MODULES can be disabled. So, if you're going to use
  664. # PKG_CHECK_MODULES inside a --disable-whatever check, you need to
  665. # do it somewhere *below* this comment.
  666. # Check which backend drivers can be built. The last one successfully
  667. # configured becomes the default JACK driver; so the order of
  668. # precedence is: alsa, sun, oss, coreaudio, portaudio, dummy.
  669. JACK_DEFAULT_DRIVER=\"dummy\"
  670. AC_ARG_ENABLE(portaudio,
  671. AC_HELP_STRING([--enable-portaudio],[build PortAudio driver]),
  672. TRY_PORTAUDIO=$enableval , TRY_PORTAUDIO=no)
  673. HAVE_PA="false"
  674. if test "x$TRY_PORTAUDIO" = "xyes"
  675. then
  676. # check for portaudio V18
  677. AC_CHECK_LIB(portaudio, Pa_Initialize,
  678. [ AC_CHECK_HEADERS(portaudio.h,
  679. [ HAVE_PA="true"
  680. PA_LIBS=-lportaudio
  681. JACK_DEFAULT_DRIVER=\"portaudio\"
  682. ])
  683. ])
  684. AC_SUBST(PA_LIBS)
  685. fi
  686. AM_CONDITIONAL(HAVE_PA, $HAVE_PA)
  687. AC_ARG_ENABLE(coreaudio, AC_HELP_STRING([--disable-coreaudio], [ignore CoreAudio driver]),
  688. TRY_COREAUDIO=$enableval , TRY_COREAUDIO=yes )
  689. HAVE_COREAUDIO="false"
  690. if test "x$TRY_COREAUDIO" = "xyes"
  691. then
  692. # check for coreaudio
  693. AC_CHECK_HEADERS(CoreAudio/CoreAudio.h,
  694. [ HAVE_COREAUDIO="true"
  695. JACK_DEFAULT_DRIVER=\"coreaudio\"
  696. ])
  697. fi
  698. AM_CONDITIONAL(HAVE_COREAUDIO, $HAVE_COREAUDIO)
  699. AC_ARG_ENABLE(oss, AC_HELP_STRING([--disable-oss],[ignore OSS driver ]),
  700. TRY_OSS=$enableval , TRY_OSS=yes )
  701. HAVE_OSS="false"
  702. if test "x$TRY_OSS" = "xyes"
  703. then
  704. # check for Open Sound System
  705. AC_CHECK_HEADER([sys/soundcard.h],
  706. [HAVE_OSS="true"
  707. JACK_DEFAULT_DRIVER=\"oss\"])
  708. fi
  709. AM_CONDITIONAL(HAVE_OSS, $HAVE_OSS)
  710. AC_ARG_ENABLE(sun, AC_HELP_STRING([--disable-sun],[ignore Sun driver ]),
  711. TRY_SUN=$enableval , TRY_SUN=yes )
  712. HAVE_SUN="false"
  713. if test "x$TRY_SUN" = "xyes"
  714. then
  715. # check for Sun audio API
  716. AC_CHECK_HEADER([sys/audioio.h],
  717. [HAVE_SUN="true"
  718. JACK_DEFAULT_DRIVER=\"sun\"])
  719. fi
  720. AM_CONDITIONAL(HAVE_SUN, $HAVE_SUN)
  721. AC_ARG_ENABLE(freebob, AC_HELP_STRING([--disable-freebob],[ignore FreeBob driver ]),
  722. TRY_FREEBOB=$enableval , TRY_FREEBOB=yes )
  723. HAVE_FREEBOB="false"
  724. if test "x$TRY_FREEBOB" = "xyes"
  725. then
  726. # check for FreeBob libraries
  727. PKG_CHECK_MODULES(LIBFREEBOB, libfreebob >= 1.0.0,
  728. [HAVE_FREEBOB="true"
  729. JACK_DEFAULT_DRIVER=\"freebob\"
  730. ], AC_MSG_RESULT([no]))
  731. AC_SUBST([LIBFREEBOB_CFLAGS])
  732. AC_SUBST([LIBFREEBOB_LIBS])
  733. fi
  734. AM_CONDITIONAL(HAVE_FREEBOB,$HAVE_FREEBOB)
  735. AC_ARG_ENABLE(firewire, AC_HELP_STRING([--disable-firewire],[ignore FireWire driver (FFADO)]),
  736. TRY_FIREWIRE=$enableval , TRY_FIREWIRE=yes )
  737. HAVE_FIREWIRE="false"
  738. if test "x$TRY_FIREWIRE" = "xyes"
  739. then
  740. # check for FFADO libraries
  741. PKG_CHECK_MODULES(LIBFFADO, libffado >= 1.999.17,
  742. [HAVE_FIREWIRE="true"
  743. JACK_DEFAULT_DRIVER=\"firewire\"
  744. ], AC_MSG_RESULT([no]))
  745. AC_SUBST([LIBFFADO_CFLAGS])
  746. AC_SUBST([LIBFFADO_LIBS])
  747. fi
  748. AM_CONDITIONAL(HAVE_FIREWIRE,$HAVE_FIREWIRE)
  749. AC_ARG_ENABLE(alsa, AC_HELP_STRING([--disable-alsa],[ignore ALSA driver ]),
  750. TRY_ALSA=$enableval , TRY_ALSA=yes )
  751. HAVE_ALSA="false"
  752. if test "x$TRY_ALSA" = "xyes"
  753. then
  754. # check for ALSA >= 1.0.18
  755. PKG_CHECK_MODULES(ALSA, alsa >= 1.0.18,
  756. [HAVE_ALSA="true"
  757. ALSA_LIBS=-lasound
  758. JACK_DEFAULT_DRIVER=\"alsa\"
  759. ], AC_MSG_RESULT([no - cannot find ALSA 1.0.18 or later]), [-lm]
  760. )
  761. AC_SUBST(ALSA_LIBS)
  762. fi
  763. AM_CONDITIONAL(HAVE_ALSA, $HAVE_ALSA)
  764. HAVE_ALSA_MIDI=$HAVE_ALSA
  765. AM_CONDITIONAL(HAVE_ALSA_MIDI, $HAVE_ALSA_MIDI)
  766. if test "$JACK_DEFAULT_DRIVER" = \"dummy\"; then
  767. AC_MSG_WARN([Only the dummy driver can be built])
  768. fi
  769. AC_DEFINE_UNQUOTED(JACK_DEFAULT_DRIVER,
  770. [$JACK_DEFAULT_DRIVER],
  771. [Default JACK driver])
  772. JACK_SEMAPHORE_KEY=0x282929
  773. AC_DEFINE_UNQUOTED(JACK_SEMAPHORE_KEY,
  774. [$JACK_SEMAPHORE_KEY],
  775. [ an integer constant used as the semaphore and SysV SHM key. see libjack/shm.c for usage])
  776. AC_SUBST(JACK_SEMAPHORE_KEY)
  777. # On some systems, readline depends on termcap or ncurses. But, the
  778. # MacOSX linker complains bitterly if these libraries are explicitly
  779. # referenced.
  780. #
  781. # AC_CHECK_LIB() foolishly assumes that checking a library for an entry
  782. # point always returns the same result regardless of any dependent
  783. # libraries specified. The `unset ac_cv_lib_readline_readline' erases
  784. # the cached result to work around this problem.
  785. READLINE_DEPS=""
  786. HAVE_READLINE=true
  787. AC_CHECK_LIB(readline, readline, [:],
  788. [unset ac_cv_lib_readline_readline
  789. AC_CHECK_LIB(readline, readline, [READLINE_DEPS="-ltermcap"],
  790. [unset ac_cv_lib_readline_readline
  791. AC_CHECK_LIB(readline, readline,
  792. [READLINE_DEPS="-lncurses"], [HAVE_READLINE=false], "-lncurses")],
  793. "-ltermcap")])
  794. AC_CHECK_HEADER(readline/chardefs.h, [], [HAVE_READLINE=false])
  795. if test x$HAVE_READLINE = xfalse; then
  796. AC_MSG_WARN([*** the jack_transport example client will not be built])
  797. fi
  798. AC_SUBST(READLINE_DEPS)
  799. # you need doxygen to make dist.
  800. AC_CHECK_PROG(HAVE_DOXYGEN, doxygen, true, false)
  801. if test $HAVE_DOXYGEN = "false"; then
  802. AC_MSG_WARN([*** doxygen not found, docs will not be built])
  803. fi
  804. AM_CONDITIONAL(HAVE_SNDFILE, $HAVE_SNDFILE)
  805. AM_CONDITIONAL(HAVE_CELT, $HAVE_CELT)
  806. AM_CONDITIONAL(HAVE_SAMPLERATE, $HAVE_SAMPLERATE)
  807. AM_CONDITIONAL(HAVE_READLINE, $HAVE_READLINE)
  808. AM_CONDITIONAL(HAVE_DOXYGEN, $HAVE_DOXYGEN)
  809. AM_CONDITIONAL(USE_CAPABILITIES, $USE_CAPABILITIES)
  810. AM_CONDITIONAL(STRIPPED_JACKD, $STRIPPED_JACKD)
  811. AM_CONDITIONAL(HAVE_PPOLL, $HAVE_PPOLL)
  812. AM_CONDITIONAL(HAVE_ZITA_BRIDGE_DEPS, $HAVE_ZITA_BRIDGE_DEPS)
  813. AC_OUTPUT(
  814. Makefile
  815. config/Makefile
  816. config/cpu/Makefile
  817. config/cpu/alpha/Makefile
  818. config/cpu/cris/Makefile
  819. config/cpu/generic/Makefile
  820. config/cpu/i386/Makefile
  821. config/cpu/i486/Makefile
  822. config/cpu/ia64/Makefile
  823. config/cpu/m68k/Makefile
  824. config/cpu/mips/Makefile
  825. config/cpu/powerpc/Makefile
  826. config/cpu/s390/Makefile
  827. config/os/Makefile
  828. config/os/generic/Makefile
  829. config/os/gnu-linux/Makefile
  830. config/os/macosx/Makefile
  831. config/sysdeps/Makefile
  832. doc/Makefile
  833. doc/reference.doxygen
  834. drivers/Makefile
  835. drivers/alsa/Makefile
  836. drivers/alsa_midi/Makefile
  837. drivers/dummy/Makefile
  838. drivers/oss/Makefile
  839. drivers/sun/Makefile
  840. drivers/portaudio/Makefile
  841. drivers/coreaudio/Makefile
  842. drivers/freebob/Makefile
  843. drivers/firewire/Makefile
  844. drivers/netjack/Makefile
  845. example-clients/Makefile
  846. tools/Makefile
  847. tools/zalsa/Makefile
  848. man/Makefile
  849. jack.pc
  850. jack.spec
  851. jackd/Makefile
  852. jackd/jackd.1
  853. include/version.h
  854. include/Makefile
  855. libjack/Makefile
  856. python/Makefile
  857. )
  858. dnl
  859. dnl Output summary message
  860. dnl
  861. echo
  862. echo $PACKAGE_NAME $PACKAGE_VERSION :
  863. echo
  864. echo \| Build with ALSA support............................... : $HAVE_ALSA
  865. echo \| Build with old FireWire \(FreeBob\) support............. : $HAVE_FREEBOB
  866. echo \| Build with new FireWire \(FFADO\) support............... : $HAVE_FIREWIRE
  867. echo \| Build with OSS support................................ : $HAVE_OSS
  868. echo \| Build with Sun audio support.......................... : $HAVE_SUN
  869. echo \| Build with CoreAudio support.......................... : $HAVE_COREAUDIO
  870. echo \| Build with PortAudio support.......................... : $HAVE_PA
  871. echo \| Build with Celt support............................... : $HAVE_CELT
  872. echo \| Build with dynamic buffer size support................ : $buffer_resizing
  873. echo \| Build with ZITA ALSA bridge support................... : $HAVE_ZITA_BRIDGE_DEPS
  874. echo \| Compiler optimization flags........................... : $JACK_OPT_CFLAGS
  875. echo \| Compiler full flags................................... : $CFLAGS
  876. echo \| Install dir for libjack + backends.................... : $libdir/jack
  877. echo \|
  878. echo \| Default driver backend................................ : $JACK_DEFAULT_DRIVER
  879. echo \| Shared memory interface............................... : $JACK_SHM_TYPE
  880. echo \| IPC Temporary directory............................... : $DEFAULT_TMP_DIR
  881. echo \| Install prefix........................................ : $prefix
  882. echo \| Default tmp dir....................................... : $DEFAULT_TMP_DIR
  883. echo