diff options
Diffstat (limited to 'common.mk')
| -rw-r--r-- | common.mk | 261 |
1 files changed, 161 insertions, 100 deletions
@@ -21,7 +21,7 @@ gnumake_recursive = sequential = $(gnumake:yes=-sequential) enable_shared = $(ENABLE_SHARED:no=) -UNICODE_VERSION = 16.0.0 +UNICODE_VERSION = 17.0.0 UNICODE_EMOJI_VERSION_0 = $(UNICODE_VERSION)/// UNICODE_EMOJI_VERSION_1 = $(UNICODE_EMOJI_VERSION_0:.0///=) UNICODE_EMOJI_VERSION = $(UNICODE_EMOJI_VERSION_1:///=) @@ -44,6 +44,10 @@ RUBYLIB = $(PATH_SEPARATOR) RUBYOPT = - RUN_OPTS = --disable-gems +GIT_IN_SRC = $(GIT) -C $(srcdir) +GIT_LOG = $(GIT_IN_SRC) log --no-show-signature +GIT_LOG_FORMAT = $(GIT_LOG) "--pretty=format:" + # GITPULLOPTIONS = --no-tags PRISM_SRCDIR = $(srcdir)/prism @@ -65,13 +69,18 @@ LIBRUBY_EXTS = ./.libruby-with-ext.time REVISION_H = ./.revision.time PLATFORM_D = $(TIMESTAMPDIR)/.$(PLATFORM_DIR).time ENC_TRANS_D = $(TIMESTAMPDIR)/.enc-trans.time -RDOC = $(XRUBY) "$(tooldir)/rdoc-srcdir" +yes_cross_compiling = $(CROSS_COMPILING:no=) +X_$(CROSS_COMPILING:yes=)BASERUBY = $(BASERUBY) +X_$(CROSS_COMPILING:no=)BASERUBY = $(XRUBY) +RDOC = $(X_BASERUBY) --enable-gems "$(tooldir)/rdoc-srcdir" RDOCOUT = $(EXTOUT)/rdoc HTMLOUT = $(EXTOUT)/html CAPIOUT = doc/capi INSTALL_DOC_OPTS = --rdoc-output="$(RDOCOUT)" --html-output="$(HTMLOUT)" RDOC_GEN_OPTS = --no-force-update \ + --exclude '^lib/rubygems/core_ext/kernel_require\.rb$$' \ $(empty) +RDOC_SERVER_PORT = 4000 INITOBJS = dmyext.$(OBJEXT) dmyenc.$(OBJEXT) NORMALMAINOBJ = main.$(OBJEXT) @@ -85,36 +94,49 @@ MAKE_ENC = -f $(ENC_MK) V="$(V)" UNICODE_HDR_DIR="$(UNICODE_HDR_DIR)" \ PRISM_BUILD_DIR = prism -PRISM_FILES = prism/api_node.$(OBJEXT) \ - prism/api_pack.$(OBJEXT) \ +LIBPRISM_OBJS = \ + prism/arena.$(OBJEXT) \ + prism/buffer.$(OBJEXT) \ + prism/char.$(OBJEXT) \ + prism/constant_pool.$(OBJEXT) \ prism/diagnostic.$(OBJEXT) \ prism/encoding.$(OBJEXT) \ - prism/extension.$(OBJEXT) \ + prism/integer.$(OBJEXT) \ + prism/json.$(OBJEXT) \ + prism/line_offset_list.$(OBJEXT) \ + prism/list.$(OBJEXT) \ + prism/memchr.$(OBJEXT) \ prism/node.$(OBJEXT) \ prism/options.$(OBJEXT) \ - prism/pack.$(OBJEXT) \ + prism/parser.$(OBJEXT) \ prism/prettyprint.$(OBJEXT) \ + prism/prism.$(OBJEXT) \ prism/regexp.$(OBJEXT) \ prism/serialize.$(OBJEXT) \ + prism/source.$(OBJEXT) \ prism/static_literals.$(OBJEXT) \ - prism/token_type.$(OBJEXT) \ - prism/util/pm_buffer.$(OBJEXT) \ - prism/util/pm_char.$(OBJEXT) \ - prism/util/pm_constant_pool.$(OBJEXT) \ - prism/util/pm_integer.$(OBJEXT) \ - prism/util/pm_list.$(OBJEXT) \ - prism/util/pm_memchr.$(OBJEXT) \ - prism/util/pm_newline_list.$(OBJEXT) \ - prism/util/pm_string.$(OBJEXT) \ - prism/util/pm_strncasecmp.$(OBJEXT) \ - prism/util/pm_strpbrk.$(OBJEXT) \ - prism/prism.$(OBJEXT) \ + prism/string_query.$(OBJEXT) \ + prism/stringy.$(OBJEXT) \ + prism/strncasecmp.$(OBJEXT) \ + prism/strpbrk.$(OBJEXT) \ + prism/tokens.$(OBJEXT) + +EXTPRISM_OBJS = prism/api_node.$(OBJEXT) \ + prism/extension.$(OBJEXT) \ prism_init.$(OBJEXT) +PRISM_OBJS = $(LIBPRISM_OBJS) $(EXTPRISM_OBJS) + +# Prism objects depend on generated headers that are created from templates. +# This must be declared here to ensure parallel builds don't compile prism +# sources before the generated headers exist. +$(LIBPRISM_OBJS): $(srcdir)/prism/ast.h $(srcdir)/prism/internal/diagnostic.h + COMMONOBJS = \ array.$(OBJEXT) \ ast.$(OBJEXT) \ bignum.$(OBJEXT) \ + box.$(OBJEXT) \ class.$(OBJEXT) \ compar.$(OBJEXT) \ compile.$(OBJEXT) \ @@ -142,7 +164,6 @@ COMMONOBJS = \ marshal.$(OBJEXT) \ math.$(OBJEXT) \ memory_view.$(OBJEXT) \ - namespace.$(OBJEXT) \ node.$(OBJEXT) \ node_dump.$(OBJEXT) \ numeric.$(OBJEXT) \ @@ -188,7 +209,7 @@ COMMONOBJS = \ vm_sync.$(OBJEXT) \ vm_trace.$(OBJEXT) \ weakmap.$(OBJEXT) \ - $(PRISM_FILES) \ + $(PRISM_OBJS) \ $(YJIT_OBJ) \ $(ZJIT_OBJ) \ $(JIT_OBJ) \ @@ -199,7 +220,7 @@ COMMONOBJS = \ $(BUILTIN_TRANSOBJS) \ $(MISSING) -$(PRISM_FILES): $(PRISM_BUILD_DIR)/.time $(PRISM_BUILD_DIR)/util/.time +$(PRISM_OBJS): $(PRISM_BUILD_DIR)/.time $(PRISM_BUILD_DIR)/util/.time $(PRISM_BUILD_DIR)/.time $(PRISM_BUILD_DIR)/util/.time: $(Q) $(MAKEDIRS) $(@D) @@ -264,22 +285,16 @@ MAKE_LINK = $(MINIRUBY) -rfileutils -e "include FileUtils::Verbose" \ # For release builds YJIT_RUSTC_ARGS = --crate-name=yjit \ - --crate-type=staticlib \ + $(JIT_RUST_FLAGS) \ + $(RUSTC_FLAGS) \ --edition=2021 \ - -g \ - -C lto=thin \ - -C opt-level=3 \ - -C overflow-checks=on \ '--out-dir=$(CARGO_TARGET_DIR)/release/' \ '$(top_srcdir)/yjit/src/lib.rs' ZJIT_RUSTC_ARGS = --crate-name=zjit \ - --crate-type=staticlib \ + $(JIT_RUST_FLAGS) \ + $(RUSTC_FLAGS) \ --edition=2024 \ - -g \ - -C lto=thin \ - -C opt-level=3 \ - -C overflow-checks=on \ '--out-dir=$(CARGO_TARGET_DIR)/release/' \ '$(top_srcdir)/zjit/src/lib.rs' @@ -332,12 +347,14 @@ $(EXTS_MK): ext/configure-ext.mk $(srcdir)/template/exts.mk.tmpl \ $(srcdir)/template/exts.mk.tmpl --gnumake=$(gnumake) --configure-exts=ext/configure-ext.mk ext/configure-ext.mk: $(PREP) all-incs $(MKFILES) $(RBCONFIG) $(LIBRUBY) \ - $(srcdir)/template/configure-ext.mk.tmpl + $(srcdir)/template/configure-ext.mk.tmpl update-default-gemspecs \ + $(HAVE_BASERUBY:yes=extract-gems) $(ECHO) generating makefiles $@ $(Q)$(MAKEDIRS) $(@D) $(Q)$(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ -c \ $(srcdir)/template/$(@F).tmpl --srcdir="$(srcdir)" \ - --miniruby="$(MINIRUBY)" --script-args='$(SCRIPT_ARGS)' + --miniruby="$(MINIRUBY)" --script-args='$(SCRIPT_ARGS)' \ + $(yes_cross_compiling:yes=--without-ext=-test-) configure-ext: $(EXTS_MK) @@ -610,23 +627,33 @@ post-install-dbg:: srcs-doc: prepare-gems -rdoc: PHONY main srcs-doc +RDOC_DEPENDS = main srcs-doc +rdoc: PHONY $(RDOC_DEPENDS) $(RBCONFIG) update-default-gemspecs @echo Generating RDoc documentation $(Q) $(RDOC) --ri --op "$(RDOCOUT)" $(RDOC_GEN_OPTS) $(RDOCFLAGS) . -html: PHONY main srcs-doc +html: PHONY $(RDOC_DEPENDS) $(RBCONFIG) update-default-gemspecs @echo Generating RDoc HTML files $(Q) $(RDOC) --op "$(HTMLOUT)" $(RDOC_GEN_OPTS) $(RDOCFLAGS) . -rdoc-coverage: PHONY main srcs-doc +html-server: PHONY $(RDOC_DEPENDS) $(RBCONFIG) + @echo Starting RDoc server with live reload + $(Q) $(RDOC) --server=$(RDOC_SERVER_PORT) $(RDOC_GEN_OPTS) $(RDOCFLAGS) . + +RDOC_COVERAGE_EXCLUDES = -x ^ext/json -x ^ext/openssl -x ^ext/psych \ + -x ^lib/bundler -x ^lib/rubygems \ + -x ^lib/did_you_mean -x ^lib/error_highlight -x ^lib/syntax_suggest + +rdoc-coverage: PHONY $(RDOC_DEPENDS) $(RBCONFIG) @echo Generating RDoc coverage report - $(Q) $(RDOC) --quiet -C $(RDOCFLAGS) . + $(Q) $(RDOC) --quiet -C $(RDOCFLAGS) $(RDOC_COVERAGE_EXCLUDES) . -undocumented: PHONY main srcs-doc - $(Q) $(RDOC) --quiet -C $(RDOCFLAGS) . | \ +undocumented: PHONY $(RDOC_DEPENDS) $(RBCONFIG) + $(Q) $(RDOC) --quiet -C $(RDOCFLAGS) $(RDOC_COVERAGE_EXCLUDES) . | \ sed -n \ -e '/^ *# in file /{' -e 's///;N;s/\n/: /p' -e '}' \ - -e 's/^ *\(.*[^ ]\) *# in file \(.*\)/\2: \1/p' | sort + -e 's/^ *\(.*[^ ]\) *# in file \(.*\)/\2: \1/p' | \ + sort -t: -k1,1 -k2n,2 RDOCBENCHOUT=/tmp/rdocbench @@ -655,6 +682,8 @@ install-prereq: $(CLEAR_INSTALLED_LIST) yes-fake sudo-precheck PHONY clear-installed-list: PHONY @> $(INSTALLED_LIST) set MAKE="$(MAKE)" +noarch_config_h = tmp/include/noarch/ruby/config.h + clean: clean-ext clean-enc clean-golf clean-docs clean-extout clean-modular-gc clean-local clean-platform clean-spec clean-local:: clean-runnable $(Q)$(RM) $(ALLOBJS) $(LIBRUBY_A) $(LIBRUBY_SO) $(LIBRUBY) $(LIBRUBY_ALIASES) @@ -663,6 +692,8 @@ clean-local:: clean-runnable $(Q)$(RM) probes.h probes.$(OBJEXT) probes.stamp ruby-glommed.$(OBJEXT) ruby.imp ChangeLog $(STATIC_RUBY)$(EXEEXT) $(Q)$(RM) GNUmakefile.old Makefile.old $(arch)-fake.rb bisect.sh $(ENC_TRANS_D) builtin_binary.rbbin $(Q)$(RM) $(PRISM_BUILD_DIR)/.time $(PRISM_BUILD_DIR)/*/.time yjit_exit_locations.dump + $(Q)$(RM) $(noarch_config_h) + -$(Q)$(RMALL) dump_ast$(BUILD_EXEEXT)* -$(Q)$(RMALL) target -$(Q) $(RMDIR) enc/jis enc/trans enc $(COROUTINE_H:/Context.h=) coroutine target \ $(PRISM_BUILD_DIR)/*/ $(PRISM_BUILD_DIR) tmp \ @@ -695,7 +726,8 @@ distclean-local:: clean-local $(Q)$(RM) config.cache config.status config.status.lineno $(Q)$(RM) *~ *.bak *.stackdump core *.core gmon.out $(PREP) -$(Q)$(RMALL) $(srcdir)/autom4te.cache -distclean-ext:: PHONY +distclean-local:: distclean-srcs-local +distclean-ext:: distclean-srcs-ext distclean-golf: clean-golf distclean-rdoc: clean-rdoc distclean-html: clean-html @@ -710,6 +742,7 @@ realclean:: realclean-ext realclean-local realclean-enc realclean-golf realclean realclean-local:: distclean-local realclean-srcs-local clean-srcs:: clean-srcs-local clean-srcs-ext +distclean-srcs:: distclean-srcs-local distclean-srcs-ext realclean-srcs:: realclean-srcs-local realclean-srcs-ext clean-srcs-local:: @@ -717,7 +750,9 @@ clean-srcs-local:: $(Q)$(RM) id.c id.h probes.dmyh probes.h $(Q)$(RM) encdb.h transdb.h verconf.h ruby-runner.h -realclean-srcs-local:: clean-srcs-local +distclean-srcs-local:: clean-srcs-local + +realclean-srcs-local:: distclean-srcs-local $(Q)$(CHDIR) $(srcdir) && $(RM) \ parse.c parse.h lex.c enc/trans/newline.c $(PRELUDES) revision.h \ id.c id.h probes.dmyh configure aclocal.m4 tool/config.guess tool/config.sub \ @@ -725,7 +760,8 @@ realclean-srcs-local:: clean-srcs-local || $(NULLCMD) clean-srcs-ext:: -realclean-srcs-ext:: clean-srcs-ext +distclean-srcs-ext:: clean-srcs-ext +realclean-srcs-ext:: distclean-srcs-ext realclean-ext:: PHONY realclean-golf: distclean-golf @@ -753,7 +789,7 @@ timestamp/distclean:: ext/distclean .bundle/distclean timestamp/realclean:: ext/realclean .bundle/realclean timestamp/clean timestamp/distclean timestamp/realclean:: - $(Q)$(RM) $(TIMESTAMPDIR)/.*.time $(TIMESTAMPDIR)/$(arch)/.time + $(Q)$(RM) $(TIMESTAMPDIR)/*.time $(TIMESTAMPDIR)/.*.time $(TIMESTAMPDIR)/$(arch)/.time $(Q)$(RMDIRS) $(TIMESTAMPDIR)/$(arch) $(TIMESTAMPDIR) 2> $(NULL) || $(NULLCMD) clean-ext:: @@ -785,13 +821,17 @@ clean-capi distclean-capi realclean-capi: clean-platform distclean-platform realclean-platform: $(Q) $(RM) $(PLATFORM_D) - -$(Q) $(RMDIR) $(PLATFORM_DIR) 2> $(NULL) || $(NULLCMD) + -$(Q) $(RMDIR) $(PLATFORM_DIR) $(TIMESTAMPDIR) 2> $(NULL) || $(NULLCMD) RUBYSPEC_CAPIEXT = spec/ruby/optional/capi/ext RUBYSPEC_CAPIEXT_SRCDIR = $(srcdir)/$(RUBYSPEC_CAPIEXT) -RUBYSPEC_CAPIEXT_DEPS = $(RUBYSPEC_CAPIEXT_SRCDIR)/rubyspec.h $(RUBY_H_INCLUDES) $(LIBRUBY) +RUBYSPEC_CAPIEXT_DEPS = $(RUBYSPEC_CAPIEXT_SRCDIR)/rubyspec.h $(RUBY_H_INCLUDES) {$(VPATH)}internal/abi.h $(LIBRUBY) +RUBYSPEC_CAPIEXT_BUILD = $(enable_shared:yes=rubyspec-capiext) -rubyspec-capiext: build-ext $(DOT_WAIT) +yes-rubyspec-capiext: build-ext + $(ACTIONS_GROUP) +rubyspec-capiext: build-ext $(DOT_WAIT) yes-rubyspec-capiext $(DOT_WAIT) + $(ACTIONS_ENDGROUP) # make-dependent rules should be included after this and built after build-ext. clean-spec: PHONY @@ -826,6 +866,12 @@ $(arch:noarch=ignore)-fake.rb: $(srcdir)/template/fake.rb.in $(tooldir)/generic_ i=- srcdir="$(srcdir)" BASERUBY="$(BASERUBY)" \ LIBPATHENV="$(LIBPATHENV)" PRELOADENV="$(PRELOADENV)" LIBRUBY_SO="$(LIBRUBY_SO)" +# dummy file for generating sources; $(arch_hdrdir)/ruby/config.h with prereq.status. +$(noarch_config_h): + $(ECHO) generating dummy config.h + $(Q) $(MAKEDIRS) $(@D) + $(Q) $(TOUCH) $@ + noarch-fake.rb: # prerequisite of yes-fake $(Q) exit > $@ @@ -881,7 +927,7 @@ no-test-testframework: PHONY test-tool: $(TEST_RUNNABLE)-test-tool yes-test-tool: prog PHONY $(ACTIONS_GROUP) - $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(TOOL_TESTSDIR)/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS) + $(gnumake_recursive)$(Q)$(exec) $(RUNRUBY) "$(TOOL_TESTSDIR)/runner.rb" --ruby="$(RUNRUBY)" $(TESTOPTS) $(TESTS) $(ACTIONS_ENDGROUP) no-test-tool: PHONY @@ -892,7 +938,7 @@ test: test-short # Separate to skip updating encs and exts by `make -o test-precheck` # for GNU make. test-precheck: $(ENCSTATIC:static=lib)encs exts PHONY $(DOT_WAIT) -yes-test-all-precheck: programs $(DOT_WAIT) test-precheck +yes-test-all-precheck: programs $(DOT_WAIT) test-precheck yes-fake PRECHECK_TEST_ALL = yes-test-all-precheck @@ -929,24 +975,20 @@ rbconfig.rb: $(RBCONFIG) $(HAVE_BASERUBY:no=)$(RBCONFIG)$(HAVE_BASERUBY:no=): $(PREP) $(RBCONFIG): $(tooldir)/mkconfig.rb config.status $(srcdir)/version.h $(srcdir)/common.mk - $(Q)$(BOOTSTRAPRUBY) -n \ - -e 'BEGIN{version=ARGV.shift;mis=ARGV.dup}' \ - -e 'END{abort "UNICODE version mismatch: #{mis}" unless mis.empty?}' \ - -e '(mis.delete(ARGF.path); ARGF.close) if /ONIG_UNICODE_VERSION_STRING +"#{Regexp.quote(version)}"/o' \ - $(UNICODE_VERSION) $(UNICODE_DATA_HEADERS) + +$(RBCONFIG): $(Q)$(BOOTSTRAPRUBY) $(tooldir)/mkconfig.rb \ -arch=$(arch) -version=$(RUBY_PROGRAM_VERSION) \ -install_name=$(RUBY_INSTALL_NAME) \ -so_name=$(RUBY_SO_NAME) \ -unicode_version=$(UNICODE_VERSION) \ -unicode_emoji_version=$(UNICODE_EMOJI_VERSION) \ - > rbconfig.tmp - $(IFCHANGE) "--timestamp=$@" rbconfig.rb rbconfig.tmp + | $(IFCHANGE) "--timestamp=$@" rbconfig.rb - test-rubyspec: test-spec yes-test-rubyspec: yes-test-spec -yes-test-spec-precheck: yes-test-all-precheck yes-fake +yes-test-spec-precheck: yes-test-all-precheck $(RUBYSPEC_CAPIEXT_BUILD) test-spec: $(TEST_RUNNABLE)-test-spec yes-test-spec: yes-test-spec-precheck @@ -996,8 +1038,11 @@ $(ENC_MK): $(srcdir)/enc/make_encmake.rb $(srcdir)/enc/Makefile.in $(srcdir)/enc .PHONY: test install install-nodoc install-doc dist .PHONY: loadpath golf capi rdoc install-prereq clear-installed-list .PHONY: clean clean-ext clean-local clean-enc clean-golf clean-rdoc clean-html clean-extout +.PHONY: clean-srcs clean-srcs-local clean-srcs-ext .PHONY: distclean distclean-ext distclean-local distclean-enc distclean-golf distclean-extout +.PHONY: distclean-srcs distclean-srcs-local distclean-srcs-ext .PHONY: realclean realclean-ext realclean-local realclean-enc realclean-golf realclean-extout +.PHONY: realclean-srcs realclean-srcs-local realclean-srcs-ext .PHONY: exam check test test-short test-all btest btest-ruby test-basic test-knownbug .PHONY: run runruby parse benchmark gdb gdb-ruby .PHONY: update-mspec update-rubyspec test-rubyspec test-spec @@ -1113,7 +1158,7 @@ $(NEWLINE_C): $(srcdir)/enc/trans/newline.trans $(tooldir)/transcode-tblgen.rb $(Q) $(BASERUBY) "$(tooldir)/transcode-tblgen.rb" -vo $@ $(srcdir)/enc/trans/newline.trans enc/trans/newline.$(OBJEXT): $(NEWLINE_C) -verconf.h: $(srcdir)/template/verconf.h.tmpl $(tooldir)/generic_erb.rb $(RBCONFIG) +verconf.h: $(srcdir)/template/verconf.h.tmpl $(tooldir)/generic_erb.rb rbconfig.rb $(ECHO) creating $@ $(Q) $(BOOTSTRAPRUBY) "$(tooldir)/generic_erb.rb" -o $@ $(srcdir)/template/verconf.h.tmpl @@ -1133,7 +1178,7 @@ $(srcs_vpath)insns_info.inc: $(tooldir)/ruby_vm/views/insns_info.inc.erb $(inc_c $(tooldir)/ruby_vm/views/_insn_type_chars.erb $(tooldir)/ruby_vm/views/_insn_name_info.erb \ $(tooldir)/ruby_vm/views/_insn_len_info.erb $(tooldir)/ruby_vm/views/_insn_operand_info.erb \ $(tooldir)/ruby_vm/views/_attributes.erb $(tooldir)/ruby_vm/views/_comptime_insn_stack_increase.erb \ - $(tooldir)/ruby_vm/views/_zjit_helpers.erb + $(tooldir)/ruby_vm/views/_zjit_helpers.erb $(tooldir)/ruby_vm/views/_insn_leaf_info.erb $(srcs_vpath)vmtc.inc: $(tooldir)/ruby_vm/views/vmtc.inc.erb $(inc_common_headers) $(srcs_vpath)vm.inc: $(tooldir)/ruby_vm/views/vm.inc.erb $(inc_common_headers) \ $(tooldir)/ruby_vm/views/_insn_entry.erb $(tooldir)/ruby_vm/views/_trace_instruction.erb \ @@ -1278,9 +1323,9 @@ preludes: {$(VPATH)}miniprelude.c $(ECHO) making $@ $(Q) $(MINIRUBY) $(tooldir)/mk_rbbin.rb $(SRC_FILE) > $(OS_DEST_FILE) -{$(srcdir)}.rb.rbinc: +{$(srcdir)}.rb.$(HAVE_BASERUBY:yes=)rbinc: $(ECHO) making $@ - $(Q) $(BASERUBY) $(tooldir)/mk_builtin_loader.rb $(SRC_FILE) + $(Q) $(BASERUBY) $(tooldir)/mk_builtin_loader.rb $(DUMP_AST) $(SRC_FILE) $(BUILTIN_BINARY:yes=built)in_binary.rbbin: $(PREP) $(BUILTIN_RB_SRCS) $(srcdir)/template/builtin_binary.rbbin.tmpl $(Q) $(MINIRUBY) $(tooldir)/generic_erb.rb -o $@ \ @@ -1290,7 +1335,22 @@ $(BUILTIN_BINARY:yes=built)in_binary.rbbin: $(PREP) $(BUILTIN_RB_SRCS) $(srcdir) $(BUILTIN_BINARY:no=builtin)_binary.rbbin: $(Q) echo> $@ // empty $(@F) -$(BUILTIN_RB_INCS): $(top_srcdir)/tool/mk_builtin_loader.rb +$(BUILTIN_RB_INCS): $(tooldir)/mk_builtin_loader.rb $(DUMP_AST_TARGET) + +dump_ast$(BUILD_EXEEXT): $(tooldir)/dump_ast.c $(LIBPRISM_OBJS) + $(ECHO) compiling $@ + $(Q) $(CC) $(CFLAGS) $(OUTFLAG)$@ $(INCFLAGS) $(tooldir)/dump_ast.c $(LIBPRISM_OBJS) + +build-tool/Makefile: $(tooldir)/dump_ast.mkmf.rb prism-srcs prism-incs + +$(BASERUBY) -s $(tooldir)/dump_ast.mkmf.rb "-INCFLAGS=$(INCFLAGS)" "-make=$(MAKE)" build-tool $(tooldir)/dump_ast.c dump_ast.$(OBJEXT) $(LIBPRISM_OBJS) + +build-tool/dump_ast$(BUILD_EXEEXT): build-tool/Makefile + cd build-tool && MAKEFLAGS= MFLAGS= && unset MAKEFLAGS MFLAGS && $(MAKE) + +clean-local:: clean-build-tool +clean-build-tool: + - cd build-tool && $(MAKE) clean 2> $(NULL) || $(NULLCMD) + - $(RMDIR) build-tool $(srcdir)/revision.h$(no_baseruby:no=~disabled~): $(REVISION_H) @@ -1310,6 +1370,7 @@ $(common_mk__artifact_): $(srcdir)/common.mk $(common_mk_includes) ripper_srcs: $(RIPPER_SRCS) $(RIPPER_SRCS): $(srcdir)/parse.y $(srcdir)/defs/id.def +$(RIPPER_SRCS): $(srcdir)/ext/ripper/depend $(srcdir)/ext/ripper/extconf.rb $(RIPPER_SRCS): $(srcdir)/ext/ripper/tools/preproc.rb $(srcdir)/ext/ripper/tools/dsl.rb $(RIPPER_SRCS): $(srcdir)/ext/ripper/ripper_init.c.tmpl $(srcdir)/ext/ripper/eventids2.c $(ECHO) generating $@ @@ -1429,7 +1490,7 @@ dist: up:: update-remote up$(DOT_WAIT):: - -$(Q)$(MAKE) $(mflags) Q=$(Q) REVISION_FORCE=PHONY ALWAYS_UPDATE_UNICODE= after-update + -$(Q)$(MAKE) $(mflags) Q=$(Q) REVISION_FORCE=PHONY ALWAYS_UPDATE_UNICODE= MINIRUBY=$(BASERUBY) after-update yes:: no:: @@ -1438,6 +1499,7 @@ after-update:: common-srcs after-update:: $(REVISION_H) after-update:: extract-extlibs after-update:: extract-gems +after-update:: update-default-gemspecs update-src:: $(Q) $(RM) $(REVISION_H) revision.h "$(srcdir)/$(REVISION_H)" "$(srcdir)/revision.h" @@ -1512,35 +1574,21 @@ update-bundled_gems: PHONY $(tooldir)/update-bundled_gems.rb \ "$(srcdir)/gems/bundled_gems" | \ $(IFCHANGE) "$(srcdir)/gems/bundled_gems" - - $(GIT) -C "$(srcdir)" diff --no-ext-diff --ignore-submodules --exit-code || \ - $(GIT) -C "$(srcdir)" commit -m "Update bundled_gems" gems/bundled_gems + $(GIT_IN_SRC) diff --no-ext-diff --ignore-submodules --exit-code || \ + $(GIT_IN_SRC) commit -m "Update bundled_gems" gems/bundled_gems PRECHECK_BUNDLED_GEMS = yes test-bundled-gems-precheck: $(TEST_RUNNABLE)-test-bundled-gems-precheck yes-test-bundled-gems-precheck: $(PRECHECK_BUNDLED_GEMS:yes=main) no-test-bundled-gems-precheck: -update-default-gemspecs: $(TEST_RUNNABLE)-update-default-gemspecs -no-update-default-gemspecs: -yes-update-default-gemspecs: $(PRECHECK_BUNDLED_GEMS:yes=main) +yes-update-default-gemspecs no-update-default-gemspecs: update-default-gemspecs +update-default-gemspecs: $(PREP) $(RBCONFIG) @$(MAKEDIRS) $(srcdir)/.bundle/specifications - @$(XRUBY) -W0 -C "$(srcdir)" -rrubygems \ - -e "destdir = ARGV.shift" \ - -e "ARGV.each do |basedir|" \ - -e "Dir.glob(basedir+'/**/*.gemspec') do |g|" \ - -e "dir, base = File.split(g)" \ - -e "spec = Dir.chdir(dir) {Gem::Specification.load(base)} ||" \ - -e "Gem::Specification.load(g)" \ - -e "unless spec" \ - -e "puts %[Ignoring #{g}]" \ - -e "next" \ - -e "end" \ - -e "spec.files.clear" \ - -e "spec.extensions.clear" \ - -e "File.binwrite(File.join(destdir, spec.full_name+'.gemspec'), spec.to_ruby)" \ - -e "end" \ - -e "end" \ - -- .bundle/specifications lib ext + $(Q)$(MINIRUBY) -W0 -C "$(srcdir)" -I tool/lib -roptparse -routput -rbundled_gem \ + -e "(out = Output.new).def_options(ARGV.options)" \ + -e "BundledGem.update_default_gemspecs(ARGV.parse!, out, quiet: $(V).zero?)" \ + -- -c -o .bundle/specifications lib ext install-for-test-bundled-gems: $(TEST_RUNNABLE)-install-for-test-bundled-gems no-install-for-test-bundled-gems: no-update-default-gemspecs @@ -1548,12 +1596,15 @@ yes-install-for-test-bundled-gems: yes-update-default-gemspecs $(XRUBY) -C "$(srcdir)" -r./tool/lib/gem_env.rb bin/gem \ install --no-document --conservative \ "hoe" "json-schema:5.1.0" "test-unit-rr" "simplecov" "simplecov-html" "simplecov-json" "rspec" "zeitwerk" \ - "sinatra" "rack" "tilt" "mustermann" "base64" "compact_index" "rack-test" "logger" "kpeg" "tracer" + "sinatra" "rack" "tilt" "mustermann" "base64" "compact_index" "rack-test" "logger" "kpeg" "tracer" "minitest-mock" test-bundled-gems-fetch: yes-test-bundled-gems-fetch yes-test-bundled-gems-fetch: clone-bundled-gems-src -clone-bundled-gems-src: PHONY +clone-bundled-gems-src: PHONY $(TIMESTAMPDIR)/bundled-gems-src.time +$(TIMESTAMPDIR)/bundled-gems-src.time: $(srcdir)/gems/bundled_gems + $(Q) $(MAKEDIRS) $(@D) $(Q) $(BASERUBY) -C $(srcdir) tool/fetch-bundled_gems.rb BUNDLED_GEMS="$(BUNDLED_GEMS)" gems/src gems/bundled_gems + $(Q) $(TOUCH) $@ no-test-bundled-gems-fetch: test-bundled-gems-prepare: $(TEST_RUNNABLE)-test-bundled-gems-prepare @@ -1587,7 +1638,7 @@ yes-test-bundled-gems-run: $(PREPARE_BUNDLED_GEMS) no-test-bundled-gems-run: $(PREPARE_BUNDLED_GEMS) test-bundled-gems-spec: $(TEST_RUNNABLE)-test-bundled-gems-spec -yes-test-bundled-gems-spec: yes-test-spec-precheck $(PREPARE_BUNDLED_GEMS) +yes-test-bundled-gems-spec: yes-test-all-precheck $(PREPARE_BUNDLED_GEMS) $(ACTIONS_GROUP) $(gnumake_recursive)$(Q) \ $(RUNRUBY) -r./$(arch)-fake -r$(tooldir)/lib/_tmpdir \ @@ -1601,6 +1652,11 @@ test-syntax-suggest: check: $(DOT_WAIT) $(PREPARE_SYNTAX_SUGGEST) test-syntax-suggest +RAKER = $(XRUBY) -I$(srcdir)/gems/lib$(PATH_SEPARATOR)$(srcdir)/.bundle/lib \ + -rrubygems $(srcdir)/.bundle/bin/rake +rake: + $(RAKER) $(RAKE_OPTS) $(RAKE) + test-bundler-precheck: $(TEST_RUNNABLE)-test-bundler-precheck no-test-bundler-precheck: yes-test-bundler-precheck: main $(arch)-fake.rb @@ -1619,9 +1675,12 @@ BUNDLER_SPECS = PREPARE_BUNDLER = $(TEST_RUNNABLE)-test-bundler-prepare test-bundler: $(TEST_RUNNABLE)-test-bundler yes-test-bundler: $(PREPARE_BUNDLER) - $(gnumake_recursive)$(XRUBY) \ + $(gnumake_recursive)$(XRUBY) --enable-gems \ -r./$(arch)-fake \ - -C $(srcdir) -Ispec/bundler -Ispec/lib spec/bin/rspec \ + -r$(tooldir)/lib/_tmpdir \ + -I$(srcdir)/spec/bundler -I$(srcdir)/spec/lib \ + -e "Dir.chdir(ARGV.shift); load('spec/bin/rspec')" \ + -s -- -no-report-tmpdir -- "$(srcdir)" \ -r spec_helper $(RSPECOPTS) spec/bundler/$(BUNDLER_SPECS) no-test-bundler: @@ -1630,11 +1689,13 @@ test-bundler-parallel: $(TEST_RUNNABLE)-test-bundler-parallel yes-test-bundler-parallel: $(PREPARE_BUNDLER) $(gnumake_recursive)$(XRUBY) \ -r./$(arch)-fake \ + -r$(tooldir)/lib/_tmpdir \ -I$(srcdir)/spec/bundler \ -e "ruby = ENV['RUBY']" \ -e "ARGV[-1] = File.expand_path(ARGV[-1])" \ -e "ENV['RSPEC_EXECUTABLE'] = ruby + ARGV.shift" \ -e "load ARGV.shift" \ + -s -- -no-report-tmpdir -- \ " -C $(srcdir) -Ispec/bundler -Ispec/lib .bundle/bin/rspec -r spec_helper" \ $(srcdir)/spec/bin/parallel_rspec $(RSPECOPTS) \ $(PARALLELRSPECOPTS) $(srcdir)/spec/bundler/$(BUNDLER_SPECS) @@ -1708,7 +1769,7 @@ UNICODE_UCD_EMOJI_DOWNLOAD = \ UNICODE_EMOJI_DOWNLOAD = \ $(UNICODE_DOWNLOADER) \ -d $(UNICODE_SRC_EMOJI_DATA_DIR) \ - -p emoji/$(UNICODE_EMOJI_VERSION) + -p $(UNICODE_VERSION)/emoji update-unicode-files: $(ECHO) Downloading Unicode $(UNICODE_VERSION) data and property files... @@ -1750,8 +1811,8 @@ $(UNICODE_EMOJI_FILES): $(Q) $(MAKEDIRS) "$(UNICODE_SRC_EMOJI_DATA_DIR)" $(Q) $(UNICODE_EMOJI_DOWNLOAD) $@ -$(srcdir)/lib/unicode_normalize/tables.rb: \ - $(UNICODE_SRC_DATA_DIR)/$(HAVE_BASERUBY:yes=.unicode-tables.time) +$(srcdir)/lib/unicode_normalize/$(HAVE_BASERUBY:yes=tables.rb): \ + $(UNICODE_SRC_DATA_DIR)/.unicode-tables.time $(UNICODE_SRC_DATA_DIR)/$(ALWAYS_UPDATE_UNICODE:yes=.unicode-tables.time): \ $(UNICODE_FILES) $(UNICODE_PROPERTY_FILES) \ @@ -1802,11 +1863,11 @@ $(UNICODE_HDR_DIR)/name2ctype.h: $(UNICODE_SRC_DATA_DIR) $(UNICODE_SRC_EMOJI_DATA_DIR) > $@.new $(MV) $@.new $@ -srcs-doc: $(srcdir)/doc/regexp/unicode_properties.rdoc -$(srcdir)/doc/regexp/$(ALWAYS_UPDATE_UNICODE:yes=unicode_properties.rdoc): \ +srcs-doc: $(srcdir)/doc/language/regexp/unicode_properties.rdoc +$(srcdir)/doc/language/regexp/$(ALWAYS_UPDATE_UNICODE:yes=unicode_properties.rdoc): \ $(UNICODE_HDR_DIR)/name2ctype.h $(UNICODE_PROPERTY_FILES) -$(srcdir)/doc/regexp/unicode_properties.rdoc: +$(srcdir)/doc/language/regexp/unicode_properties.rdoc: $(Q) $(BOOTSTRAPRUBY) $(tooldir)/generic_erb.rb -c -o $@ \ $(srcdir)/template/unicode_properties.rdoc.tmpl \ $(UNICODE_SRC_DATA_DIR) $(UNICODE_HDR_DIR)/name2ctype.h || \ @@ -1872,9 +1933,9 @@ sudo-precheck: PHONY @$(SUDO) echo > $(NULL) update-man-date: PHONY - -$(Q) $(BASERUBY) -I"$(tooldir)/lib" -rvcs -i -p \ + $(Q) $(BASERUBY) -I"$(tooldir)/lib" -rvcs -i -p \ -e 'BEGIN{@vcs=VCS.detect(ARGV.shift)}' \ - -e '$$_.sub!(/^(\.Dd ).*/){$$1+@vcs.modified(ARGF.path).strftime("%B %d, %Y")}' \ + -e '$$_.sub!(/^(\.Dd ).*/){$$1+@vcs.author_date(@vcs.relative_to(ARGF.path)).strftime("%B %d, %Y")}' \ "$(srcdir)" "$(srcdir)"/man/*.1 .PHONY: ChangeLog @@ -1897,8 +1958,8 @@ nightly: yesterday $(DOT_WAIT) install yesterday: rewindable rewindable: - $(GIT) -C $(srcdir) status --porcelain - $(GIT) -C $(srcdir) diff --quiet + $(GIT_IN_SRC) status --porcelain + $(GIT_IN_SRC) diff --quiet HELP_EXTRA_TASKS = "" |
