X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=Makefile.in;h=5683eb7ba06af964def14409de5347f4872ffe3c;hb=caa564bea3d5f5a24d0797c4769184c1ea0abaff;hp=599984623e2581a13a3313e934e4f9f2894b66b6;hpb=2852fea61e51752a0a7f6c2aeb8fe798a2890c4e;p=rust.git diff --git a/Makefile.in b/Makefile.in index 599984623e2..5683eb7ba06 100644 --- a/Makefile.in +++ b/Makefile.in @@ -8,54 +8,116 @@ # option. This file may not be copied, modified, or distributed # except according to those terms. -# +# \(^o^)/ # -# # The Rust Build System +# Greetings, adventurer! The Rust Build System is at your service. +# +# Whether you want a genuine copy of `rustc`, access to the latest and +# most authoritative Rust documentation, or even to investigate the +# most intimate workings of the compiler itself, you've come to the +# right place. Let's see what's on the menu. +# +# First, start with one of these build targets: +# +# * all - The default. Build a complete, bootstrapped compiler. +# `rustc` will be in `${target-triple}/stage2/bin/`. Run it +# directly from the build directory if you like. This also +# comes with docs in `doc/`. +# +# * check - Run the complete test suite +# +# * clean - Clean the build repertory. It is advised to run this +# command if you want to build Rust again, after an update +# of the git repository. +# +# * install - Install Rust. Note that installation is not necessary +# to use the compiler. +# +# * uninstall - Uninstall the binaries +# +# For tips on working with The Rust Build System, just: +# +# run `make tips` +# +# Otherwise +# +# run `make` +# +# +# +# +# +# # The Rust Build System Tip Line # -# Start with these these build targets: -# -# * all - The default rule. Builds a complete stage2 compiler, std, -# and extra for all hosts and targets -# * docs - Generate HTML documentation for the std and extra libraries -# from source code comments -# * rustc - The stage 2 compiler for the build platform with standard -# and extra libraries -# * install -# * uninstall -# * check - Run tests -# * check-stage1-$(crate) - Run tests for a crate, e.g. `check-stage1-std` -# * check-stage1-rpass - Run the language tests -# * check-docs - Run the doc tests +# There are a bazillion different targets you might want to build. Here +# are a few ideas. +# +# * docs - Build gobs of HTML documentation and put it into `doc/` +# * check-$(crate) - Test a crate, e.g. `check-std` +# * check-ref - Run the language reference tests +# * check-docs - Test the documentation examples +# * check-stage$(stage)-$(crate) - Test a crate in a specific stage +# * check-stage$(stage)-{rpass,rfail,cfail,rmake,...} - Run tests in src/test/ +# * check-stage1-T-$(target)-H-$(host) - Run cross-compiled-tests # # Then mix in some of these environment variables to harness the -# ultimate power of Rust Build System. -# -# * `VERBOSE=1` - Print all commands. Use this to see what's going on. -# * `RUSTFLAGS=...` - Add compiler flags to all `rustc` invocations -# * `CFG_ENABLE_VALGRIND=1` - Run tests under valgrind -# * `VALGRIND_COMPILE=1` - Run the compiler itself under valgrind -# (may require `CFG_ENABLE_VALGRIND`) -# * `NO_REBUILD=1` - Don't rebootstrap when testing std -# (and possibly other crates) -# * `SAVE_TEMPS=1` - Use `--save-temps` flag on all `rustc` invocations -# * `ASM_COMMENTS=1` - Use `-Z asm-comments` -# * `TIME_PASSES=1` - Use `-Z time-passes` -# * `TIME_LLVM_PASSES=1` - Use `-Z time-llvm-passes` -# * `TRACE=1` - Use `-Z trace` +# ultimate power of The Rust Build System. +# +# * `VERBOSE=1` - Print all commands. Use this to see what's going on. +# * `RUSTFLAGS=...` - Add compiler flags to all `rustc` invocations +# +# * `TESTNAME=...` - Specify the name of tests to run +# * `CHECK_IGNORED=1` - Run normally-ignored tests +# * `PLEASE_BENCH=1` - Run crate benchmarks (enable `--bench` flag) +# +# * `CFG_ENABLE_VALGRIND=1` - Run tests under valgrind +# * `VALGRIND_COMPILE=1` - Run the compiler itself under valgrind +# (may require `CFG_ENABLE_VALGRIND`) +# +# * `NO_REBUILD=1` - Don't rebootstrap when testing std +# (and possibly other crates) +# * `NO_MKFILE_DEPS=1` - Don't rebuild for modified .mk files +# +# * `SAVE_TEMPS=1` - Use `--save-temps` flag on all `rustc` invocations +# * `ASM_COMMENTS=1` - Use `-Z asm-comments` +# * `TIME_PASSES=1` - Use `-Z time-passes` +# * `TIME_LLVM_PASSES=1` - Use `-Z time-llvm-passes` +# * `TRACE=1` - Use `-Z trace` +# +# # Rust recipes for build system success +# +# // Modifying libstd? Use this comment to run unit tests just on your change +# make check-stage1-std NO_REBUILD=1 NO_BENCH=1 +# +# // Added a run-pass test? Use this to test running your test +# make check-stage1-rpass TESTNAME=my-shiny-new-test +# +# // Having trouble figuring out which test is failing? Turn off parallel tests +# make check-stage1-std RUST_TEST_TASKS=1 # # This is hardly all there is to know of The Rust Build System's -# mysteries. Your journey continues on the wiki[1][2]. +# mysteries. The tale continues on the wiki[1][2]. # -# [1]: https://github.com/mozilla/rust/wiki/Note-build-system -# [2]: https://github.com/mozilla/rust/wiki/Note-testsuite +# [1]: https://github.com/rust-lang/rust/wiki/Note-build-system +# [2]: https://github.com/rust-lang/rust/wiki/Note-testsuite # -# +# If you really feel like getting your hands dirty, then: +# +# run `make nitty-gritty` +# +# +# +# +# +# # The Rust Build System +# +# Gosh I wish there was something useful here (TODO). # # # An (old) explanation of how the build is structured: # # *Note: Hey, like, this is probably inaccurate, and is definitely # an outdated and insufficient explanation of the remarkable -# and discomfiting Rust Build System.* +# Rust Build System.* # # There are multiple build stages (0-3) needed to verify that the # compiler is properly self-hosting. Each stage is divided between @@ -94,10 +156,13 @@ # libraries are managed and versioned without polluting the common # areas of the filesystem. # -# General rust binaries may stil live in the host bin directory; they +# General rust binaries may still live in the host bin directory; they # will just link against the libraries in the target lib directory. # # Admittedly this is a little convoluted. +# +# +# ###################################################################### # Primary rules @@ -112,10 +177,10 @@ include config.mk # Just a few macros used everywhere include $(CFG_SRC_DIR)mk/util.mk -# All crates and their dependencies -include $(CFG_SRC_DIR)mk/crates.mk # Reconfiguring when the makefiles or submodules change include $(CFG_SRC_DIR)mk/reconfig.mk +# All crates and their dependencies +include $(CFG_SRC_DIR)mk/crates.mk # Various bits of setup, common macros, and top-level rules include $(CFG_SRC_DIR)mk/main.mk # C and assembly components that are not LLVM @@ -137,16 +202,6 @@ include $(CFG_SRC_DIR)mk/llvm.mk # Secondary makefiles, conditionalized for speed ###################################################################### -# Source and binary distribution artifacts -ifneq ($(strip $(findstring dist,$(MAKECMDGOALS)) \ - $(findstring check,$(MAKECMDGOALS)) \ - $(findstring test,$(MAKECMDGOALS)) \ - $(findstring tidy,$(MAKECMDGOALS)) \ - $(findstring clean,$(MAKECMDGOALS))),) - CFG_INFO := $(info cfg: including dist rules) - include $(CFG_SRC_DIR)mk/dist.mk -endif - # Binary snapshots ifneq ($(strip $(findstring snap,$(MAKECMDGOALS)) \ $(findstring clean,$(MAKECMDGOALS))),) @@ -161,6 +216,7 @@ ifneq ($(strip $(findstring check,$(MAKECMDGOALS)) \ $(findstring tidy,$(MAKECMDGOALS))),) CFG_INFO := $(info cfg: including test rules) include $(CFG_SRC_DIR)mk/tests.mk + include $(CFG_SRC_DIR)mk/grammar.mk endif # Performance and benchmarking @@ -169,18 +225,34 @@ ifneq ($(findstring perf,$(MAKECMDGOALS)),) include $(CFG_SRC_DIR)mk/perf.mk endif -# Cleaning -ifneq ($(findstring clean,$(MAKECMDGOALS)),) - CFG_INFO := $(info cfg: including clean rules) - include $(CFG_SRC_DIR)mk/clean.mk +# Copy all the distributables to another directory for binary install +ifneq ($(strip $(findstring prepare,$(MAKECMDGOALS)) \ + $(findstring dist,$(MAKECMDGOALS)) \ + $(findstring install,$(MAKECMDGOALS))),) + CFG_INFO := $(info cfg: including prepare rules) + include $(CFG_SRC_DIR)mk/prepare.mk endif -# Installation from the build directory +# Source and binary distribution artifacts +ifneq ($(strip $(findstring dist,$(MAKECMDGOALS)) \ + $(findstring install,$(MAKECMDGOALS)) \ + $(findstring clean,$(MAKECMDGOALS))),) + CFG_INFO := $(info cfg: including dist rules) + include $(CFG_SRC_DIR)mk/dist.mk +endif + +# (Unix) Installation from the build directory ifneq ($(findstring install,$(MAKECMDGOALS)),) CFG_INFO := $(info cfg: including install rules) include $(CFG_SRC_DIR)mk/install.mk endif +# Cleaning +ifneq ($(findstring clean,$(MAKECMDGOALS)),) + CFG_INFO := $(info cfg: including clean rules) + include $(CFG_SRC_DIR)mk/clean.mk +endif + # CTAGS building ifneq ($(strip $(findstring TAGS.emacs,$(MAKECMDGOALS)) \ $(findstring TAGS.vi,$(MAKECMDGOALS))),)