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.
135 lines
4.1 KiB
135 lines
4.1 KiB
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)
|