mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
YJIT: Support MAKE=bmake for release build
This add support for bmake, which should allow building with `configure --enable-yjit` for the BSDs. Tested on FreeBSD 13 and on macOS with `configure MAKE=bmake` on a case-sensitive file system. It works by including a fragment into the Makefile through the configure script, similar to common.mk. It uses the always rebuild approach to keep build system changes minimal.
This commit is contained in:
parent
b3d8dddee7
commit
a8dc49b4d5
Notes:
git
2022-09-21 03:17:51 +09:00
4 changed files with 28 additions and 10 deletions
|
@ -219,6 +219,14 @@ MAKE_LINK = $(MINIRUBY) -rfileutils -e "include FileUtils::Verbose" \
|
|||
-e "noraise {ln(src, dest)} or" \
|
||||
-e "cp(src, dest)"
|
||||
|
||||
# For release builds
|
||||
YJIT_RUSTC_ARGS = --crate-name=yjit \
|
||||
--crate-type=staticlib \
|
||||
--edition=2021 \
|
||||
-C opt-level=3 \
|
||||
-C overflow-checks=on \
|
||||
'--out-dir=$(CARGO_TARGET_DIR)/release/' \
|
||||
$(top_srcdir)/yjit/src/lib.rs
|
||||
|
||||
all: $(SHOWFLAGS) main docs
|
||||
|
||||
|
|
|
@ -4370,6 +4370,10 @@ AC_CONFIG_FILES(Makefile:template/Makefile.in, [
|
|||
AS_IF([test "$gnumake" != yes], [
|
||||
echo ['$(MKFILES): $(srcdir)/common.mk']
|
||||
sed ['s/{\$([^(){}]*)[^{}]*}//g'] ${srcdir}/common.mk
|
||||
AS_IF([test "$YJIT_SUPPORT" = yes], [
|
||||
cat ${srcdir}/yjit/not_gmake.mk
|
||||
echo ['$(MKFILES): ${srcdir}/yjit/not_gmake.mk']
|
||||
])
|
||||
], [
|
||||
echo 'distclean-local::; @$(RM) GNUmakefile uncommon.mk'
|
||||
])
|
||||
|
@ -4387,7 +4391,7 @@ AC_CONFIG_FILES(Makefile:template/Makefile.in, [
|
|||
echo 'ruby: $(PROGRAM);' >> $tmpmk
|
||||
test "$tmpmk" = "$tmpgmk" || rm -f "$tmpgmk"
|
||||
]) && mv -f $tmpmk Makefile],
|
||||
[EXEEXT='$EXEEXT' MAKE='${MAKE-make}' gnumake='$gnumake' GIT='$GIT'])
|
||||
[EXEEXT='$EXEEXT' MAKE='${MAKE-make}' gnumake='$gnumake' GIT='$GIT' YJIT_SUPPORT='$YJIT_SUPPORT'])
|
||||
|
||||
AC_ARG_WITH([ruby-pc],
|
||||
AS_HELP_STRING([--with-ruby-pc=FILENAME], [pc file basename]),
|
||||
|
|
14
yjit/not_gmake.mk
Normal file
14
yjit/not_gmake.mk
Normal file
|
@ -0,0 +1,14 @@
|
|||
# This file is included into the Makefile when
|
||||
# we're *not* using GNU make. Stick to basic features.
|
||||
|
||||
# Rebuild every time since we don't want to list Rust source
|
||||
# file dependencies.
|
||||
.PHONY: yjit-static-lib
|
||||
$(YJIT_LIBS): yjit-static-lib
|
||||
$(empty)
|
||||
|
||||
yjit-static-lib:
|
||||
$(ECHO) 'building Rust YJIT (release mode)'
|
||||
$(Q) $(RUSTC) $(YJIT_RUSTC_ARGS)
|
||||
|
||||
miniruby$(EXEEXT): $(YJIT_LIBS)
|
10
yjit/yjit.mk
10
yjit/yjit.mk
|
@ -23,14 +23,7 @@ YJIT_LIB_TOUCH = touch $@
|
|||
ifeq ($(YJIT_SUPPORT),yes)
|
||||
$(YJIT_LIBS): $(YJIT_SRC_FILES)
|
||||
$(ECHO) 'building Rust YJIT (release mode)'
|
||||
$(Q) $(RUSTC) \
|
||||
--crate-name=yjit \
|
||||
--crate-type=staticlib \
|
||||
--edition=2021 \
|
||||
-C opt-level=3 \
|
||||
-C overflow-checks=on \
|
||||
'--out-dir=$(CARGO_TARGET_DIR)/release/' \
|
||||
$(top_srcdir)/yjit/src/lib.rs
|
||||
$(Q) $(RUSTC) $(YJIT_RUSTC_ARGS)
|
||||
$(YJIT_LIB_TOUCH)
|
||||
else ifeq ($(YJIT_SUPPORT),no)
|
||||
$(YJIT_LIBS):
|
||||
|
@ -48,7 +41,6 @@ else
|
|||
endif
|
||||
|
||||
# Put this here instead of in common.mk to avoid breaking nmake builds
|
||||
# TODO: might need to move for BSD Make support
|
||||
miniruby$(EXEEXT): $(YJIT_LIBS)
|
||||
|
||||
# By using YJIT_BENCH_OPTS instead of RUN_OPTS, you can skip passing the options to `make install`
|
||||
|
|
Loading…
Reference in a new issue