Skip to content

Commit 715821b

Browse files
committed
Gererate prism source files dependencies from template.rb
1 parent 90cb2bb commit 715821b

8 files changed

Lines changed: 201 additions & 16 deletions

File tree

common.mk

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -205,13 +205,6 @@ $(PRISM_BUILD_DIR)/.time $(PRISM_BUILD_DIR)/util/.time:
205205
$(Q) $(MAKEDIRS) $(@D)
206206
@$(NULLCMD) > $@
207207

208-
$(PRISM_SRCDIR)/srcs.mk: $(HAVE_BASERUBY:yes=$(PRISM_SRCDIR)/templates/template.rb) \
209-
$(HAVE_BASERUBY:yes=$(PRISM_SRCDIR)/generate-srcs.mk.rb)
210-
$(ECHO) Updating prism/srcs.mk
211-
$(BASERUBY) $(PRISM_SRCDIR)/generate-srcs.mk.rb > $@
212-
213-
srcs: $(PRISM_SRCDIR)/srcs.mk
214-
215208
EXPORTOBJS = $(DLNOBJ) \
216209
localeinit.$(OBJEXT) \
217210
loadpath.$(OBJEXT) \
@@ -1221,7 +1214,6 @@ incs: $(INSNS) {$(VPATH)}node_name.inc {$(VPATH)}known_errors.inc \
12211214
{$(VPATH)}vm_call_iseq_optimized.inc $(srcdir)/revision.h \
12221215
$(REVISION_H) \
12231216
$(UNICODE_DATA_HEADERS) $(ENC_HEADERS) \
1224-
$(top_srcdir)/prism/ast.h $(top_srcdir)/prism/diagnostic.h \
12251217
{$(VPATH)}id.h {$(VPATH)}probes.dmyh
12261218

12271219
insns: $(INSNS)
@@ -1979,3 +1971,4 @@ $(CROSS_COMPILING:yes=)builtin.$(OBJEXT): {$(VPATH)}mini_builtin.c
19791971
$(CROSS_COMPILING:yes=)builtin.$(OBJEXT): {$(VPATH)}miniprelude.c
19801972

19811973
!include $(srcdir)/prism/srcs.mk
1974+
!include $(srcdir)/depend

configure.ac

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4670,6 +4670,12 @@ AS_IF([test ! -f "$srcdir/revision.h"], [
46704670
])
46714671
])
46724672

