diff options
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | bcc32/Makefile.sub | 1 | ||||
-rw-r--r-- | configure.in | 12 | ||||
-rw-r--r-- | defines.h | 5 | ||||
-rw-r--r-- | ext/extmk.rb | 1 | ||||
-rw-r--r-- | win32/Makefile.sub | 1 | ||||
-rw-r--r-- | wince/Makefile.sub | 1 |
7 files changed, 26 insertions, 5 deletions
@@ -1,3 +1,13 @@ +Wed Oct 26 01:58:19 2005 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * configure.in (RUBY_EXTERN): macro to export symbols in shared + library. [ruby-core:05528] + + * defines.h, {bcc32,win32,wince}/Makefile.sub (RUBY_EXTERN): moved to + configuration pass. + + * ext/extmk.rb (extmake): RUBY_EXTERN for static linked extensions. + Tue Oct 25 20:06:59 2005 Hirokazu Yamamoto <ocean@m2.ccsnet.ne.jp> * ruby.h (Qfalse, Qtrue, Qnil, Qundef): make sure these immediate diff --git a/bcc32/Makefile.sub b/bcc32/Makefile.sub index 53b908f658..18c5c47f13 100644 --- a/bcc32/Makefile.sub +++ b/bcc32/Makefile.sub @@ -226,6 +226,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)bcc32/Makefile.sub \#define TOKEN_PASTE(x,y) x\#\#y \#define HAVE_STDARG_PROTOTYPES 1 \#define NORETURN(x) x +\#define RUBY_EXTERN extern __declspec(dllimport) \#define HAVE_DECL_SYS_NERR 1 \#define HAVE_LIMITS_H 1 \#define HAVE_FCNTL_H 1 diff --git a/configure.in b/configure.in index 6518b49e14..dff993ef23 100644 --- a/configure.in +++ b/configure.in @@ -308,6 +308,17 @@ RUBY_FUNC_ATTRIBUTE(noinline, NOINLINE) RUBY_FUNC_ATTRIBUTE(stdcall) RUBY_FUNC_ATTRIBUTE(cdecl) +AC_CACHE_CHECK([for RUBY_EXTERN], rb_cv_ruby_extern, +[rb_cv_ruby_extern=no +for mac in "__attribute__((dllimport))" "__declspec(dllimport)"; do + AC_TRY_COMPILE( + [extern $mac void conftest(void);], + [rb_cv_ruby_extern="extern $mac"; break]) +done]) +test "x$rb_cv_ruby_extern" = xno || AC_DEFINE_UNQUOTED(RUBY_EXTERN, $rb_cv_ruby_extern) + +XCFLAGS="$XCFLAGS -DRUBY_EXPORT" + dnl Check whether we need to define sys_nerr locally AC_CHECK_DECLS([sys_nerr], [], [], [$ac_includes_default #include <errno.h>]) @@ -1375,7 +1386,6 @@ case "$target_os" in COMMON_HEADERS="winsock2.h windows.h" ;; esac - XCFLAGS="$XCFLAGS" LIBRUBY_DLDFLAGS="${DLDFLAGS}"' -Wl,--out-implib=$(LIBRUBY)' LIBRUBY_ALIASES='' FIRSTMAKEFILE=GNUmakefile:cygwin/GNUmakefile.in @@ -195,11 +195,8 @@ void xfree(void*); #include <net/socket.h> /* intern.h needs fd_set definition */ #endif +#ifdef RUBY_EXPORT #undef RUBY_EXTERN -#if defined _WIN32 && !defined __GNUC__ -# ifndef RUBY_EXPORT -# define RUBY_EXTERN extern __declspec(dllimport) -# endif #endif #ifndef RUBY_EXTERN diff --git a/ext/extmk.rb b/ext/extmk.rb index 331ed180ea..1642012dbd 100644 --- a/ext/extmk.rb +++ b/ext/extmk.rb @@ -129,6 +129,7 @@ def extmake(target) then ok = false init_mkmf + $defs << "-DRUBY_EXPORT" if $static Logging::logfile 'mkmf.log' rm_f makefile if File.exist?($0 = "#{$srcdir}/makefile.rb") diff --git a/win32/Makefile.sub b/win32/Makefile.sub index 21639a223a..4a9cddc0e6 100644 --- a/win32/Makefile.sub +++ b/win32/Makefile.sub @@ -228,6 +228,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/win32/Makefile.sub #define DEPRECATED(x) __declspec(deprecated) x #define NOINLINE(x) __declspec(noinline) x !endif +#define RUBY_EXTERN extern __declspec(dllimport) #define HAVE_DECL_SYS_NERR 1 #define HAVE_LIMITS_H 1 #define HAVE_FCNTL_H 1 diff --git a/wince/Makefile.sub b/wince/Makefile.sub index 71a7df2167..f7a88752d6 100644 --- a/wince/Makefile.sub +++ b/wince/Makefile.sub @@ -223,6 +223,7 @@ $(CONFIG_H): $(MKFILES) $(srcdir)/wince/Makefile.sub #define DEPRECATED(x) __declspec(deprecated) x #define NOINLINE(x) __declspec(noinline) x !endif +#define RUBY_EXTERN extern __declspec(dllimport) #define HAVE_DECL_SYS_NERR 1 #define HAVE_FCNTL_H 1 #define HAVE_SYS_UTIME_H 1 |