120 lines
3.6 KiB
Makefile
120 lines
3.6 KiB
Makefile
ifdef VERBOSE
|
|
Q :=
|
|
BOOTSTRAP_ARGS := -v
|
|
else
|
|
Q := @
|
|
BOOTSTRAP_ARGS :=
|
|
endif
|
|
|
|
# Pass `-jN` to the bootstrap if it is specified.
|
|
ifdef MAKEFLAGS
|
|
ifneq (,$(findstring -j, $(MAKEFLAGS)))
|
|
BOOTSTRAP_ARGS += $(filter -j%, $(MAKEFLAGS))
|
|
endif
|
|
endif
|
|
|
|
BOOTSTRAP := $(CFG_PYTHON) $(CFG_SRC_DIR)src/bootstrap/bootstrap.py
|
|
|
|
all:
|
|
$(Q)$(BOOTSTRAP) build --stage 2 $(BOOTSTRAP_ARGS)
|
|
$(Q)$(BOOTSTRAP) doc --stage 2 $(BOOTSTRAP_ARGS)
|
|
|
|
help:
|
|
$(Q)echo 'Welcome to bootstrap, the Rust build system!'
|
|
$(Q)echo
|
|
$(Q)echo This makefile is a thin veneer over the ./x.py script located
|
|
$(Q)echo in this directory. To get the full power of the build system
|
|
$(Q)echo you can run x.py directly.
|
|
$(Q)echo
|
|
$(Q)echo To learn more run \`./x.py --help\`
|
|
|
|
clean:
|
|
$(Q)$(BOOTSTRAP) clean $(BOOTSTRAP_ARGS)
|
|
|
|
rustc-stage1:
|
|
$(Q)$(BOOTSTRAP) build --stage 1 library/test $(BOOTSTRAP_ARGS)
|
|
rustc-stage2:
|
|
$(Q)$(BOOTSTRAP) build --stage 2 library/test $(BOOTSTRAP_ARGS)
|
|
|
|
docs: doc
|
|
doc:
|
|
$(Q)$(BOOTSTRAP) doc --stage 2 $(BOOTSTRAP_ARGS)
|
|
nomicon:
|
|
$(Q)$(BOOTSTRAP) doc --stage 2 src/doc/nomicon $(BOOTSTRAP_ARGS)
|
|
book:
|
|
$(Q)$(BOOTSTRAP) doc --stage 2 src/doc/book $(BOOTSTRAP_ARGS)
|
|
standalone-docs:
|
|
$(Q)$(BOOTSTRAP) doc --stage 2 src/doc $(BOOTSTRAP_ARGS)
|
|
check:
|
|
$(Q)$(BOOTSTRAP) test --stage 2 $(BOOTSTRAP_ARGS)
|
|
check-aux:
|
|
$(Q)$(BOOTSTRAP) test --stage 2 \
|
|
src/tools/cargo \
|
|
src/tools/cargotest \
|
|
src/etc/test-float-parse \
|
|
$(BOOTSTRAP_ARGS)
|
|
# Run standard library tests in Miri.
|
|
$(Q)$(BOOTSTRAP) miri --stage 2 \
|
|
library/core \
|
|
library/alloc \
|
|
$(BOOTSTRAP_ARGS) \
|
|
--no-doc
|
|
# Some doctests use file system operations to demonstrate dealing with `Result`.
|
|
$(Q)MIRIFLAGS="-Zmiri-disable-isolation" \
|
|
$(BOOTSTRAP) miri --stage 2 \
|
|
library/core \
|
|
library/alloc \
|
|
$(BOOTSTRAP_ARGS) \
|
|
--doc
|
|
# In `std` we cannot test everything, so we skip some modules.
|
|
$(Q)MIRIFLAGS="-Zmiri-disable-isolation" \
|
|
$(BOOTSTRAP) miri --stage 2 library/std \
|
|
$(BOOTSTRAP_ARGS) \
|
|
--no-doc -- \
|
|
--skip fs:: --skip net:: --skip process:: --skip sys::pal::
|
|
$(Q)MIRIFLAGS="-Zmiri-disable-isolation" \
|
|
$(BOOTSTRAP) miri --stage 2 library/std \
|
|
$(BOOTSTRAP_ARGS) \
|
|
--doc -- \
|
|
--skip fs:: --skip net:: --skip process:: --skip sys::pal::
|
|
# Also test some very target-specific modules on other targets
|
|
# (making sure to cover an i686 target as well).
|
|
$(Q)MIRIFLAGS="-Zmiri-disable-isolation" BOOTSTRAP_SKIP_TARGET_SANITY=1 \
|
|
$(BOOTSTRAP) miri --stage 2 library/std \
|
|
$(BOOTSTRAP_ARGS) \
|
|
--target aarch64-apple-darwin,i686-pc-windows-msvc \
|
|
--no-doc -- \
|
|
time:: sync:: thread:: env::
|
|
dist:
|
|
$(Q)$(BOOTSTRAP) dist $(BOOTSTRAP_ARGS)
|
|
distcheck:
|
|
$(Q)$(BOOTSTRAP) dist $(BOOTSTRAP_ARGS)
|
|
$(Q)$(BOOTSTRAP) test --stage 2 distcheck $(BOOTSTRAP_ARGS)
|
|
install:
|
|
$(Q)$(BOOTSTRAP) install $(BOOTSTRAP_ARGS)
|
|
tidy:
|
|
$(Q)$(BOOTSTRAP) test --stage 2 src/tools/tidy $(BOOTSTRAP_ARGS)
|
|
prepare:
|
|
$(Q)$(BOOTSTRAP) build --stage 2 --dry-run
|
|
|
|
## MSVC native builders
|
|
|
|
# this intentionally doesn't use `$(BOOTSTRAP)` so we can test the shebang on Windows
|
|
ci-msvc-py:
|
|
$(Q)$(CFG_SRC_DIR)/x.py test --stage 2 tidy
|
|
ci-msvc-ps1:
|
|
$(Q)$(CFG_SRC_DIR)/x.ps1 test --stage 2 --skip tidy
|
|
ci-msvc: ci-msvc-py ci-msvc-ps1
|
|
|
|
## MingW native builders
|
|
|
|
# Set of tests that should represent half of the time of the test suite.
|
|
# Used to split tests across multiple CI runners.
|
|
# Test both x and bootstrap entrypoints.
|
|
ci-mingw-x:
|
|
$(Q)$(CFG_SRC_DIR)/x test --stage 2 --skip=compiler --skip=src
|
|
ci-mingw-bootstrap:
|
|
$(Q)$(BOOTSTRAP) test --stage 2 --skip=tests --skip=coverage-map --skip=coverage-run --skip=library --skip=tidyselftest
|
|
ci-mingw: ci-mingw-x ci-mingw-bootstrap
|
|
|
|
.PHONY: dist
|