4673+
set X `sed -n 's/^!include *//p' ${srcdir}/common.mk`
4674+
shift
4675+
X_common_mk_includes="$*"
4676+
AC_SUBST(X_common_mk_includes)
4677+
common_mk_includes="`echo \"${X_common_mk_includes}\" | sed 's|\$(srcdir)|'\"${srcdir}|g\"`"
4678+
46734679
AS_IF([test x"$firstmf" != x], [
46744680
AC_CONFIG_FILES($firstmf:$firsttmpl, [], [firstmf="$firstmf" firsttmpl="$firsttmpl"])
46754681
])
@@ -4698,9 +4704,8 @@ AC_CONFIG_FILES(Makefile:template/Makefile.in, [
46984704
sed '/^MISSING/s/\$U\././g;/^VCS *=/s#@VCS@#'"$VCS"'#;/^VCSUP *=/s#@VCSUP@#'"$VCSUP"'#' Makefile
46994705
echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
47004706
AS_IF([test "$gnumake" != yes], [
4701-
echo ['$(MKFILES): $(srcdir)/common.mk $(srcdir)/depend $(srcdir)/prism/srcs.mk']
4702-
sed ['s/{\$([^(){}]*)[^{}]*}//g;/^!/d'] ${srcdir}/common.mk ${srcdir}/depend
4703-
cat ${srcdir}/prism/srcs.mk
4707+
echo ['$(MKFILES): $(srcdir)/common.mk '"${X_common_mk_includes}"]
4708+
sed ['s/{\$([^(){}]*)[^{}]*}//g;/^!/d'] ${srcdir}/common.mk ${common_mk_includes}
47044709
AS_IF([test "$YJIT_SUPPORT" = yes], [
47054710
cat ${srcdir}/yjit/not_gmake.mk
47064711
echo ['$(MKFILES): ${srcdir}/yjit/not_gmake.mk']

prism/srcs.mk

Lines changed: 142 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,142 @@
1+
PRISM_TEMPLATES_DIR = $(PRISM_SRCDIR)/templates
2+
PRISM_TEMPLATE = $(PRISM_TEMPLATES_DIR)/template.rb
3+
PRISM_CONFIG = $(PRISM_SRCDIR)/config.yml
4+
5+
srcs uncommon.mk: prism/.srcs.mk.time
6+
7+
prism/.srcs.mk.time:
8+
prism/$(HAVE_BASERUBY:yes=.srcs.mk.time): \
9+
$(PRISM_SRCDIR)/templates/template.rb \
10+
$(PRISM_SRCDIR)/srcs.mk.in
11+
$(BASERUBY) $(tooldir)/generic_erb.rb -c -t$@ -o $(PRISM_SRCDIR)/srcs.mk $(PRISM_SRCDIR)/srcs.mk.in
12+
13+
realclean-prism-srcs::
14+
$(RM) srcs.mk
15+
16+
realclean-srcs-local:: realclean-prism-srcs
17+
18+
main srcs: $(srcdir)/prism/api_node.c
19+
$(srcdir)/prism/api_node.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/ext/prism/api_node.c.erb
20+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) ext/prism/api_node.c $@
21+
22+
realclean-prism-srcs::
23+
$(RM) $(srcdir)/prism/api_node.c
24+
25+
main incs: $(srcdir)/prism/ast.h
26+
$(srcdir)/prism/ast.h: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/include/prism/ast.h.erb
27+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) include/prism/ast.h $@
28+
29+
realclean-prism-srcs::
30+
$(RM) $(srcdir)/prism/ast.h
31+
32+
main incs: $(srcdir)/prism/diagnostic.h
33+
$(srcdir)/prism/diagnostic.h: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/include/prism/diagnostic.h.erb
34+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) include/prism/diagnostic.h $@
35+
36+
realclean-prism-srcs::
37+
$(RM) $(srcdir)/prism/diagnostic.h
38+
39+
main srcs: $(srcdir)/lib/prism/compiler.rb
40+
$(srcdir)/lib/prism/compiler.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/compiler.rb.erb
41+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/compiler.rb $@
42+
43+
realclean-prism-srcs::
44+
$(RM) $(srcdir)/lib/prism/compiler.rb
45+
46+
main srcs: $(srcdir)/lib/prism/dispatcher.rb
47+
$(srcdir)/lib/prism/dispatcher.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/dispatcher.rb.erb
48+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/dispatcher.rb $@
49+
50+
realclean-prism-srcs::
51+
$(RM) $(srcdir)/lib/prism/dispatcher.rb
52+
53+
main srcs: $(srcdir)/lib/prism/dot_visitor.rb
54+
$(srcdir)/lib/prism/dot_visitor.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/dot_visitor.rb.erb
55+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/dot_visitor.rb $@
56+
57+
realclean-prism-srcs::
58+
$(RM) $(srcdir)/lib/prism/dot_visitor.rb
59+
60+
main srcs: $(srcdir)/lib/prism/dsl.rb
61+
$(srcdir)/lib/prism/dsl.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/dsl.rb.erb
62+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/dsl.rb $@
63+
64+
realclean-prism-srcs::
65+
$(RM) $(srcdir)/lib/prism/dsl.rb
66+
67+
main srcs: $(srcdir)/lib/prism/inspect_visitor.rb
68+
$(srcdir)/lib/prism/inspect_visitor.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/inspect_visitor.rb.erb
69+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/inspect_visitor.rb $@
70+
71+
realclean-prism-srcs::
72+
$(RM) $(srcdir)/lib/prism/inspect_visitor.rb
73+
74+
main srcs: $(srcdir)/lib/prism/mutation_compiler.rb
75+
$(srcdir)/lib/prism/mutation_compiler.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/mutation_compiler.rb.erb
76+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/mutation_compiler.rb $@
77+
78+
realclean-prism-srcs::
79+
$(RM) $(srcdir)/lib/prism/mutation_compiler.rb
80+
81+
main srcs: $(srcdir)/lib/prism/node.rb
82+
$(srcdir)/lib/prism/node.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/node.rb.erb
83+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/node.rb $@
84+
85+
realclean-prism-srcs::
86+
$(RM) $(srcdir)/lib/prism/node.rb
87+
88+
main srcs: $(srcdir)/lib/prism/reflection.rb
89+
$(srcdir)/lib/prism/reflection.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/reflection.rb.erb
90+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/reflection.rb $@
91+
92+
realclean-prism-srcs::
93+
$(RM) $(srcdir)/lib/prism/reflection.rb
94+
95+
main srcs: $(srcdir)/lib/prism/serialize.rb
96+
$(srcdir)/lib/prism/serialize.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/serialize.rb.erb
97+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/serialize.rb $@
98+
99+
realclean-prism-srcs::
100+
$(RM) $(srcdir)/lib/prism/serialize.rb
101+
102+
main srcs: $(srcdir)/lib/prism/visitor.rb
103+
$(srcdir)/lib/prism/visitor.rb: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/lib/prism/visitor.rb.erb
104+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) lib/prism/visitor.rb $@
105+
106+
realclean-prism-srcs::
107+
$(RM) $(srcdir)/lib/prism/visitor.rb
108+
109+
main srcs: $(srcdir)/prism/diagnostic.c
110+
$(srcdir)/prism/diagnostic.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/src/diagnostic.c.erb
111+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) src/diagnostic.c $@
112+
113+
realclean-prism-srcs::
114+
$(RM) $(srcdir)/prism/diagnostic.c
115+
116+
main srcs: $(srcdir)/prism/node.c
117+
$(srcdir)/prism/node.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/src/node.c.erb
118+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) src/node.c $@
119+
120+
realclean-prism-srcs::
121+
$(RM) $(srcdir)/prism/node.c
122+
123+
main srcs: $(srcdir)/prism/prettyprint.c
124+
$(srcdir)/prism/prettyprint.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/src/prettyprint.c.erb
125+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) src/prettyprint.c $@
126+
127+
realclean-prism-srcs::
128+
$(RM) $(srcdir)/prism/prettyprint.c
129+
130+
main srcs: $(srcdir)/prism/serialize.c
131+
$(srcdir)/prism/serialize.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/src/serialize.c.erb
132+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) src/serialize.c $@
133+
134+
realclean-prism-srcs::
135+
$(RM) $(srcdir)/prism/serialize.c
136+
137+
main srcs: $(srcdir)/prism/token_type.c
138+
$(srcdir)/prism/token_type.c: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/src/token_type.c.erb
139+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) src/token_type.c $@
140+
141+
realclean-prism-srcs::
142+
$(RM) $(srcdir)/prism/token_type.c

