]> git.proxmox.com Git - rustc.git/blame - config.toml.example
Release 1.30.0+dfsg1-2 to Debian unstable.
[rustc.git] / config.toml.example
CommitLineData
ea8adc8c
XL
1# Sample TOML configuration file for building Rust.
2#
3# To configure rustbuild, copy this file to the directory from which you will be
4# running the build, and name it config.toml.
5#
6# All options are commented out by default in this file, and they're commented
7# out with their default values. The build system by default looks for
8# `config.toml` in the current directory of a build for build configuration, but
9# a custom configuration file can also be specified with `--config` to the build
10# system.
11
12# =============================================================================
13# Tweaking how LLVM is compiled
14# =============================================================================
15[llvm]
16
17# Indicates whether rustc will support compilation with LLVM
18# note: rustc does not compile without LLVM at the moment
19#enabled = true
20
21# Indicates whether the LLVM build is a Release or Debug build
22#optimize = true
23
b7449926
XL
24# Indicates whether LLVM should be built with ThinLTO. Note that this will
25# only succeed if you use clang, lld, llvm-ar, and llvm-ranlib in your C/C++
26# toolchain (see the `cc`, `cxx`, `linker`, `ar`, and `ranlib` options below).
27# More info at: https://clang.llvm.org/docs/ThinLTO.html#clang-bootstrap
28#thin-lto = false
29
ea8adc8c
XL
30# Indicates whether an LLVM Release build should include debug info
31#release-debuginfo = false
32
33# Indicates whether the LLVM assertions are enabled or not
34#assertions = false
35
36# Indicates whether ccache is used when building LLVM
37#ccache = false
38# or alternatively ...
39#ccache = "/path/to/ccache"
40
41# If an external LLVM root is specified, we automatically check the version by
42# default to make sure it's within the range that we're expecting, but setting
43# this flag will indicate that this version check should not be done.
abe05a73 44#version-check = true
ea8adc8c
XL
45
46# Link libstdc++ statically into the librustc_llvm instead of relying on a
47# dynamic version to be available.
48#static-libstdcpp = false
49
50# Tell the LLVM build system to use Ninja instead of the platform default for
51# the generated build system. This can sometimes be faster than make, for
52# example.
53#ninja = false
54
55# LLVM targets to build support for.
56# Note: this is NOT related to Rust compilation targets. However, as Rust is
57# dependent on LLVM for code generation, turning targets off here WILL lead to
58# the resulting rustc being unable to compile for the disabled architectures.
59# Also worth pointing out is that, in case support for new targets are added to
60# LLVM, enabling them here doesn't mean Rust is automatically gaining said
61# support. You'll need to write a target specification at least, and most
62# likely, teach rustc about the C ABI of the target. Get in touch with the
63# Rust team and file an issue if you need assistance in porting!
64#targets = "X86;ARM;AArch64;Mips;PowerPC;SystemZ;JSBackend;MSP430;Sparc;NVPTX;Hexagon"
65
66# LLVM experimental targets to build support for. These targets are specified in
67# the same format as above, but since these targets are experimental, they are
68# not built by default and the experimental Rust compilation targets that depend
ff7c6d11 69# on them will not work unless the user opts in to building them. By default the
b7449926
XL
70# `WebAssembly` and `RISCV` targets are enabled when compiling LLVM from scratch.
71#experimental-targets = "WebAssembly;RISCV"
ea8adc8c
XL
72
73# Cap the number of parallel linker invocations when compiling LLVM.
74# This can be useful when building LLVM with debug info, which significantly
75# increases the size of binaries and consequently the memory required by
76# each linker process.
77# If absent or 0, linker invocations are treated like any other job and
78# controlled by rustbuild's -j parameter.
79#link-jobs = 0
80
81# When invoking `llvm-config` this configures whether the `--shared` argument is
82# passed to prefer linking to shared libraries.
83#link-shared = false
84
b7449926
XL
85# When building llvm, this configures what is being appended to the version.
86# If absent, we let the version as-is.
87#version-suffix = "-rust"
88
94b46f34
XL
89# On MSVC you can compile LLVM with clang-cl, but the test suite doesn't pass
90# with clang-cl, so this is special in that it only compiles LLVM with clang-cl
91#clang-cl = '/path/to/clang-cl.exe'
92
ea8adc8c
XL
93# =============================================================================
94# General build configuration options
95# =============================================================================
96[build]
97
98# Build triple for the original snapshot compiler. This must be a compiler that
99# nightlies are already produced for. The current platform must be able to run
100# binaries of this build triple and the nightly will be used to bootstrap the
101# first compiler.
102#build = "x86_64-unknown-linux-gnu" # defaults to your host platform
103
104# In addition to the build triple, other triples to produce full compiler
105# toolchains for. Each of these triples will be bootstrapped from the build
106# triple and then will continue to bootstrap themselves. This platform must
107# currently be able to run all of the triples provided here.
108#host = ["x86_64-unknown-linux-gnu"] # defaults to just the build triple
109
110# In addition to all host triples, other triples to produce the standard library
111# for. Each host triple will be used to produce a copy of the standard library
112# for each target triple.
113#target = ["x86_64-unknown-linux-gnu"] # defaults to just the build triple
114
115# Instead of downloading the src/stage0.txt version of Cargo specified, use
116# this Cargo binary instead to build all Rust code
117#cargo = "/path/to/bin/cargo"
118
119# Instead of downloading the src/stage0.txt version of the compiler
120# specified, use this rustc binary instead as the stage0 snapshot compiler.
121#rustc = "/path/to/bin/rustc"
122
123# Flag to specify whether any documentation is built. If false, rustdoc and
124# friends will still be compiled but they will not be used to generate any
125# documentation.
126#docs = true
127
128# Indicate whether the compiler should be documented in addition to the standard
129# library and facade crates.
130#compiler-docs = false
131
132# Indicate whether submodules are managed and updated automatically.
133#submodules = true
134
0531ce1d
XL
135# Update submodules only when the checked out commit in the submodules differs
136# from what is committed in the main rustc repo.
137#fast-submodules = true
138
ea8adc8c
XL
139# The path to (or name of) the GDB executable to use. This is only used for
140# executing the debuginfo test suite.
141#gdb = "gdb"
142
143# The node.js executable to use. Note that this is only used for the emscripten
144# target when running tests, otherwise this can be omitted.
145#nodejs = "node"
146
147# Python interpreter to use for various tasks throughout the build, notably
148# rustdoc tests, the lldb python interpreter, and some dist bits and pieces.
149# Note that Python 2 is currently required.
150#python = "python2.7"
151
152# Force Cargo to check that Cargo.lock describes the precise dependency
153# set that all the Cargo.toml files create, instead of updating it.
154#locked-deps = false
155
156# Indicate whether the vendored sources are used for Rust dependencies or not
157#vendor = false
158
159# Typically the build system will build the rust compiler twice. The second
160# compiler, however, will simply use its own libraries to link against. If you
161# would rather to perform a full bootstrap, compiling the compiler three times,
162# then you can set this option to true. You shouldn't ever need to set this
163# option to true.
164#full-bootstrap = false
165
166# Enable a build of the extended rust tool set which is not only the compiler
167# but also tools such as Cargo. This will also produce "combined installers"
168# which are used to install Rust and Cargo together. This is disabled by
169# default.
170#extended = false
171
0531ce1d
XL
172# Installs chosen set of extended tools if enables. By default builds all.
173# If chosen tool failed to build the installation fails.
2c00a5a8
XL
174#tools = ["cargo", "rls", "rustfmt", "analysis", "src"]
175
ea8adc8c
XL
176# Verbosity level: 0 == not verbose, 1 == verbose, 2 == very verbose
177#verbose = 0
178
179# Build the sanitizer runtimes
180#sanitizers = false
181
182# Build the profiler runtime
183#profiler = false
184
185# Indicates whether the OpenSSL linked into Cargo will be statically linked or
186# not. If static linkage is specified then the build system will download a
187# known-good version of OpenSSL, compile it, and link it to Cargo.
188#openssl-static = false
189
190# Run the build with low priority, by setting the process group's "nice" value
191# to +10 on Unix platforms, and by using a "low priority" job object on Windows.
192#low-priority = false
193
194# Arguments passed to the `./configure` script, used during distcheck. You
195# probably won't fill this in but rather it's filled in by the `./configure`
196# script.
197#configure-args = []
198
199# Indicates that a local rebuild is occurring instead of a full bootstrap,
200# essentially skipping stage0 as the local compiler is recompiling itself again.
201#local-rebuild = false
202
0531ce1d
XL
203# Print out how long each rustbuild step took (mostly intended for CI and
204# tracking over time)
205#print-step-timings = false
206
ea8adc8c
XL
207# =============================================================================
208# General install configuration options
209# =============================================================================
210[install]
211
212# Instead of installing to /usr/local, install to this path instead.
213#prefix = "/usr/local"
214
215# Where to install system configuration files
216# If this is a relative path, it will get installed in `prefix` above
217#sysconfdir = "/etc"
218
219# Where to install documentation in `prefix` above
220#docdir = "share/doc/rust"
221
222# Where to install binaries in `prefix` above
223#bindir = "bin"
224
225# Where to install libraries in `prefix` above
226#libdir = "lib"
227
228# Where to install man pages in `prefix` above
229#mandir = "share/man"
230
abe05a73
XL
231# Where to install data in `prefix` above (currently unused)
232#datadir = "share"
233
234# Where to install additional info in `prefix` above (currently unused)
235#infodir = "share/info"
236
237# Where to install local state (currently unused)
238# If this is a relative path, it will get installed in `prefix` above
239#localstatedir = "/var/lib"
240
ea8adc8c
XL
241# =============================================================================
242# Options for compiling Rust code itself
243# =============================================================================
244[rust]
245
246# Indicates that the build should be optimized for debugging Rust. Note that
247# this is typically not what you want as it takes an incredibly large amount of
248# time to have a debug-mode rustc compile any code (notably libstd). If this
249# value is set to `true` it will affect a number of configuration options below
250# as well, if unconfigured.
251#debug = false
252
253# Whether or not to optimize the compiler and standard library
254# Note: the slowness of the non optimized compiler compiling itself usually
255# outweighs the time gains in not doing optimizations, therefore a
256# full bootstrap takes much more time with optimize set to false.
257#optimize = true
258
259# Number of codegen units to use for each compiler invocation. A value of 0
260# means "the number of cores on this machine", and 1+ is passed through to the
261# compiler.
262#codegen-units = 1
263
264# Whether or not debug assertions are enabled for the compiler and standard
265# library. Also enables compilation of debug! and trace! logging macros.
266#debug-assertions = false
267
268# Whether or not debuginfo is emitted
269#debuginfo = false
270
271# Whether or not line number debug information is emitted
272#debuginfo-lines = false
273
274# Whether or not to only build debuginfo for the standard library if enabled.
275# If enabled, this will not compile the compiler with debuginfo, just the
276# standard library.
277#debuginfo-only-std = false
278
83c7162d
XL
279# Enable debuginfo for the extended tools: cargo, rls, rustfmt
280# Adding debuginfo makes them several times larger.
281#debuginfo-tools = false
282
ea8adc8c
XL
283# Whether or not jemalloc is built and enabled
284#use-jemalloc = true
285
286# Whether or not jemalloc is built with its debug option set
287#debug-jemalloc = false
288
289# Whether or not `panic!`s generate backtraces (RUST_BACKTRACE)
290#backtrace = true
291
94b46f34
XL
292# Whether to always use incremental compilation when building rustc
293#incremental = false
294
0531ce1d
XL
295# Build rustc with experimental parallelization
296#experimental-parallel-queries = false
297
abe05a73
XL
298# The default linker that will be hard-coded into the generated compiler for
299# targets that don't specify linker explicitly in their target specifications.
300# Note that this is not the linker used to link said compiler.
ea8adc8c
XL
301#default-linker = "cc"
302
ea8adc8c
XL
303# The "channel" for the Rust build to produce. The stable/beta channels only
304# allow using stable features, whereas the nightly and dev channels allow using
305# nightly features
306#channel = "dev"
307
308# By default the `rustc` executable is built with `-Wl,-rpath` flags on Unix
309# platforms to ensure that the compiler is usable by default from the build
310# directory (as it links to a number of dynamic libraries). This may not be
311# desired in distributions, for example.
312#rpath = true
313
94b46f34
XL
314# Emits extraneous output from tests to ensure that failures of the test
315# harness are debuggable just from logfiles.
316#verbose-tests = false
ea8adc8c
XL
317
318# Flag indicating whether tests are compiled with optimizations (the -O flag) or
319# with debuginfo (the -g flag)
320#optimize-tests = true
321#debuginfo-tests = true
322
323# Flag indicating whether codegen tests will be run or not. If you get an error
324# saying that the FileCheck executable is missing, you may want to disable this.
325#codegen-tests = true
326
327# Flag indicating whether git info will be retrieved from .git automatically.
328# Having the git information can cause a lot of rebuilds during development.
2c00a5a8 329# Note: If this attribute is not explicitly set (e.g. if left commented out) it
ea8adc8c
XL
330# will default to true if channel = "dev", but will default to false otherwise.
331#ignore-git = true
332
333# When creating source tarballs whether or not to create a source tarball.
334#dist-src = false
335
336# Whether to also run the Miri tests suite when running tests.
337# As a side-effect also generates MIR for all libraries.
338#test-miri = false
339
ff7c6d11
XL
340# After building or testing extended tools (e.g. clippy and rustfmt), append the
341# result (broken, compiling, testing) into this JSON file.
342#save-toolstates = "/path/to/toolstates.json"
343
2c00a5a8
XL
344# This is an array of the codegen backends that will be compiled for the rustc
345# that's being compiled. The default is to only build the LLVM codegen backend,
346# but you can also optionally enable the "emscripten" backend for asm.js or
347# make this an empty array (but that probably won't get too far in the
348# bootstrap)
349#codegen-backends = ["llvm"]
350
0531ce1d
XL
351# This is the name of the directory in which codegen backends will get installed
352#codegen-backends-dir = "codegen-backends"
353
2c00a5a8
XL
354# Flag indicating whether `libstd` calls an imported function to handle basic IO
355# when targeting WebAssembly. Enable this to debug tests for the `wasm32-unknown-unknown`
356# target, as without this option the test output will not be captured.
357#wasm-syscall = false
358
0531ce1d
XL
359# Indicates whether LLD will be compiled and made available in the sysroot for
360# rustc to execute.
361#lld = false
362
8faf50e0
XL
363# Indicates whether some LLVM tools, like llvm-objdump, will be made available in the
364# sysroot.
365#llvm-tools = false
366
b7449926
XL
367# Indicates whether LLDB will be made available in the sysroot.
368# This is only built if LLVM is also being built.
369#lldb = false
370
83c7162d
XL
371# Whether to deny warnings in crates
372#deny-warnings = true
373
374# Print backtrace on internal compiler errors during bootstrap
375#backtrace-on-ice = false
376
8faf50e0
XL
377# Whether to verify generated LLVM IR
378#verify-llvm-ir = false
379
b7449926
XL
380# Map all debuginfo paths for libstd and crates to `/rust/$sha/$crate/...`,
381# generally only set for releases
382#remap-debuginfo = false
383
ea8adc8c
XL
384# =============================================================================
385# Options for specific targets
386#
387# Each of the following options is scoped to the specific target triple in
388# question and is used for determining how to compile each target.
389# =============================================================================
390[target.x86_64-unknown-linux-gnu]
391
abe05a73 392# C compiler to be used to compiler C code. Note that the
ea8adc8c
XL
393# default value is platform specific, and if not specified it may also depend on
394# what platform is crossing to what platform.
395#cc = "cc"
396
397# C++ compiler to be used to compiler C++ code (e.g. LLVM and our LLVM shims).
398# This is only used for host targets.
399#cxx = "c++"
400
abe05a73
XL
401# Archiver to be used to assemble static libraries compiled from C/C++ code.
402# Note: an absolute path should be used, otherwise LLVM build will break.
403#ar = "ar"
404
b7449926
XL
405# Ranlib to be used to assemble static libraries compiled from C/C++ code.
406# Note: an absolute path should be used, otherwise LLVM build will break.
407#ranlib = "ranlib"
408
abe05a73
XL
409# Linker to be used to link Rust code. Note that the
410# default value is platform specific, and if not specified it may also depend on
411# what platform is crossing to what platform.
412#linker = "cc"
413
ea8adc8c 414# Path to the `llvm-config` binary of the installation of a custom LLVM to link
2c00a5a8 415# against. Note that if this is specified we don't compile LLVM at all for this
ea8adc8c
XL
416# target.
417#llvm-config = "../path/to/llvm/root/bin/llvm-config"
418
419# Path to the custom jemalloc static library to link into the standard library
420# by default. This is only used if jemalloc is still enabled above
421#jemalloc = "/path/to/jemalloc/libjemalloc_pic.a"
422
423# If this target is for Android, this option will be required to specify where
424# the NDK for the target lives. This is used to find the C compiler to link and
425# build native code.
426#android-ndk = "/path/to/ndk"
427
428# Force static or dynamic linkage of the standard library for this target. If
429# this target is a host for rustc, this will also affect the linkage of the
430# compiler itself. This is useful for building rustc on targets that normally
431# only use static libraries. If unset, the target's default linkage is used.
432#crt-static = false
433
434# The root location of the MUSL installation directory. The library directory
435# will also need to contain libunwind.a for an unwinding implementation. Note
436# that this option only makes sense for MUSL targets that produce statically
437# linked binaries
438#musl-root = "..."
439
440# Used in testing for configuring where the QEMU images are located, you
441# probably don't want to use this.
442#qemu-rootfs = "..."
443
444# =============================================================================
445# Distribution options
446#
447# These options are related to distribution, mostly for the Rust project itself.
448# You probably won't need to concern yourself with any of these options
449# =============================================================================
450[dist]
451
452# This is the folder of artifacts that the build system will sign. All files in
453# this directory will be signed with the default gpg key using the system `gpg`
454# binary. The `asc` and `sha256` files will all be output into the standard dist
455# output folder (currently `build/dist`)
456#
457# This folder should be populated ahead of time before the build system is
458# invoked.
459#sign-folder = "path/to/folder/to/sign"
460
461# This is a file which contains the password of the default gpg key. This will
462# be passed to `gpg` down the road when signing all files in `sign-folder`
463# above. This should be stored in plaintext.
464#gpg-password-file = "path/to/gpg/password"
465
466# The remote address that all artifacts will eventually be uploaded to. The
467# build system generates manifests which will point to these urls, and for the
468# manifests to be correct they'll have to have the right URLs encoded.
469#
470# Note that this address should not contain a trailing slash as file names will
471# be appended to it.
472#upload-addr = "https://example.com/folder"
473
474# Whether to build a plain source tarball to upload
475# We disable that on Windows not to override the one already uploaded on S3
476# as the one built on Windows will contain backslashes in paths causing problems
477# on linux
478#src-tarball = true