diff options
Diffstat (limited to 'gl/m4/malloc.m4')
-rw-r--r-- | gl/m4/malloc.m4 | 70 |
1 files changed, 53 insertions, 17 deletions
diff --git a/gl/m4/malloc.m4 b/gl/m4/malloc.m4 index fe5befc2..4b24a0b1 100644 --- a/gl/m4/malloc.m4 +++ b/gl/m4/malloc.m4 | |||
@@ -1,9 +1,47 @@ | |||
1 | # malloc.m4 serial 10 | 1 | # malloc.m4 serial 14 |
2 | dnl Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. | 2 | dnl Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc. |
3 | dnl This file is free software; the Free Software Foundation | 3 | dnl This file is free software; the Free Software Foundation |
4 | dnl gives unlimited permission to copy and/or distribute it, | 4 | dnl gives unlimited permission to copy and/or distribute it, |
5 | dnl with or without modifications, as long as this notice is preserved. | 5 | dnl with or without modifications, as long as this notice is preserved. |
6 | 6 | ||
7 | m4_version_prereq([2.70], [] ,[ | ||
8 | |||
9 | # This is taken from the following Autoconf patch: | ||
10 | # http://git.savannah.gnu.org/gitweb/?p=autoconf.git;a=commitdiff;h=7fbb553727ed7e0e689a17594b58559ecf3ea6e9 | ||
11 | AC_DEFUN([_AC_FUNC_MALLOC_IF], | ||
12 | [ | ||
13 | AC_REQUIRE([AC_HEADER_STDC])dnl | ||
14 | AC_REQUIRE([AC_CANONICAL_HOST])dnl for cross-compiles | ||
15 | AC_CHECK_HEADERS([stdlib.h]) | ||
16 | AC_CACHE_CHECK([for GNU libc compatible malloc], | ||
17 | [ac_cv_func_malloc_0_nonnull], | ||
18 | [AC_RUN_IFELSE( | ||
19 | [AC_LANG_PROGRAM( | ||
20 | [[#if defined STDC_HEADERS || defined HAVE_STDLIB_H | ||
21 | # include <stdlib.h> | ||
22 | #else | ||
23 | char *malloc (); | ||
24 | #endif | ||
25 | ]], | ||
26 | [[return ! malloc (0);]]) | ||
27 | ], | ||
28 | [ac_cv_func_malloc_0_nonnull=yes], | ||
29 | [ac_cv_func_malloc_0_nonnull=no], | ||
30 | [case "$host_os" in | ||
31 | # Guess yes on platforms where we know the result. | ||
32 | *-gnu* | freebsd* | netbsd* | openbsd* \ | ||
33 | | hpux* | solaris* | cygwin* | mingw*) | ||
34 | ac_cv_func_malloc_0_nonnull=yes ;; | ||
35 | # If we don't know, assume the worst. | ||
36 | *) ac_cv_func_malloc_0_nonnull=no ;; | ||
37 | esac | ||
38 | ]) | ||
39 | ]) | ||
40 | AS_IF([test $ac_cv_func_malloc_0_nonnull = yes], [$1], [$2]) | ||
41 | ])# _AC_FUNC_MALLOC_IF | ||
42 | |||
43 | ]) | ||
44 | |||
7 | # gl_FUNC_MALLOC_GNU | 45 | # gl_FUNC_MALLOC_GNU |
8 | # ------------------ | 46 | # ------------------ |
9 | # Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if | 47 | # Test whether 'malloc (0)' is handled like in GNU libc, and replace malloc if |
@@ -13,11 +51,11 @@ AC_DEFUN([gl_FUNC_MALLOC_GNU], | |||
13 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) | 51 | AC_REQUIRE([gl_STDLIB_H_DEFAULTS]) |
14 | dnl _AC_FUNC_MALLOC_IF is defined in Autoconf. | 52 | dnl _AC_FUNC_MALLOC_IF is defined in Autoconf. |
15 | _AC_FUNC_MALLOC_IF( | 53 | _AC_FUNC_MALLOC_IF( |
16 | [AC_DEFINE([HAVE_MALLOC], [1], | 54 | [AC_DEFINE([HAVE_MALLOC_GNU], [1], |
17 | [Define to 1 if your system has a GNU libc compatible 'malloc' | 55 | [Define to 1 if your system has a GNU libc compatible 'malloc' |
18 | function, and to 0 otherwise.])], | 56 | function, and to 0 otherwise.])], |
19 | [AC_DEFINE([HAVE_MALLOC], [0]) | 57 | [AC_DEFINE([HAVE_MALLOC_GNU], [0]) |
20 | gl_REPLACE_MALLOC | 58 | REPLACE_MALLOC=1 |
21 | ]) | 59 | ]) |
22 | ]) | 60 | ]) |
23 | 61 | ||
@@ -33,7 +71,7 @@ AC_DEFUN([gl_FUNC_MALLOC_POSIX], | |||
33 | AC_DEFINE([HAVE_MALLOC_POSIX], [1], | 71 | AC_DEFINE([HAVE_MALLOC_POSIX], [1], |
34 | [Define if the 'malloc' function is POSIX compliant.]) | 72 | [Define if the 'malloc' function is POSIX compliant.]) |
35 | else | 73 | else |
36 | gl_REPLACE_MALLOC | 74 | REPLACE_MALLOC=1 |
37 | fi | 75 | fi |
38 | ]) | 76 | ]) |
39 | 77 | ||
@@ -47,16 +85,14 @@ AC_DEFUN([gl_CHECK_MALLOC_POSIX], | |||
47 | dnl It is too dangerous to try to allocate a large amount of memory: | 85 | dnl It is too dangerous to try to allocate a large amount of memory: |
48 | dnl some systems go to their knees when you do that. So assume that | 86 | dnl some systems go to their knees when you do that. So assume that |
49 | dnl all Unix implementations of the function are POSIX compliant. | 87 | dnl all Unix implementations of the function are POSIX compliant. |
50 | AC_TRY_COMPILE([], | 88 | AC_COMPILE_IFELSE( |
51 | [#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ | 89 | [AC_LANG_PROGRAM( |
52 | choke me | 90 | [[]], |
53 | #endif | 91 | [[#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__ |
54 | ], [gl_cv_func_malloc_posix=yes], [gl_cv_func_malloc_posix=no]) | 92 | choke me |
93 | #endif | ||
94 | ]])], | ||
95 | [gl_cv_func_malloc_posix=yes], | ||
96 | [gl_cv_func_malloc_posix=no]) | ||
55 | ]) | 97 | ]) |
56 | ]) | 98 | ]) |
57 | |||
58 | AC_DEFUN([gl_REPLACE_MALLOC], | ||
59 | [ | ||
60 | AC_LIBOBJ([malloc]) | ||
61 | REPLACE_MALLOC=1 | ||
62 | ]) | ||