[前][次][番号順一覧][スレッド一覧]

ruby-changes:2747

From: ko1@a...
Date: 15 Dec 2007 18:57:13 +0900
Subject: [ruby-changes:2747] nobu - Ruby:r14238 (trunk): * configure.in (enc/Makefile): add external encoding objects list.

nobu	2007-12-15 18:56:59 +0900 (Sat, 15 Dec 2007)

  New Revision: 14238

  Added files:
    trunk/enc/Makefile.in
  Modified files:
    trunk/ChangeLog
    trunk/Makefile.in
    trunk/common.mk
    trunk/configure.in
    trunk/encoding.c

  Log:
    * 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]


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/Makefile.in?r1=14238&r2=14237
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14238&r2=14237
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/encoding.c?r1=14238&r2=14237
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enc/Makefile.in?revision=14238&view=markup
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/enc/Makefile.in?r1=14238&r2=14237
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/configure.in?r1=14238&r2=14237
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/common.mk?r1=14238&r2=14237

Index: encoding.c
===================================================================
--- encoding.c	(revision 14237)
+++ encoding.c	(revision 14238)
@@ -155,7 +155,7 @@
 }
 
 static VALUE enc_based_encoding(VALUE);
-#define rb_enc_registered(name) rb_enc_find_index(name)
+int rb_enc_registered(const char *name);
 
 int
 rb_enc_register(const char *name, rb_encoding *encoding)
@@ -252,7 +252,7 @@
 }
 
 int
-rb_enc_find_index(const char *name)
+rb_enc_registered(const char *name)
 {
     int i;
     st_data_t alias = 0;
@@ -278,6 +278,26 @@
     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_enc_find(const char *name)
 {
Index: configure.in
===================================================================
--- configure.in	(revision 14237)
+++ configure.in	(revision 14238)
@@ -1203,6 +1203,7 @@
 AC_DEFINE_UNQUOTED(DLEXT_MAXLEN, `expr $len + 1`)
 test ".$DLEXT"  = "." || AC_DEFINE_UNQUOTED(DLEXT,  ".$DLEXT")
 test ".$DLEXT2" = "." || AC_DEFINE_UNQUOTED(DLEXT2, ".$DLEXT2")
+AC_SUBST(DLEXT)
 
 AC_SUBST(STRIP)dnl
 if test "$with_dln_a_out" = yes; then
@@ -1578,7 +1579,7 @@
 AC_SUBST(MINIOBJS)
 AC_SUBST(THREAD_MODEL)
 
-MAKEFILES="Makefile `echo $FIRSTMAKEFILE | sed 's/:.*//'`"
+MAKEFILES="Makefile `echo $FIRSTMAKEFILE | sed 's/:.*//'` enc/GNUmakefile"
 MAKEFILES="`echo $MAKEFILES`"
 AC_SUBST(MAKEFILES)
 
@@ -1734,7 +1735,37 @@
 fi
 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(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, [{
 	sed '/^MISSING/s/\$U\././g' Makefile
 	echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14237)
+++ ChangeLog	(revision 14238)
@@ -1,3 +1,16 @@
+Sat Dec 15 18:56:57 2007  Nobuyoshi Nakada  <nobu@r...>
+
+	* 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@f...>
 
 	* vm_core.h (rb_thread_t): new member machine_stack_maxsize and
Index: enc/Makefile.in
===================================================================
--- enc/Makefile.in	(revision 0)
+++ enc/Makefile.in	(revision 14238)
@@ -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 $<

Property changes on: enc/Makefile.in
___________________________________________________________________
Name: svn:keywords
   + Author Date Id Revision
Name: svn:eol-style
   + LF

Index: common.mk
===================================================================
--- common.mk	(revision 14237)
+++ common.mk	(revision 14238)
@@ -18,12 +18,6 @@
 EXTOBJS	      = 
 DLDOBJS	      = $(DMYEXT)
 
-ENCOBJS       = ascii.$(OBJEXT) \
-		euc_jp.$(OBJEXT) \
-		sjis.$(OBJEXT) \
-		unicode.$(OBJEXT) \
-		utf8.$(OBJEXT)
-
 COMMONOBJS    = array.$(OBJEXT) \
 		bignum.$(OBJEXT) \
 		class.$(OBJEXT) \
@@ -79,7 +73,7 @@
 		thread.$(OBJEXT) \
 		cont.$(OBJEXT) \
 		id.$(OBJEXT) \
-		$(ENCOBJS) \
+		$(BUILTIN_ENCOBJS) \
 		$(MISSING)
 
 OBJS          = dln.$(OBJEXT) \
Index: Makefile.in
===================================================================
--- Makefile.in	(revision 14237)
+++ Makefile.in	(revision 14238)
@@ -51,6 +51,7 @@
 SOLIBS = @SOLIBS@
 MAINLIBS = @MAINLIBS@
 MINIOBJS = @MINIOBJS@ miniprelude.$(OBJEXT)
+BUILTIN_ENCOBJS = @BUILTIN_ENCOBJS@
 
 RUBY_INSTALL_NAME=@RUBY_INSTALL_NAME@
 RUBY_SO_NAME=@RUBY_SO_NAME@
@@ -93,6 +94,7 @@
 
 OBJEXT        = @OBJEXT@
 ASMEXT        = S
+DLEXT         = @DLEXT@
 MANTYPE	      = @MANTYPE@
 
 INSTALLED_LIST= .installed.list

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]