1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Supports static linking of extensions and encodings again.

Fixes --with-static-linked-ext.

Patch by Google Inc. [ruby-core:45073].

* Makefile.in (ENCOBJS, EXTOBJS): New variables to specify static
  linked libraries. Also reintroduces extinit.o, introduces encinit.o
  introduces encinit.o

* common.mk: Builds static libraries rather than shared objects if
  specified.

* configure.in (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://ci.ruby-lang.org/ruby/trunk@35662 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
yugui 2012-05-16 05:39:06 +00:00
parent 0923ae5ed1
commit 3fa3f9abb9
31 changed files with 306 additions and 129 deletions

26
enc/encinit.c.erb Normal file
View file

@ -0,0 +1,26 @@
<%# -*- encoding: UTF-8 -*-%>
/* Copyright 2012 Google Inc. Some Rights Reserved.
* Author: yugui@google.com (Yugui Sonoda)
*/
#include <stdio.h>
#define init(func, name) { \
extern void func(void); \
ruby_init_ext(name, func); \
}
void ruby_init_ext(const char *name, void (*init)(void));
void Init_enc()
{
<% ENCS.each do |enc| -%>
init(Init_<%= enc %>, "enc/<%= enc %>.so");
<% end -%>
init(Init_transdb, "enc/trans/transdb.so");
<% TRANS.each do |trans| -%>
<% next if trans == 'trans/transdb' -%>
init(Init_trans_<%= File.basename trans %>, "enc/<%= trans %>.so");
<% end -%>
}
<%# vim: set fenc=utf-8 ft=eruby sw=2 : -%>