From 0a2d116119e365c8fbf6324f02f94c3f89fb864a Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Thu, 3 Jan 2013 15:10:34 +0000 Subject: [PATCH] efl: eina_alloca.h to simplify alloca() usage. having to replicate 18 lines per file just to access alloca() is insane. Let's do that in Eina.h and avoid that crap :-/ SVN revision: 82082 --- ChangeLog | 4 ++ NEWS | 1 + configure.ac | 1 + src/Makefile_Eina.am | 3 +- src/bin/efreet/efreet_icon_cache_create.c | 2 - src/lib/ecore/ecore_getopt.c | 17 ------- src/lib/ecore_con/ecore_con_eet.c | 17 ------- src/lib/ecore_con/ecore_con_info.c | 17 ------- src/lib/ecore_con/ecore_con_ssl.c | 17 ------- src/lib/ecore_file/ecore_file_path.c | 17 ------- src/lib/ecore_x/xcb/ecore_xcb_private.h | 17 ------- src/lib/ecore_x/xlib/ecore_x.c | 17 ------- src/lib/ecore_x/xlib/ecore_x_atoms.c | 17 ------- src/lib/ecore_x/xlib/ecore_x_e.c | 17 ------- src/lib/ecore_x/xlib/ecore_x_image.c | 17 ------- src/lib/ecore_x/xlib/ecore_x_randr_12.c | 17 ------- src/lib/ecore_x/xlib/ecore_x_selection.c | 17 ------- src/lib/eet/eet_cipher.c | 17 ------- src/lib/eet/eet_connection.c | 17 ------- src/lib/eet/eet_image.c | 17 ------- src/lib/eet/eet_lib.c | 17 ------- src/lib/efreet/efreet.c | 2 - src/lib/efreet/efreet_alloca.h | 30 ------------ src/lib/efreet/efreet_base.c | 2 - src/lib/efreet/efreet_desktop.c | 2 - src/lib/efreet/efreet_desktop_command.c | 2 - src/lib/efreet/efreet_icon.c | 2 - src/lib/efreet/efreet_ini.c | 2 - src/lib/efreet/efreet_menu.c | 2 - src/lib/efreet/efreet_mime.c | 2 - src/lib/efreet/efreet_utils.c | 2 - src/lib/eina/Eina.h | 1 + src/lib/eina/eina_alloca.h | 46 +++++++++++++++++++ src/lib/eina/eina_benchmark.c | 18 +------- src/lib/eina/eina_config.h.in | 5 ++ src/lib/eina/eina_file.c | 18 +------- src/lib/eina/eina_file_win32.c | 18 +------- src/lib/eina/eina_model.c | 18 +------- src/lib/eina/eina_module.c | 18 +------- src/lib/eina/eina_prefix.c | 18 +------- src/lib/eina/eina_simple_xml_parser.c | 18 +------- src/lib/eina/eina_stringshare.c | 18 +------- src/lib/eina/eina_value.c | 18 +------- src/lib/eio/eio_private.h | 17 ------- src/lib/embryo/embryo_args.c | 17 ------- src/lib/embryo/embryo_str.c | 17 ------- src/lib/evas/include/evas_common.h | 17 ------- .../engines/buffer/ecore_evas_extn.c | 17 ------- 48 files changed, 70 insertions(+), 560 deletions(-) delete mode 100644 src/lib/efreet/efreet_alloca.h create mode 100644 src/lib/eina/eina_alloca.h diff --git a/ChangeLog b/ChangeLog index 53973ce174..1a0b82f71f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-01-03 Gustavo Sverzut Barbieri (k-s) + + * Add eina_alloc.h to Eina.h to define alloca() + 2013-01-03 Cedric Bail * Use Eina_File for evas png loader. diff --git a/NEWS b/NEWS index cdfa2c58ff..01e4ad1326 100644 --- a/NEWS +++ b/NEWS @@ -71,6 +71,7 @@ Improvements: * eina_magic_fail() now throws error messages on NULL pointers instead of critical * all efl object-freeing functions now take NULL without crashing or erroring * use Eina_File in webp, gif, tiff, png and eet loader + * Eina.h includes eina_alloca.h/alloca.h to define alloca() Fixes: * Fix PPC (big endian) image codec bug. diff --git a/configure.ac b/configure.ac index d5b0ee1cc1..8206881a9d 100644 --- a/configure.ac +++ b/configure.ac @@ -732,6 +732,7 @@ case "${build_profile}" in ;; esac +EINA_CONFIG([HAVE_ALLOCA_H], [test "x${ac_cv_working_alloca_h}" = "xyes"]) EINA_CONFIG([MAGIC_DEBUG], [test "x${have_magic_debug}" = "xyes"]) EINA_CONFIG([SAFETY_CHECKS], [test "x${have_safety_checks}" = "xyes"]) EINA_CONFIG([DEFAULT_MEMPOOL], [test "x${want_default_mempool}" = "xyes"]) diff --git a/src/Makefile_Eina.am b/src/Makefile_Eina.am index 4b87f33ba6..661949223c 100644 --- a/src/Makefile_Eina.am +++ b/src/Makefile_Eina.am @@ -76,7 +76,8 @@ lib/eina/eina_xattr.h \ lib/eina/eina_value.h \ lib/eina/eina_inline_value.x \ lib/eina/eina_inline_lock_barrier.x \ -lib/eina/eina_tmpstr.h +lib/eina/eina_tmpstr.h \ +lib/eina/eina_alloca.h # Will be back for developper after 1.2. # lib/eina/eina_model.h diff --git a/src/bin/efreet/efreet_icon_cache_create.c b/src/bin/efreet/efreet_icon_cache_create.c index 662dd09469..a4f774ca8f 100644 --- a/src/bin/efreet/efreet_icon_cache_create.c +++ b/src/bin/efreet/efreet_icon_cache_create.c @@ -2,8 +2,6 @@ # include #endif -#include "efreet_alloca.h" - #include #include #include diff --git a/src/lib/ecore/ecore_getopt.c b/src/lib/ecore/ecore_getopt.c index f31f7c2290..bbc5b82f8a 100644 --- a/src/lib/ecore/ecore_getopt.c +++ b/src/lib/ecore/ecore_getopt.c @@ -10,23 +10,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include #include diff --git a/src/lib/ecore_con/ecore_con_eet.c b/src/lib/ecore_con/ecore_con_eet.c index f3948ca5f8..d146dd6136 100644 --- a/src/lib/ecore_con/ecore_con_eet.c +++ b/src/lib/ecore_con/ecore_con_eet.c @@ -10,23 +10,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include diff --git a/src/lib/ecore_con/ecore_con_info.c b/src/lib/ecore_con/ecore_con_info.c index 648ca218ac..d03e9ccd61 100644 --- a/src/lib/ecore_con/ecore_con_info.c +++ b/src/lib/ecore_con/ecore_con_info.c @@ -17,23 +17,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include #include diff --git a/src/lib/ecore_con/ecore_con_ssl.c b/src/lib/ecore_con/ecore_con_ssl.c index 93fbd6672a..be73968cca 100644 --- a/src/lib/ecore_con/ecore_con_ssl.c +++ b/src/lib/ecore_con/ecore_con_ssl.c @@ -10,23 +10,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #if HAVE_GNUTLS # include diff --git a/src/lib/ecore_file/ecore_file_path.c b/src/lib/ecore_file/ecore_file_path.c index c1c54b7c0f..a368cf35fb 100644 --- a/src/lib/ecore_file/ecore_file_path.c +++ b/src/lib/ecore_file/ecore_file_path.c @@ -10,23 +10,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include #include diff --git a/src/lib/ecore_x/xcb/ecore_xcb_private.h b/src/lib/ecore_x/xcb/ecore_xcb_private.h index 240210ca0d..d40fa3b4aa 100644 --- a/src/lib/ecore_x/xcb/ecore_xcb_private.h +++ b/src/lib/ecore_x/xcb/ecore_xcb_private.h @@ -15,23 +15,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif # include // included for close & gethostname functions diff --git a/src/lib/ecore_x/xlib/ecore_x.c b/src/lib/ecore_x/xlib/ecore_x.c index b6998cd332..ef693fd5a6 100644 --- a/src/lib/ecore_x/xlib/ecore_x.c +++ b/src/lib/ecore_x/xlib/ecore_x.c @@ -10,23 +10,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include #include diff --git a/src/lib/ecore_x/xlib/ecore_x_atoms.c b/src/lib/ecore_x/xlib/ecore_x_atoms.c index 2aec7ce740..93cd9eb540 100644 --- a/src/lib/ecore_x/xlib/ecore_x_atoms.c +++ b/src/lib/ecore_x/xlib/ecore_x_atoms.c @@ -10,23 +10,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include diff --git a/src/lib/ecore_x/xlib/ecore_x_e.c b/src/lib/ecore_x/xlib/ecore_x_e.c index 586a972e08..63dee9cf4f 100644 --- a/src/lib/ecore_x/xlib/ecore_x_e.c +++ b/src/lib/ecore_x/xlib/ecore_x_e.c @@ -14,23 +14,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include "Ecore.h" #include "ecore_x_private.h" diff --git a/src/lib/ecore_x/xlib/ecore_x_image.c b/src/lib/ecore_x/xlib/ecore_x_image.c index ec1c1b8412..e8319b9370 100644 --- a/src/lib/ecore_x/xlib/ecore_x_image.c +++ b/src/lib/ecore_x/xlib/ecore_x_image.c @@ -10,23 +10,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include #include diff --git a/src/lib/ecore_x/xlib/ecore_x_randr_12.c b/src/lib/ecore_x/xlib/ecore_x_randr_12.c index 9e937d7bf7..8858f76238 100644 --- a/src/lib/ecore_x/xlib/ecore_x_randr_12.c +++ b/src/lib/ecore_x/xlib/ecore_x_randr_12.c @@ -14,23 +14,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include "ecore_x_private.h" #include "ecore_x_randr.h" diff --git a/src/lib/ecore_x/xlib/ecore_x_selection.c b/src/lib/ecore_x/xlib/ecore_x_selection.c index 3e1d2d34a2..269ea342ed 100644 --- a/src/lib/ecore_x/xlib/ecore_x_selection.c +++ b/src/lib/ecore_x/xlib/ecore_x_selection.c @@ -10,23 +10,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include #include diff --git a/src/lib/eet/eet_cipher.c b/src/lib/eet/eet_cipher.c index f61b1009d7..60105acde4 100644 --- a/src/lib/eet/eet_cipher.c +++ b/src/lib/eet/eet_cipher.c @@ -2,23 +2,6 @@ # include #endif /* ifdef HAVE_CONFIG_H */ -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else /* ifdef HAVE_ALLOCA_H */ -# include -# ifdef __cplusplus -extern "C" -# endif /* ifdef __cplusplus */ -void *alloca(size_t); -#endif /* ifdef HAVE_ALLOCA_H */ - #include #include #include diff --git a/src/lib/eet/eet_connection.c b/src/lib/eet/eet_connection.c index 61c5f8d84a..bde6ff13be 100644 --- a/src/lib/eet/eet_connection.c +++ b/src/lib/eet/eet_connection.c @@ -2,23 +2,6 @@ # include #endif /* ifdef HAVE_CONFIG_H */ -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else /* ifdef HAVE_ALLOCA_H */ -# include -# ifdef __cplusplus -extern "C" -# endif /* ifdef __cplusplus */ -void *alloca(size_t); -#endif /* ifdef HAVE_ALLOCA_H */ - #include #include diff --git a/src/lib/eet/eet_image.c b/src/lib/eet/eet_image.c index 149fa1aa27..f0eb03c9fa 100644 --- a/src/lib/eet/eet_image.c +++ b/src/lib/eet/eet_image.c @@ -2,23 +2,6 @@ # include #endif /* ifdef HAVE_CONFIG_H */ -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else /* ifdef HAVE_ALLOCA_H */ -# include -# ifdef __cplusplus -extern "C" -# endif /* ifdef __cplusplus */ -void *alloca(size_t); -#endif /* ifdef HAVE_ALLOCA_H */ - #ifdef HAVE_NETINET_IN_H # ifdef __OpenBSD__ # include diff --git a/src/lib/eet/eet_lib.c b/src/lib/eet/eet_lib.c index 45bfc1a4ad..7717fdf9f6 100644 --- a/src/lib/eet/eet_lib.c +++ b/src/lib/eet/eet_lib.c @@ -2,23 +2,6 @@ # include #endif /* ifdef HAVE_CONFIG_H */ -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else /* ifdef HAVE_ALLOCA_H */ -# include -# ifdef __cplusplus -extern "C" -# endif /* ifdef __cplusplus */ -void *alloca(size_t); -#endif /* ifdef HAVE_ALLOCA_H */ - #ifdef _WIN32 # include #endif /* ifdef _WIN32 */ diff --git a/src/lib/efreet/efreet.c b/src/lib/efreet/efreet.c index fcc0cfb634..91d093e775 100644 --- a/src/lib/efreet/efreet.c +++ b/src/lib/efreet/efreet.c @@ -2,8 +2,6 @@ # include #endif -#include "efreet_alloca.h" - #include #include #include diff --git a/src/lib/efreet/efreet_alloca.h b/src/lib/efreet/efreet_alloca.h deleted file mode 100644 index 58a739815e..0000000000 --- a/src/lib/efreet/efreet_alloca.h +++ /dev/null @@ -1,30 +0,0 @@ -#ifndef EFREET_ALLOCA_H -#define EFREET_ALLOCA_H - -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif - -#endif diff --git a/src/lib/efreet/efreet_base.c b/src/lib/efreet/efreet_base.c index 0c0b286c64..9812c09dcb 100644 --- a/src/lib/efreet/efreet_base.c +++ b/src/lib/efreet/efreet_base.c @@ -2,8 +2,6 @@ # include #endif -#include "efreet_alloca.h" - #include #include diff --git a/src/lib/efreet/efreet_desktop.c b/src/lib/efreet/efreet_desktop.c index df932c0ad7..8b49993105 100644 --- a/src/lib/efreet/efreet_desktop.c +++ b/src/lib/efreet/efreet_desktop.c @@ -2,8 +2,6 @@ # include #endif -#include "efreet_alloca.h" - #ifdef HAVE_EVIL # include #endif diff --git a/src/lib/efreet/efreet_desktop_command.c b/src/lib/efreet/efreet_desktop_command.c index c8f80e41c3..beeac761cb 100644 --- a/src/lib/efreet/efreet_desktop_command.c +++ b/src/lib/efreet/efreet_desktop_command.c @@ -2,8 +2,6 @@ # include #endif -#include "efreet_alloca.h" - #include #include diff --git a/src/lib/efreet/efreet_icon.c b/src/lib/efreet/efreet_icon.c index 4637529da5..229c752f38 100644 --- a/src/lib/efreet/efreet_icon.c +++ b/src/lib/efreet/efreet_icon.c @@ -2,8 +2,6 @@ # include #endif -#include "efreet_alloca.h" - #include #include diff --git a/src/lib/efreet/efreet_ini.c b/src/lib/efreet/efreet_ini.c index 5ece68c636..abc184673c 100644 --- a/src/lib/efreet/efreet_ini.c +++ b/src/lib/efreet/efreet_ini.c @@ -2,8 +2,6 @@ # include #endif -#include "efreet_alloca.h" - #include #include diff --git a/src/lib/efreet/efreet_menu.c b/src/lib/efreet/efreet_menu.c index 572f7b887e..cb9b04126f 100644 --- a/src/lib/efreet/efreet_menu.c +++ b/src/lib/efreet/efreet_menu.c @@ -2,8 +2,6 @@ # include #endif -#include "efreet_alloca.h" - #include /* define macros and variable for using the eina logging system */ diff --git a/src/lib/efreet/efreet_mime.c b/src/lib/efreet/efreet_mime.c index 56391f3b5d..20ae5c568c 100644 --- a/src/lib/efreet/efreet_mime.c +++ b/src/lib/efreet/efreet_mime.c @@ -2,8 +2,6 @@ # include #endif -#include "efreet_alloca.h" - #include #include #include diff --git a/src/lib/efreet/efreet_utils.c b/src/lib/efreet/efreet_utils.c index 7037dfd054..87f418b54b 100644 --- a/src/lib/efreet/efreet_utils.c +++ b/src/lib/efreet/efreet_utils.c @@ -2,8 +2,6 @@ # include #endif -#include "efreet_alloca.h" - /* TODO: add no_display check, as we might want only displayable items */ #include diff --git a/src/lib/eina/Eina.h b/src/lib/eina/Eina.h index 280cc9a7be..d7d1b86960 100644 --- a/src/lib/eina/Eina.h +++ b/src/lib/eina/Eina.h @@ -216,6 +216,7 @@ extern "C" { #include "eina_config.h" #include "eina_types.h" +#include "eina_alloca.h" #include "eina_main.h" #include "eina_fp.h" #include "eina_rectangle.h" diff --git a/src/lib/eina/eina_alloca.h b/src/lib/eina/eina_alloca.h new file mode 100644 index 0000000000..bb529552e1 --- /dev/null +++ b/src/lib/eina/eina_alloca.h @@ -0,0 +1,46 @@ +/* EINA - EFL data type library + * Copyright (C) 2013 Gustavo Sverzut Barbieri + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; + * if not, see . + */ + +#ifndef EINA_ALLOCA_H +#define EINA_ALLOCA_H + +/** + * @file eina_alloca.h + * simplifies usage of alloca() by including the proper file + * depending on the platform. + */ + +#ifdef EINA_HAVE_ALLOCA_H +# include +#elif !defined alloca +# ifdef __GNUC__ +# define alloca __builtin_alloca +# elif defined _AIX +# define alloca __alloca +# elif defined _MSC_VER +# include +# define alloca _alloca +# elif !defined EINA_HAVE_ALLOCA +# ifdef __cplusplus +extern "C" +# endif +void *alloca (long); +# endif +#endif + +#endif /* EINA_HAVE_ALLOCA_H */ diff --git a/src/lib/eina/eina_benchmark.c b/src/lib/eina/eina_benchmark.c index 1ba2a00fec..701c1840cb 100644 --- a/src/lib/eina/eina_benchmark.c +++ b/src/lib/eina/eina_benchmark.c @@ -20,23 +20,6 @@ # include "config.h" #endif -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else -# include -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -#endif - #include #include #include @@ -47,6 +30,7 @@ void *alloca (size_t); #include "eina_config.h" #include "eina_private.h" +#include "eina_alloca.h" #include "eina_log.h" #include "eina_benchmark.h" #include "eina_inlist.h" diff --git a/src/lib/eina/eina_config.h.in b/src/lib/eina/eina_config.h.in index 4c16565346..b8ad351d6a 100644 --- a/src/lib/eina/eina_config.h.in +++ b/src/lib/eina/eina_config.h.in @@ -77,4 +77,9 @@ #endif @EINA_CONFIGURE_ENABLE_LOG@ +#ifdef EINA_HAVE_ALLOCA_H +# undef EINA_HAVE_ALLOCA_H +#endif +@EINA_CONFIGURE_HAVE_ALLOCA_H@ + #endif /* EINA_CONFIG_H_ */ diff --git a/src/lib/eina/eina_file.c b/src/lib/eina/eina_file.c index ccc358f50f..15b2192aa1 100644 --- a/src/lib/eina/eina_file.c +++ b/src/lib/eina/eina_file.c @@ -21,23 +21,6 @@ # include "config.h" #endif -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else -# include -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -#endif - #include #include #include @@ -58,6 +41,7 @@ void *alloca (size_t); #include "eina_config.h" #include "eina_private.h" +#include "eina_alloca.h" /* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */ #include "eina_safety_checks.h" diff --git a/src/lib/eina/eina_file_win32.c b/src/lib/eina/eina_file_win32.c index 927ca7758c..c6832c45c8 100644 --- a/src/lib/eina/eina_file_win32.c +++ b/src/lib/eina/eina_file_win32.c @@ -20,23 +20,6 @@ # include "config.h" #endif -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else -# include -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -#endif - #include #include @@ -48,6 +31,7 @@ void *alloca (size_t); #include "eina_config.h" #include "eina_private.h" +#include "eina_alloca.h" /* undefs EINA_ARG_NONULL() so NULL checks are not compiled out! */ #include "eina_safety_checks.h" diff --git a/src/lib/eina/eina_model.c b/src/lib/eina/eina_model.c index 16293284ca..4d7f341f27 100644 --- a/src/lib/eina/eina_model.c +++ b/src/lib/eina/eina_model.c @@ -20,29 +20,13 @@ # include "config.h" #endif -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else -# include -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -#endif - #ifdef HAVE_EXECINFO_H #include #endif #include "eina_config.h" #include "eina_private.h" +#include "eina_alloca.h" #include "eina_error.h" #include "eina_log.h" #include "eina_mempool.h" diff --git a/src/lib/eina/eina_module.c b/src/lib/eina/eina_module.c index ab14e8189d..327101a7de 100644 --- a/src/lib/eina/eina_module.c +++ b/src/lib/eina/eina_module.c @@ -20,23 +20,6 @@ # include "config.h" #endif -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else -# include -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -#endif - #include #include #include @@ -64,6 +47,7 @@ void *alloca (size_t); #include "eina_config.h" #include "eina_private.h" +#include "eina_alloca.h" #include "eina_error.h" #include "eina_file.h" #include "eina_log.h" diff --git a/src/lib/eina/eina_prefix.c b/src/lib/eina/eina_prefix.c index c020a10cb1..7d936089fc 100644 --- a/src/lib/eina/eina_prefix.c +++ b/src/lib/eina/eina_prefix.c @@ -28,23 +28,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include #include @@ -71,6 +54,7 @@ void *alloca (size_t); #include "eina_config.h" #include "eina_private.h" +#include "eina_alloca.h" #include "eina_log.h" #include "eina_prefix.h" diff --git a/src/lib/eina/eina_simple_xml_parser.c b/src/lib/eina/eina_simple_xml_parser.c index eeb5a96032..1f978b0726 100644 --- a/src/lib/eina/eina_simple_xml_parser.c +++ b/src/lib/eina/eina_simple_xml_parser.c @@ -21,22 +21,6 @@ # include "config.h" #endif -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else -# include -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -#endif #ifdef HAVE_STRINGS_H # include @@ -49,7 +33,9 @@ void *alloca (size_t); # include #endif +#include "eina_config.h" #include "eina_private.h" +#include "eina_alloca.h" #include "eina_log.h" #include "eina_mempool.h" #include "eina_stringshare.h" diff --git a/src/lib/eina/eina_stringshare.c b/src/lib/eina/eina_stringshare.c index 2a457f4736..2acb98ca8a 100644 --- a/src/lib/eina/eina_stringshare.c +++ b/src/lib/eina/eina_stringshare.c @@ -26,23 +26,6 @@ # include "config.h" #endif -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else -# include -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -#endif - #include #include #include @@ -53,6 +36,7 @@ void *alloca (size_t); #include "eina_config.h" #include "eina_private.h" +#include "eina_alloca.h" #include "eina_error.h" #include "eina_log.h" #include "eina_lock.h" diff --git a/src/lib/eina/eina_value.c b/src/lib/eina/eina_value.c index 3e7ee3f725..b245b67288 100644 --- a/src/lib/eina/eina_value.c +++ b/src/lib/eina/eina_value.c @@ -20,23 +20,6 @@ # include "config.h" #endif -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else -# include -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -#endif - #include /* asprintf() */ #include /* PRId64 and PRIu64 */ #include /* struct timeval */ @@ -47,6 +30,7 @@ void *alloca (size_t); #include "eina_config.h" #include "eina_private.h" +#include "eina_alloca.h" #include "eina_error.h" #include "eina_log.h" #include "eina_strbuf.h" diff --git a/src/lib/eio/eio_private.h b/src/lib/eio/eio_private.h index 4b7ecf8b50..3a47200890 100644 --- a/src/lib/eio/eio_private.h +++ b/src/lib/eio/eio_private.h @@ -13,23 +13,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include #ifdef HAVE_DIRENT_H diff --git a/src/lib/embryo/embryo_args.c b/src/lib/embryo/embryo_args.c index e9cef2bb25..c0682e6353 100644 --- a/src/lib/embryo/embryo_args.c +++ b/src/lib/embryo/embryo_args.c @@ -2,23 +2,6 @@ # include "config.h" #endif -#ifdef HAVE_ALLOCA_H -# include -#elif defined __GNUC__ -# define alloca __builtin_alloca -#elif defined _AIX -# define alloca __alloca -#elif defined _MSC_VER -# include -# define alloca _alloca -#else -# include -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -#endif - #include #include "Embryo.h" diff --git a/src/lib/embryo/embryo_str.c b/src/lib/embryo/embryo_str.c index 0c2faa2d15..3f180cef00 100644 --- a/src/lib/embryo/embryo_str.c +++ b/src/lib/embryo/embryo_str.c @@ -10,23 +10,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #ifdef HAVE_EXOTIC # include diff --git a/src/lib/evas/include/evas_common.h b/src/lib/evas/include/evas_common.h index 01029034c6..4741140dfa 100644 --- a/src/lib/evas/include/evas_common.h +++ b/src/lib/evas/include/evas_common.h @@ -13,23 +13,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include #include diff --git a/src/modules/ecore_evas/engines/buffer/ecore_evas_extn.c b/src/modules/ecore_evas/engines/buffer/ecore_evas_extn.c index 1bba72640d..7b2ec056fa 100644 --- a/src/modules/ecore_evas/engines/buffer/ecore_evas_extn.c +++ b/src/modules/ecore_evas/engines/buffer/ecore_evas_extn.c @@ -10,23 +10,6 @@ # include # endif #endif -#ifdef HAVE_ALLOCA_H -# include -#elif !defined alloca -# ifdef __GNUC__ -# define alloca __builtin_alloca -# elif defined _AIX -# define alloca __alloca -# elif defined _MSC_VER -# include -# define alloca _alloca -# elif !defined HAVE_ALLOCA -# ifdef __cplusplus -extern "C" -# endif -void *alloca (size_t); -# endif -#endif #include #include