diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-24 03:49:56 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-24 03:49:56 +0000 |
commit | 8d292a08dfb79ec9a55673eb570f1c5128cc47ec (patch) | |
tree | 5116fc0a662c3359a13e56336fed988a14ca9270 /enc | |
parent | 7c45c615819e9d8bb8fb947ec972e48cd45d561d (diff) | |
download | ruby-8d292a08dfb79ec9a55673eb570f1c5128cc47ec.tar.gz |
* Makefile.in, configure.in, lib/mkmf.rb, */Makefile.sub: specify
compiled output file name explicitly.
* enc/Makefile.in, enc/depend: now makes compiler to put generated
files under directories corresnponding to the each source.
enc/trans supported.
* enc/make_encmake.rb: evaluates depend file before Makefile.in so
that the former can influence to CONFIG.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14573 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'enc')
-rw-r--r-- | enc/Makefile.in | 16 | ||||
-rw-r--r-- | enc/depend | 67 | ||||
-rw-r--r-- | enc/make_encmake.rb | 12 |
3 files changed, 57 insertions, 38 deletions
diff --git a/enc/Makefile.in b/enc/Makefile.in index 21be8ae02d..948cd26c2e 100644 --- a/enc/Makefile.in +++ b/enc/Makefile.in @@ -1,12 +1,14 @@ -srcdir = @srcdir@ +encsrcdir = @srcdir@ topdir = . libdir = @libdir@ -top_srcdir = $(srcdir:/enc=) +top_srcdir = $(encsrcdir:/enc=) +srcdir = $(top_srcdir) arch = @arch@ EXTOUT = @EXTOUT@ -hdrdir = $(top_srcdir)/include +hdrdir = $(srcdir)/include arch_hdrdir = $(EXTOUT)/include/$(arch) ENCSODIR = $(EXTOUT)/$(arch)/enc +TRANSSODIR = $(ENCSODIR)/trans DLEXT = @DLEXT@ OBJEXT = @OBJEXT@ @@ -22,6 +24,7 @@ LIBRUBYARG_STATIC = $(LIBRUBYARG_SHARED) empty = CC = @CC@ OUTFLAG = @OUTFLAG@$(empty) +COUTFLAG = @COUTFLAG@$(empty) CFLAGS = $(CCDLFLAGS) @CFLAGS@ @ARCH_FLAG@ CCDLFLAGS = @CCDLFLAGS@ INCFLAGS = -I. -I$(arch_hdrdir) -I$(hdrdir) -I$(top_srcdir) @@ -34,3 +37,10 @@ LDSHARED = @LDSHARED@ DLDFLAGS = @DLDFLAGS@ $(EXTLDFLAGS) @ARCH_FLAG@ RM = @RM@ + +all: + +clean: + +distclean: clean + $(RM) enc.mk diff --git a/enc/depend b/enc/depend index 5c81a7b1e2..099d827ed5 100644 --- a/enc/depend +++ b/enc/depend @@ -1,54 +1,63 @@ +% deffile = (true if /\$\(DEFFILE\)/ =~ CONFIG["LINK_SO"]) % encs = Dir.open($srcdir) {|d| d.grep(/.+\.c\z/)} - BUILTIN_ENCS % encs.each {|e| e.chomp!(".c")} -% encs = encs.sort_by {|e| e.split(/(\d+)/).map {|n| Integer(n) rescue n}} - -VPATH = <%=%w[$(arch_hdrdir)/ruby $(hdrdir)/ruby $(top_srcdir) $(srcdir)].join(CONFIG["PATH_SEPARATOR"])%> +% alphanumeric_order = proc {|e| e.split(/(\d+)/).map {|n| Integer(n) rescue n}} +% encs = encs.sort_by(&alphanumeric_order) +% trans = Dir.open($srcdir+"/trans") {|d| d.select {|e| e.chomp!('.c')}} +% trans = trans.sort_by(&alphanumeric_order) +% trans.map! {|e| "trans/#{e}"} +% dependencies = encs + trans + +VPATH = <%=%w[$(arch_hdrdir)/ruby $(hdrdir)/ruby $(srcdir) $(encsrcdir)].join(CONFIG["PATH_SEPARATOR"])%> LIBPATH = <%=libpathflag($DEFLIBPATH)%> -ENCOBJS = <%=encs.map {|e|"#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if encs.size>1%> -ENCDEFS = <%=encs.map {|e|"#{e}.def"}.join(" \\\n\t ") if DEFFILE%><%="\n" if encs.size>1%> +ENCOBJS = <%=encs.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if encs.size>1%> +ENCDEFS = <%=encs.map {|e|"enc/#{e}.def"}.join(" \\\n\t ") if deffile%><%="\n" if encs.size>1%> ENCSOS = <%=encs.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%> -all: $(ENCSOS) +TRANSOBJS = <%=trans.map {|e|"enc/#{e}.$(OBJEXT)"}.join(" \\\n\t ")%><%="\n" if trans.size>1%> +TRANSDEFS = <%=trans.map {|e|"enc/#{e}.def"}.join(" \\\n\t ") if deffile%><%="\n" if trans.size>1%> +TRANSSOS = <%=trans.map {|e|"$(ENCSODIR)/#{e}.$(DLEXT)"}.join(" \\\n\t ")%> + +all: $(ENCSOS) $(TRANSSOS) % COMPILE_RULES.each do |rule| <%= rule % %w[c $(OBJEXT)] %> <%=COMPILE_C%> % end -% unless encs.empty? +% unless encs.empty? or trans.empty? +% unless encs.empty? $(ENCOBJS): regenc.h oniguruma.h config.h defines.h - -% encs.each do |e| -<%=e%>.so: $(ENCSODIR)/<%=e%>.$(DLEXT) -% end +% end +% unless trans.empty? +$(TRANSOBJS): ruby.h intern.h config.h defines.h transcode_data.h +% end % end % link_so = LINK_SO.gsub(/\n/, "\n\t") -% encs.each do |e| -% deps = "#{e}.$(OBJEXT)" -% deps << " #{e}-$(arch).def" if DEFFILE -$(ENCSODIR)/<%=e%>.$(DLEXT): <%=deps%> - <%=link_so.sub(/\$\(OBJS\)/, deps)%> - -% end -% if DEFFILE -% encs.each do |e| -<%=e%>-$(arch).def: enc.mk - echo EXPORTS > $@ - echo <%=EXPORT_PREFIX%>Init_<%=e%> >> $@ - +% link_so.gsub!(/(-(?:implib|pdb):\S+)-\$\(arch\)\./, '\1.') +% dependencies.each do |e| +% obj = "enc/#{e}.$(OBJEXT)" +% df = ("enc/#{e}.def" if deffile) +$(ENCSODIR)/<%=e%>.$(DLEXT): <%=obj%> +% if df + echo EXPORTS > <%=df%> + echo <%=EXPORT_PREFIX%>Init_<%=File.basename(e)%> >> <%=df%> % end + <%=link_so.sub(/\$\(OBJS\)/) {obj}.sub(/\$\(DEFFILE\)/) {df}.gsub(/-(?:implib|pdb):/) {|s|"#{s}enc/#{e.sub(/[^\/]+\z/, '')}"}%> + % end -% encs.each do |e| -<%=e%>.$(OBJEXT): <%=e%>.c +% dependencies.each do |e| +enc/<%=e%>.$(OBJEXT): $(srcdir)/enc/<%=e%>.c + <%=COMPILE_C.sub(/\$\(<(?:.*)\)/) {"$(srcdir)/enc/#{e}.c"}%> % end clean: $(RM) $(ENCSOS) $(RM) $(ENCDEFS) $(RM) $(ENCOBJS) - -distclean: clean - $(RM) enc.mk + $(RM) $(TRANSSOS) + $(RM) $(TRANSDEFS) + $(RM) $(TRANSOBJS) diff --git a/enc/make_encmake.rb b/enc/make_encmake.rb index 7b03149854..d491b28d6e 100644 --- a/enc/make_encmake.rb +++ b/enc/make_encmake.rb @@ -14,16 +14,16 @@ else BUILTIN_ENCS = [] end -DEFFILE = (true if CONFIG["DLDFLAGS"].sub!(/\s+-def:\$\(DEFFILE\)\s+/, ' ')) - -mkin = File.read(File.join($srcdir, "Makefile.in")) -mkin.gsub!(/@(#{CONFIG.keys.join('|')})@/) {CONFIG[$1]} if File.exist?(depend = File.join($srcdir, "depend")) erb = ERB.new(File.read(depend), nil, '%') erb.filename = depend tmp = erb.result(binding) - mkin << "\n#### depend ####\n\n" << depend_rules(tmp).join + dep = "\n#### depend ####\n\n" << depend_rules(tmp).join +else + dep = "" end +mkin = File.read(File.join($srcdir, "Makefile.in")) +mkin.gsub!(/@(#{CONFIG.keys.join('|')})@/) {CONFIG[$1]} open(ARGV[0], 'wb') {|f| - f.puts mkin + f.puts mkin, dep } |