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))),)