Graydon Hoare | d1affff | 2012-12-11 01:32:48 | [diff] [blame] | 1 | # Copyright 2012 The Rust Project Developers. See the COPYRIGHT |
| 2 | # file at the top-level directory of this distribution and at |
| 3 | # http://rust-lang.org/COPYRIGHT. |
| 4 | # |
| 5 | # Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or |
| 6 | # http://www.apache.org/licenses/LICENSE-2.0> or the MIT license |
| 7 | # <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your |
| 8 | # option. This file may not be copied, modified, or distributed |
| 9 | # except according to those terms. |
| 10 | |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 11 | # <help> \(^o^)/ |
Brian Anderson | b11e73d | 2014-02-14 05:22:08 | [diff] [blame] | 12 | # |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 13 | # Greetings, adventurer! The Rust Build System is at your service. |
Brian Anderson | b11e73d | 2014-02-14 05:22:08 | [diff] [blame] | 14 | # |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 15 | # Whether you want a genuine copy of `rustc`, access to the latest and |
| 16 | # most authoritative Rust documentation, or even to investigate the |
| 17 | # most intimate workings of the compiler itself, you've come to the |
| 18 | # right place. Let's see what's on the menu. |
Brian Anderson | b11e73d | 2014-02-14 05:22:08 | [diff] [blame] | 19 | # |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 20 | # First, start with one of these build targets: |
| 21 | # |
Virgile Andreani | 54f710f | 2014-02-18 10:55:34 | [diff] [blame] | 22 | # * all - The default. Build a complete, bootstrapped compiler. |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 23 | # `rustc` will be in `${target-triple}/stage2/bin/`. Run it |
| 24 | # directly from the build directory if you like. This also |
| 25 | # comes with docs in `doc/`. |
| 26 | # |
| 27 | # * check - Run the complete test suite |
| 28 | # |
Alex Gaynor | a2fbf9d | 2015-09-19 12:10:54 | [diff] [blame] | 29 | # * clean - Clean the build repository. It is advised to run this |
Virgile Andreani | 54f710f | 2014-02-18 10:55:34 | [diff] [blame] | 30 | # command if you want to build Rust again, after an update |
| 31 | # of the git repository. |
| 32 | # |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 33 | # * install - Install Rust. Note that installation is not necessary |
| 34 | # to use the compiler. |
| 35 | # |
| 36 | # * uninstall - Uninstall the binaries |
| 37 | # |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 38 | # For tips on working with The Rust Build System, just: |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 39 | # |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 40 | # run `make tips` |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 41 | # |
| 42 | # Otherwise |
| 43 | # |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 44 | # run `make` |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 45 | # |
| 46 | # </help> |
| 47 | # |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 48 | # <tips> |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 49 | # |
| 50 | # # The Rust Build System Tip Line |
| 51 | # |
| 52 | # There are a bazillion different targets you might want to build. Here |
| 53 | # are a few ideas. |
| 54 | # |
| 55 | # * docs - Build gobs of HTML documentation and put it into `doc/` |
| 56 | # * check-$(crate) - Test a crate, e.g. `check-std` |
| 57 | # * check-ref - Run the language reference tests |
| 58 | # * check-docs - Test the documentation examples |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 59 | # * check-stage$(stage)-$(crate) - Test a crate in a specific stage |
| 60 | # * check-stage$(stage)-{rpass,rfail,cfail,rmake,...} - Run tests in src/test/ |
| 61 | # * check-stage1-T-$(target)-H-$(host) - Run cross-compiled-tests |
Georg Brandl | e24999e | 2016-05-03 05:13:10 | [diff] [blame] | 62 | # * tidy - Basic style check, show highest rustc error code and |
| 63 | # the status of language and lib features |
Peter Elmers | 9b6fe6c | 2015-06-29 01:49:22 | [diff] [blame] | 64 | # * rustc-stage$(stage) - Only build up to a specific stage |
flo-l | 4e87986 | 2016-06-02 20:19:20 | [diff] [blame] | 65 | # * $host/stage1/bin/rustc - Only build stage1 rustc, not libstd. For further |
| 66 | # information see "Rust recipes for build system success" below. |
Brian Anderson | b11e73d | 2014-02-14 05:22:08 | [diff] [blame] | 67 | # |
| 68 | # Then mix in some of these environment variables to harness the |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 69 | # ultimate power of The Rust Build System. |
Brian Anderson | b11e73d | 2014-02-14 05:22:08 | [diff] [blame] | 70 | # |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 71 | # * `VERBOSE=1` - Print all commands. Use this to see what's going on. |
| 72 | # * `RUSTFLAGS=...` - Add compiler flags to all `rustc` invocations |
Daniel Micay | 1ee099d | 2014-09-07 18:05:32 | [diff] [blame] | 73 | # * `JEMALLOC_FLAGS=...` - Pass flags to jemalloc's configure script |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 74 | # |
| 75 | # * `TESTNAME=...` - Specify the name of tests to run |
| 76 | # * `CHECK_IGNORED=1` - Run normally-ignored tests |
Alex Crichton | bfbd732 | 2014-05-15 18:15:35 | [diff] [blame] | 77 | # * `PLEASE_BENCH=1` - Run crate benchmarks (enable `--bench` flag) |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 78 | # |
| 79 | # * `CFG_ENABLE_VALGRIND=1` - Run tests under valgrind |
| 80 | # * `VALGRIND_COMPILE=1` - Run the compiler itself under valgrind |
Tamir Duberstein | cc267ce | 2015-04-17 14:35:35 | [diff] [blame] | 81 | # (requires `CFG_ENABLE_VALGRIND`) |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 82 | # |
| 83 | # * `NO_REBUILD=1` - Don't rebootstrap when testing std |
| 84 | # (and possibly other crates) |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 85 | # * `NO_MKFILE_DEPS=1` - Don't rebuild for modified .mk files |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 86 | # |
| 87 | # * `SAVE_TEMPS=1` - Use `--save-temps` flag on all `rustc` invocations |
| 88 | # * `ASM_COMMENTS=1` - Use `-Z asm-comments` |
| 89 | # * `TIME_PASSES=1` - Use `-Z time-passes` |
| 90 | # * `TIME_LLVM_PASSES=1` - Use `-Z time-llvm-passes` |
| 91 | # * `TRACE=1` - Use `-Z trace` |
Brian Anderson | b11e73d | 2014-02-14 05:22:08 | [diff] [blame] | 92 | # |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 93 | # # Rust recipes for build system success |
| 94 | # |
Richo Healey | f07b11d | 2015-06-29 02:05:09 | [diff] [blame] | 95 | # // Modifying libstd? Use this command to run unit tests just on your change |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 96 | # make check-stage1-std NO_REBUILD=1 NO_BENCH=1 |
| 97 | # |
flo-l | 4e87986 | 2016-06-02 20:19:20 | [diff] [blame] | 98 | # // Modifying just rustc? |
| 99 | # // Compile rustc+libstd once |
| 100 | # make rustc-stage1 |
| 101 | # // From now on use this command to rebuild just rustc and reuse the previously built libstd |
| 102 | # // $host is a target triple, eg. x86_64-unknown-linux-gnu |
| 103 | # // The resulting binary is located at $host/stage1/bin/rustc. |
| 104 | # // If there are any issues with libstd recompile it with the command above. |
| 105 | # make $host/stage1/bin/rustc |
| 106 | # |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 107 | # // Added a run-pass test? Use this to test running your test |
| 108 | # make check-stage1-rpass TESTNAME=my-shiny-new-test |
| 109 | # |
| 110 | # // Having trouble figuring out which test is failing? Turn off parallel tests |
Steve Klabnik | 7cbc428 | 2015-03-19 19:42:53 | [diff] [blame] | 111 | # make check-stage1-std RUST_TEST_THREADS=1 |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 112 | # |
Manish Goregaokar | bdecd9d | 2016-02-25 04:51:32 | [diff] [blame] | 113 | # // To make debug!() and other logging calls visible, reconfigure: |
| 114 | # ./configure --enable-debug-assertions |
| 115 | # make .... |
| 116 | # |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 117 | # If you really feel like getting your hands dirty, then: |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 118 | # |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 119 | # run `make nitty-gritty` |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 120 | # |
Guillaume Gomez | 0619eeb | 2016-05-07 21:51:13 | [diff] [blame] | 121 | # # Make command examples |
| 122 | # |
| 123 | # ## Docs linked commands |
| 124 | # |
| 125 | # * make check-stage1-rustdocck: Builds rustdoc. It has the advantage to compile |
| 126 | # quite quickly since we're only using stage1 |
| 127 | # executables. |
| 128 | # * make doc/error-index.md: Gets all doc blocks from doc comments and error |
| 129 | # explanations to put them in a markdown file. You |
| 130 | # can then test them by running |
| 131 | # "rustdoc --test error-index.md". |
| 132 | # |
| 133 | # And of course, the wonderfully useful 'make tidy'! Always run it before opening a pull request to rust! |
| 134 | # |
Brian Anderson | 8d4b675 | 2014-02-15 03:17:50 | [diff] [blame] | 135 | # </tips> |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 136 | # |
Virgile Andreani | ece12d8 | 2014-02-18 10:53:23 | [diff] [blame] | 137 | # <nitty-gritty> |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 138 | # |
| 139 | # # The Rust Build System |
| 140 | # |
| 141 | # Gosh I wish there was something useful here (TODO). |
Brian Anderson | b11e73d | 2014-02-14 05:22:08 | [diff] [blame] | 142 | # |
| 143 | # # An (old) explanation of how the build is structured: |
| 144 | # |
| 145 | # *Note: Hey, like, this is probably inaccurate, and is definitely |
| 146 | # an outdated and insufficient explanation of the remarkable |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 147 | # Rust Build System.* |
Brian Anderson | 6e65456 | 2011-10-02 03:12:08 | [diff] [blame] | 148 | # |
| 149 | # There are multiple build stages (0-3) needed to verify that the |
| 150 | # compiler is properly self-hosting. Each stage is divided between |
| 151 | # 'host' artifacts and 'target' artifacts, where the stageN host |
| 152 | # compiler builds artifacts for 1 or more stageN target architectures. |
| 153 | # Once the stageN target compiler has been built for the host |
| 154 | # architecture it is promoted (copied) to a stageN+1 host artifact. |
| 155 | # |
| 156 | # The stage3 host compiler is a compiler that successfully builds |
| 157 | # itself and should (in theory) be bitwise identical to the stage2 |
| 158 | # host compiler. The process is bootstrapped using a stage0 host |
| 159 | # compiler downloaded from a previous snapshot. |
| 160 | # |
| 161 | # At no time should stageN artifacts be interacting with artifacts |
| 162 | # from other stages. For consistency, we use the 'promotion' logic |
| 163 | # for all artifacts, even those that don't make sense on non-host |
| 164 | # architectures. |
| 165 | # |
| 166 | # The directory layout for a stage is intended to match the layout |
| 167 | # of the installed compiler, and looks like the following: |
| 168 | # |
| 169 | # stageN - this is the system root, corresponding to, e.g. /usr |
| 170 | # bin - binaries compiled for the host |
| 171 | # lib - libraries used by the host compiler |
Jan Niklas Hasse | 6abe0ef | 2014-01-05 01:55:20 | [diff] [blame] | 172 | # rustlib - rustc's own place to organize libraries |
Brian Anderson | 6e65456 | 2011-10-02 03:12:08 | [diff] [blame] | 173 | # $(target) - target-specific artifacts |
| 174 | # bin - binaries for target architectures |
| 175 | # lib - libraries for target architectures |
| 176 | # |
| 177 | # A note about host libraries: |
| 178 | # |
| 179 | # The only libraries that get promoted to stageN/lib are those needed |
Brian Anderson | 19797df | 2011-11-03 17:53:49 | [diff] [blame] | 180 | # by rustc. In general, rust programs, even those compiled for the |
Brian Anderson | 6e65456 | 2011-10-02 03:12:08 | [diff] [blame] | 181 | # host architecture will use libraries from the target |
| 182 | # directories. This gives rust some freedom to experiment with how |
| 183 | # libraries are managed and versioned without polluting the common |
| 184 | # areas of the filesystem. |
| 185 | # |
Virgile Andreani | 54f710f | 2014-02-18 10:55:34 | [diff] [blame] | 186 | # General rust binaries may still live in the host bin directory; they |
Brian Anderson | 6e65456 | 2011-10-02 03:12:08 | [diff] [blame] | 187 | # will just link against the libraries in the target lib directory. |
| 188 | # |
| 189 | # Admittedly this is a little convoluted. |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 190 | # |
Richo Healey | 7a1d726 | 2015-04-11 00:01:09 | [diff] [blame] | 191 | # If you find yourself working on the make infrastructure itself, and trying to |
| 192 | # find the value of a given variable after expansion, you can use: |
| 193 | # |
| 194 | # make print-VARIABLE_NAME |
| 195 | # |
| 196 | # To extract it |
| 197 | # |
Virgile Andreani | ece12d8 | 2014-02-18 10:53:23 | [diff] [blame] | 198 | # </nitty-gritty> |
Brian Anderson | 334af01 | 2014-02-14 11:34:18 | [diff] [blame] | 199 | # |
Brian Anderson | 6e65456 | 2011-10-02 03:12:08 | [diff] [blame] | 200 | |
Graydon Hoare | 9c6e7e6 | 2011-03-16 16:17:32 | [diff] [blame] | 201 | ###################################################################### |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 202 | # Primary rules |
Graydon Hoare | e961f53 | 2011-03-21 18:23:19 | [diff] [blame] | 203 | ###################################################################### |
| 204 | |
Felix S. Klock II | 2835df2 | 2013-09-26 21:56:53 | [diff] [blame] | 205 | # Issue #9531: If you change the order of any of the following (or add |
| 206 | # new definitions), make sure definitions always precede their uses, |
| 207 | # especially for the dependency lists of recipes. |
| 208 | |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 209 | # First, load the variables exported by the configure script |
| 210 | include config.mk |
| 211 | |
| 212 | # Just a few macros used everywhere |
| 213 | include $(CFG_SRC_DIR)mk/util.mk |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 214 | # Reconfiguring when the makefiles or submodules change |
| 215 | include $(CFG_SRC_DIR)mk/reconfig.mk |
Alex Crichton | 4709364 | 2014-03-25 22:40:52 | [diff] [blame] | 216 | # All crates and their dependencies |
| 217 | include $(CFG_SRC_DIR)mk/crates.mk |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 218 | # Various bits of setup, common macros, and top-level rules |
| 219 | include $(CFG_SRC_DIR)mk/main.mk |
| 220 | # C and assembly components that are not LLVM |
Alex Crichton | 0ce1b2f | 2013-10-31 06:57:27 | [diff] [blame] | 221 | include $(CFG_SRC_DIR)mk/rt.mk |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 222 | # Rules for crates in the target directories |
Graydon Hoare | 89dec28 | 2012-03-26 23:05:33 | [diff] [blame] | 223 | include $(CFG_SRC_DIR)mk/target.mk |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 224 | # Rules for crates in the host directories |
Graydon Hoare | 89dec28 | 2012-03-26 23:05:33 | [diff] [blame] | 225 | include $(CFG_SRC_DIR)mk/host.mk |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 226 | # Special rules for bootstrapping stage0 |
Graydon Hoare | 89dec28 | 2012-03-26 23:05:33 | [diff] [blame] | 227 | include $(CFG_SRC_DIR)mk/stage0.mk |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 228 | # Rust-specific LLVM extensions |
Graydon Hoare | 89dec28 | 2012-03-26 23:05:33 | [diff] [blame] | 229 | include $(CFG_SRC_DIR)mk/rustllvm.mk |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 230 | # Documentation |
Graydon Hoare | 89dec28 | 2012-03-26 23:05:33 | [diff] [blame] | 231 | include $(CFG_SRC_DIR)mk/docs.mk |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 232 | # LLVM |
Graydon Hoare | 89dec28 | 2012-03-26 23:05:33 | [diff] [blame] | 233 | include $(CFG_SRC_DIR)mk/llvm.mk |
Michael Woerister | 7608d06 | 2014-11-13 16:25:15 | [diff] [blame] | 234 | # Rules for installing debugger scripts |
| 235 | include $(CFG_SRC_DIR)mk/debuggers.mk |
Graydon Hoare | 79ba315 | 2011-06-25 19:23:27 | [diff] [blame] | 236 | |
Graydon Hoare | 79ba315 | 2011-06-25 19:23:27 | [diff] [blame] | 237 | ###################################################################### |
| 238 | # Secondary makefiles, conditionalized for speed |
| 239 | ###################################################################### |
| 240 | |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 241 | # The test suite |
Graydon Hoare | df8161d | 2011-06-30 20:41:20 | [diff] [blame] | 242 | ifneq ($(strip $(findstring check,$(MAKECMDGOALS)) \ |
| 243 | $(findstring test,$(MAKECMDGOALS)) \ |
Graydon Hoare | df8161d | 2011-06-30 20:41:20 | [diff] [blame] | 244 | $(findstring tidy,$(MAKECMDGOALS))),) |
| 245 | CFG_INFO := $(info cfg: including test rules) |
Graydon Hoare | 89dec28 | 2012-03-26 23:05:33 | [diff] [blame] | 246 | include $(CFG_SRC_DIR)mk/tests.mk |
Corey Richardson | c41a7df | 2014-07-21 20:04:35 | [diff] [blame] | 247 | include $(CFG_SRC_DIR)mk/grammar.mk |
Graydon Hoare | 79ba315 | 2011-06-25 19:23:27 | [diff] [blame] | 248 | endif |
| 249 | |
Brian Anderson | 4cd8bdc | 2014-02-13 01:26:10 | [diff] [blame] | 250 | # Copy all the distributables to another directory for binary install |
| 251 | ifneq ($(strip $(findstring prepare,$(MAKECMDGOALS)) \ |
Brian Anderson | 508cb29 | 2014-02-13 08:22:18 | [diff] [blame] | 252 | $(findstring dist,$(MAKECMDGOALS)) \ |
Brian Anderson | 4cd8bdc | 2014-02-13 01:26:10 | [diff] [blame] | 253 | $(findstring install,$(MAKECMDGOALS))),) |
| 254 | CFG_INFO := $(info cfg: including prepare rules) |
| 255 | include $(CFG_SRC_DIR)mk/prepare.mk |
| 256 | endif |
| 257 | |
Brian Anderson | e509cd6 | 2014-03-26 00:54:26 | [diff] [blame] | 258 | # Source and binary distribution artifacts |
| 259 | ifneq ($(strip $(findstring dist,$(MAKECMDGOALS)) \ |
| 260 | $(findstring install,$(MAKECMDGOALS)) \ |
| 261 | $(findstring clean,$(MAKECMDGOALS))),) |
| 262 | CFG_INFO := $(info cfg: including dist rules) |
| 263 | include $(CFG_SRC_DIR)mk/dist.mk |
| 264 | endif |
| 265 | |
Brian Anderson | 4cd8bdc | 2014-02-13 01:26:10 | [diff] [blame] | 266 | # (Unix) Installation from the build directory |
| 267 | ifneq ($(findstring install,$(MAKECMDGOALS)),) |
| 268 | CFG_INFO := $(info cfg: including install rules) |
| 269 | include $(CFG_SRC_DIR)mk/install.mk |
| 270 | endif |
| 271 | |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 272 | # Cleaning |
Graydon Hoare | 79ba315 | 2011-06-25 19:23:27 | [diff] [blame] | 273 | ifneq ($(findstring clean,$(MAKECMDGOALS)),) |
Graydon Hoare | df8161d | 2011-06-30 20:41:20 | [diff] [blame] | 274 | CFG_INFO := $(info cfg: including clean rules) |
Graydon Hoare | 89dec28 | 2012-03-26 23:05:33 | [diff] [blame] | 275 | include $(CFG_SRC_DIR)mk/clean.mk |
Michael Sullivan | b01ecb1 | 2011-07-21 18:58:01 | [diff] [blame] | 276 | endif |
Brian Anderson | 9563c17 | 2011-10-01 02:00:19 | [diff] [blame] | 277 | |
Brian Anderson | 2852fea | 2014-02-14 07:55:49 | [diff] [blame] | 278 | # CTAGS building |
Niko Matsakis | e1c470c | 2011-10-12 19:10:21 | [diff] [blame] | 279 | ifneq ($(strip $(findstring TAGS.emacs,$(MAKECMDGOALS)) \ |
Felix S. Klock II | 272ce38 | 2016-06-17 10:07:48 | [diff] [blame] | 280 | $(findstring TAGS.vi,$(MAKECMDGOALS)) \ |
| 281 | $(findstring TAGS.rustc.emacs,$(MAKECMDGOALS)) \ |
| 282 | $(findstring TAGS.rustc.vi,$(MAKECMDGOALS))),) |
Niko Matsakis | e1c470c | 2011-10-12 19:10:21 | [diff] [blame] | 283 | CFG_INFO := $(info cfg: including ctags rules) |
Graydon Hoare | 89dec28 | 2012-03-26 23:05:33 | [diff] [blame] | 284 | include $(CFG_SRC_DIR)mk/ctags.mk |
Niko Matsakis | e1c470c | 2011-10-12 19:10:21 | [diff] [blame] | 285 | endif |
Guillaume Gomez | 0619eeb | 2016-05-07 21:51:13 | [diff] [blame] | 286 | |
| 287 | .DEFAULT: |
Georg Brandl | d5c7ddc | 2016-05-22 06:28:42 | [diff] [blame] | 288 | @echo |
| 289 | @echo "======================================================" |
Guillaume Gomez | 0619eeb | 2016-05-07 21:51:13 | [diff] [blame] | 290 | @echo "== If you need help, run 'make help' or 'make tips' ==" |
Georg Brandl | d5c7ddc | 2016-05-22 06:28:42 | [diff] [blame] | 291 | @echo "======================================================" |
| 292 | @echo |
Guillaume Gomez | 0619eeb | 2016-05-07 21:51:13 | [diff] [blame] | 293 | exit 1 |