Skip to content

Commit 90cb2bb

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

File tree

8 files changed

+45
-82
lines changed

8 files changed

+45
-82
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,6 +272,7 @@ lcov*.info
272272
/prism/prettyprint.c
273273
/prism/serialize.c
274274
/prism/token_type.c
275+
/prism/srcs.mk
275276

276277
# tool/update-NEWS-gemlist.rb
277278
/bundled_gems.json

common.mk

Lines changed: 10 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -205,82 +205,12 @@ $(PRISM_BUILD_DIR)/.time $(PRISM_BUILD_DIR)/util/.time:
205205
$(Q) $(MAKEDIRS) $(@D)
206206
@$(NULLCMD) > $@
207207

208-
main: $(srcdir)/lib/prism/compiler.rb
209-
srcs: $(srcdir)/lib/prism/compiler.rb
210-
$(srcdir)/lib/prism/compiler.rb: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/lib/prism/compiler.rb.erb
211-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb lib/prism/compiler.rb $(srcdir)/lib/prism/compiler.rb
212-
213-
main: $(srcdir)/lib/prism/dispatcher.rb
214-
srcs: $(srcdir)/lib/prism/dispatcher.rb
215-
$(srcdir)/lib/prism/dispatcher.rb: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/lib/prism/dispatcher.rb.erb
216-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb lib/prism/dispatcher.rb $(srcdir)/lib/prism/dispatcher.rb
217-
218-
main: $(srcdir)/lib/prism/dsl.rb
219-
srcs: $(srcdir)/lib/prism/dsl.rb
220-
$(srcdir)/lib/prism/dsl.rb: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/lib/prism/dsl.rb.erb
221-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb lib/prism/dsl.rb $(srcdir)/lib/prism/dsl.rb
222-
223-
main: $(srcdir)/lib/prism/inspect_visitor.rb
224-
srcs: $(srcdir)/lib/prism/inspect_visitor.rb
225-
$(srcdir)/lib/prism/inspect_visitor.rb: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/lib/prism/inspect_visitor.rb.erb
226-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb lib/prism/inspect_visitor.rb $(srcdir)/lib/prism/inspect_visitor.rb
227-
228-
main: $(srcdir)/lib/prism/mutation_compiler.rb
229-
srcs: $(srcdir)/lib/prism/mutation_compiler.rb
230-
$(srcdir)/lib/prism/mutation_compiler.rb: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/lib/prism/mutation_compiler.rb.erb
231-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb lib/prism/mutation_compiler.rb $(srcdir)/lib/prism/mutation_compiler.rb
232-
233-
main: $(srcdir)/lib/prism/node.rb
234-
srcs: $(srcdir)/lib/prism/node.rb
235-
$(srcdir)/lib/prism/node.rb: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/lib/prism/node.rb.erb
236-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb lib/prism/node.rb $(srcdir)/lib/prism/node.rb
237-
238-
main: $(srcdir)/lib/prism/reflection.rb
239-
srcs: $(srcdir)/lib/prism/reflection.rb
240-
$(srcdir)/lib/prism/reflection.rb: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/lib/prism/reflection.rb.erb
241-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb lib/prism/reflection.rb $(srcdir)/lib/prism/reflection.rb
242-
243-
main: $(srcdir)/lib/prism/serialize.rb
244-
srcs: $(srcdir)/lib/prism/serialize.rb
245-
$(srcdir)/lib/prism/serialize.rb: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/lib/prism/serialize.rb.erb
246-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb lib/prism/serialize.rb $(srcdir)/lib/prism/serialize.rb
247-
248-
main: $(srcdir)/lib/prism/visitor.rb
249-
srcs: $(srcdir)/lib/prism/visitor.rb
250-
$(srcdir)/lib/prism/visitor.rb: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/lib/prism/visitor.rb.erb
251-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb lib/prism/visitor.rb $(srcdir)/lib/prism/visitor.rb
252-
253-
srcs: $(top_srcdir)/prism/api_node.c
254-
$(top_srcdir)/prism/api_node.c: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/ext/prism/api_node.c.erb
255-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb ext/prism/api_node.c $@
256-
257-
srcs: $(top_srcdir)/prism/ast.h
258-
$(top_srcdir)/prism/ast.h: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/include/prism/ast.h.erb
259-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb include/prism/ast.h $@
260-
261-
srcs: $(top_srcdir)/prism/diagnostic.c
262-
$(top_srcdir)/prism/diagnostic.c: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/src/diagnostic.c.erb
263-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb src/diagnostic.c $@
264-
265-
srcs: $(top_srcdir)/prism/diagnostic.h
266-
$(top_srcdir)/prism/diagnostic.h: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/include/prism/diagnostic.h.erb
267-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb include/prism/diagnostic.h $@
268-
269-
srcs: $(top_srcdir)/prism/node.c
270-
$(top_srcdir)/prism/node.c: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/src/node.c.erb
271-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb src/node.c $@
272-
273-
srcs: $(top_srcdir)/prism/prettyprint.c
274-
$(top_srcdir)/prism/prettyprint.c: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/src/prettyprint.c.erb
275-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb src/prettyprint.c $@
276-
277-
srcs: $(top_srcdir)/prism/serialize.c
278-
$(top_srcdir)/prism/serialize.c: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/src/serialize.c.erb
279-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb src/serialize.c $@
280-
281-
srcs: $(top_srcdir)/prism/token_type.c
282-
$(top_srcdir)/prism/token_type.c: $(PRISM_SRCDIR)/config.yml $(PRISM_SRCDIR)/templates/template.rb $(PRISM_SRCDIR)/templates/src/token_type.c.erb
283-
$(Q) $(BASERUBY) $(PRISM_SRCDIR)/templates/template.rb src/token_type.c $@
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
284214

