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.

1012 lines
31KB

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