[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]