285215
EXPORTOBJS = $(DLNOBJ) \
286216
localeinit.$(OBJEXT) \
@@ -797,7 +727,8 @@ clean-srcs-local::
797727
realclean-srcs-local:: clean-srcs-local
798728
$(Q)$(CHDIR) $(srcdir) && $(RM) \
799729
parse.c parse.h lex.c enc/trans/newline.c $(PRELUDES) revision.h \
800-
id.c id.h probes.dmyh configure aclocal.m4 tool/config.guess tool/config.sub gems/*.gem \
730+
id.c id.h probes.dmyh configure aclocal.m4 tool/config.guess tool/config.sub \
731+
$(PRISM_SRCDIR)/srcs.mk gems/*.gem \
801732
|| $(NULLCMD)
802733

803734
clean-srcs-ext::
@@ -2046,3 +1977,5 @@ help: PHONY
20461977

20471978
$(CROSS_COMPILING:yes=)builtin.$(OBJEXT): {$(VPATH)}mini_builtin.c
20481979
$(CROSS_COMPILING:yes=)builtin.$(OBJEXT): {$(VPATH)}miniprelude.c
1980+
1981+
!include $(srcdir)/prism/srcs.mk

configure.ac

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4698,8 +4698,9 @@ AC_CONFIG_FILES(Makefile:template/Makefile.in, [
46984698
sed '/^MISSING/s/\$U\././g;/^VCS *=/s#@VCS@#'"$VCS"'#;/^VCSUP *=/s#@VCSUP@#'"$VCSUP"'#' Makefile
46994699
echo; test x"$EXEEXT" = x || echo 'miniruby: miniruby$(EXEEXT)'
47004700
AS_IF([test "$gnumake" != yes], [
4701-
echo ['$(MKFILES): $(srcdir)/common.mk $(srcdir)/depend']
4702-
sed ['s/{\$([^(){}]*)[^{}]*}//g'] ${srcdir}/common.mk ${srcdir}/depend
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
47034704
AS_IF([test "$YJIT_SUPPORT" = yes], [
47044705
cat ${srcdir}/yjit/not_gmake.mk
47054706
echo ['$(MKFILES): ${srcdir}/yjit/not_gmake.mk']

prism/generate-srcs.mk.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
require_relative 'templates/template'
2+
3+
puts %[
4+
PRISM_TEMPLATES_DIR = $(PRISM_SRCDIR)/templates
5+
PRISM_TEMPLATE = $(PRISM_TEMPLATES_DIR)/template.rb
6+
PRISM_CONFIG = $(PRISM_SRCDIR)/config.yml
7+
]
8+
9+
Prism::Template::TEMPLATES.map do |t|
10+
/\.(?:[ch]|rb)\z/ =~ t or next
11+
s = t.sub(%r[\A(?:(src)|ext|include)/]) {$1 && 'prism/'}
12+
puts %[
13+
main srcs: $(srcdir)/#{s}
14+
$(srcdir)/#{s}: $(PRISM_CONFIG) $(PRISM_TEMPLATE) $(PRISM_TEMPLATES_DIR)/#{t}.erb
15+
\t$(Q) $(BASERUBY) $(PRISM_TEMPLATE) #{t} $@
16+
]
17+
end

template/Makefile.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ $(MKFILES): config.status $(srcdir)/version.h $(ABI_VERSION_HDR)
427427
{ echo "$@ updated, restart."; exit 1; }
428428

429429
uncommon.mk: $(srcdir)/common.mk $(srcdir)/depend
430-
sed 's/{\$$([^(){}]*)[^{}]*}//g' $(srcdir)/common.mk $(srcdir)/depend > $@
430+
sed -f $(srcdir)/tool/prereq.status $(srcdir)/common.mk $(srcdir)/depend > $@
431431

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

tool/make-snapshot

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -480,7 +480,7 @@ 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(/\{\$([^(){}]*)[^{}]*\}/, "").sub(/^revision\.tmp::$/, '\& Makefile')
483+
mk << commonmk.gsub(/\{\$([^(){}]*)[^{}]*\}/, "").gsub(/^!/, '-').sub(/^revision\.tmp::$/, '\& Makefile')
484484
mk << <<-'APPEND'
485485
486486
update-download:: touch-unicode-files

tool/prereq.status

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,5 @@ s,@rubylibprefix@,,g
4141
s,@srcdir@,.,g
4242

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

win32/setup.mak

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,16 @@ MACHINE = x86
238238
@echo # ENCODING>>$(MAKEFILE)
239239
@$(MAKE) -l -f $(srcdir)/win32/enc-setup.mak srcdir="$(srcdir)" MAKEFILE=$(MAKEFILE)
240240

241+
!ifdef BASERUBY
242+
ruby = $(BASERUBY)
243+
!else ifndef ruby
244+
ruby = ruby
245+
!endif
246+
$(srcdir)/prism/srcs.mk:
247+
$(ruby:/=\) $(srcdir)/prism/generate-srcs.mk.rb > $@
248+
249+
-epilogue-: $(srcdir)/prism/srcs.mk
250+
241251
-epilogue-: nul
242252
@type << >>$(MAKEFILE)
243253

0 commit comments

Comments
 (0)