1 /* Copyright (C) 2012-2014 Free Software Foundation, Inc. 2 3 This program is free software: you can redistribute it and/or modify 4 it under the terms of the GNU General Public License as published by 5 the Free Software Foundation; either version 3 of the License, or 6 (at your option) any later version. 7 8 This program is distributed in the hope that it will be useful, 9 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 GNU General Public License for more details. 12 13 You should have received a copy of the GNU General Public License 14 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 15 16 #include "config.h" 17 18 /* This is a merge of code recommended in the autoconf-2.61 documentation 19 with that recommended in the autoconf-2.13 documentation, with added 20 tweaks to heed C_ALLOCA. */ 21 22 #if defined HAVE_ALLOCA_H && !defined C_ALLOCA 23 # include <alloca.h> 24 #else 25 # if defined __GNUC__ && !defined C_ALLOCA 26 # if !defined alloca 27 # define alloca __builtin_alloca 28 # endif 29 # else 30 # if defined _AIX 31 /* Indented so that pre-ansi C compilers will ignore it, rather than 32 choke on it. Some versions of AIX require this to be the first 33 thing seen by the compiler except for comments and preprocessor 34 directives. */ 35 #pragma alloca 36 # else 37 # if defined _MSC_VER && !defined C_ALLOCA 38 # include <malloc.h> 39 # define alloca _alloca 40 # else 41 # if !defined alloca 42 # if defined __STDC__ || defined __hpux 43 # if defined HAVE_STDDEF_H 44 # include <stddef.h> 45 # if defined __cplusplus 46 extern "C" void *alloca (size_t); 47 # else 48 extern void *alloca (size_t); 49 # endif 50 # else 51 extern void *alloca (); 52 # endif 53 # else 54 extern char *alloca (); 55 # endif 56 # endif 57 # endif 58 # endif 59 # endif 60 #endif 61