mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
* configure.in (enc/Makefile): add external encoding objects list.
* common.mk (BUILTIN_ENCOBJS): renamed from ENCOBJS. * Makefile.in (BUILTIN_ENCOBJS): substitued by autoconf. * enc/Makefile.in: new file to compile external encoding sources. * encoding.c (rb_enc_find_index): auto-load external encoding objects as "ext/ENCODING_NAME". [ruby-dev:32606] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
c5851d1d69
commit
f2bd108d8d
6 changed files with 103 additions and 10 deletions
13
ChangeLog
13
ChangeLog
|
@ -1,3 +1,16 @@
|
||||||
|
Sat Dec 15 18:56:57 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* configure.in (enc/Makefile): add external encoding objects list.
|
||||||
|
|
||||||
|
* common.mk (BUILTIN_ENCOBJS): renamed from ENCOBJS.
|
||||||
|
|
||||||
|
* Makefile.in (BUILTIN_ENCOBJS): substitued by autoconf.
|
||||||
|
|
||||||
|
* enc/Makefile.in: new file to compile external encoding sources.
|
||||||
|
|
||||||
|
* encoding.c (rb_enc_find_index): auto-load external encoding objects
|
||||||
|
as "ext/ENCODING_NAME". [ruby-dev:32606]
|
||||||
|
|
||||||
Sat Dec 15 13:04:30 2007 Tanaka Akira <akr@fsij.org>
|
Sat Dec 15 13:04:30 2007 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* vm_core.h (rb_thread_t): new member machine_stack_maxsize and
|
* vm_core.h (rb_thread_t): new member machine_stack_maxsize and
|
||||||
|
|
|
@ -51,6 +51,7 @@ DLDFLAGS = @LIBRUBY_DLDFLAGS@ $(EXTLDFLAGS) @ARCH_FLAG@
|
||||||
SOLIBS = @SOLIBS@
|
SOLIBS = @SOLIBS@
|
||||||
MAINLIBS = @MAINLIBS@
|
MAINLIBS = @MAINLIBS@
|
||||||
MINIOBJS = @MINIOBJS@ miniprelude.$(OBJEXT)
|
MINIOBJS = @MINIOBJS@ miniprelude.$(OBJEXT)
|
||||||
|
BUILTIN_ENCOBJS = @BUILTIN_ENCOBJS@
|
||||||
|
|
||||||
RUBY_INSTALL_NAME=@RUBY_INSTALL_NAME@
|
RUBY_INSTALL_NAME=@RUBY_INSTALL_NAME@
|
||||||
RUBY_SO_NAME=@RUBY_SO_NAME@
|
RUBY_SO_NAME=@RUBY_SO_NAME@
|
||||||
|
@ -93,6 +94,7 @@ ASFLAGS = @ASFLAGS@
|
||||||
|
|
||||||
OBJEXT = @OBJEXT@
|
OBJEXT = @OBJEXT@
|
||||||
ASMEXT = S
|
ASMEXT = S
|
||||||
|
DLEXT = @DLEXT@
|
||||||
MANTYPE = @MANTYPE@
|
MANTYPE = @MANTYPE@
|
||||||
|
|
||||||
INSTALLED_LIST= .installed.list
|
INSTALLED_LIST= .installed.list
|
||||||
|
|
|
@ -18,12 +18,6 @@ MAINOBJ = main.$(OBJEXT)
|
||||||
EXTOBJS =
|
EXTOBJS =
|
||||||
DLDOBJS = $(DMYEXT)
|
DLDOBJS = $(DMYEXT)
|
||||||
|
|
||||||
ENCOBJS = ascii.$(OBJEXT) \
|
|
||||||
euc_jp.$(OBJEXT) \
|
|
||||||
sjis.$(OBJEXT) \
|
|
||||||
unicode.$(OBJEXT) \
|
|
||||||
utf8.$(OBJEXT)
|
|
||||||
|
|
||||||
COMMONOBJS = array.$(OBJEXT) \
|
COMMONOBJS = array.$(OBJEXT) \
|
||||||
bignum.$(OBJEXT) \
|
bignum.$(OBJEXT) \
|
||||||
class.$(OBJEXT) \
|
class.$(OBJEXT) \
|
||||||
|
@ -79,7 +73,7 @@ COMMONOBJS = array.$(OBJEXT) \
|
||||||
thread.$(OBJEXT) \
|
thread.$(OBJEXT) \
|
||||||
cont.$(OBJEXT) \
|
cont.$(OBJEXT) \
|
||||||
id.$(OBJEXT) \
|
id.$(OBJEXT) \
|
||||||
$(ENCOBJS) \
|
$(BUILTIN_ENCOBJS) \
|
||||||
$(MISSING)
|
$(MISSING)
|
||||||
|
|
||||||
OBJS = dln.$(OBJEXT) \
|
OBJS = dln.$(OBJEXT) \
|
||||||
|
|
33
configure.in
33
configure.in
|
@ -1203,6 +1203,7 @@ n=`expr "$DLEXT2" : '.*'`; test "$n" -gt "$len" && len=$n
|
||||||
AC_DEFINE_UNQUOTED(DLEXT_MAXLEN, `expr $len + 1`)
|
AC_DEFINE_UNQUOTED(DLEXT_MAXLEN, `expr $len + 1`)
|
||||||
test ".$DLEXT" = "." || AC_DEFINE_UNQUOTED(DLEXT, ".$DLEXT")
|
test ".$DLEXT" = "." || AC_DEFINE_UNQUOTED(DLEXT, ".$DLEXT")
|
||||||
test ".$DLEXT2" = "." || AC_DEFINE_UNQUOTED(DLEXT2, ".$DLEXT2")
|
test ".$DLEXT2" = "." || AC_DEFINE_UNQUOTED(DLEXT2, ".$DLEXT2")
|
||||||
|
AC_SUBST(DLEXT)
|
||||||
|
|
||||||
AC_SUBST(STRIP)dnl
|
AC_SUBST(STRIP)dnl
|
||||||
if test "$with_dln_a_out" = yes; then
|
if test "$with_dln_a_out" = yes; then
|
||||||
|
@ -1578,7 +1579,7 @@ AC_SUBST(EXPORT_PREFIX)
|
||||||
AC_SUBST(MINIOBJS)
|
AC_SUBST(MINIOBJS)
|
||||||
AC_SUBST(THREAD_MODEL)
|
AC_SUBST(THREAD_MODEL)
|
||||||
|
|
||||||
MAKEFILES="Makefile `echo $FIRSTMAKEFILE | sed 's/:.*//'`"
|
MAKEFILES="Makefile `echo $FIRSTMAKEFILE | sed 's/:.*//'` enc/GNUmakefile"
|
||||||
MAKEFILES="`echo $MAKEFILES`"
|
MAKEFILES="`echo $MAKEFILES`"
|
||||||
AC_SUBST(MAKEFILES)
|
AC_SUBST(MAKEFILES)
|
||||||
|
|
||||||
|
@ -1734,7 +1735,37 @@ else
|
||||||
fi
|
fi
|
||||||
tr -d '\015' < largefile.h > confdefs.h
|
tr -d '\015' < largefile.h > confdefs.h
|
||||||
|
|
||||||
|
test -d enc || mkdir enc
|
||||||
|
BUILTIN_ENCS="`sed -n '/^BUILTIN_ENCS[ ]*=/{s///;:l;/\\\\$/N;s/\\\\\\n/ /;t l;p}' \"${srcdir}/enc/Makefile.in\"`"
|
||||||
|
BUILTIN_ENCS="`echo $BUILTIN_ENCS`"
|
||||||
|
EXTERNAL_ENCS=
|
||||||
|
for e in "${srcdir}/enc"/*.c; do
|
||||||
|
e=`basename "$e" .c`
|
||||||
|
case " $BUILTIN_ENCS " in
|
||||||
|
*" $e "*) ;;
|
||||||
|
*) EXTERNAL_ENCS="$EXTERNAL_ENCS $e";;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
echo $EX
|
||||||
|
BUILTIN_ENCOBJS=
|
||||||
|
for e in $BUILTIN_ENCS; do BUILTIN_ENCOBJS="$BUILTIN_ENCOBJS $e"'.$(OBJEXT)'; done
|
||||||
|
EXTERNAL_ENCOBJS=
|
||||||
|
for e in $EXTERNAL_ENCS; do EXTERNAL_ENCOBJS="$EXTERNAL_ENCOBJS $e"'.$(OBJEXT)'; done
|
||||||
|
ENCSOS=
|
||||||
|
for e in $EXTERNAL_ENCS; do ENCSOS="$ENCSOS "'$(ENCSODIR)/'"$e"'.$(DLEXT)'; done
|
||||||
|
|
||||||
|
AC_SUBST(BUILTIN_ENCOBJS)
|
||||||
|
AC_SUBST(EXTERNAL_ENCOBJS)
|
||||||
|
AC_SUBST(ENCSOS)
|
||||||
|
|
||||||
AC_CONFIG_FILES($FIRSTMAKEFILE)
|
AC_CONFIG_FILES($FIRSTMAKEFILE)
|
||||||
|
AC_CONFIG_FILES(enc/Makefile, [{
|
||||||
|
for e in $ENCS; do
|
||||||
|
echo ''
|
||||||
|
echo '$(ENCSODIR)/'"$e"'.$(DLEXT): '"$e"'.$(OBJEXT)'
|
||||||
|
echo ' $(LDSHARED) $(DLDFLAGS) $< $(OUTFLAG)$''@'
|
||||||
|
done >> enc/Makefile
|
||||||
|
}], [ENCS="$EXTERNAL_ENCS"])
|
||||||
AC_CONFIG_FILES(Makefile, [{
|
AC_CONFIG_FILES(Makefile, [{
|
||||||
sed '/^MISSING/s/\$U\././g' Makefile
|
sed '/^MISSING/s/\$U\././g' Makefile
|
||||||
echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
|
echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
|
||||||
|
|
33
enc/Makefile.in
Normal file
33
enc/Makefile.in
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
srcdir = @srcdir@
|
||||||
|
top_srcdir = $(srcdir:/enc=)
|
||||||
|
arch = @arch@
|
||||||
|
EXTOUT = $(top_srcdir)/@EXTOUT@
|
||||||
|
hdrdir = $(top_srcdir)/include
|
||||||
|
arch_hdrdir = $(EXTOUT)/include/$(arch)
|
||||||
|
VPATH = $(arch_hdrdir)/ruby:$(hdrdir)/ruby:$(top_srcdir):$(srcdir)
|
||||||
|
ENCSODIR = $(EXTOUT)/$(arch)/enc
|
||||||
|
DLEXT = @DLEXT@
|
||||||
|
OBJEXT = @OBJEXT@
|
||||||
|
|
||||||
|
BUILTIN_ENCS = ascii \
|
||||||
|
euc_jp sjis \
|
||||||
|
unicode utf8
|
||||||
|
|
||||||
|
ENCOBJS = @EXTERNAL_ENCOBJS@
|
||||||
|
ENCSOS = @ENCSOS@
|
||||||
|
empty =
|
||||||
|
CC = @CC@
|
||||||
|
OUTFLAG = @OUTFLAG@$(empty)
|
||||||
|
CFLAGS = @CFLAGS@ @ARCH_FLAG@
|
||||||
|
XCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(top_srcdir) @XCFLAGS@
|
||||||
|
CPPFLAGS = @CPPFLAGS@
|
||||||
|
LDFLAGS = @STATIC@ $(CFLAGS) @LDFLAGS@
|
||||||
|
XLDFLAGS = @XLDFLAGS@ $(EXTLDFLAGS)
|
||||||
|
LIBS = @LIBS@ $(EXTLIBS)
|
||||||
|
LDSHARED = @LDSHARED@
|
||||||
|
DLDFLAGS = @DLDFLAGS@ $(EXTLDFLAGS) @ARCH_FLAG@
|
||||||
|
|
||||||
|
all: $(ENCOBJS) $(ENCSOS)
|
||||||
|
|
||||||
|
.c.@OBJEXT@:
|
||||||
|
$(CC) $(CFLAGS) $(XCFLAGS) $(CPPFLAGS) -c $<
|
24
encoding.c
24
encoding.c
|
@ -155,7 +155,7 @@ enc_register(const char *name, rb_encoding *encoding)
|
||||||
}
|
}
|
||||||
|
|
||||||
static VALUE enc_based_encoding(VALUE);
|
static VALUE enc_based_encoding(VALUE);
|
||||||
#define rb_enc_registered(name) rb_enc_find_index(name)
|
int rb_enc_registered(const char *name);
|
||||||
|
|
||||||
int
|
int
|
||||||
rb_enc_register(const char *name, rb_encoding *encoding)
|
rb_enc_register(const char *name, rb_encoding *encoding)
|
||||||
|
@ -252,7 +252,7 @@ rb_enc_from_index(int index)
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
rb_enc_find_index(const char *name)
|
rb_enc_registered(const char *name)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
st_data_t alias = 0;
|
st_data_t alias = 0;
|
||||||
|
@ -278,6 +278,26 @@ rb_enc_find_index(const char *name)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
require_enc(VALUE enclib)
|
||||||
|
{
|
||||||
|
return rb_require_safe(enclib, rb_safe_level());
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
rb_enc_find_index(const char *name)
|
||||||
|
{
|
||||||
|
int i = rb_enc_registered(name);
|
||||||
|
if (i < 0) {
|
||||||
|
VALUE enclib = rb_sprintf("enc/%s", name);
|
||||||
|
OBJ_FREEZE(enclib);
|
||||||
|
if (RTEST(rb_protect(require_enc, enclib, 0)))
|
||||||
|
i = rb_enc_registered(name);
|
||||||
|
rb_set_errinfo(Qnil);
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
rb_encoding *
|
rb_encoding *
|
||||||
rb_enc_find(const char *name)
|
rb_enc_find(const char *name)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Reference in a new issue