mirror of
https://github.com/ruby/ruby.git
synced 2026-01-27 04:24:23 +00:00
Gererate prism source files dependencies from template.rb
Update included file list automatically.
This commit is contained in:
parent
f5efd0e743
commit
d0d7f55005
14
common.mk
14
common.mk
@ -205,13 +205,6 @@ $(PRISM_BUILD_DIR)/.time $(PRISM_BUILD_DIR)/util/.time:
|
||||
$(Q) $(MAKEDIRS) $(@D)
|
||||
@$(NULLCMD) > $@
|
||||
|
||||
$(PRISM_SRCDIR)/srcs.mk: $(HAVE_BASERUBY:yes=$(PRISM_SRCDIR)/templates/template.rb) \
|
||||
$(HAVE_BASERUBY:yes=$(PRISM_SRCDIR)/generate-srcs.mk.rb)
|
||||
$(ECHO) Updating prism/srcs.mk
|
||||
$(BASERUBY) $(PRISM_SRCDIR)/generate-srcs.mk.rb > $@
|
||||
|
||||
srcs: $(PRISM_SRCDIR)/srcs.mk
|
||||
|
||||
EXPORTOBJS = $(DLNOBJ) \
|
||||
localeinit.$(OBJEXT) \
|
||||
loadpath.$(OBJEXT) \
|
||||
@ -1221,7 +1214,6 @@ incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}known_errors.inc \
|
||||
{$(VPATH)}vm_call_iseq_optimized.inc $(srcdir)/revision.h \
|
||||
$(REVISION_H) \
|
||||
$(UNICODE_DATA_HEADERS) $(ENC_HEADERS) \
|
||||
$(top_srcdir)/prism/ast.h $(top_srcdir)/prism/diagnostic.h \
|
||||
{$(VPATH)}id.h {$(VPATH)}probes.dmyh
|
||||
|
||||
insns: $(INSNS)
|
||||
@ -1310,6 +1302,11 @@ $(REVISION_H)$(yes_baseruby:yes=~disabled~):
|
||||
# uncommon.mk: $(REVISION_H)
|
||||
# $(MKFILES): $(REVISION_H)
|
||||
|
||||
# $(common_mk_includes) is set by config.status or GNUmakefile
|
||||
common_mk__$(gnumake:yes=artifact)_ = uncommon.mk
|
||||
common_mk_$(gnumake)_artifact_ = $(MKFILES)
|
||||
$(common_mk__artifact_): $(srcdir)/common.mk $(common_mk_includes)
|
||||
|
||||
ripper_srcs: $(RIPPER_SRCS)
|
||||
|
||||
$(RIPPER_SRCS): $(srcdir)/parse.y $(srcdir)/defs/id.def
|
||||
@ -1982,3 +1979,4 @@ $(CROSS_COMPILING:yes=)builtin.$(OBJEXT): {$(VPATH)}mini_builtin.c
|
||||
$(CROSS_COMPILING:yes=)builtin.$(OBJEXT): {$(VPATH)}miniprelude.c
|
||||
|
||||
!include $(srcdir)/prism/srcs.mk
|
||||
!include $(srcdir)/depend
|
||||
|
||||
10
configure.ac
10
configure.ac
@ -4698,9 +4698,12 @@ AC_CONFIG_FILES(Makefile:template/Makefile.in, [
|
||||
sed '/^MISSING/s/\$U\././g;/^VCS *=/s#@VCS@#'"$VCS"'#;/^VCSUP *=/s#@VCSUP@#'"$VCSUP"'#' Makefile
|
||||
echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
|
||||
AS_IF([test "$gnumake" != yes], [
|
||||
echo ['$(MKFILES): $(srcdir)/common.mk $(srcdir)/depend $(srcdir)/prism/srcs.mk']
|
||||
sed ['s/{\$([^(){}]*)[^{}]*}//g;/^!/d'] ${srcdir}/common.mk ${srcdir}/depend
|
||||
cat ${srcdir}/prism/srcs.mk
|
||||
# extract NMake-style include list
|
||||
set = `sed -n 's/^!include *//p' ${srcdir}/common.mk`
|
||||
echo common_mk_includes "@S|@*" # generate the macro assignment
|
||||
shift
|
||||
common_mk_includes="`echo \"@S|@*\" | sed 's|\$(srcdir)|.|g'`"
|
||||
(cd ${srcdir} && sed -f tool/prereq.status common.mk ${common_mk_includes})
|
||||
AS_IF([test "$YJIT_SUPPORT" = yes], [
|
||||
cat ${srcdir}/yjit/not_gmake.mk
|
||||
echo ['$(MKFILES): ${srcdir}/yjit/not_gmake.mk']
|
||||
@ -4723,6 +4726,7 @@ AC_CONFIG_FILES(Makefile:template/Makefile.in, [
|
||||
]) &&
|
||||
test -z "`${MAKE-make} -f $tmpgmk info-program | grep '^PROGRAM=ruby$'`" &&
|
||||
echo 'ruby: $(PROGRAM);' >> $tmpmk
|
||||
rm -f uncommon.mk # remove stale uncommon.mk, it should be updated by GNUmakefile
|
||||
test "$tmpmk" = "$tmpgmk" || rm -f "$tmpgmk"
|
||||
]) && mv -f $tmpmk Makefile],
|
||||
[EXEEXT='$EXEEXT' MAKE='${MAKE-make}' gnumake='$gnumake' GIT='$GIT' YJIT_SUPPORT='$YJIT_SUPPORT'])
|
||||
|
||||
142
prism/srcs.mk
Normal file
142
prism/srcs.mk
Normal file
@ -0,0 +1,142 @@
|
||||
PRISM_TEMPLATES_DIR = $(PRISM_SRCDIR)/templates
|
||||
PRISM_TEMPLATE = $(PRISM_TEMPLATES_DIR)/template.rb
|
||||
PRISM_CONFIG = $(PRISM_SRCDIR)/config.yml
|
||||
|
||||
srcs uncommon.mk: prism/.srcs.mk.time
|
||||
|
||||
prism/.srcs.mk.time:
|
||||
prism/$(HAVE_BASERUBY:yes=.srcs.mk.time): \
|
||||
$(PRISM_SRCDIR)/templates/template.rb \
|
||||
$(PRISM_SRCDIR)/srcs.mk.in
|
||||
$(BASERUBY) $(tooldir)/generic_erb.rb -c -t$@ -o $(PRISM_SRCDIR)/srcs.mk $(PRISM_SRCDIR)/srcs.mk.in
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(PRISM_SRCDIR)/srcs.mk
|
||||
|
||||
realclean-srcs-local:: realclean-prism-srcs
|
||||
|
||||
main srcs: $(srcdir)/prism/api_node.c
|
||||
$(srcdir)/prism/api_node.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/ext/prism/api_node.c.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) ext/prism/api_node.c $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/prism/api_node.c
|
||||
|
||||
main incs: $(srcdir)/prism/ast.h
|
||||
$(srcdir)/prism/ast.h: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/include/prism/ast.h.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) include/prism/ast.h $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/prism/ast.h
|
||||
|
||||
main incs: $(srcdir)/prism/diagnostic.h
|
||||
$(srcdir)/prism/diagnostic.h: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/include/prism/diagnostic.h.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) include/prism/diagnostic.h $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/prism/diagnostic.h
|
||||
|
||||
main srcs: $(srcdir)/lib/prism/compiler.rb
|
||||
$(srcdir)/lib/prism/compiler.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/compiler.rb.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/compiler.rb $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/lib/prism/compiler.rb
|
||||
|
||||
main srcs: $(srcdir)/lib/prism/dispatcher.rb
|
||||
$(srcdir)/lib/prism/dispatcher.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/dispatcher.rb.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/dispatcher.rb $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/lib/prism/dispatcher.rb
|
||||
|
||||
main srcs: $(srcdir)/lib/prism/dot_visitor.rb
|
||||
$(srcdir)/lib/prism/dot_visitor.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/dot_visitor.rb.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/dot_visitor.rb $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/lib/prism/dot_visitor.rb
|
||||
|
||||
main srcs: $(srcdir)/lib/prism/dsl.rb
|
||||
$(srcdir)/lib/prism/dsl.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/dsl.rb.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/dsl.rb $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/lib/prism/dsl.rb
|
||||
|
||||
main srcs: $(srcdir)/lib/prism/inspect_visitor.rb
|
||||
$(srcdir)/lib/prism/inspect_visitor.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/inspect_visitor.rb.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/inspect_visitor.rb $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/lib/prism/inspect_visitor.rb
|
||||
|
||||
main srcs: $(srcdir)/lib/prism/mutation_compiler.rb
|
||||
$(srcdir)/lib/prism/mutation_compiler.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/mutation_compiler.rb.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/mutation_compiler.rb $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/lib/prism/mutation_compiler.rb
|
||||
|
||||
main srcs: $(srcdir)/lib/prism/node.rb
|
||||
$(srcdir)/lib/prism/node.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/node.rb.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/node.rb $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/lib/prism/node.rb
|
||||
|
||||
main srcs: $(srcdir)/lib/prism/reflection.rb
|
||||
$(srcdir)/lib/prism/reflection.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/reflection.rb.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/reflection.rb $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/lib/prism/reflection.rb
|
||||
|
||||
main srcs: $(srcdir)/lib/prism/serialize.rb
|
||||
$(srcdir)/lib/prism/serialize.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/serialize.rb.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/serialize.rb $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/lib/prism/serialize.rb
|
||||
|
||||
main srcs: $(srcdir)/lib/prism/visitor.rb
|
||||
$(srcdir)/lib/prism/visitor.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/visitor.rb.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/visitor.rb $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/lib/prism/visitor.rb
|
||||
|
||||
main srcs: $(srcdir)/prism/diagnostic.c
|
||||
$(srcdir)/prism/diagnostic.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/src/diagnostic.c.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) src/diagnostic.c $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/prism/diagnostic.c
|
||||
|
||||
main srcs: $(srcdir)/prism/node.c
|
||||
$(srcdir)/prism/node.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/src/node.c.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) src/node.c $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/prism/node.c
|
||||
|
||||
main srcs: $(srcdir)/prism/prettyprint.c
|
||||
$(srcdir)/prism/prettyprint.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/src/prettyprint.c.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) src/prettyprint.c $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/prism/prettyprint.c
|
||||
|
||||
main srcs: $(srcdir)/prism/serialize.c
|
||||
$(srcdir)/prism/serialize.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/src/serialize.c.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) src/serialize.c $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/prism/serialize.c
|
||||
|
||||
main srcs: $(srcdir)/prism/token_type.c
|
||||
$(srcdir)/prism/token_type.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/src/token_type.c.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) src/token_type.c $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(srcdir)/prism/token_type.c
|
||||
40
prism/srcs.mk.in
Normal file
40
prism/srcs.mk.in
Normal file
@ -0,0 +1,40 @@
|
||||
<% # -*- ruby -*-
|
||||
require_relative 'templates/template'
|
||||
|
||||
script = File.basename(__FILE__)
|
||||
srcs = output ? File.basename(output) : script.chomp('.in')
|
||||
mk = 'uncommon.mk'
|
||||
|
||||
# %>
|
||||
PRISM_TEMPLATES_DIR = $(PRISM_SRCDIR)/templates
|
||||
PRISM_TEMPLATE = $(PRISM_TEMPLATES_DIR)/template.rb
|
||||
PRISM_CONFIG = $(PRISM_SRCDIR)/config.yml
|
||||
|
||||
srcs <%=%><%=mk%>: prism/.srcs.mk.time
|
||||
|
||||
prism/.srcs.mk.time:
|
||||
prism/$(HAVE_BASERUBY:yes=.srcs.mk.time): \
|
||||
$(PRISM_SRCDIR)/templates/template.rb \
|
||||
$(PRISM_SRCDIR)/<%=%><%=script%>
|
||||
$(BASERUBY) $(tooldir)/generic_erb.rb -c -t$@ -o $(PRISM_SRCDIR)/<%=%><%=srcs%> $(PRISM_SRCDIR)/<%=%><%=script%>
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) $(PRISM_SRCDIR)/<%=%><%=srcs%>
|
||||
|
||||
realclean-srcs-local:: realclean-prism-srcs
|
||||
<% Prism::Template::TEMPLATES.map do |t|
|
||||
/\.(?:[ch]|rb)\z/ =~ t or next
|
||||
s = '$(srcdir)/' + t.sub(%r[\A(?:(src)|ext|include)/]) {$1 && 'prism/'}
|
||||
s.sub!(%r[\A\$(srcdir)/prism/], '$(PRISM_SRCDIR)/')
|
||||
target = s.end_with?('.h') ? 'incs' : 'srcs'
|
||||
# %>
|
||||
|
||||
main <%=%><%=target%>: <%=%><%=s%>
|
||||
<%=%><%=s%>: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/<%=%><%=t%>.erb
|
||||
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) <%=%><%=t%> $@
|
||||
|
||||
realclean-prism-srcs::
|
||||
$(RM) <%=%><%=s%>
|
||||
<%
|
||||
end
|
||||
# %>
|
||||
@ -27,5 +27,8 @@ override UNICODE_TABLES_DEPENDENTS = \
|
||||
$(UNICODE_TABLES_DATA_FILES)))),\
|
||||
force,none)
|
||||
|
||||
# extract NMake-style include list
|
||||
$(eval common_mk_includes := $(shell sed -n 's/^!include *//p' $(srcdir)/common.mk))
|
||||
|
||||
-include uncommon.mk
|
||||
include $(srcdir)/defs/gmake.mk
|
||||
|
||||
@ -426,8 +426,8 @@ $(MKFILES): config.status $(srcdir)/version.h $(ABI_VERSION_HDR)
|
||||
$(MAKE) -f conftest.mk | grep '^AUTO_REMAKE$$' >/dev/null 2>&1 || \
|
||||
{ echo "$@ updated, restart."; exit 1; }
|
||||
|
||||
uncommon.mk: $(srcdir)/common.mk $(srcdir)/depend
|
||||
sed -f $(srcdir)/tool/prereq.status $(srcdir)/common.mk $(srcdir)/depend > $@
|
||||
uncommon.mk: $(srcdir)/tool/prereq.status
|
||||
sed -f $(srcdir)/tool/prereq.status $(srcdir)/common.mk $(common_mk_includes) > $@
|
||||
|
||||
.PHONY: reconfig
|
||||
reconfig-args = $(srcdir)/$(CONFIGURE) $(yes_silence:yes=--silent) $(configure_args)
|
||||
|
||||
@ -480,7 +480,14 @@ def package(vcs, rev, destdir, tmp = nil)
|
||||
vars["UNICODE_VERSION"] = $unicode_version if $unicode_version
|
||||
args = vars.dup
|
||||
mk.gsub!(/@([A-Za-z_]\w*)@/) {args.delete($1); vars[$1] || ENV[$1]}
|
||||
mk << commonmk.gsub(/\{\$([^(){}]*)[^{}]*\}/, "").gsub(/^!/, '-').sub(/^revision\.tmp::$/, '\& Makefile')
|
||||
commonmk.gsub!(/^!(?:include \$\(srcdir\)\/(.*))?/) do
|
||||
if inc = $1 and File.exist?(inc)
|
||||
File.binread(inc).gsub(/^!/, '# !')
|
||||
else
|
||||
"#"
|
||||
end
|
||||
end
|
||||
mk << commonmk.gsub(/\{\$([^(){}]*)[^{}]*\}/, "").sub(/^revision\.tmp::$/, '\& Makefile')
|
||||
mk << <<-'APPEND'
|
||||
|
||||
update-download:: touch-unicode-files
|
||||
|
||||
@ -42,4 +42,4 @@ s,@srcdir@,.,g
|
||||
|
||||
s/@[A-Za-z][A-Za-z0-9_]*@//g
|
||||
s/{\$([^(){}]*)}//g
|
||||
s/^!/-/
|
||||
s/^!/#!/
|
||||
|
||||
@ -570,7 +570,6 @@ ACTIONS_ENDGROUP = @::
|
||||
ABI_VERSION_HDR = $(hdrdir)/ruby/internal/abi.h
|
||||
|
||||
!include $(srcdir)/common.mk
|
||||
!include $(srcdir)/depend
|
||||
|
||||
!ifdef SCRIPTPROGRAMS
|
||||
!else if [echo>scriptbin.mk SCRIPTPROGRAMS = \]
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user