path: root/transcode_data.h
diff options
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-16 05:39:06 (GMT)
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-05-16 05:39:06 (GMT)
commit3fa3f9abb9a187a12089c2c5a650a62dbd82a3dd (patch)
tree5a7f6c9f348469863b60010b02375c06b6704951 /transcode_data.h
parent0923ae5ed1711d699ef2923c2223163646634a66 (diff)
Supports static linking of extensions and encodings again.
Fixes --with-static-linked-ext. Patch by Google Inc. [ruby-core:45073]. * (ENCOBJS, EXTOBJS): New variables to specify static linked libraries. Also reintroduces extinit.o, introduces encinit.o introduces encinit.o * Builds static libraries rather than shared objects if specified. * (LD): new substitution. Avoids PIE if s * enc/depend: Supports static linked libraries (libencs, libenc, libtrans): New target. * enc/encinit.c.erb: new template to generate the initialization of statically linked encodings. * enc/make_encmake.rb (--module): new flag to specify whether static or dynamic. * transcode_data.h (TRANS_INIT): New macro to get rid of the name collision of encoding initializers and transcoder initializers. * ext/extmk.rb: Fixes the behavior on $extstatic is true. * lib/mkmf.rb (clean-static): new target to clean up static linked libraries. * ruby.c (process_options): New initializes statically linked encodings here. git-svn-id: svn+ssh:// b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'transcode_data.h')
1 files changed, 10 insertions, 0 deletions
diff --git a/transcode_data.h b/transcode_data.h
index 8e85ce6..dcaee61 100644
--- a/transcode_data.h
+++ b/transcode_data.h
@@ -110,6 +110,16 @@ struct rb_transcoder {
void rb_declare_transcoder(const char *enc1, const char *enc2, const char *lib);
void rb_register_transcoder(const rb_transcoder *);
+ * To get rid of collision of initializer symbols in statically-linked encodings
+ * and transcoders
+ */
+#if defined(EXTSTATIC) && EXTSTATIC
+# define TRANS_INIT(name) void Init_trans_ ## name(void)
+# define TRANS_INIT(name) void Init_ ## name(void)
#if defined __GNUC__ && __GNUC__ >= 4
#pragma GCC visibility pop