summaryrefslogtreecommitdiffstats
path: root/tdecore/malloc/configure.in.in
diff options
context:
space:
mode:
Diffstat (limited to 'tdecore/malloc/configure.in.in')
-rw-r--r--tdecore/malloc/configure.in.in134
1 files changed, 134 insertions, 0 deletions
diff --git a/tdecore/malloc/configure.in.in b/tdecore/malloc/configure.in.in
new file mode 100644
index 000000000..d669f8daa
--- /dev/null
+++ b/tdecore/malloc/configure.in.in
@@ -0,0 +1,134 @@
+dnl --enable-fast-malloc - depends on $KDE_MALLOC
+dnl --disable-fast-malloc - disabled
+dnl --enable-fast-malloc=full - enabled always
+dnl
+dnl gcc3.0 needs -finline-limit=100000 (large num)
+
+kde_fast_malloc=
+AC_ARG_ENABLE(fast-malloc,
+ [ --enable-fast-malloc Use own malloc implementation : yes,no,full,debug],
+ [
+ if test "$enableval" = "full"; then
+ kde_fast_malloc=full
+ elif test "$enableval" = "yes"; then
+ kde_fast_malloc=yes
+ elif test "$enableval" = "debug"; then
+ kde_fast_malloc=debug
+ else
+ kde_fast_malloc=no
+ fi
+ ],
+ [
+ kde_fast_malloc=notgiven
+ ])
+
+dnl gcc needed for __inline__
+if test "$kde_fast_malloc" != "no"; then
+ if test "$GCC" != "yes"; then
+ if test "$kde_fast_malloc" = "notgiven"; then
+ kde_fast_malloc=no
+ else
+ AC_MSG_ERROR([Fast malloc needs GCC.])
+ kde_fast_malloc=no
+ fi
+ fi
+fi
+
+if test "$kde_fast_malloc" != "no"; then
+dnl platforms for which there's a spinlock implementation
+ case $target_cpu in
+ i?86)
+ AC_DEFINE(KDE_MALLOC_X86, 1, [The platform is x86])
+ ;;
+ *)
+ if test "$kde_fast_malloc" = "notgiven"; then
+ kde_fast_malloc=no
+ else
+ AC_MSG_ERROR([Fast malloc is not supported on this platform (missing spinlock implementation).])
+ fi
+ ;;
+ esac
+dnl warn on untested platforms
+ case $target_os in
+ linux*) ;;
+ freebsd*) ;;
+ *)
+ if test "$kde_fast_malloc" = "notgiven"; then
+ kde_fast_malloc=no
+ else
+ AC_MSG_WARN([Fast malloc is not tested on this platform. The build may fail or the executables may crash.])
+ fi
+ ;;
+ esac
+fi
+
+if test "$kde_fast_malloc" = "yes" -o "$kde_fast_malloc" = "notgiven" -o "$kde_fast_malloc" = "debug"; then
+dnl $KDE_MALLOC needs glibc (__libc_malloc etc.)
+ AC_CACHE_CHECK([if the libc is glibc],kde_cv_libc_glibc,
+ [AC_TRY_COMPILE(
+ [#include<stdlib.h>],
+ [
+ #ifndef __GLIBC__
+ error no glibc
+ #endif
+ ],
+ [kde_cv_libc_glibc=yes],
+ [kde_cv_libc_glibc=no])
+ ])
+ if test "$kde_cv_libc_glibc" = "yes"; then
+ AC_DEFINE(KDE_MALLOC_GLIBC, 1, [The libc used is glibc])
+ else
+ if test "$kde_fast_malloc" = "notgiven"; then
+ kde_fast_malloc=notgiven_full
+ elif test "$enableval" = "debug"; then
+ AC_MSG_WARN([This libc is not supported for fast malloc. Runtime disabling won't work.])
+ kde_fast_malloc=debug_full
+ else
+ AC_MSG_ERROR([This libc is not supported for fast malloc. Either use --enable-fast-malloc=full, or don't use it at all.])
+ fi
+ fi
+fi
+
+if test "$kde_fast_malloc" = "notgiven"; then
+ #kde_fast_malloc=yes
+ kde_fast_malloc=no
+fi
+if test "$kde_fast_malloc" = "notgiven_full"; then
+ if test "$kde_use_debug_code" = "no"; then
+ #kde_fast_malloc=full
+ kde_fast_malloc=no
+ else
+ kde_fast_malloc=no
+ fi
+fi
+
+AC_MSG_CHECKING(whether to enable fast malloc)
+if test "$kde_fast_malloc" = "yes"; then
+ AC_MSG_RESULT(yes)
+elif test "$kde_fast_malloc" = "full"; then
+ AC_MSG_RESULT([yes(full)])
+elif test "$kde_fast_malloc" = "debug"; then
+ AC_MSG_RESULT([yes(debug)])
+elif test "$kde_fast_malloc" = "debug_full"; then
+ AC_MSG_RESULT([yes(full+debug)])
+else
+ AC_MSG_RESULT(no)
+fi
+
+if test "$kde_fast_malloc" != "no"; then
+ AC_DEFINE(KDE_MALLOC, 1, [Use own malloc implementation])
+fi
+
+if test "$kde_fast_malloc" = "debug" -o "$kde_fast_malloc" = "debug_full"; then
+ AC_DEFINE(KDE_MALLOC_DEBUG, 1, [Enable debugging in fast malloc])
+fi
+
+if test "$kde_fast_malloc" = "full" -o "$kde_fast_malloc" = "debug_full"; then
+ AC_DEFINE(KDE_MALLOC_FULL, 1, [Make alloc as fast as possible])
+fi
+
+dnl -finline-limit=<large num> is needed for gcc3 in order to inline large functions
+KDE_CHECK_COMPILER_FLAG(finline-limit=100000,
+ [KDE_FORCE_INLINE="-finline-limit=100000"],
+ [KDE_FORCE_INLINE= ])
+AC_SUBST(KDE_FORCE_INLINE)