blob: 1321f63ffad912dd56b2340f266351cb7e8708f9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
What is gcc-config?
-------------------
gcc-config allows Gentoo users to switch active gcc safely
and allows querying facts about installed toolchains.
To switch active gcc while system runs:
$ gcc-config x86_64-pc-linux-gnu-8.1.0
$ gcc-config x86_64-pc-linux-gnu-7.2.0
Ideally changes should be visible instantly and atomically
without shell restart.
To query where real gcc binaries are hiding:
$ gcc-config -B $(gcc-config -c)
To parse a profile into TARGET and toolchain version:
$ gcc-config -S sparc64-unknown-linux-gnu-9.2.0
Files, variables, things.
-------------------------
- Wrappers (symlinks to compiler binary like /usr/${CTARGET}/gcc-bin/${GCC_VERSION}/gcc)
/usr/bin/gcc (native)
/usr/bin/g++ (native)
/usr/bin/${CTARGET}-gcc (native and cross)
...
(all files from /usr/${CTARGET}/gcc-bin/$GCC_VERSION/*)
See `gcc-config` script for wrapping details.
/usr/bin/c89 (native)
/usr/bin/c99 (native)
- private gcc configs (provided by `toolchain.eclass`, gcc ebuilds)
/etc/env.d/gcc/x86_64-pc-linux-gnu-8.1.0
Contains variables that describe toolchain layout:
LDPATH="/usr/lib/gcc/x86_64-pc-linux-gnu/8.1.0"
MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/8.1.0/man"
INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/8.1.0/info"
STDCXX_INCDIR="g++-v8"
CTARGET="x86_64-pc-linux-gnu"
GCC_SPECS=""
MULTIOSDIRS="../lib64"
GCC_PATH="/usr/x86_64-pc-linux-gnu/gcc-bin/8.1.0"
Used by gcc-config to generate wrappers and 05gcc- env.d files.
- gcc env.d compiler entries (provided by gcc-config)
/etc/env.d/04gcc-${CTARGET} (native)
Populates paths for native-compilers
GCC_SPECS=""
MANPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/8.2.0/man"
INFOPATH="/usr/share/gcc-data/x86_64-pc-linux-gnu/8.2.0/info"
Used by env-update to populate PATH and more (TODO: remove PATH population).
TODOs
-----
- Write proper `gcc-config` manpage off this readme to be more discoverable.
- Figure out symlink ownership story. Today symlinks don't belong to any package.
See https://bugs.gentoo.org/626606
Releasing
---------
$ release=2.3.1; git tag -a -s -m "release ${release}" v${release}; make dist PV=${release}
$ git push --tags origin
|