ruby-changes:16985
From: nobu <ko1@a...>
Date: Sat, 14 Aug 2010 15:33:23 +0900 (JST)
Subject: [ruby-changes:16985] Ruby:r28982 (trunk): * configure.in, include/ruby/defines.h (RUBY_FUNC_EXPORTED): macro
nobu 2010-08-14 15:33:06 +0900 (Sat, 14 Aug 2010) New Revision: 28982 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28982 Log: * configure.in, include/ruby/defines.h (RUBY_FUNC_EXPORTED): macro to declare exported function. * array.c (rb_ary_memsize), string.c (rb_str_memsize), variable.c (rb_objspace_data_type_memsize): used in objspace. [ruby-dev:42022] Modified files: trunk/ChangeLog trunk/array.c trunk/complex.c trunk/configure.in trunk/include/ruby/defines.h trunk/io.c trunk/rational.c trunk/string.c trunk/variable.c Index: complex.c =================================================================== --- complex.c (revision 28981) +++ complex.c (revision 28982) @@ -359,20 +359,12 @@ #ifdef CANON static int canonicalization = 0; -#if defined __GNUC__ && __GNUC__ >= 4 -#pragma GCC visibility push(default) -#endif - -void +RUBY_FUNC_EXPORTED void nucomp_canonicalization(int f) { canonicalization = f; } - -#if defined __GNUC__ && __GNUC__ >= 4 -#pragma GCC visibility pop #endif -#endif inline static void nucomp_real_check(VALUE num) Index: array.c =================================================================== --- array.c (revision 28981) +++ array.c (revision 28982) @@ -386,7 +386,7 @@ } } -size_t +RUBY_FUNC_EXPORTED size_t rb_ary_memsize(VALUE ary) { if (ARY_OWNS_HEAP_P(ary)) { Index: include/ruby/defines.h =================================================================== --- include/ruby/defines.h (revision 28981) +++ include/ruby/defines.h (revision 28982) @@ -241,6 +241,10 @@ #endif +#ifndef RUBY_FUNC_EXPORTED +#define RUBY_FUNC_EXPORTED +#endif + #ifndef RUBY_EXTERN #define RUBY_EXTERN extern #endif Index: configure.in =================================================================== --- configure.in (revision 28981) +++ configure.in (revision 28982) @@ -753,6 +753,19 @@ fi fi +AC_CACHE_CHECK(for exported function attribute, rb_cv_func_exported, [ +rb_cv_func_exported=no +RUBY_WERROR_FLAG([ +for mac in '__attribute__ ((visibility("default")))' '__declspec(dllexport)'; do + AC_TRY_COMPILE([@%:@define RUBY_FUNC_EXPORTED $mac extern + RUBY_FUNC_EXPORTED void conftest_attribute_check(void);], [], + [rb_cv_func_exported="$mac"; break]) +done +])]) +if test "$rb_cv_func_exported" != no; then + AC_DEFINE_UNQUOTED(RUBY_FUNC_EXPORTED, [$rb_cv_func_exported extern]) +fi + RUBY_APPEND_OPTION(XCFLAGS, -DRUBY_EXPORT) dnl } Index: ChangeLog =================================================================== --- ChangeLog (revision 28981) +++ ChangeLog (revision 28982) @@ -1,5 +1,12 @@ -Sat Aug 14 15:19:55 2010 Nobuyoshi Nakada <nobu@r...> +Sat Aug 14 15:33:02 2010 Nobuyoshi Nakada <nobu@r...> + * configure.in, include/ruby/defines.h (RUBY_FUNC_EXPORTED): macro + to declare exported function. + + * array.c (rb_ary_memsize), string.c (rb_str_memsize), + variable.c (rb_objspace_data_type_memsize): used in + objspace. [ruby-dev:42022] + * io.c (rb_io_memsize): constified. * regcomp.c (onig_memsize): constified. Index: variable.c =================================================================== --- variable.c (revision 28981) +++ variable.c (revision 28982) @@ -944,7 +944,7 @@ st_free_table((st_table *)tbl); } -size_t +RUBY_FUNC_EXPORTED size_t rb_generic_ivar_memsize(VALUE obj) { st_data_t tbl; Index: string.c =================================================================== --- string.c (revision 28981) +++ string.c (revision 28982) @@ -781,7 +781,7 @@ } } -size_t +RUBY_FUNC_EXPORTED size_t rb_str_memsize(VALUE str) { if (!STR_EMBED_P(str) && !STR_SHARED_P(str)) { Index: io.c =================================================================== --- io.c (revision 28981) +++ io.c (revision 28982) @@ -3535,7 +3535,7 @@ size_t rb_econv_memsize(rb_econv_t *); -size_t +RUBY_FUNC_EXPORTED size_t rb_io_memsize(const rb_io_t *fptr) { size_t size = sizeof(rb_io_t); Index: rational.c =================================================================== --- rational.c (revision 28981) +++ rational.c (revision 28982) @@ -403,20 +403,12 @@ #ifdef CANON static int canonicalization = 0; -#if defined __GNUC__ && __GNUC__ >= 4 -#pragma GCC visibility push(default) -#endif - -void +RUBY_FUNC_EXPORTED void nurat_canonicalization(int f) { canonicalization = f; } - -#if defined __GNUC__ && __GNUC__ >= 4 -#pragma GCC visibility pop #endif -#endif inline static void nurat_int_check(VALUE num) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/