blob: 73f065e4a8f0beceeb1e1da74193dc875708cbee [file] [log] [blame]
Jason Evansb7924f52009-06-23 19:01:18 -07001dnl Process this file with autoconf to produce a configure script.
2AC_INIT([Makefile.in])
3
Jason Evansf3340ca2009-06-30 16:17:05 -07004dnl ============================================================================
5dnl Custom macro definitions.
6
7dnl JE_CFLAGS_APPEND(cflag)
8AC_DEFUN([JE_CFLAGS_APPEND],
9[
10AC_MSG_CHECKING([whether compiler supports $1])
11TCFLAGS="${CFLAGS}"
12if test "x${CFLAGS}" = "x" ; then
13 CFLAGS="$1"
14else
15 CFLAGS="${CFLAGS} $1"
16fi
17AC_RUN_IFELSE([AC_LANG_PROGRAM(
18[[
19]], [[
20 return 0;
21]])],
22 AC_MSG_RESULT([yes]),
23 AC_MSG_RESULT([no])
24 [CFLAGS="${TCFLAGS}"]
25)
26])
27
28dnl JE_COMPILABLE(label, hcode, mcode, rvar)
29AC_DEFUN([JE_COMPILABLE],
30[
31AC_MSG_CHECKING([whether $1 is compilable])
32AC_RUN_IFELSE([AC_LANG_PROGRAM(
33[$2], [$3])],
34 AC_MSG_RESULT([yes])
35 [$4="yes"],
36 AC_MSG_RESULT([no])
37 [$4="no"]
38)
39])
40
41dnl ============================================================================
42
Jason Evansb7924f52009-06-23 19:01:18 -070043srcroot=$srcdir
44if test "x${srcroot}" = "x." ; then
45 srcroot=""
46else
47 srcroot="${srcroot}/"
48fi
49AC_SUBST([srcroot])
50abs_srcroot="`cd \"${srcdir}\"; pwd`/"
51AC_SUBST([abs_srcroot])
52
53objroot=""
54AC_SUBST([objroot])
55abs_objroot="`pwd`/"
56AC_SUBST([abs_objroot])
57
58dnl Munge install path variables.
59if test "x$prefix" = "xNONE" ; then
60 prefix="/usr/local"
61fi
62if test "x$exec_prefix" = "xNONE" ; then
63 exec_prefix=$prefix
64fi
65PREFIX=$prefix
66AC_SUBST([PREFIX])
67BINDIR=`eval echo $bindir`
68BINDIR=`eval echo $BINDIR`
69AC_SUBST([BINDIR])
70INCLUDEDIR=`eval echo $includedir`
71INCLUDEDIR=`eval echo $INCLUDEDIR`
72AC_SUBST([INCLUDEDIR])
73LIBDIR=`eval echo $libdir`
74LIBDIR=`eval echo $LIBDIR`
75AC_SUBST([LIBDIR])
76DATADIR=`eval echo $datadir`
77DATADIR=`eval echo $DATADIR`
78AC_SUBST([DATADIR])
79MANDIR=`eval echo $mandir`
80MANDIR=`eval echo $MANDIR`
81AC_SUBST([MANDIR])
82
Jason Evanscc00a152009-06-25 18:06:48 -070083cfgoutputs="Makefile doc/jemalloc.3"
Jason Evansb7924f52009-06-23 19:01:18 -070084cfghdrs="src/jemalloc_defs.h"
85
Jason Evansf3340ca2009-06-30 16:17:05 -070086dnl If CFLAGS isn't defined, set CFLAGS to something reasonable. Otherwise,
87dnl just prevent autoconf from molesting CFLAGS.
Jason Evansb7924f52009-06-23 19:01:18 -070088CFLAGS=$CFLAGS
89AC_PROG_CC
90if test "x$CFLAGS" = "x" ; then
91 no_CFLAGS="yes"
Jason Evansf3340ca2009-06-30 16:17:05 -070092 JE_CFLAGS_APPEND([-std=gnu99])
93 JE_CFLAGS_APPEND([-Wall])
94 JE_CFLAGS_APPEND([-pipe])
95 JE_CFLAGS_APPEND([-g3])
96 JE_CFLAGS_APPEND([-march=native])
97 JE_CFLAGS_APPEND([-ftls-model=initial-exec])
Jason Evansb7924f52009-06-23 19:01:18 -070098fi
99dnl Append EXTRA_CFLAGS to CFLAGS, if defined.
100if test "x$EXTRA_CFLAGS" != "x" ; then
Jason Evansf3340ca2009-06-30 16:17:05 -0700101 JE_CFLAGS_APPEND([$EXTRA_CFLAGS])
Jason Evansb7924f52009-06-23 19:01:18 -0700102fi
103AC_PROG_CPP
104
105dnl sizeof_ptr is needed by the build system.
106AC_CHECK_SIZEOF([void *])
107if test "x${ac_cv_sizeof_void_p}" = "x8" ; then
108 SIZEOF_PTR_2POW=3
109elif test "x${ac_cv_sizeof_void_p}" = "x4" ; then
110 SIZEOF_PTR_2POW=2
111else
112 AC_MSG_ERROR([Unsupported pointer size: ${ac_cv_sizeof_void_p}])
113fi
114AC_DEFINE_UNQUOTED([SIZEOF_PTR_2POW], [$SIZEOF_PTR_2POW])
115
116AC_CANONICAL_HOST
117dnl CPU-specific settings.
118CPU_SPINWAIT=""
119case "${host_cpu}" in
120 i[[345]]86)
121 ;;
122 i686)
Jason Evansf3340ca2009-06-30 16:17:05 -0700123 JE_COMPILABLE([__asm__], [], [[__asm__ volatile("pause"); return 0;]],
124 [asm])
125 if test "x${asm}" = "xyes" ; then
126 CPU_SPINWAIT='__asm__ volatile("pause")'
127 fi
Jason Evansb7924f52009-06-23 19:01:18 -0700128 ;;
129 x86_64)
Jason Evansf3340ca2009-06-30 16:17:05 -0700130 JE_COMPILABLE([__asm__ syntax], [],
131 [[__asm__ volatile("pause"); return 0;]], [asm])
132 if test "x${asm}" = "xyes" ; then
133 CPU_SPINWAIT='__asm__ volatile("pause")'
134 fi
Jason Evansb7924f52009-06-23 19:01:18 -0700135 ;;
136 *)
137 ;;
138esac
139AC_DEFINE_UNQUOTED([CPU_SPINWAIT], [$CPU_SPINWAIT])
140
Jason Evansf3340ca2009-06-30 16:17:05 -0700141JE_COMPILABLE([__attribute__ syntax],
142 [static __attribute__((unused)) void foo(void){}],
143 [],
144 [attribute])
145if test "x${attribute}" = "xyes" ; then
146 AC_DEFINE_UNQUOTED([JEMALLOC_UNUSED], [__attribute__((unused))])
147else
148 AC_DEFINE_UNQUOTED([JEMALLOC_UNUSED], [])
149fi
150
Jason Evansb7924f52009-06-23 19:01:18 -0700151dnl Platform-specific settings. abi and RPATH can probably be determined
152dnl programmatically, but doing so is error-prone, which makes it generally
153dnl not worth the trouble.
154dnl
155dnl Define cpp macros in CPPFLAGS, rather than doing AC_DEFINE(macro), since the
156dnl definitions need to be seen before any headers are included, which is a pain
157dnl to make happen otherwise.
158case "${host}" in
159 *-*-darwin*)
160 CFLAGS="$CFLAGS -fno-common -no-cpp-precomp"
161 abi="macho"
162 RPATH=""
163 ;;
164 *-*-freebsd*)
165 CFLAGS="$CFLAGS"
166 abi="elf"
167 RPATH="-Wl,-rpath,"
168 ;;
169 *-*-linux*)
170 CFLAGS="$CFLAGS"
171 CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
172 abi="elf"
173 RPATH="-Wl,-rpath,"
174 ;;
175 *-*-netbsd*)
176 AC_MSG_CHECKING([ABI])
177 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
178[[#ifdef __ELF__
179/* ELF */
180#else
181#error aout
182#endif
183]])],
184 [CFLAGS="$CFLAGS"; abi="elf"],
185 [abi="aout"])
186 AC_MSG_RESULT([$abi])
187 RPATH="-Wl,-rpath,"
188 ;;
189 *-*-solaris2*)
190 CFLAGS="$CFLAGS"
191 abi="elf"
192 RPATH="-Wl,-R,"
193 dnl Solaris needs this for sigwait().
194 CPPFLAGS="$CPPFLAGS -D_POSIX_PTHREAD_SEMANTICS"
195 LIBS="$LIBS -lposix4 -lsocket -lnsl"
196 ;;
197 *)
198 AC_MSG_RESULT([Unsupported operating system: ${host}])
199 abi="elf"
200 RPATH="-Wl,-rpath,"
201 ;;
202esac
203AC_SUBST([abi])
204AC_SUBST([RPATH])
205
206dnl Support optional additions to rpath.
207AC_ARG_WITH([rpath],
Jason Evans90895cf2009-12-29 00:09:15 -0800208 [AS_HELP_STRING([--with-rpath=<rpath>], [Colon-separated rpath (ELF systems only)])],
Jason Evansb7924f52009-06-23 19:01:18 -0700209if test "x$with_rpath" = "xno" ; then
210 RPATH_EXTRA=
211else
212 RPATH_EXTRA="`echo $with_rpath | tr \":\" \" \"`"
213fi,
214 RPATH_EXTRA=
215)
216AC_SUBST([RPATH_EXTRA])
217
218dnl Disable rules that do automatic regeneration of configure output by default.
219AC_ARG_ENABLE([autogen],
220 [AS_HELP_STRING[--enable-autogen], [Automatically regenerate configure output])],
221if test "x$enable_autogen" = "xno" ; then
222 enable_autogen="0"
223else
224 enable_autogen="1"
225fi
226,
227enable_autogen="0"
228)
229AC_SUBST([enable_autogen])
230
231AC_PROG_INSTALL
232AC_PROG_RANLIB
233AC_PATH_PROG([AR], [ar], , [$PATH])
234AC_PATH_PROG([LD], [ld], , [$PATH])
235AC_PATH_PROG([AUTOCONF], [autoconf], , [$PATH])
236
Jason Evans90895cf2009-12-29 00:09:15 -0800237dnl Do not prefix public APIs by default.
238AC_ARG_WITH([jemalloc_prefix],
239 [AS_HELP_STRING([--with-jemalloc-prefix=<prefix>], [Prefix to prepend to all public APIs])],
240if test "x$with_jemalloc_prefix" = "xno" ; then
241 JEMALLOC_PREFIX=
242else
243 JEMALLOC_PREFIX="$with_jemalloc_prefix"
244fi,
245 JEMALLOC_PREFIX=
246)
247if test "x$JEMALLOC_PREFIX" != "x" ; then
248 AC_DEFINE([JEMALLOC_PREFIX], [ ])
249 jemalloc_prefix=$JEMALLOC_PREFIX
250 AC_SUBST([jemalloc_prefix])
251 AC_DEFINE_UNQUOTED([malloc], [${JEMALLOC_PREFIX}malloc])
252 AC_DEFINE_UNQUOTED([calloc], [${JEMALLOC_PREFIX}calloc])
253 AC_DEFINE_UNQUOTED([posix_memalign], [${JEMALLOC_PREFIX}posix_memalign])
254 AC_DEFINE_UNQUOTED([realloc], [${JEMALLOC_PREFIX}realloc])
255 AC_DEFINE_UNQUOTED([free], [${JEMALLOC_PREFIX}free])
256 AC_DEFINE_UNQUOTED([malloc_usable_size], [${JEMALLOC_PREFIX}malloc_usable_size])
Jason Evans84cbbcb2009-12-29 00:09:15 -0800257 AC_DEFINE_UNQUOTED([malloc_tcache_flush], [${JEMALLOC_PREFIX}malloc_tcache_flush])
Jason Evans90895cf2009-12-29 00:09:15 -0800258 AC_DEFINE_UNQUOTED([malloc_options], [${JEMALLOC_PREFIX}malloc_options])
259 AC_DEFINE_UNQUOTED([malloc_message], [${JEMALLOC_PREFIX}malloc_message])
260fi
261
Jason Evansb7924f52009-06-23 19:01:18 -0700262dnl Do not compile with debugging by default.
263AC_ARG_ENABLE([debug],
264 [AS_HELP_STRING([--enable-debug], [Build debugging code])],
265[if test "x$enable_debug" = "xno" ; then
266 enable_debug="0"
267else
268 enable_debug="1"
269fi
270],
271[enable_debug="0"]
272)
273if test "x$enable_debug" = "x1" ; then
274 AC_DEFINE([JEMALLOC_DEBUG], [ ])
275fi
276AC_SUBST([enable_debug])
277
278dnl Only optimize if not debugging.
279if test "x$enable_debug" = "x0" -a "x$no_CFLAGS" = "xyes" ; then
280 dnl Make sure that an optimization flag was not specified in EXTRA_CFLAGS.
Jason Evansf3340ca2009-06-30 16:17:05 -0700281 optimize="no"
282 echo "$EXTRA_CFLAGS" | grep "\-O" >/dev/null || optimize="yes"
283 if test "x${optimize}" = "xyes" ; then
284 if test "x$GCC" = "xyes" ; then
285 JE_CFLAGS_APPEND([-O3])
286 JE_CFLAGS_APPEND([-funroll-loops])
287 JE_CFLAGS_APPEND([-fomit-frame-pointer])
288 else
289 JE_CFLAGS_APPEND([-O])
290 fi
Jason Evansb7924f52009-06-23 19:01:18 -0700291 fi
292fi
293
294dnl Do not enable statistics calculation by default.
295AC_ARG_ENABLE([stats],
296 [AS_HELP_STRING([--enable-stats], [Enable statistics calculation/reporting])],
297[if test "x$enable_stats" = "xno" ; then
298 enable_stats="0"
299else
300 enable_stats="1"
301fi
302],
303[enable_stats="0"]
304)
305if test "x$enable_stats" = "x1" ; then
306 AC_DEFINE([JEMALLOC_STATS], [ ])
307fi
308AC_SUBST([enable_stats])
Jason Evanscc00a152009-06-25 18:06:48 -0700309if test "x$enable_stats" = "x0" ; then
310 roff_stats=".\\\" "
311else
312 roff_stats=""
313fi
314AC_SUBST([roff_stats])
Jason Evansb7924f52009-06-23 19:01:18 -0700315
Jason Evans569432c2009-12-29 00:09:15 -0800316dnl Do not enable tracing by default.
317AC_ARG_ENABLE([trace],
318 [AS_HELP_STRING([--enable-trace], [Enable allocation tracing (logging)])],
319[if test "x$enable_trace" = "xno" ; then
320 enable_trace="0"
321else
322 enable_trace="1"
323fi
324],
325[enable_trace="0"]
326)
327if test "x$enable_trace" = "x1" ; then
328 AC_DEFINE([JEMALLOC_TRACE], [ ])
329fi
330AC_SUBST([enable_trace])
331if test "x$enable_trace" = "x0" ; then
332 roff_trace=".\\\" "
333else
334 roff_trace=""
335fi
336AC_SUBST([roff_trace])
337
Jason Evansb7924f52009-06-23 19:01:18 -0700338dnl Enable tiny allocations by default.
339AC_ARG_ENABLE([tiny],
340 [AS_HELP_STRING([--disable-tiny], [Disable tiny (sub-quantum) allocations])],
341[if test "x$enable_tiny" = "xno" ; then
342 enable_tiny="0"
343else
344 enable_tiny="1"
345fi
346],
347[enable_tiny="1"]
348)
349if test "x$enable_tiny" = "x1" ; then
350 AC_DEFINE([JEMALLOC_TINY], [ ])
351fi
352AC_SUBST([enable_tiny])
Jason Evanscc00a152009-06-25 18:06:48 -0700353if test "x$enable_tiny" = "x0" ; then
354 roff_tiny=".\\\" "
355 roff_no_tiny=""
356else
357 roff_tiny=""
358 roff_no_tiny=".\\\" "
359fi
360AC_SUBST([roff_tiny])
361AC_SUBST([roff_no_tiny])
Jason Evansb7924f52009-06-23 19:01:18 -0700362
Jason Evans84cbbcb2009-12-29 00:09:15 -0800363dnl Enable thread-specific caching by default.
364AC_ARG_ENABLE([tcache],
365 [AS_HELP_STRING([--disable-tcache], [Disable per thread caches])],
366[if test "x$enable_tcache" = "xno" ; then
367 enable_tcache="0"
Jason Evansb7924f52009-06-23 19:01:18 -0700368else
Jason Evans84cbbcb2009-12-29 00:09:15 -0800369 enable_tcache="1"
Jason Evansb7924f52009-06-23 19:01:18 -0700370fi
371],
Jason Evans84cbbcb2009-12-29 00:09:15 -0800372[enable_tcache="1"]
Jason Evansb7924f52009-06-23 19:01:18 -0700373)
Jason Evans84cbbcb2009-12-29 00:09:15 -0800374dnl Finish tcache-related definitions below, once TLS configuration is done.
Jason Evansb7924f52009-06-23 19:01:18 -0700375
Jason Evansb7924f52009-06-23 19:01:18 -0700376dnl Do not enable allocation from DSS by default.
377AC_ARG_ENABLE([dss],
378 [AS_HELP_STRING([--enable-dss], [Enable allocation from DSS])],
379[if test "x$enable_dss" = "xno" ; then
380 enable_dss="0"
381else
382 enable_dss="1"
383fi
384],
385[enable_dss="0"]
386)
387if test "x$enable_dss" = "x1" ; then
388 AC_DEFINE([JEMALLOC_DSS], [ ])
389fi
390AC_SUBST([enable_dss])
Jason Evanscc00a152009-06-25 18:06:48 -0700391if test "x$enable_dss" = "x0" ; then
392 roff_dss=".\\\" "
393else
394 roff_dss=""
395fi
396AC_SUBST([roff_dss])
Jason Evansb7924f52009-06-23 19:01:18 -0700397
398dnl Do not support the junk/zero filling option by default.
399AC_ARG_ENABLE([fill],
400 [AS_HELP_STRING([--enable-fill], [Support junk/zero filling option])],
401[if test "x$enable_fill" = "xno" ; then
402 enable_fill="0"
403else
404 enable_fill="1"
405fi
406],
407[enable_fill="0"]
408)
409if test "x$enable_fill" = "x1" ; then
410 AC_DEFINE([JEMALLOC_FILL], [ ])
411fi
412AC_SUBST([enable_fill])
Jason Evanscc00a152009-06-25 18:06:48 -0700413if test "x$enable_fill" = "x0" ; then
414 roff_fill=".\\\" "
415else
416 roff_fill=""
417fi
418AC_SUBST([roff_fill])
Jason Evansb7924f52009-06-23 19:01:18 -0700419
420dnl Do not support the xmalloc option by default.
421AC_ARG_ENABLE([xmalloc],
422 [AS_HELP_STRING([--enable-xmalloc], [Support xmalloc option])],
423[if test "x$enable_xmalloc" = "xno" ; then
424 enable_xmalloc="0"
425else
426 enable_xmalloc="1"
427fi
428],
429[enable_xmalloc="0"]
430)
431if test "x$enable_xmalloc" = "x1" ; then
432 AC_DEFINE([JEMALLOC_XMALLOC], [ ])
433fi
434AC_SUBST([enable_xmalloc])
Jason Evanscc00a152009-06-25 18:06:48 -0700435if test "x$enable_xmalloc" = "x0" ; then
436 roff_xmalloc=".\\\" "
437else
438 roff_xmalloc=""
439fi
440AC_SUBST([roff_xmalloc])
Jason Evansb7924f52009-06-23 19:01:18 -0700441
442dnl Do not support the SYSV option by default.
443AC_ARG_ENABLE([sysv],
444 [AS_HELP_STRING([--enable-sysv], [Support SYSV semantics option])],
445[if test "x$enable_sysv" = "xno" ; then
446 enable_sysv="0"
447else
448 enable_sysv="1"
449fi
450],
451[enable_sysv="0"]
452)
453if test "x$enable_sysv" = "x1" ; then
454 AC_DEFINE([JEMALLOC_SYSV], [ ])
455fi
456AC_SUBST([enable_sysv])
Jason Evanscc00a152009-06-25 18:06:48 -0700457if test "x$enable_sysv" = "x0" ; then
458 roff_sysv=".\\\" "
459else
460 roff_sysv=""
461fi
462AC_SUBST([roff_sysv])
Jason Evansb7924f52009-06-23 19:01:18 -0700463
464dnl Do not determine page shift at run time by default.
465AC_ARG_ENABLE([dynamic_page_shift],
466 [AS_HELP_STRING([--enable-dynamic-page-shift],
467 [Determine page size at run time (don't trust configure result)])],
468[if test "x$enable_dynamic_page_shift" = "xno" ; then
469 enable_dynamic_page_shift="0"
470else
471 enable_dynamic_page_shift="1"
472fi
473],
474[enable_dynamic_page_shift="0"]
475)
476if test "x$enable_dynamic_page_shift" = "x1" ; then
477 AC_DEFINE([DYNAMIC_PAGE_SHIFT], [ ])
478fi
479AC_SUBST([enable_dynamic_page_shift])
480
481AC_MSG_CHECKING([STATIC_PAGE_SHIFT])
482AC_RUN_IFELSE([AC_LANG_PROGRAM(
483[[#include <stdio.h>
484#include <unistd.h>
485#include <strings.h>
486]], [[
487 long result;
488 FILE *f;
489
490 result = sysconf(_SC_PAGESIZE);
491 if (result == -1) {
492 return 1;
493 }
494 f = fopen("conftest.out", "w");
495 if (f == NULL) {
496 return 1;
497 }
498 fprintf(f, "%u\n", ffs((int)result) - 1);
499 close(f);
500
501 return 0;
502]])],
503 [STATIC_PAGE_SHIFT=`cat conftest.out`]
504 AC_MSG_RESULT([$STATIC_PAGE_SHIFT])
505 AC_DEFINE_UNQUOTED([STATIC_PAGE_SHIFT], [$STATIC_PAGE_SHIFT]),
506 AC_MSG_RESULT([error]))
507
508dnl ============================================================================
509dnl jemalloc configuration.
510dnl
511jemalloc_version=`cat ${srcroot}VERSION`
Jason Evanscc00a152009-06-25 18:06:48 -0700512AC_DEFINE_UNQUOTED([JEMALLOC_VERSION], ["$jemalloc_version"])
Jason Evansb7924f52009-06-23 19:01:18 -0700513AC_SUBST([jemalloc_version])
514
515dnl ============================================================================
516dnl Configure pthreads.
517
518AC_CHECK_HEADERS([pthread.h], , [AC_MSG_ERROR([pthread.h is missing])])
519AC_CHECK_LIB([pthread], [pthread_create], [LIBS="$LIBS -lpthread"],
520 [AC_MSG_ERROR([libpthread is missing])])
521
522CPPFLAGS="$CPPFLAGS -D_REENTRANT"
523
524AC_MSG_CHECKING([for TLS])
525AC_RUN_IFELSE([AC_LANG_PROGRAM(
526[[
527 __thread int x;
528]], [[
529 x = 42;
530
531 return 0;
532]])],
Jason Evanscc00a152009-06-25 18:06:48 -0700533 AC_MSG_RESULT([yes])
Jason Evans84cbbcb2009-12-29 00:09:15 -0800534 have_tls="1",
Jason Evansb7924f52009-06-23 19:01:18 -0700535 AC_MSG_RESULT([no])
Jason Evans84cbbcb2009-12-29 00:09:15 -0800536 have_tls="0"
Jason Evansb7924f52009-06-23 19:01:18 -0700537 AC_DEFINE_UNQUOTED([NO_TLS], [ ]))
Jason Evans84cbbcb2009-12-29 00:09:15 -0800538
539dnl Finish tcache-related definitions, now that TLS configuration is done.
540if test "x$have_tls" = "x0" ; then
541 enable_tcache="0"
542fi
543if test "x$enable_tcache" = "x1" ; then
544 AC_DEFINE([JEMALLOC_TCACHE], [ ])
545fi
546AC_SUBST([enable_tcache])
547if test "x$enable_tcache" = "x0" ; then
548 roff_tcache=".\\\" "
549 roff_no_tcache=""
550else
551 roff_tcache=""
552 roff_no_tcache=".\\\" "
553fi
554AC_SUBST([roff_tcache])
555AC_SUBST([roff_no_tcache])
Jason Evansb7924f52009-06-23 19:01:18 -0700556
Jason Evanscc00a152009-06-25 18:06:48 -0700557dnl Enable lazy locking by default.
Jason Evansb7924f52009-06-23 19:01:18 -0700558AC_ARG_ENABLE([lazy_lock],
Jason Evansa1624022009-11-09 14:58:12 -0800559 [AS_HELP_STRING([--disable-lazy-lock],
Jason Evanscc00a152009-06-25 18:06:48 -0700560 [Disable lazy locking (always lock, even when single-threaded)])],
Jason Evansb7924f52009-06-23 19:01:18 -0700561[if test "x$enable_lazy_lock" = "xno" ; then
562 enable_lazy_lock="0"
563else
564 enable_lazy_lock="1"
565fi
566],
Jason Evanscc00a152009-06-25 18:06:48 -0700567[enable_lazy_lock="1"]
Jason Evansb7924f52009-06-23 19:01:18 -0700568)
569if test "x$enable_lazy_lock" = "x1" ; then
570 AC_CHECK_HEADERS([dlfcn.h], , [AC_MSG_ERROR([dlfcn.h is missing])])
571 AC_CHECK_LIB([dl], [dlopen], [LIBS="$LIBS -ldl"],
572 [AC_MSG_ERROR([libdl is missing])])
573 AC_DEFINE([JEMALLOC_LAZY_LOCK], [ ])
574fi
575AC_SUBST([enable_lazy_lock])
576
577dnl ============================================================================
Jason Evans662a0172009-07-01 19:24:31 -0700578dnl Configure libgd for mtrgraph.
Jason Evans569432c2009-12-29 00:09:15 -0800579bins="${objroot}bin/jemtr2mtr ${objroot}bin/mtrplay"
Jason Evans662a0172009-07-01 19:24:31 -0700580GDLIBS=""
581
582have_libgd="yes"
583AC_CHECK_HEADERS([gd.h], , [have_libgd="no"])
584AC_CHECK_HEADERS([gdfontt.h], , [have_libgd="no"])
585AC_CHECK_HEADERS([gdfonts.h], , [have_libgd="no"])
586AC_CHECK_HEADERS([gdfontmb.h], , [have_libgd="no"])
587AC_CHECK_HEADERS([gdfontl.h], , [have_libgd="no"])
588AC_CHECK_HEADERS([gdfontg.h], , [have_libgd="no"])
589AC_CHECK_LIB([gd], [gdImageCreate], [GDLIBS="-lgd"], [have_libgd="no"])
590
591if test "x${have_libgd}" = "xyes" ; then
592 bins="${bins} ${objroot}bin/mtrgraph"
593fi
594AC_SUBST([bins])
595AC_SUBST([GDLIBS])
596
597dnl ============================================================================
Jason Evansb7924f52009-06-23 19:01:18 -0700598dnl Check for typedefs, structures, and compiler characteristics.
599AC_HEADER_STDBOOL
600
601dnl Process .in files.
602AC_SUBST([cfghdrs])
603AC_CONFIG_HEADERS([$cfghdrs cfghdrs.stamp])
604
605dnl ============================================================================
606dnl Generate outputs.
607AC_CONFIG_FILES([$cfgoutputs cfgoutputs.stamp])
608AC_SUBST([cfgoutputs])
609AC_OUTPUT
610
611dnl ============================================================================
612dnl Print out the results of configuration.
613AC_MSG_RESULT([===============================================================================])
614AC_MSG_RESULT([jemalloc version : $jemalloc_version])
615AC_MSG_RESULT([])
616AC_MSG_RESULT([CC : ${CC}])
617AC_MSG_RESULT([CPPFLAGS : ${CPPFLAGS}])
618AC_MSG_RESULT([CFLAGS : ${CFLAGS}])
619AC_MSG_RESULT([LDFLAGS : ${LDFLAGS}])
620AC_MSG_RESULT([LIBS : ${LIBS}])
621AC_MSG_RESULT([RPATH_EXTRA : ${RPATH_EXTRA}])
622AC_MSG_RESULT([])
623AC_MSG_RESULT([PREFIX : ${PREFIX}])
624AC_MSG_RESULT([BINDIR : ${BINDIR}])
Jason Evans662a0172009-07-01 19:24:31 -0700625AC_MSG_RESULT([INCLUDEDIR : ${INCLUDEDIR}])
626AC_MSG_RESULT([LIBDIR : ${LIBDIR}])
Jason Evansb7924f52009-06-23 19:01:18 -0700627AC_MSG_RESULT([DATADIR : ${DATADIR}])
628AC_MSG_RESULT([MANDIR : ${MANDIR}])
629AC_MSG_RESULT([])
630AC_MSG_RESULT([srcroot : ${srcroot}])
631AC_MSG_RESULT([abs_srcroot : ${abs_srcroot}])
632AC_MSG_RESULT([objroot : ${objroot}])
633AC_MSG_RESULT([abs_objroot : ${abs_objroot}])
634AC_MSG_RESULT([])
Jason Evans662a0172009-07-01 19:24:31 -0700635AC_MSG_RESULT([bins : ${bins}])
636AC_MSG_RESULT([])
Jason Evans90895cf2009-12-29 00:09:15 -0800637AC_MSG_RESULT([JEMALLOC_PREFIX : ${JEMALLOC_PREFIX}])
Jason Evansb7924f52009-06-23 19:01:18 -0700638AC_MSG_RESULT([autogen : ${enable_autogen}])
639AC_MSG_RESULT([debug : ${enable_debug}])
640AC_MSG_RESULT([stats : ${enable_stats}])
Jason Evans569432c2009-12-29 00:09:15 -0800641AC_MSG_RESULT([trace : ${enable_trace}])
Jason Evansb7924f52009-06-23 19:01:18 -0700642AC_MSG_RESULT([tiny : ${enable_tiny}])
Jason Evans84cbbcb2009-12-29 00:09:15 -0800643AC_MSG_RESULT([tcache : ${enable_tcache}])
Jason Evansb7924f52009-06-23 19:01:18 -0700644AC_MSG_RESULT([fill : ${enable_fill}])
645AC_MSG_RESULT([xmalloc : ${enable_xmalloc}])
646AC_MSG_RESULT([sysv : ${enable_sysv}])
647AC_MSG_RESULT([dss : ${enable_dss}])
648AC_MSG_RESULT([dynamic_page_shift : ${enable_dynamic_page_shift}])
649AC_MSG_RESULT([lazy_lock : ${enable_lazy_lock}])
650AC_MSG_RESULT([===============================================================================])