Commit Graph

52 Commits

Author SHA1 Message Date
Ian Leonard
bd2c679977 build: update LTO related CFLAGS
Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2024-10-05 20:28:48 -04:00
Matthias Reichl
4436ef2626 config/optimize: add -gdwarf-4 for split debug info builds
Since gcc 11 -gsplit-dwarf no longer implicitly enables -g and needs
a separate -g option. For some yet unknown reasons the default DWARF 5
format doesn't work, gdb doesn't show debug info, but DWARF 4 works fine
so use that.

Signed-off-by: Matthias Reichl <hias@horus.com>
2023-02-23 21:13:03 +01:00
SupervisedThinking
e485a16a8d build system: add support for mold & linker PKG_BUILD_FLAGS 2022-10-06 19:39:45 +02:00
Matthias Reichl
4bcc171bd2 buildsystem: support choosing default linker
Default linker can be set with DEFAULT_LINKER in options.

Packages can influence linker selection both by positive and/or
negative PKG_BUILD_FLAGS, eg +bfd or -gold.

Positive build flags take priority over the default linker so eg
DEFAULT_LINKER="gold" and PKG_BUILD_FLAGS="+bfd" will select bfd.

Negative flags mean a specific linker should not be used, eg -gold
prevents using gold.

If the default linker is disabled via a build flag then any other
available linker will be used.

Optional linkers like gold have to be enabled with eg GOLD_SUPPORT="yes"
in options. If an optional linker is not enabled it won't be a candidate
for linker selection. So eg "+mold" will have no effect if MOLD_SUPPORT
isn't set to "yes".

Signed-off-by: Matthias Reichl <hias@horus.com>
2022-09-27 19:00:27 +02:00
Matthias Reichl
bb7c110320 config/optimize: drop unused MACHINE_HARDWARE_CPU/PLATFORM variables
uname options -p and -i are non portable and return "unknown" on
Linux with GNU coreutils as there's no OS support for it.

Note: some distributions like Fedora or Ubunto patch coreutils so
that uname -p (more or less) returns the machine name (uname -m output).
But that should not be used and fails on distributions like Debian
that don't add that patch.

Signed-off-by: Matthias Reichl <hias@horus.com>
2022-06-30 16:35:04 +02:00
SupervisedThinking
8893cf7106 config/optimize: build debug with -Og instead of -0s
If we build with `-Os` some vars are missing in backtraces and will be listed as `<optimized out>`

- https://github.com/PCSX2/pcsx2/issues/5226#issuecomment-1036987320

```
Optimize debugging experience. -Og should be the optimization level of choice for the standard edit-compile-debug cycle, offering a reasonable level of optimization while maintaining fast compilation and a good debugging experience. It is a better choice than -O0 for producing debuggable code because some compiler passes that collect debug information are disabled at -O0.

Like -O0, -Og completely disables a number of optimization passes so that individual options controlling them have no effect. Otherwise -Og enables all -O1 optimization flags except for those that may interfere with debugging:
```

- https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
2022-02-17 15:39:30 +01:00
SupervisedThinking
ec1d61ce43 config/optimize: add MACHINE_HARDWARE_CPU for meson conf 2021-11-29 17:31:58 +01:00
rschupp
8781ccb0d5 build: fix detection of multiarch lib and include directories 2021-10-18 09:29:43 +02:00
mglae
131654d937 buildsystem: use -DNDEBUG not only for cmake release builds 2021-09-17 18:20:08 +02:00
Matthias Reichl
3524d12878 allow building with separate debug info
Add SPLIT_DEBUG_INFO option, when it's set to yes the debug info is
stored in separate .dwo files.

This is mainly useful for remote debugging and reduces image size a lot.

See also https://gcc.gnu.org/wiki/DebugFission

Signed-off-by: Matthias Reichl <hias@horus.com>
2020-04-22 20:28:23 +02:00
Andre Heider
2d12b7ebe8 build: add load average limit to reduce CPU overcommitment
For make and ninja based build systems, no new jobs are started if the load
average is greater than number_of_cores * 1.5.
2020-01-17 09:16:37 +01:00
MilhouseVH
f03406f33b buildsystem: fix BUILD_WITH_DEBUG usage in config/optimize (v2) 2019-11-04 16:42:14 +00:00
MilhouseVH
021a47be35 buildsystem: fix BUILD_WITH_DEBUG usage in config/optimize 2019-11-04 16:34:55 +00:00
Ian Leonard
c5e535505c buildsystem: add package flags to set compiler optimization
speed: use O3
size: use Os
default: use O2

The priority order is to use speed if set, then size, and fallback
to default when neither are set.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2019-05-21 01:00:29 +00:00
MilhouseVH
f9ed478992 setup_toolchain: add CMAKE_SYSTEM_PROCESSOR to host/bootstrap config
libjpeg-turbo:host fails without this.
2018-12-29 15:53:49 +00:00
Ian Leonard
ae689aa0a5 config/optimize: add march=native to host cflags
Relies on the assumption that the machine that will build the toolchain will
also be the machine to use said toolchain.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2018-10-27 21:39:58 +00:00
Ian Leonard
c7952a9539 build: set hash-style to gnu via gcc default
Builds use a mix of styles for the hash table in the ELF header. Only
one style of table is necessary, and the GNU one is more performant
for lookups. Eliminating the SysV style hash table trims ~450kb. This
is done via setting the default linker in gcc instead of LDFLAGS as
some packages ignore LDFLAGS.

Note that if MIPS is ever added as a supported architecture, it
does not support hash-style=gnu at this time.

Signed-off-by: Ian Leonard <antonlacon@gmail.com>
2018-06-09 21:17:31 +00:00
Matthias Reichl
b03cb4cc2f config/optimize, config/functions: refactor lto flags
Split up the LTO flags in config/optimize and assemble
full C/CXX/LDFLAGS in config/functions.

Add flags for parallel/single-threaded lto and fat/non-fat
lto object creation.

Change the default lto build flag to use non-fat lto objects.

Signed-off-by: Matthias Reichl <hias@horus.com>
2018-06-04 19:54:29 +02:00
Sascha Kuehndel (InuSasha)
b7b1a67723 place options at a more consistent place 2018-05-07 21:55:07 +02:00
Sascha Kuehndel (InuSasha)
8827a540aa buildsystem: add BUILD_FLAG support
- replace strip_lto/strip_gold (only allowed to disable)
- add flag for PIC feature
- add flag to stop build parallel
- add support for hardening option (initial copy from debian 9)

All build parameters, are added in setup_toolchain.
`PKG_[FLAG]_[HOST/TARGET]_ENABLED` variable is introduced for checking the flag (yes/no) in the package.mk

Thanks to @MilhouseVH, for support and fixing
2018-03-07 18:35:01 +01:00
MilhouseVH
a3af8427f3 config/optmize: use BUILD_WITH_DEBUG variable 2018-02-19 07:08:48 +00:00
MilhouseVH
9928350609 buildsystem: eliminate other unecessary sub process usage 2017-10-10 01:34:46 +01:00
MilhouseVH
03366a102c TOOLCHAIN: drop $ROOT, convert to absolute path 2017-02-17 18:17:13 +00:00
Lukas Rusak
4df4ea789c buildsys: remove optimizations=normal 2016-09-09 09:17:20 -07:00
Lukas Rusak
59bf03a90a config/optimize: do not strip at link 2016-01-31 00:21:33 +01:00