diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-08-14 06:33:06 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-08-14 06:33:06 +0000 |
commit | dccf9e0c45f1f450d28ba0700dbb459247ba9f9d (patch) | |
tree | 8ef41c677fb06897c021b8d6615b70724d2efad3 | |
parent | a23b1f745038f93e5cd2542fbf17b363686ccfd7 (diff) | |
download | ruby-dccf9e0c45f1f450d28ba0700dbb459247ba9f9d.tar.gz |
* 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]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28982 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | array.c | 2 | ||||
-rw-r--r-- | complex.c | 10 | ||||
-rw-r--r-- | configure.in | 13 | ||||
-rw-r--r-- | include/ruby/defines.h | 4 | ||||
-rw-r--r-- | io.c | 2 | ||||
-rw-r--r-- | rational.c | 10 | ||||
-rw-r--r-- | string.c | 2 | ||||
-rw-r--r-- | variable.c | 2 |
9 files changed, 31 insertions, 23 deletions
@@ -1,4 +1,11 @@ -Sat Aug 14 15:19:55 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> +Sat Aug 14 15:33:02 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * 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. @@ -386,7 +386,7 @@ rb_ary_free(VALUE ary) } } -size_t +RUBY_FUNC_EXPORTED size_t rb_ary_memsize(VALUE ary) { if (ARY_OWNS_HEAP_P(ary)) { @@ -359,19 +359,11 @@ f_complex_new_bang2(VALUE klass, VALUE x, VALUE y) #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 diff --git a/configure.in b/configure.in index 7afaea97f3..9456da1e07 100644 --- a/configure.in +++ b/configure.in @@ -753,6 +753,19 @@ if test "$GCC" = yes; then 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 } diff --git a/include/ruby/defines.h b/include/ruby/defines.h index 51b2eb816d..45841dad74 100644 --- a/include/ruby/defines.h +++ b/include/ruby/defines.h @@ -241,6 +241,10 @@ extern const unsigned char rb_nan[]; #endif +#ifndef RUBY_FUNC_EXPORTED +#define RUBY_FUNC_EXPORTED +#endif + #ifndef RUBY_EXTERN #define RUBY_EXTERN extern #endif @@ -3535,7 +3535,7 @@ rb_io_fptr_finalize(rb_io_t *fptr) 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); diff --git a/rational.c b/rational.c index 085f914c1e..9334b14352 100644 --- a/rational.c +++ b/rational.c @@ -403,19 +403,11 @@ f_rational_new_bang2(VALUE klass, VALUE x, VALUE y) #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 @@ -781,7 +781,7 @@ rb_str_free(VALUE str) } } -size_t +RUBY_FUNC_EXPORTED size_t rb_str_memsize(VALUE str) { if (!STR_EMBED_P(str) && !STR_SHARED_P(str)) { diff --git a/variable.c b/variable.c index 33e663293e..5333aa2d92 100644 --- a/variable.c +++ b/variable.c @@ -944,7 +944,7 @@ rb_free_generic_ivar(VALUE obj) st_free_table((st_table *)tbl); } -size_t +RUBY_FUNC_EXPORTED size_t rb_generic_ivar_memsize(VALUE obj) { st_data_t tbl; |