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:
parent
0923ae5ed1
commit
3fa3f9abb9
36
ChangeLog
36
ChangeLog
@ -1,3 +1,39 @@
|
|||||||
|
Wed May 16 14:19:51 2012 Yuki Yugui Sonoda <yugui@google.com>
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
Wed May 16 14:30:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
|
Wed May 16 14:30:43 2012 NAKAMURA Usaku <usa@ruby-lang.org>
|
||||||
|
|
||||||
* io.c: fixed a merge mistake of r33878, reported by nobu via IRC.
|
* io.c: fixed a merge mistake of r33878, reported by nobu via IRC.
|
||||||
|
15
Makefile.in
15
Makefile.in
@ -16,6 +16,7 @@ PLATFORM_DIR = @PLATFORM_DIR@
|
|||||||
|
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
CPP = @CPP@
|
CPP = @CPP@
|
||||||
|
LD = @LD@
|
||||||
YACC = bison
|
YACC = bison
|
||||||
PURIFY =
|
PURIFY =
|
||||||
AUTOCONF = autoconf
|
AUTOCONF = autoconf
|
||||||
@ -70,6 +71,8 @@ DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(XLDFLAGS) $(ARCH_FLAG)
|
|||||||
SOLIBS = @SOLIBS@
|
SOLIBS = @SOLIBS@
|
||||||
MAINLIBS = @MAINLIBS@
|
MAINLIBS = @MAINLIBS@
|
||||||
ARCHMINIOBJS = @MINIOBJS@
|
ARCHMINIOBJS = @MINIOBJS@
|
||||||
|
ENCOBJS = @ENCOBJS@
|
||||||
|
EXTOBJS = @EXTOBJS@
|
||||||
BUILTIN_ENCOBJS = @BUILTIN_ENCOBJS@
|
BUILTIN_ENCOBJS = @BUILTIN_ENCOBJS@
|
||||||
BUILTIN_TRANSSRCS = @BUILTIN_TRANSSRCS@
|
BUILTIN_TRANSSRCS = @BUILTIN_TRANSSRCS@
|
||||||
BUILTIN_TRANSOBJS = @BUILTIN_TRANSOBJS@
|
BUILTIN_TRANSOBJS = @BUILTIN_TRANSOBJS@
|
||||||
@ -175,7 +178,7 @@ miniruby$(EXEEXT):
|
|||||||
$(PROGRAM):
|
$(PROGRAM):
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
$(ECHO) linking $@
|
$(ECHO) linking $@
|
||||||
$(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(LIBRUBYARG) $(LIBS) $(OUTFLAG)$@
|
$(Q) $(PURIFY) $(CC) $(LDFLAGS) $(XLDFLAGS) $(MAINLIBS) $(MAINOBJ) $(EXTOBJS) $(ENCOBJS) $(LIBRUBYARG) $(LIBS) $(EXTLIBS) $(OUTFLAG)$@
|
||||||
$(Q) $(POSTLINK)
|
$(Q) $(POSTLINK)
|
||||||
|
|
||||||
# We must `rm' the library each time this rule is invoked because "updating" a
|
# We must `rm' the library each time this rule is invoked because "updating" a
|
||||||
@ -186,8 +189,9 @@ $(LIBRUBY_A):
|
|||||||
$(ECHO) linking static-library $@
|
$(ECHO) linking static-library $@
|
||||||
$(Q) $(AR) $(ARFLAGS) $@ $(OBJS) $(DMYEXT)
|
$(Q) $(AR) $(ARFLAGS) $@ $(OBJS) $(DMYEXT)
|
||||||
@-$(RANLIB) $@ 2> /dev/null || true
|
@-$(RANLIB) $@ 2> /dev/null || true
|
||||||
|
$(ECHO) verifying static-library $@
|
||||||
@$(PURIFY) $(CC) $(XLDFLAGS) $(MAINOBJ) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)conftest$(EXEEXT) $(LDFLAGS)
|
@$(PURIFY) $(CC) $(XLDFLAGS) $(MAINOBJ) $(LIBRUBY_A) $(MAINLIBS) $(EXTLIBS) $(LIBS) $(OUTFLAG)conftest$(EXEEXT) $(LDFLAGS)
|
||||||
@$(RM) conftest$(EXEEXT)
|
@$(RM) conftset$(EXEEXT) conftest.c
|
||||||
|
|
||||||
$(LIBRUBY_SO):
|
$(LIBRUBY_SO):
|
||||||
@-$(PRE_LIBRUBY_UPDATE)
|
@-$(PRE_LIBRUBY_UPDATE)
|
||||||
@ -311,7 +315,8 @@ enc/unicode/name2ctype.h: enc/unicode/name2ctype.kwd
|
|||||||
$(Q) $(CPP) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -E $< > $@
|
$(Q) $(CPP) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -E $< > $@
|
||||||
|
|
||||||
clean-local::
|
clean-local::
|
||||||
$(Q)$(RM) ext/extinit.c ext/extinit.$(OBJEXT) ext/ripper/y.output
|
$(Q)$(RM) ext/extinit.c ext/extinit.$(OBJEXT) ext/ripper/y.output \
|
||||||
|
enc/encinit.c enc/encinit.$(OBJEXT)
|
||||||
-$(Q)$(RM) $(pkgconfig_DATA)
|
-$(Q)$(RM) $(pkgconfig_DATA)
|
||||||
|
|
||||||
distclean-local::
|
distclean-local::
|
||||||
@ -335,8 +340,10 @@ clean-ext distclean-ext realclean-ext::
|
|||||||
$(RMDIRS) "ext/$$dir" 2> /dev/null || true;; \
|
$(RMDIRS) "ext/$$dir" 2> /dev/null || true;; \
|
||||||
esac; \
|
esac; \
|
||||||
done
|
done
|
||||||
|
-$(Q)$(RM) ext/extinit.$(OBJEXT)
|
||||||
|
|
||||||
distclean-ext realclean-ext::
|
distclean-ext realclean-ext::
|
||||||
|
-$(Q)$(RM) ext/extinit.c
|
||||||
-$(Q)$(RMDIR) ext 2> /dev/null || true
|
-$(Q)$(RMDIR) ext 2> /dev/null || true
|
||||||
|
|
||||||
clean-extout:
|
clean-extout:
|
||||||
@ -362,6 +369,8 @@ ext/extinit.$(OBJEXT): ext/extinit.c $(SETUP)
|
|||||||
$(ECHO) compiling $@
|
$(ECHO) compiling $@
|
||||||
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c ext/extinit.c
|
$(Q) $(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) $(COUTFLAG)$@ -c ext/extinit.c
|
||||||
|
|
||||||
|
enc/encinit.$(OBJEXT): enc/encinit.c $(SETUP)
|
||||||
|
|
||||||
up::
|
up::
|
||||||
@$(CHDIR) "$(srcdir)" && LC_TIME=C exec $(VCSUP)
|
@$(CHDIR) "$(srcdir)" && LC_TIME=C exec $(VCSUP)
|
||||||
|
|
||||||
|
26
common.mk
26
common.mk
@ -32,7 +32,6 @@ ID_H_TARGET = -id.h-
|
|||||||
DMYEXT = dmyext.$(OBJEXT)
|
DMYEXT = dmyext.$(OBJEXT)
|
||||||
NORMALMAINOBJ = main.$(OBJEXT)
|
NORMALMAINOBJ = main.$(OBJEXT)
|
||||||
MAINOBJ = $(NORMALMAINOBJ)
|
MAINOBJ = $(NORMALMAINOBJ)
|
||||||
EXTOBJS =
|
|
||||||
DLDOBJS = $(DMYEXT)
|
DLDOBJS = $(DMYEXT)
|
||||||
MINIOBJS = $(ARCHMINIOBJS) dmyencoding.$(OBJEXT) dmyversion.$(OBJEXT) miniprelude.$(OBJEXT)
|
MINIOBJS = $(ARCHMINIOBJS) dmyencoding.$(OBJEXT) dmyversion.$(OBJEXT) miniprelude.$(OBJEXT)
|
||||||
ENC_MK = enc.mk
|
ENC_MK = enc.mk
|
||||||
@ -141,7 +140,7 @@ COMPILE_PRELUDE = $(MINIRUBY) -I$(srcdir) $(srcdir)/tool/compile_prelude.rb
|
|||||||
|
|
||||||
all: showflags main docs
|
all: showflags main docs
|
||||||
|
|
||||||
main: showflags encs exts
|
main: showflags $(EXTSTATIC:static=lib)encs exts
|
||||||
@$(NULLCMD)
|
@$(NULLCMD)
|
||||||
|
|
||||||
.PHONY: showflags
|
.PHONY: showflags
|
||||||
@ -168,12 +167,13 @@ exts: build-ext
|
|||||||
|
|
||||||
EXTS_MK = exts.mk
|
EXTS_MK = exts.mk
|
||||||
$(EXTS_MK): $(MKFILES) incs $(PREP) $(RBCONFIG) $(LIBRUBY)
|
$(EXTS_MK): $(MKFILES) incs $(PREP) $(RBCONFIG) $(LIBRUBY)
|
||||||
|
$(ECHO) generating makefile $@
|
||||||
$(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$(EXTS_MK) $(EXTMK_ARGS) configure
|
$(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$(EXTS_MK) $(EXTMK_ARGS) configure
|
||||||
|
|
||||||
configure-ext: $(EXTS_MK)
|
configure-ext: $(EXTS_MK)
|
||||||
|
|
||||||
build-ext: $(EXTS_MK)
|
build-ext: $(EXTS_MK)
|
||||||
$(Q)$(MAKE) -f $(EXTS_MK) $(MFLAGS)
|
$(Q)$(MAKE) -f $(EXTS_MK) $(MFLAGS) $(EXTSTATIC)
|
||||||
|
|
||||||
$(MKMAIN_CMD): $(MKFILES) incs $(PREP) $(RBCONFIG) $(LIBRUBY)
|
$(MKMAIN_CMD): $(MKFILES) incs $(PREP) $(RBCONFIG) $(LIBRUBY)
|
||||||
$(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$@ $(EXTMK_ARGS)
|
$(Q)$(MINIRUBY) $(srcdir)/ext/extmk.rb --make="$(MAKE)" --command-output=$@ $(EXTMK_ARGS)
|
||||||
@ -206,7 +206,7 @@ Doxyfile: $(srcdir)/template/Doxyfile.tmpl $(PREP) $(srcdir)/tool/generic_erb.rb
|
|||||||
program: showflags $(PROGRAM)
|
program: showflags $(PROGRAM)
|
||||||
wprogram: showflags $(WPROGRAM)
|
wprogram: showflags $(WPROGRAM)
|
||||||
|
|
||||||
$(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(SETUP) $(PREP)
|
$(PROGRAM): $(LIBRUBY) $(MAINOBJ) $(OBJS) $(EXTOBJS) $(ENCOBJS) $(SETUP) $(PREP)
|
||||||
|
|
||||||
$(LIBRUBY_A): $(OBJS) $(MAINOBJ) $(DMYEXT) $(ARCHFILE)
|
$(LIBRUBY_A): $(OBJS) $(MAINOBJ) $(DMYEXT) $(ARCHFILE)
|
||||||
|
|
||||||
@ -519,17 +519,21 @@ test-rubyspec: test-rubyspec-precheck
|
|||||||
$(RUNRUBY) $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT)
|
$(RUNRUBY) $(srcdir)/spec/mspec/bin/mspec run -B $(srcdir)/spec/default.mspec $(MSPECOPT)
|
||||||
|
|
||||||
encs: enc trans
|
encs: enc trans
|
||||||
encs enc trans: showflags $(ENC_MK) $(LIBRUBY) $(PREP)
|
libencs: libenc libtrans
|
||||||
|
encs enc trans libencs libenc libtrans: showflags $(ENC_MK) $(LIBRUBY) $(PREP)
|
||||||
$(ECHO) making $@
|
$(ECHO) making $@
|
||||||
$(Q) $(MAKE) -f $(ENC_MK) RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" $(MFLAGS) $@
|
$(Q) $(MAKE) -f $(ENC_MK) V="$(V)" \
|
||||||
|
RUBY="$(MINIRUBY)" MINIRUBY="$(MINIRUBY)" \
|
||||||
|
$(MFLAGS) $@
|
||||||
|
|
||||||
enc: {$(VPATH)}encdb.h
|
|
||||||
trans: {$(VPATH)}transdb.h
|
libenc enc: {$(VPATH)}encdb.h
|
||||||
|
libtrans trans: {$(VPATH)}transdb.h
|
||||||
|
|
||||||
$(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc/depend \
|
$(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc/depend \
|
||||||
$(srcdir)/lib/mkmf.rb $(RBCONFIG)
|
$(srcdir)/enc/encinit.c.erb $(srcdir)/lib/mkmf.rb $(RBCONFIG)
|
||||||
$(ECHO) generating $@
|
$(ECHO) generating $@
|
||||||
$(Q) $(MINIRUBY) $(srcdir)/enc/make_encmake.rb --builtin-encs="$(BUILTIN_ENCOBJS)" --builtin-transes="$(BUILTIN_TRANSOBJS)" $@ $(ENCS)
|
$(Q) $(MINIRUBY) $(srcdir)/enc/make_encmake.rb --builtin-encs="$(BUILTIN_ENCOBJS)" --builtin-transes="$(BUILTIN_TRANSOBJS)" --module$(EXTSTATIC) $@ $(ENCS)
|
||||||
|
|
||||||
.PRECIOUS: $(MKFILES)
|
.PRECIOUS: $(MKFILES)
|
||||||
|
|
||||||
@ -833,6 +837,8 @@ transdb.h: $(PREP) srcs-enc $(srcdir)/tool/generic_erb.rb $(srcdir)/template/tra
|
|||||||
$(ECHO) generating $@
|
$(ECHO) generating $@
|
||||||
$(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/transdb.h.tmpl $(srcdir)/enc/trans enc/trans
|
$(Q) $(MINIRUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/transdb.h.tmpl $(srcdir)/enc/trans enc/trans
|
||||||
|
|
||||||
|
enc/encinit.c: $(ENC_MK) $(srcdir)/enc/encinit.c.erb
|
||||||
|
|
||||||
known_errors.inc: $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
|
known_errors.inc: $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
|
||||||
$(ECHO) generating $@
|
$(ECHO) generating $@
|
||||||
$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
|
$(Q) $(BASERUBY) $(srcdir)/tool/generic_erb.rb -c -o $@ $(srcdir)/template/known_errors.inc.tmpl $(srcdir)/defs/known_errors.def
|
||||||
|
39
configure.in
39
configure.in
@ -291,6 +291,8 @@ AC_PROG_CC
|
|||||||
AC_PROG_CXX
|
AC_PROG_CXX
|
||||||
AC_PROG_GCC_TRADITIONAL
|
AC_PROG_GCC_TRADITIONAL
|
||||||
AC_SUBST(GCC)
|
AC_SUBST(GCC)
|
||||||
|
AC_CHECK_TOOL([LD], [ld], [ld])
|
||||||
|
AC_SUBST(LD)
|
||||||
if test "$GCC" = yes; then
|
if test "$GCC" = yes; then
|
||||||
linker_flag=-Wl,
|
linker_flag=-Wl,
|
||||||
: ${optflags=-O3}
|
: ${optflags=-O3}
|
||||||
@ -2095,7 +2097,7 @@ if test "$with_dln_a_out" != yes; then
|
|||||||
|
|
||||||
AS_CASE(["$target_os"],
|
AS_CASE(["$target_os"],
|
||||||
[hpux*], [ DLDFLAGS="$DLDFLAGS -E"
|
[hpux*], [ DLDFLAGS="$DLDFLAGS -E"
|
||||||
: ${LDSHARED='ld -b'}
|
: ${LDSHARED="$(LD) -b"}
|
||||||
XLDFLAGS="$XLDFLAGS -Wl,-E"
|
XLDFLAGS="$XLDFLAGS -Wl,-E"
|
||||||
: ${LIBPATHENV=SHLIB_PATH}
|
: ${LIBPATHENV=SHLIB_PATH}
|
||||||
if test "$rb_cv_prog_gnu_ld" = no; then
|
if test "$rb_cv_prog_gnu_ld" = no; then
|
||||||
@ -2114,17 +2116,17 @@ if test "$with_dln_a_out" != yes; then
|
|||||||
: ${LIBPATHENV=LD_LIBRARY_PATH_64}
|
: ${LIBPATHENV=LD_LIBRARY_PATH_64}
|
||||||
fi
|
fi
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[sunos*], [ : ${LDSHARED='ld -assert nodefinitions'}
|
[sunos*], [ : ${LDSHARED="$(LD) -assert nodefinitions"}
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[irix*], [ : ${LDSHARED='ld -shared'}
|
[irix*], [ : ${LDSHARED="$(LD) -shared"}
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[sysv4*], [ : ${LDSHARED='ld -G'}
|
[sysv4*], [ : ${LDSHARED="$(LD) -G"}
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[nto-qnx*], [ : ${LDSHARED='$(CC) -shared'}
|
[nto-qnx*], [ : ${LDSHARED='$(CC) -shared'}
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[esix*|uxpds*], [ : ${LDSHARED="ld -G"}
|
[esix*|uxpds*], [ : ${LDSHARED="$(LD) -G"}
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[osf*], [ : ${LDSHARED="ld -shared -expect_unresolved \"*\""}
|
[osf*], [ : ${LDSHARED="$(LD) -shared -expect_unresolved \"*\""}
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[bsdi3*], [ AS_CASE(["$CC"],
|
[bsdi3*], [ AS_CASE(["$CC"],
|
||||||
[*shlicc*], [ : ${LDSHARED='$(CC) -r'}
|
[*shlicc*], [ : ${LDSHARED='$(CC) -r'}
|
||||||
@ -2145,7 +2147,7 @@ if test "$with_dln_a_out" != yes; then
|
|||||||
LDFLAGS="$LDFLAGS -rdynamic"
|
LDFLAGS="$LDFLAGS -rdynamic"
|
||||||
DLDFLAGS="$DLDFLAGS "'-Wl,-soname,$(.TARGET)'
|
DLDFLAGS="$DLDFLAGS "'-Wl,-soname,$(.TARGET)'
|
||||||
else
|
else
|
||||||
test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED="ld -Bshareable"
|
test "$GCC" = yes && test "$rb_cv_prog_gnu_ld" = yes || LDSHARED="$(LD) -Bshareable"
|
||||||
fi
|
fi
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[openbsd*], [ : ${LDSHARED='$(CC) -shared ${CCDLFLAGS}'}
|
[openbsd*], [ : ${LDSHARED='$(CC) -shared ${CCDLFLAGS}'}
|
||||||
@ -2179,12 +2181,12 @@ if test "$with_dln_a_out" != yes; then
|
|||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[beos*], [ AS_CASE(["$target_cpu"],
|
[beos*], [ AS_CASE(["$target_cpu"],
|
||||||
[powerpc*], [
|
[powerpc*], [
|
||||||
: ${LDSHARED="ld -xms"}
|
: ${LDSHARED="$(LD) -xms"}
|
||||||
DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
|
DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
|
||||||
LDFLAGS="$LDFLAGS -L/boot/home/config/lib -lbe -lroot"
|
LDFLAGS="$LDFLAGS -L/boot/home/config/lib -lbe -lroot"
|
||||||
],
|
],
|
||||||
[i586*], [
|
[i586*], [
|
||||||
: ${LDSHARED="ld -shared"}
|
: ${LDSHARED="$(LD) -shared"}
|
||||||
DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib \$(topdir)/_APP_ -lbe -lroot"
|
DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib \$(topdir)/_APP_ -lbe -lroot"
|
||||||
LDFLAGS="$LDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib -lbe -lroot"
|
LDFLAGS="$LDFLAGS -L/boot/develop/lib/x86 -L/boot/home/config/lib -lbe -lroot"
|
||||||
])
|
])
|
||||||
@ -2192,17 +2194,17 @@ if test "$with_dln_a_out" != yes; then
|
|||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[haiku*], [ AS_CASE(["$target_cpu"],
|
[haiku*], [ AS_CASE(["$target_cpu"],
|
||||||
[powerpc*], [
|
[powerpc*], [
|
||||||
: ${LDSHARED="ld -xms"}
|
: ${LDSHARED="$(LD) -xms"}
|
||||||
DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
|
DLDFLAGS="$DLDFLAGS "'-export Init_$(TARGET) -lbe -lroot glue-noinit.a init_term_dyn.o start_dyn.o'
|
||||||
],
|
],
|
||||||
[i586*], [
|
[i586*], [
|
||||||
: ${LDSHARED="ld -shared"}
|
: ${LDSHARED="$(LD) -shared"}
|
||||||
DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -lbe -lroot"
|
DLDFLAGS="$DLDFLAGS -L/boot/develop/lib/x86 -lbe -lroot"
|
||||||
])
|
])
|
||||||
: ${LIBPATHENV=LIBRARY_PATH}
|
: ${LIBPATHENV=LIBRARY_PATH}
|
||||||
rb_cv_dlopen=yes ],
|
rb_cv_dlopen=yes ],
|
||||||
[nto-qnx*], [ DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
|
[nto-qnx*], [ DLDFLAGS="$DLDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
|
||||||
: ${LDSHARED='ld -Bshareable -x'}
|
: ${LDSHARED="$(LD) -Bshareable -x"}
|
||||||
LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
|
LDFLAGS="$LDFLAGS -L/lib -L/usr/lib -L/usr/local/lib"
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[cygwin*|mingw*], [
|
[cygwin*|mingw*], [
|
||||||
@ -2211,12 +2213,12 @@ if test "$with_dln_a_out" != yes; then
|
|||||||
DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-image-base,--enable-auto-import"
|
DLDFLAGS="${DLDFLAGS} -Wl,--enable-auto-image-base,--enable-auto-import"
|
||||||
: ${LIBPATHENV=""}
|
: ${LIBPATHENV=""}
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[hiuxmpp], [ : ${LDSHARED='ld -r'}],
|
[hiuxmpp], [ : ${LDSHARED="$(LD) -r"}],
|
||||||
[atheos*], [ : ${LDSHARED='$(CC) -shared'}
|
[atheos*], [ : ${LDSHARED='$(CC) -shared'}
|
||||||
rb_cv_dlopen=yes],
|
rb_cv_dlopen=yes],
|
||||||
[os2-emx*], [ LDFLAGS="$LDFLAGS -Zomf"
|
[os2-emx*], [ LDFLAGS="$LDFLAGS -Zomf"
|
||||||
],
|
],
|
||||||
[ : ${LDSHARED='ld'}])
|
[ : ${LDSHARED="$(LD)"}])
|
||||||
AC_MSG_RESULT($rb_cv_dlopen)
|
AC_MSG_RESULT($rb_cv_dlopen)
|
||||||
fi
|
fi
|
||||||
if test "${LDSHAREDXX}" = ""; then
|
if test "${LDSHAREDXX}" = ""; then
|
||||||
@ -2324,6 +2326,13 @@ AC_SUBST(EXTSTATIC)dnl
|
|||||||
AC_ARG_WITH(static-linked-ext,
|
AC_ARG_WITH(static-linked-ext,
|
||||||
AS_HELP_STRING([--with-static-linked-ext], [link external modules statically]),
|
AS_HELP_STRING([--with-static-linked-ext], [link external modules statically]),
|
||||||
[AS_CASE([$withval],[yes],[STATIC=;EXTSTATIC=static])])
|
[AS_CASE([$withval],[yes],[STATIC=;EXTSTATIC=static])])
|
||||||
|
if test x"$EXTSTATIC" = xstatic; then
|
||||||
|
ENCOBJS='enc/encinit.$(OBJEXT) enc/libenc.a enc/libtrans.a'
|
||||||
|
EXTOBJS='ext/extinit.$(OBJEXT) ext/libext.a'
|
||||||
|
AC_DEFINE_UNQUOTED(EXTSTATIC, 1)
|
||||||
|
fi
|
||||||
|
AC_SUBST(ENCOBJS)
|
||||||
|
AC_SUBST(EXTOBJS)
|
||||||
|
|
||||||
AS_CASE(["$target_os"],
|
AS_CASE(["$target_os"],
|
||||||
dnl OS/2 environment w/ Autoconf 2.1x for EMX
|
dnl OS/2 environment w/ Autoconf 2.1x for EMX
|
||||||
@ -2507,7 +2516,7 @@ AS_CASE("$enable_shared", [yes], [
|
|||||||
LIBRUBYARG_SHARED=
|
LIBRUBYARG_SHARED=
|
||||||
|
|
||||||
# enable PIE if possible
|
# enable PIE if possible
|
||||||
if test "$GCC" = yes; then
|
if test "$GCC" = yes and -z "$EXTSTATIC"; then
|
||||||
RUBY_TRY_CFLAGS(-fPIE, [pie=yes], [pie=no])
|
RUBY_TRY_CFLAGS(-fPIE, [pie=yes], [pie=no])
|
||||||
if test "$pie" = yes; then
|
if test "$pie" = yes; then
|
||||||
RUBY_APPEND_OPTION(XCFLAGS, -fPIE)
|
RUBY_APPEND_OPTION(XCFLAGS, -fPIE)
|
||||||
|
@ -20,6 +20,7 @@ ENCSODIR = $(EXTOUT)/$(arch)/enc
|
|||||||
TRANSSODIR = $(ENCSODIR)/trans
|
TRANSSODIR = $(ENCSODIR)/trans
|
||||||
DLEXT = @DLEXT@
|
DLEXT = @DLEXT@
|
||||||
OBJEXT = @OBJEXT@
|
OBJEXT = @OBJEXT@
|
||||||
|
LIBEXT = @LIBEXT@
|
||||||
|
|
||||||
BUILTIN_ENCS = ascii.c us_ascii.c\
|
BUILTIN_ENCS = ascii.c us_ascii.c\
|
||||||
unicode.c utf_8.c
|
unicode.c utf_8.c
|
||||||
@ -32,7 +33,9 @@ LIBRUBYARG_SHARED = @LIBRUBYARG_SHARED@
|
|||||||
LIBRUBYARG_STATIC = $(LIBRUBYARG_SHARED)
|
LIBRUBYARG_STATIC = $(LIBRUBYARG_SHARED)
|
||||||
|
|
||||||
empty =
|
empty =
|
||||||
|
AR = @AR@
|
||||||
CC = @CC@
|
CC = @CC@
|
||||||
|
RANLIB = @RANLIB@
|
||||||
OUTFLAG = @OUTFLAG@$(empty)
|
OUTFLAG = @OUTFLAG@$(empty)
|
||||||
COUTFLAG = @COUTFLAG@$(empty)
|
COUTFLAG = @COUTFLAG@$(empty)
|
||||||
CFLAGS = $(CCDLFLAGS) @CFLAGS@ @ARCH_FLAG@
|
CFLAGS = $(CCDLFLAGS) @CFLAGS@ @ARCH_FLAG@
|
||||||
|
71
enc/depend
71
enc/depend
@ -5,34 +5,7 @@
|
|||||||
% dldflags = $2
|
% dldflags = $2
|
||||||
% enable_shared = CONFIG['ENABLE_SHARED'] == 'yes'
|
% enable_shared = CONFIG['ENABLE_SHARED'] == 'yes'
|
||||||
% deffile = (true if /\$\(DEFFILE\)/ =~ CONFIG["LINK_SO"])
|
% deffile = (true if /\$\(DEFFILE\)/ =~ CONFIG["LINK_SO"])
|
||||||
% encs = Dir.open($srcdir) {|d| d.grep(/.+\.c\z/)} - BUILTIN_ENCS - ["mktable.c"]
|
% dependencies = ENCS + TRANS
|
||||||
% encs.each {|e| e.chomp!(".c")}
|
|
||||||
% encs.reject! {|e| !ENC_PATTERNS.any? {|p| File.fnmatch?(p, e)}} if !ENC_PATTERNS.empty?
|
|
||||||
% encs.reject! {|e| NOENC_PATTERNS.any? {|p| File.fnmatch?(p, e)}}
|
|
||||||
% alphanumeric_order = proc {|e| e.scan(/(\d+)|(\D+)/).map {|n,a| a||[n.size,n.to_i]}.flatten}
|
|
||||||
% encs = encs.sort_by(&alphanumeric_order)
|
|
||||||
% encs.unshift(encs.delete("encdb"))
|
|
||||||
% atrans = []
|
|
||||||
% trans = Dir.open($srcdir+"/trans") {|d|
|
|
||||||
% d.select {|e|
|
|
||||||
% if e.chomp!('.trans')
|
|
||||||
% atrans << e
|
|
||||||
% true
|
|
||||||
% elsif e.chomp!('.c')
|
|
||||||
% true
|
|
||||||
% end
|
|
||||||
% }
|
|
||||||
% }
|
|
||||||
% trans -= BUILTIN_TRANSES
|
|
||||||
% atrans -= BUILTIN_TRANSES
|
|
||||||
% trans.uniq!
|
|
||||||
% atrans = atrans.sort_by(&alphanumeric_order)
|
|
||||||
% trans = trans.sort_by(&alphanumeric_order)
|
|
||||||
% trans.unshift(trans.delete("transdb"))
|
|
||||||
% trans.compact!
|
|
||||||
% trans |= atrans
|
|
||||||
% trans.map! {|e| "trans/#{e}"}
|
|
||||||
% dependencies = encs + trans
|
|
||||||
% cleanlibs = Shellwords.shellwords(CONFIG["cleanlibs"] || "")
|
% cleanlibs = Shellwords.shellwords(CONFIG["cleanlibs"] || "")
|
||||||
% cleanobjs = Shellwords.shellwords(CONFIG["cleanobjs"] || "")
|
% cleanobjs = Shellwords.shellwords(CONFIG["cleanobjs"] || "")
|
||||||
% cleanobjs << "$*.def" if deffile
|
% cleanobjs << "$*.def" if deffile
|
||||||
@ -54,31 +27,51 @@ else
|
|||||||
''
|
''
|
||||||
end %> <%=CONFIG['LIBS']%> $(EXTLIBS)
|
end %> <%=CONFIG['LIBS']%> $(EXTLIBS)
|
||||||
|
|
||||||
ENCOBJS = <%=encs.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if encs.size>1%>
|
ENCOBJS = <%=ENCS.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if ENCS.size>1%>
|
||||||
ENCSOS = <%=encs.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%><%="\n" if encs.size>1%>
|
ENCSOS = <%=ENCS.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%><%="\n" if ENCS.size>1%>
|
||||||
ENCCLEANLIBS = <%=cleanlibs.map {|clean|
|
ENCCLEANLIBS = <%=cleanlibs.map {|clean|
|
||||||
clean.gsub(/\$\*(\.\w+)?/) {"$(ENCOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
|
clean.gsub(/\$\*(\.\w+)?/) {"$(ENCOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
|
||||||
}.join(" ")%>
|
}.join(" ")%>
|
||||||
ENCCLEANOBJS = <%=cleanobjs.map {|clean|
|
ENCCLEANOBJS = <%=cleanobjs.map {|clean|
|
||||||
clean.gsub(/\$\*(\.\w+)?/) {"$(ENCOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
|
clean.gsub(/\$\*(\.\w+)?/) {"$(ENCOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
|
||||||
}.join(" ")%>
|
}.join(" ")%>
|
||||||
|
LIBENC=enc/libenc.$(LIBEXT)
|
||||||
|
|
||||||
TRANSVPATH = $(srcdir)/enc/trans
|
TRANSVPATH = $(srcdir)/enc/trans
|
||||||
|
|
||||||
TRANSCSRCS = <%=atrans.map {|e| transvpath % "#{e}.c"}.join(" \\\n\t ")%><%="\n" if trans.size>1%>
|
TRANSCSRCS = <%=ATRANS.map {|e| transvpath % "#{e}.c"}.join(" \\\n\t ")%><%="\n" if TRANS.size>1%>
|
||||||
TRANSOBJS = <%=trans.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if trans.size>1%>
|
TRANSOBJS = <%=TRANS.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if TRANS.size>1%>
|
||||||
TRANSSOS = <%=trans.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%><%="\n" if trans.size>1%>
|
TRANSSOS = <%=TRANS.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%><%="\n" if TRANS.size>1%>
|
||||||
TRANSCLEANLIBS = <%=cleanlibs.map {|clean|
|
TRANSCLEANLIBS = <%=cleanlibs.map {|clean|
|
||||||
clean.gsub(/\$\*(\.\w+)?/) {"$(TRANSOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
|
clean.gsub(/\$\*(\.\w+)?/) {"$(TRANSOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
|
||||||
}.join(" ")%>
|
}.join(" ")%>
|
||||||
TRANSCLEANOBJS = <%=cleanobjs.map {|clean|
|
TRANSCLEANOBJS = <%=cleanobjs.map {|clean|
|
||||||
clean.gsub(/\$\*(\.\w+)?/) {"$(TRANSOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
|
clean.gsub(/\$\*(\.\w+)?/) {"$(TRANSOBJS#{$1 ? ":.#{CONFIG["OBJEXT"]}=#{$1}" : ""})"}
|
||||||
}.join(" ")%>
|
}.join(" ")%>
|
||||||
|
LIBTRANS=enc/libtrans.$(LIBEXT)
|
||||||
|
|
||||||
encs: all
|
encs: all
|
||||||
|
% if MODULE_TYPE == :static
|
||||||
|
all: libenc libtrans
|
||||||
|
% else
|
||||||
all: enc trans
|
all: enc trans
|
||||||
|
%end
|
||||||
|
libencs: libenc libtrans
|
||||||
enc: $(ENCSOS)
|
enc: $(ENCSOS)
|
||||||
|
libenc: $(LIBENC)
|
||||||
trans: $(TRANSSOS)
|
trans: $(TRANSSOS)
|
||||||
|
libtrans: $(LIBTRANS)
|
||||||
|
|
||||||
|
$(LIBENC): $(ENCOBJS)
|
||||||
|
@$(RM) $@
|
||||||
|
$(ECHO) linking statically-linked encoding library $@
|
||||||
|
$(Q) $(AR) <%=CONFIG['ARFLAGS'] || 'rcu' %> $@ $(ENCOBJS)
|
||||||
|
@-$(RANLIB) $@ 2> /dev/null || true
|
||||||
|
$(LIBTRANS): $(TRANSOBJS)
|
||||||
|
@$(RM) $@
|
||||||
|
$(ECHO) linking statically-linked transcoder library $@
|
||||||
|
$(Q) $(AR) <%=CONFIG['ARFLAGS'] || 'rcu' %> $@ $(TRANSOBJS)
|
||||||
|
@-$(RANLIB) $@ 2> /dev/null || true
|
||||||
|
|
||||||
srcs: $(TRANSCSRCS)
|
srcs: $(TRANSCSRCS)
|
||||||
|
|
||||||
@ -86,15 +79,15 @@ srcs: $(TRANSCSRCS)
|
|||||||
$(ECHO) generating table from $@
|
$(ECHO) generating table from $@
|
||||||
$(Q)$(MINIRUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo "$@" "$<"
|
$(Q)$(MINIRUBY) "$(srcdir)/tool/transcode-tblgen.rb" -vo "$@" "$<"
|
||||||
|
|
||||||
% unless encs.empty? or trans.empty?
|
% unless ENCS.empty? or TRANS.empty?
|
||||||
|
|
||||||
% unless encs.empty?
|
% unless ENCS.empty?
|
||||||
$(ENCOBJS): regenc.h oniguruma.h config.h defines.h
|
$(ENCOBJS): regenc.h oniguruma.h config.h defines.h
|
||||||
% end
|
% end
|
||||||
% unless trans.empty?
|
% unless TRANS.empty?
|
||||||
$(TRANSOBJS): ruby.h intern.h config.h defines.h missing.h encoding.h oniguruma.h st.h transcode_data.h
|
$(TRANSOBJS): ruby.h intern.h config.h defines.h missing.h encoding.h oniguruma.h st.h transcode_data.h
|
||||||
% end
|
% end
|
||||||
% atrans.each do |e|
|
% ATRANS.each do |e|
|
||||||
% src = "#{e}.trans"
|
% src = "#{e}.trans"
|
||||||
|
|
||||||
<%=transvpath % "#{e}.c"%>: <%= transvpath % "#{e}.trans"%>
|
<%=transvpath % "#{e}.c"%>: <%= transvpath % "#{e}.trans"%>
|
||||||
@ -142,7 +135,7 @@ enc/encdb.$(OBJEXT): encdb.h
|
|||||||
enc/trans/transdb.$(OBJEXT): transdb.h
|
enc/trans/transdb.$(OBJEXT): transdb.h
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
% %w[$(ENCSOS) $(ENCOBJS) $(ENCCLEANOBJS) $(ENCCLEANLIBS) $(TRANSSOS) $(TRANSOBJS) $(TRANSCLEANOBJS) $(TRANSCLEANLIBS)].each do |clean|
|
% %w[$(ENCSOS) $(LIBENC) $(ENCOBJS) $(ENCCLEANOBJS) $(ENCCLEANLIBS) $(TRANSSOS) $(LIBTRANS) $(TRANSOBJS) $(TRANSCLEANOBJS) $(TRANSCLEANLIBS)].each do |clean|
|
||||||
$(Q)$(RM) <%=pathrep[clean]%>
|
$(Q)$(RM) <%=pathrep[clean]%>
|
||||||
% end
|
% end
|
||||||
% @ignore_error = $nmake ? '' : ' 2> /dev/null || true'
|
% @ignore_error = $nmake ? '' : ' 2> /dev/null || true'
|
||||||
@ -160,3 +153,5 @@ clean-srcs:
|
|||||||
$(Q)$(RM) enc/unicode/name2ctype.h
|
$(Q)$(RM) enc/unicode/name2ctype.h
|
||||||
-$(Q)$(RMDIR) <%=pathrep['enc/unicode']%><%=@ignore_error%>
|
-$(Q)$(RMDIR) <%=pathrep['enc/unicode']%><%=@ignore_error%>
|
||||||
-$(Q)$(RMDIR) <%=pathrep['enc']%><%=@ignore_error%>
|
-$(Q)$(RMDIR) <%=pathrep['enc']%><%=@ignore_error%>
|
||||||
|
|
||||||
|
<%# vim: set ft=eruby noexpandtab ts=8 sw=2 : -%>
|
||||||
|
26
enc/encinit.c.erb
Normal file
26
enc/encinit.c.erb
Normal 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 : -%>
|
@ -15,6 +15,7 @@ BUILTIN_ENCS = []
|
|||||||
BUILTIN_TRANSES = []
|
BUILTIN_TRANSES = []
|
||||||
ENC_PATTERNS = []
|
ENC_PATTERNS = []
|
||||||
NOENC_PATTERNS = []
|
NOENC_PATTERNS = []
|
||||||
|
module_type = :dynamic
|
||||||
|
|
||||||
until ARGV.empty?
|
until ARGV.empty?
|
||||||
case ARGV[0]
|
case ARGV[0]
|
||||||
@ -30,11 +31,57 @@ until ARGV.empty?
|
|||||||
when /\A--no-encs=/
|
when /\A--no-encs=/
|
||||||
NOENC_PATTERNS.concat $'.split
|
NOENC_PATTERNS.concat $'.split
|
||||||
ARGV.shift
|
ARGV.shift
|
||||||
|
when /\A--module$/
|
||||||
|
ARGV.shift
|
||||||
|
when /\A--modulestatic$/
|
||||||
|
module_type = :static
|
||||||
|
ARGV.shift
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
ALPHANUMERIC_ORDER = proc {|e| e.scan(/(\d+)|(\D+)/).map {|n,a| a||[n.size,n.to_i]}.flatten}
|
||||||
|
def target_encodings
|
||||||
|
encs = Dir.open($srcdir) {|d| d.grep(/.+\.c\z/)} - BUILTIN_ENCS - ["mktable.c"]
|
||||||
|
encs.each {|e| e.chomp!(".c")}
|
||||||
|
encs.reject! {|e| !ENC_PATTERNS.any? {|p| File.fnmatch?(p, e)}} if !ENC_PATTERNS.empty?
|
||||||
|
encs.reject! {|e| NOENC_PATTERNS.any? {|p| File.fnmatch?(p, e)}}
|
||||||
|
encs = encs.sort_by(&ALPHANUMERIC_ORDER)
|
||||||
|
encs.unshift(encs.delete("encdb"))
|
||||||
|
return encs
|
||||||
|
end
|
||||||
|
|
||||||
|
def target_transcoders
|
||||||
|
atrans = []
|
||||||
|
trans = Dir.open($srcdir+"/trans") {|d|
|
||||||
|
d.select {|e|
|
||||||
|
if e.chomp!('.trans')
|
||||||
|
atrans << e
|
||||||
|
true
|
||||||
|
elsif e.chomp!('.c')
|
||||||
|
true
|
||||||
|
end
|
||||||
|
}
|
||||||
|
}
|
||||||
|
trans -= BUILTIN_TRANSES
|
||||||
|
atrans -= BUILTIN_TRANSES
|
||||||
|
trans.uniq!
|
||||||
|
atrans = atrans.sort_by(&ALPHANUMERIC_ORDER)
|
||||||
|
trans = trans.sort_by(&ALPHANUMERIC_ORDER)
|
||||||
|
trans.unshift(trans.delete("transdb"))
|
||||||
|
trans.compact!
|
||||||
|
trans |= atrans
|
||||||
|
trans.map! {|e| "trans/#{e}"}
|
||||||
|
|
||||||
|
return atrans, trans
|
||||||
|
end
|
||||||
|
|
||||||
|
# Constants that "depend" needs.
|
||||||
|
MODULE_TYPE = module_type
|
||||||
|
ENCS = target_encodings
|
||||||
|
ATRANS, TRANS = target_transcoders
|
||||||
|
|
||||||
if File.exist?(depend = File.join($srcdir, "depend"))
|
if File.exist?(depend = File.join($srcdir, "depend"))
|
||||||
erb = ERB.new(File.read(depend), nil, '%')
|
erb = ERB.new(File.read(depend), nil, '%')
|
||||||
erb.filename = depend
|
erb.filename = depend
|
||||||
@ -48,3 +95,18 @@ mkin.gsub!(/@(#{CONFIG.keys.join('|')})@/) {CONFIG[$1]}
|
|||||||
open(ARGV[0], 'wb') {|f|
|
open(ARGV[0], 'wb') {|f|
|
||||||
f.puts mkin, dep
|
f.puts mkin, dep
|
||||||
}
|
}
|
||||||
|
if MODULE_TYPE == :static
|
||||||
|
erb = ERB.new(File.read(File.join($srcdir, "encinit.c.erb")), nil, '%-')
|
||||||
|
erb.filename = "enc/encinit.c.cerb"
|
||||||
|
tmp = erb.result(binding)
|
||||||
|
begin
|
||||||
|
Dir.mkdir 'enc'
|
||||||
|
rescue Errno::EEXIST
|
||||||
|
end
|
||||||
|
File.open("enc/encinit.c", "w") {|f|
|
||||||
|
f.puts "/* Automatically generated from enc/encinit.c.erb"
|
||||||
|
f.puts " * Do not edit."
|
||||||
|
f.puts " */"
|
||||||
|
f.puts tmp
|
||||||
|
}
|
||||||
|
end
|
||||||
|
@ -26,8 +26,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(big5)
|
||||||
Init_big5(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -25,8 +25,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(chinese)
|
||||||
Init_chinese(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -30,8 +30,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(emoji)
|
||||||
Init_emoji(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -208,8 +208,7 @@ rb_iso2022jp_kddi_encoder = {
|
|||||||
iso2022jp_kddi_encoder_reset_sequence_size, finish_iso2022jp_kddi_encoder
|
iso2022jp_kddi_encoder_reset_sequence_size, finish_iso2022jp_kddi_encoder
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
TRANS_INIT(emoji_iso2022_kddi)
|
||||||
Init_emoji_iso2022_kddi(void)
|
|
||||||
{
|
{
|
||||||
rb_register_transcoder(&rb_iso2022jp_kddi_decoder);
|
rb_register_transcoder(&rb_iso2022jp_kddi_decoder);
|
||||||
rb_register_transcoder(&rb_iso2022jp_kddi_encoder);
|
rb_register_transcoder(&rb_iso2022jp_kddi_encoder);
|
||||||
|
@ -26,8 +26,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(emoji_sjis_docomo)
|
||||||
Init_emoji_sjis_docomo(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -27,8 +27,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(emoji_sjis_kddi)
|
||||||
Init_emoji_sjis_kddi(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -26,8 +26,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(emoji_sjis_softbank)
|
||||||
Init_emoji_sjis_softbank(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -85,8 +85,7 @@ rb_escape_xml_attr_quote = {
|
|||||||
escape_xml_attr_quote_finish
|
escape_xml_attr_quote_finish
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
TRANS_INIT(escape)
|
||||||
Init_escape(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
rb_register_transcoder(&rb_escape_xml_attr_quote);
|
rb_register_transcoder(&rb_escape_xml_attr_quote);
|
||||||
|
@ -176,8 +176,7 @@ rb_to_GB18030 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void
|
TRANS_INIT(gb18030)
|
||||||
Init_gb18030(void)
|
|
||||||
{
|
{
|
||||||
rb_register_transcoder(&rb_from_GB18030);
|
rb_register_transcoder(&rb_from_GB18030);
|
||||||
rb_register_transcoder(&rb_to_GB18030);
|
rb_register_transcoder(&rb_to_GB18030);
|
||||||
|
@ -9,8 +9,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(gbk)
|
||||||
Init_gbk(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -553,8 +553,7 @@ rb_cp50220_encoder = {
|
|||||||
iso2022jp_encoder_reset_sequence_size, finish_cp50220_encoder
|
iso2022jp_encoder_reset_sequence_size, finish_cp50220_encoder
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
TRANS_INIT(iso2022)
|
||||||
Init_iso2022(void)
|
|
||||||
{
|
{
|
||||||
rb_register_transcoder(&rb_iso2022jp_decoder);
|
rb_register_transcoder(&rb_iso2022jp_decoder);
|
||||||
rb_register_transcoder(&rb_iso2022jp_encoder);
|
rb_register_transcoder(&rb_iso2022jp_encoder);
|
||||||
|
@ -90,8 +90,7 @@ rb_sjis2eucjp = {
|
|||||||
NULL, NULL, NULL, fun_so_sjis2eucjp
|
NULL, NULL, NULL, fun_so_sjis2eucjp
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
TRANS_INIT(japanese)
|
||||||
Init_japanese(void)
|
|
||||||
{
|
{
|
||||||
rb_register_transcoder(&rb_eucjp2sjis);
|
rb_register_transcoder(&rb_eucjp2sjis);
|
||||||
rb_register_transcoder(&rb_sjis2eucjp);
|
rb_register_transcoder(&rb_sjis2eucjp);
|
||||||
|
@ -51,8 +51,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(japanese_euc)
|
||||||
Init_japanese_euc(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -27,8 +27,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(japanese_sjis)
|
||||||
Init_japanese_sjis(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -12,8 +12,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(korean)
|
||||||
Init_korean(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -84,8 +84,7 @@
|
|||||||
|
|
||||||
<%= transcode_generated_code %>
|
<%= transcode_generated_code %>
|
||||||
|
|
||||||
void
|
TRANS_INIT(single_byte)
|
||||||
Init_single_byte(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
}
|
}
|
||||||
|
@ -233,8 +233,7 @@ rb_from_UTF8_MAC = {
|
|||||||
from_utf8_mac_finish
|
from_utf8_mac_finish
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
TRANS_INIT(utf8_mac)
|
||||||
Init_utf8_mac(void)
|
|
||||||
{
|
{
|
||||||
<%= transcode_register_code %>
|
<%= transcode_register_code %>
|
||||||
rb_register_transcoder(&rb_from_UTF8_MAC);
|
rb_register_transcoder(&rb_from_UTF8_MAC);
|
||||||
|
@ -539,8 +539,7 @@ rb_to_UTF_32 = {
|
|||||||
NULL, NULL, NULL, fun_so_to_utf_32
|
NULL, NULL, NULL, fun_so_to_utf_32
|
||||||
};
|
};
|
||||||
|
|
||||||
void
|
TRANS_INIT(utf_16_32)
|
||||||
Init_utf_16_32(void)
|
|
||||||
{
|
{
|
||||||
rb_register_transcoder(&rb_from_UTF_16BE);
|
rb_register_transcoder(&rb_from_UTF_16BE);
|
||||||
rb_register_transcoder(&rb_to_UTF_16BE);
|
rb_register_transcoder(&rb_to_UTF_16BE);
|
||||||
|
73
ext/extmk.rb
73
ext/extmk.rb
@ -10,7 +10,7 @@ $dryrun = false
|
|||||||
$clean = nil
|
$clean = nil
|
||||||
$nodynamic = nil
|
$nodynamic = nil
|
||||||
$extinit = nil
|
$extinit = nil
|
||||||
$extobjs = nil
|
$extobjs = []
|
||||||
$extflags = ""
|
$extflags = ""
|
||||||
$extlibs = nil
|
$extlibs = nil
|
||||||
$extpath = nil
|
$extpath = nil
|
||||||
@ -26,6 +26,8 @@ alias $0 $progname
|
|||||||
$extlist = []
|
$extlist = []
|
||||||
$compiled = {}
|
$compiled = {}
|
||||||
|
|
||||||
|
DUMMY_SIGNATURE = "***DUMMY MAKEFILE***"
|
||||||
|
|
||||||
srcdir = File.dirname(File.dirname(__FILE__))
|
srcdir = File.dirname(File.dirname(__FILE__))
|
||||||
unless defined?(CROSS_COMPILING) and CROSS_COMPILING
|
unless defined?(CROSS_COMPILING) and CROSS_COMPILING
|
||||||
$:.replace([File.expand_path("lib", srcdir), Dir.pwd])
|
$:.replace([File.expand_path("lib", srcdir), Dir.pwd])
|
||||||
@ -46,7 +48,18 @@ def sysquote(x)
|
|||||||
end
|
end
|
||||||
|
|
||||||
def verbose?
|
def verbose?
|
||||||
$mflags.defined?("Q") != "@"
|
$mflags.defined?("V") == "1"
|
||||||
|
end
|
||||||
|
|
||||||
|
def system(*args)
|
||||||
|
if verbose?
|
||||||
|
if args.size == 1
|
||||||
|
puts args
|
||||||
|
else
|
||||||
|
puts args.map{|arg| Shellwords.escape(arg)}.join(' ')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
super
|
||||||
end
|
end
|
||||||
|
|
||||||
def extract_makefile(makefile, keep = true)
|
def extract_makefile(makefile, keep = true)
|
||||||
@ -100,7 +113,7 @@ def extract_makefile(makefile, keep = true)
|
|||||||
end
|
end
|
||||||
|
|
||||||
def extmake(target)
|
def extmake(target)
|
||||||
unless $configure_only
|
unless $configure_only || verbose?
|
||||||
print "#{$message} #{target}\n"
|
print "#{$message} #{target}\n"
|
||||||
$stdout.flush
|
$stdout.flush
|
||||||
end
|
end
|
||||||
@ -163,7 +176,11 @@ def extmake(target)
|
|||||||
then
|
then
|
||||||
ok = false
|
ok = false
|
||||||
if $configure_only
|
if $configure_only
|
||||||
print "#{$message} #{target}\n"
|
if verbose?
|
||||||
|
print "#{conf}\n" if conf
|
||||||
|
else
|
||||||
|
print "#{$message} #{target}\n"
|
||||||
|
end
|
||||||
$stdout.flush
|
$stdout.flush
|
||||||
end
|
end
|
||||||
init_mkmf
|
init_mkmf
|
||||||
@ -193,9 +210,11 @@ def extmake(target)
|
|||||||
$0 = $PROGRAM_NAME
|
$0 = $PROGRAM_NAME
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
ok &&= File.open(makefile){|f| !f.gets[DUMMY_SIGNATURE]}
|
||||||
ok = yield(ok) if block_given?
|
ok = yield(ok) if block_given?
|
||||||
unless ok
|
unless ok
|
||||||
open(makefile, "w") do |f|
|
open(makefile, "w") do |f|
|
||||||
|
f.puts "# " + DUMMY_SIGNATURE
|
||||||
f.print(*dummy_makefile(CONFIG["srcdir"]))
|
f.print(*dummy_makefile(CONFIG["srcdir"]))
|
||||||
end
|
end
|
||||||
print "Failed to configure #{target}. It will not be installed.\n"
|
print "Failed to configure #{target}. It will not be installed.\n"
|
||||||
@ -205,9 +224,9 @@ def extmake(target)
|
|||||||
unless $destdir.to_s.empty? or $mflags.defined?("DESTDIR")
|
unless $destdir.to_s.empty? or $mflags.defined?("DESTDIR")
|
||||||
args += [sysquote("DESTDIR=" + relative_from($destdir, "../"+prefix))]
|
args += [sysquote("DESTDIR=" + relative_from($destdir, "../"+prefix))]
|
||||||
end
|
end
|
||||||
if $static
|
if $static and %r(\A-test-) !~ target and target != 'json' and ok
|
||||||
args += ["static"] unless $clean
|
args += ["static"] unless $clean
|
||||||
$extlist.push [$static, $target, File.basename($target), $preload]
|
$extlist.push [$static, target, $target, $preload]
|
||||||
end
|
end
|
||||||
FileUtils.rm_f(old_cleanfiles - $distcleanfiles)
|
FileUtils.rm_f(old_cleanfiles - $distcleanfiles)
|
||||||
FileUtils.rm_f(old_objs - $objs)
|
FileUtils.rm_f(old_objs - $objs)
|
||||||
@ -466,7 +485,7 @@ Dir::chdir('ext')
|
|||||||
hdrdir = $hdrdir
|
hdrdir = $hdrdir
|
||||||
$hdrdir = ($top_srcdir = relative_from(srcdir, $topdir = "..")) + "/include"
|
$hdrdir = ($top_srcdir = relative_from(srcdir, $topdir = "..")) + "/include"
|
||||||
exts.each do |d|
|
exts.each do |d|
|
||||||
$static = $force_static ? $static_ext[target] : nil
|
$static = $force_static ? true : $static_ext[target]
|
||||||
|
|
||||||
if $ignore or !$nodynamic or $static
|
if $ignore or !$nodynamic or $static
|
||||||
extmake(d) or abort
|
extmake(d) or abort
|
||||||
@ -502,7 +521,7 @@ if $ignore
|
|||||||
end
|
end
|
||||||
|
|
||||||
$extinit ||= ""
|
$extinit ||= ""
|
||||||
$extobjs ||= ""
|
$extobjs ||= []
|
||||||
$extpath ||= []
|
$extpath ||= []
|
||||||
$extflags ||= ""
|
$extflags ||= ""
|
||||||
$extlibs ||= []
|
$extlibs ||= []
|
||||||
@ -519,31 +538,27 @@ unless $extlist.empty?
|
|||||||
end
|
end
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
f = format("%s/%s.%s", t, i, $LIBEXT)
|
$extinit << " init(Init_#{File.basename i}, \"#{i}.so\");\n"
|
||||||
if File.exist?(f)
|
$extobjs << format("ext/%s/%s.%s", t, File.basename(i), $LIBEXT)
|
||||||
$extinit << " init(Init_#{i}, \"#{t}.so\");\n"
|
built << t
|
||||||
$extobjs << "ext/#{f} "
|
|
||||||
built << t
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
src = %{\
|
src = %{\
|
||||||
#include "ruby.h"
|
#include "ruby/ruby.h"
|
||||||
|
|
||||||
#define init(func, name) { \\
|
#define init(func, name) { \\
|
||||||
extern void func _((void)); \\
|
extern void func(void); \\
|
||||||
ruby_init_ext(name, func); \\
|
ruby_init_ext(name, func); \\
|
||||||
}
|
}
|
||||||
|
|
||||||
void ruby_init_ext _((const char *name, void (*init)(void)));
|
void ruby_init_ext(const char *name, void (*init)(void));
|
||||||
|
|
||||||
void Init_ext _((void))\n{\n#$extinit}
|
void Init_ext(void)\n{\n#$extinit}
|
||||||
}
|
}
|
||||||
if !modified?(extinit.c, MTIMES) || IO.read(extinit.c) != src
|
if !modified?(extinit.c, MTIMES) || IO.read(extinit.c) != src
|
||||||
open(extinit.c, "w") {|fe| fe.print src}
|
open(extinit.c, "w") {|fe| fe.print src}
|
||||||
end
|
end
|
||||||
|
|
||||||
$extobjs = "ext/#{extinit.o} #{$extobjs}"
|
|
||||||
if RUBY_PLATFORM =~ /beos/
|
if RUBY_PLATFORM =~ /beos/
|
||||||
$extflags.delete("-L/usr/local/lib")
|
$extflags.delete("-L/usr/local/lib")
|
||||||
end
|
end
|
||||||
@ -552,7 +567,6 @@ void Init_ext _((void))\n{\n#$extinit}
|
|||||||
conf = [
|
conf = [
|
||||||
['LIBRUBY_SO_UPDATE', '$(LIBRUBY_EXTS)'],
|
['LIBRUBY_SO_UPDATE', '$(LIBRUBY_EXTS)'],
|
||||||
['SETUP', $setup],
|
['SETUP', $setup],
|
||||||
[enable_config("shared", $enable_shared) ? 'DLDOBJS' : 'EXTOBJS', $extobjs],
|
|
||||||
['EXTLIBS', $extlibs.join(' ')], ['EXTLDFLAGS', $extflags]
|
['EXTLIBS', $extlibs.join(' ')], ['EXTLDFLAGS', $extflags]
|
||||||
].map {|n, v|
|
].map {|n, v|
|
||||||
"#{n}=#{v}" if v and !(v = v.strip).empty?
|
"#{n}=#{v}" if v and !(v = v.strip).empty?
|
||||||
@ -615,21 +629,34 @@ if $configure_only and $command_output
|
|||||||
w += d.size + 1
|
w += d.size + 1
|
||||||
end
|
end
|
||||||
mf.puts
|
mf.puts
|
||||||
|
if !$extlist.empty?
|
||||||
|
mf.puts "EXTOBJS = ext/extinit.#{$OBJEXT} #{$extobjs.join(' ')}"
|
||||||
|
mf.puts "EXTLIBS = #{$extlibs.join(' ')}"
|
||||||
|
else
|
||||||
|
mf.puts "EXTOBJS = "
|
||||||
|
mf.puts "EXTLIBS = "
|
||||||
|
end
|
||||||
|
mf.puts
|
||||||
targets = %w[all install static install-so install-rb clean distclean realclean]
|
targets = %w[all install static install-so install-rb clean distclean realclean]
|
||||||
targets.each do |tgt|
|
targets.each do |tgt|
|
||||||
mf.puts "#{tgt}: $(extensions:/.=/#{tgt})"
|
mf.puts "#{tgt}: $(extensions:/.=/#{tgt})"
|
||||||
end
|
end
|
||||||
mf.puts
|
mf.puts
|
||||||
mf.puts "all: #{rubies.join(' ')}"
|
mf.puts "all: #{rubies.join(' ')}"
|
||||||
mf.puts "#{rubies.join(' ')}: $(extensions:/.=/all)"
|
mf.puts "static: ext/extinit.#{$OBJEXT} #{rubies.join(' ')}"
|
||||||
|
mf.puts "clean:\n\t-$(Q)$(RM) ext/extinit.#{$OBJEXT}"
|
||||||
|
mf.puts "distclean:\n\t-$(Q)$(RM) ext/extinit.c"
|
||||||
|
mf.puts
|
||||||
|
mf.puts "#{rubies.join(' ')}: $(extensions:/.=/#{$force_static ? 'static' : 'all'})"
|
||||||
rubies.each do |tgt|
|
rubies.each do |tgt|
|
||||||
mf.puts "#{tgt}:\n\t$(Q)$(MAKE) $(MFLAGS) $@"
|
mf.puts "#{tgt}:\n\t$(Q)$(MAKE) $(MFLAGS) EXTOBJS='$(EXTOBJS)' EXTLIBS='$(EXTLIBS)' $@"
|
||||||
end
|
end
|
||||||
|
mf.puts "ext/extinit.#{$OBJEXT}:\n\t$(Q)$(MAKE) $(MFLAGS) V=$(V) $@"
|
||||||
mf.puts
|
mf.puts
|
||||||
exec = config_string("exec") {|str| str + " "}
|
exec = config_string("exec") {|str| str + " "}
|
||||||
targets.each do |tgt|
|
targets.each do |tgt|
|
||||||
exts.each do |d|
|
exts.each do |d|
|
||||||
mf.puts "#{d[0..-2]}#{tgt}:\n\t$(Q)cd $(@D) && #{exec}$(MAKE) $(MFLAGS) $(@F)"
|
mf.puts "#{d[0..-2]}#{tgt}:\n\t$(Q)cd $(@D) && #{exec}$(MAKE) $(MFLAGS) V=$(V) $(@F)"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
11
lib/mkmf.rb
11
lib/mkmf.rb
@ -1835,7 +1835,7 @@ DISTCLEANFILES = #{$distcleanfiles.join(' ')}
|
|||||||
|
|
||||||
all install static install-so install-rb: Makefile
|
all install static install-so install-rb: Makefile
|
||||||
.PHONY: all install static install-so install-rb
|
.PHONY: all install static install-so install-rb
|
||||||
.PHONY: clean clean-so clean-rb
|
.PHONY: clean clean-so clean-static clean-rb
|
||||||
|
|
||||||
RULES
|
RULES
|
||||||
end
|
end
|
||||||
@ -2064,7 +2064,7 @@ CLEANOBJS = *.#{$OBJEXT} #{config_string('cleanobjs') {|t| t.gsub(/\$\*/, "$
|
|||||||
all: #{$extout ? "install" : target ? "$(DLLIB)" : "Makefile"}
|
all: #{$extout ? "install" : target ? "$(DLLIB)" : "Makefile"}
|
||||||
static: $(STATIC_LIB)#{$extout ? " install-rb" : ""}
|
static: $(STATIC_LIB)#{$extout ? " install-rb" : ""}
|
||||||
.PHONY: all install static install-so install-rb
|
.PHONY: all install static install-so install-rb
|
||||||
.PHONY: clean clean-so clean-rb
|
.PHONY: clean clean-so clean-static clean-rb
|
||||||
"
|
"
|
||||||
mfile.print CLEANINGS
|
mfile.print CLEANINGS
|
||||||
fsep = config_string('BUILD_FILE_SEPARATOR') {|s| s unless s == "/"}
|
fsep = config_string('BUILD_FILE_SEPARATOR') {|s| s unless s == "/"}
|
||||||
@ -2100,6 +2100,8 @@ static: $(STATIC_LIB)#{$extout ? " install-rb" : ""}
|
|||||||
mfile.print "\t@echo #{dir}/#{File.basename(f)}>>$(INSTALLED_LIST)\n"
|
mfile.print "\t@echo #{dir}/#{File.basename(f)}>>$(INSTALLED_LIST)\n"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
mfile.print "clean-static::\n"
|
||||||
|
mfile.print "\t-$(Q)$(RM) $(STATIC_LIB)\n"
|
||||||
else
|
else
|
||||||
mfile.puts "Makefile"
|
mfile.puts "Makefile"
|
||||||
end
|
end
|
||||||
@ -2372,13 +2374,14 @@ MESSAGE
|
|||||||
clean-rb-default::
|
clean-rb-default::
|
||||||
clean-rb::
|
clean-rb::
|
||||||
clean-so::
|
clean-so::
|
||||||
clean: clean-so clean-rb-default clean-rb
|
clean: clean-so clean-static clean-rb-default clean-rb
|
||||||
\t\t-$(Q)$(RM) $(CLEANLIBS#{sep}) $(CLEANOBJS#{sep}) $(CLEANFILES#{sep})
|
\t\t-$(Q)$(RM) $(CLEANLIBS#{sep}) $(CLEANOBJS#{sep}) $(CLEANFILES#{sep})
|
||||||
|
|
||||||
distclean-rb-default::
|
distclean-rb-default::
|
||||||
distclean-rb::
|
distclean-rb::
|
||||||
distclean-so::
|
distclean-so::
|
||||||
distclean: clean distclean-so distclean-rb-default distclean-rb
|
distclean-static::
|
||||||
|
distclean: clean distclean-so distclean-static distclean-rb-default distclean-rb
|
||||||
\t\t-$(Q)$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
|
\t\t-$(Q)$(RM) Makefile $(RUBY_EXTCONF_H) conftest.* mkmf.log
|
||||||
\t\t-$(Q)$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES#{sep})
|
\t\t-$(Q)$(RM) core ruby$(EXEEXT) *~ $(DISTCLEANFILES#{sep})
|
||||||
\t\t-$(Q)$(RMDIRS) $(DISTCLEANDIRS#{sep})#{$ignore_error}
|
\t\t-$(Q)$(RMDIRS) $(DISTCLEANDIRS#{sep})#{$ignore_error}
|
||||||
|
4
ruby.c
4
ruby.c
@ -1225,6 +1225,9 @@ rb_f_chomp(argc, argv)
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* blank function in dmyencoding.c or generated by enc/make_encmake.rb */
|
||||||
|
extern void Init_enc(void);
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
process_options(int argc, char **argv, struct cmdline_options *opt)
|
process_options(int argc, char **argv, struct cmdline_options *opt)
|
||||||
{
|
{
|
||||||
@ -1311,6 +1314,7 @@ process_options(int argc, char **argv, struct cmdline_options *opt)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
ruby_init_loadpath_safe(opt->safe_level);
|
ruby_init_loadpath_safe(opt->safe_level);
|
||||||
|
Init_enc();
|
||||||
rb_enc_find_index("encdb");
|
rb_enc_find_index("encdb");
|
||||||
lenc = rb_locale_encoding();
|
lenc = rb_locale_encoding();
|
||||||
rb_enc_associate(rb_progname, lenc);
|
rb_enc_associate(rb_progname, lenc);
|
||||||
|
@ -110,6 +110,16 @@ struct rb_transcoder {
|
|||||||
void rb_declare_transcoder(const char *enc1, const char *enc2, const char *lib);
|
void rb_declare_transcoder(const char *enc1, const char *enc2, const char *lib);
|
||||||
void rb_register_transcoder(const rb_transcoder *);
|
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)
|
||||||
|
#else
|
||||||
|
# define TRANS_INIT(name) void Init_ ## name(void)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined __GNUC__ && __GNUC__ >= 4
|
#if defined __GNUC__ && __GNUC__ >= 4
|
||||||
#pragma GCC visibility pop
|
#pragma GCC visibility pop
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user