prism/srcs.mk.in

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<% # -*- ruby -*-
2+
require_relative 'templates/template'
3+
4+
script = File.basename(__FILE__)
5+
srcs = output ? output.sub(/\Aprism\//, '') : script.chomp('.in')
6+
mk = 'uncommon.mk'
7+
8+
# %>
9+
PRISM_TEMPLATES_DIR = $(PRISM_SRCDIR)/templates
10+
PRISM_TEMPLATE = $(PRISM_TEMPLATES_DIR)/template.rb
11+
PRISM_CONFIG = $(PRISM_SRCDIR)/config.yml
12+
13+
srcs <%=mk%>: $(PRISM_SRCDIR)/<%=srcs%>
14+
15+
$(PRISM_SRCDIR)/$(HAVE_BASERUBY:yes=<%=srcs%>): \
16+
$(PRISM_SRCDIR)/templates/template.rb \
17+
$(PRISM_SRCDIR)/<%=script%>
18+
$(BASERUBY) $(tooldir)/generic_erb.rb -o $@ $(PRISM_SRCDIR)/<%=script%>
19+
20+
realclean-prism-srcs::
21+
$(RM) <%=srcs%>
22+
23+
realclean-srcs-local:: realclean-prism-srcs
24+
<% Prism::Template::TEMPLATES.map do |t|
25+
/\.(?:[ch]|rb)\z/ =~ t or next
26+
s = '$(srcdir)/' + t.sub(%r[\A(?:(src)|ext|include)/]) {$1 && 'prism/'}
27+
s.sub!(%r[\A\$(srcdir)/prism/], '$(PRISM_SRCDIR)/')
28+
target = s.end_with?('.h') ? 'incs' : 'srcs'
29+
# %>
30+
31+
main <%=target%>: <%=s%>
32+
<%=s%>: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/<%=t%>.erb
33+
$(Q) $(BASERUBY) $(PRISM_TEMPLATE) <%=t%> $@
34+
35+
realclean-prism-srcs::
36+
$(RM) <%=s%>
37+
<%
38+
end
39+
# %>

template/Makefile.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -426,8 +426,8 @@ $(MKFILES): config.status $(srcdir)/version.h $(ABI_VERSION_HDR)
426426
$(MAKE) -f conftest.mk | grep '^AUTO_REMAKE$$' >/dev/null 2>&1 || \
427427
{ echo "$@ updated, restart."; exit 1; }
428428

429-
uncommon.mk: $(srcdir)/common.mk $(srcdir)/depend
430-
sed -f $(srcdir)/tool/prereq.status $(srcdir)/common.mk $(srcdir)/depend > $@
429+
uncommon.mk: $(srcdir)/common.mk @X_common_mk_includes@
430+
sed -f $(srcdir)/tool/prereq.status $(srcdir)/common.mk @X_common_mk_includes@ > $@
431431

432432
.PHONY: reconfig
433433
reconfig-args = $(srcdir)/$(CONFIGURE) $(yes_silence:yes=--silent) $(configure_args)

tool/make-snapshot

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,14 @@ def package(vcs, rev, destdir, tmp = nil)
480480
vars["UNICODE_VERSION"] = $unicode_version if $unicode_version
481481
args = vars.dup
482482
mk.gsub!(/@([A-Za-z_]\w*)@/) {args.delete($1); vars[$1] || ENV[$1]}
483-
mk << commonmk.gsub(/\{\$([^(){}]*)[^{}]*\}/, "").gsub(/^!/, '-').sub(/^revision\.tmp::$/, '\& Makefile')
483+
commonmk.gsub!(/^!(?:include \$\(srcdir\)\/(.*))?/) do
484+
if inc = $1 and File.exist?(inc)
485+
File.binread(inc).gsub(/^!/, '# !')
486+
else
487+
"#"
488+
end
489+
end
490+
mk << commonmk.gsub(/\{\$([^(){}]*)[^{}]*\}/, "").sub(/^revision\.tmp::$/, '\& Makefile')
484491
mk << <<-'APPEND'
485492
486493
update-download:: touch-unicode-files

tool/prereq.status

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,4 @@ s,@srcdir@,.,g
4242

4343
s/@[A-Za-z][A-Za-z0-9_]*@//g
4444
s/{\$([^(){}]*)}//g
45-
s/^!/-/
45+
s/^!/#!/

win32/Makefile.sub

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -570,7 +570,6 @@ ACTIONS_ENDGROUP = @::
570570
ABI_VERSION_HDR = $(hdrdir)/ruby/internal/abi.h
571571

572572
!include $(srcdir)/common.mk
573-
!include $(srcdir)/depend
574573

575574
!ifdef SCRIPTPROGRAMS
576575
!else if [echo>scriptbin.mk SCRIPTPROGRAMS = \]

0 commit comments

Comments
 (0)