Commit graph

24 commits

Author SHA1 Message Date
Benjamin Cabé
4b55a13c6c Revert "cmake clang/compiler_flags.cmake: Re-enable -Wgnu"
This reverts commit 8133f470dd.
Causes issues in pow2.c test

Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
2025-01-20 20:54:58 +01:00
Tom Hughes
8133f470dd cmake clang/compiler_flags.cmake: Re-enable -Wgnu
All warnings in the code base have been resolved.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-01-20 16:27:10 +01:00
Tom Hughes
c021c6d5f0 cmake clang/compiler_flags.cmake: Re-enable Wmissing-braces warning
All warnings in the code base have been resolved.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-01-17 10:42:00 +01:00
Tom Hughes
9ba1f2e170 cmake clang/compiler_flags.cmake: Re-enable -Winvalid-format-specifier
All warnings in the code base have been resolved.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-01-16 02:39:44 +01:00
Tom Hughes
b9d7b1bdae cmake clang/compiler_flags.cmake: Re-enable -Wunknown-warning-option
All warnings in the code base have been resolved.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-01-16 02:39:31 +01:00
Tom Hughes
2ae4ad2097 cmake clang/compiler_flags.cmake: Re-enable -Wtautological-compare
All warnings in the code base have been resolved.

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-01-16 02:39:21 +01:00
Tom Hughes
0a71e95c5a cmake clang/compiler_flags.cmake: Re-enable -Wshift-overflow
This warning can be re-enabled without any changes (no warnings are
emitted).

Signed-off-by: Tom Hughes <tomhughes@chromium.org>
2025-01-15 19:05:34 +01:00
Torsten Rasmussen
9d835fe464 cmake: move specs compiler and linker flags to toolchain properties
Moving specs argument to compiler and linker properties so that the
compiler and linker in use can decide how the flags are mapped / handled
for the compiler and linker in use.

This avoids specifying `--specs=spec.picolibc` for clang which prints a
warning about an unused argument.

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2024-10-04 16:34:35 +01:00
Alberto Escolar Piedras
996377340a cmake clang/compiler_flags.cmake: Clarify comment for native targets
Correct the comment for native targets.

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2024-03-20 15:43:05 +01:00
Ryan McClelland
018dbcfd66 cmake: compiler: add double promotion warning
Too many times, code is pushed that includes floats that really
becomes doubles and C implicit promotion rules will want to make
floats into doubles very easily. As zephyr primarily targets
low-end process that may not have a double precision floating
point unit, enable this flag globally for now.

Signed-off-by: Ryan McClelland <ryanmcclelland@meta.com>
2024-01-26 21:37:24 -05:00
Alberto Escolar Piedras
fd27bed45e cmake/toolchain: Support LLVM source profiling/coverage for native boards
Add a a new source coverage for native builds
and new kconfig choice of COVERAGE mode to select which:
* COVERAGE_NATIVE_GCOV: what we had until now with native builds
* COVERAGE_NATIVE_SOURCE: a new LLVM source coverage mode
* COVERAGE_GCOV: the old COVERAGE_GCOV (embedded gcov data generation).

Signed-off-by: Alberto Escolar Piedras <alberto.escolar.piedras@nordicsemi.no>
2023-08-28 10:35:21 +02:00
Keith Packard
424590f7d8 cmake/compiler: Add linker_script compiler property
This property specifies the flag used to pass the linker script filename
through the compiler front end tot he linker.

For clang, we use the general purpose linker-pass through -Wl flag with -T:
-Wl,-T as clang doesn't support -T.

For gcc, we use -T directly as this keeps the picolibc specs file from
inserting the picolibc linker script as well.

If the compiler doesn't specify a value, we continue to use -Wl,-T as
before.

Signed-off-by: Keith Packard <keithp@keithp.com>
2023-07-06 11:43:09 +02:00
Keith Packard
70fdd9e4e1 compilers: Remove -Wno-main and -Wno-main-return-type compiler flags
These flags were added to avoid warnings when main was declared to return
void. Now that main returns int, those warnings will flag errors.

Signed-off-by: Keith Packard <keithp@keithp.com>
2023-04-14 07:49:41 +09:00
Fabio Baltieri
3f8f7130e7 kconfig,toolchain: add an option for compiler save-temps
Add a Kconfig option to set the compiler save-temps flag and set the GCC
implementation. This is very useful for troubleshooting macro expansion
issues, having an option allows a user to set it like any other config
option.

Signed-off-by: Fabio Baltieri <fabiobaltieri@google.com>
2023-04-02 22:07:22 -04:00
Keith Packard
0f692f5b84 compiler/clang: ignore main-return-type warning for clang
Unlike gcc, clang splits out the flag controlling warnings about the return
type of `main' from other warnings related to that function. Add the extra
-Wno-main-return-type flag to mask these warnings when building Zephyr
without -ffreestanding, as when using picolibc.

Signed-off-by: Keith Packard <keithp@keithp.com>
2023-02-20 09:50:59 +01:00
Keith Packard
a20566789c compiler/clang: Erase 'no_printf_return_value' prop for clang
Clang does not have printf return value optimizations like GCC, so there's
no flag to turn them off when building against a non-standard printf
implementation (e.g., picolibc without float support).

Signed-off-by: Keith Packard <keithp@keithp.com>
2023-02-06 10:05:57 +01:00
Flavio Ceolin
ac5d45a080 build: userspace: No merge globals
Add a compiler option to not merge globals. gen_kobject_list.py
is not capable of distinguish addresses of merged objects. The script
itself does not look wrong. The dward specification says that the
attribute DW_AT_location with opcode DW_OP_addr encodes a machine
address and whose size is the size of an address on the target machine
but for merged objects the address is longer, not clear why.

Disable global merge when userspace is enabled to avoid this problem.

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
2023-01-26 14:56:10 -05:00
Keith Packard
62bc9bf3e5 cmake: Allow selection of libc API overflow detection mode
This adds a choice of three different libc API buffer overflow detection
modes:

 * None
 * Compile-time
 * Compile-time and Run-time

These correspond with the clang/gcc _FORTIFY_SOURCE modes (0/1/2).
_FORTIFY_SOURCE depends on compiler optimizations and require libc support
which the minimal C library doesn't include, so _FORTIFY_SOURCE is disabled
by default in those cases. Native tooling might also enable
_FORTIFY_SOURCE, so don't enable it by default in that case either.

Signed-off-by: Keith Packard <keithp@keithp.com>
2022-10-31 23:23:27 +09:00
Stephanos Ioannidis
0a63ca6131 cmake: clang: Disable deprecated non-prototype warning
Clang 15 added a new warning type `-Wdeprecated-non-prototype` that
warns about the functions without prototypes, which have been
deprecated since the C89 and will not work in the upcoming C2x.

This commit disables the warning because Zephyr deliberately makes use
of the functions without prototypes to allow the use of a "generic"
function pointer (notoriously in the cbprintf implementation) and
Zephyr will not move to the C2x in the foreseeable future.

Signed-off-by: Stephanos Ioannidis <root@stephanos.io>
2022-10-03 17:56:26 +09:00
Jaroslaw Stelter
69913adc80 cmake: filter not supported C++ compilation flags
Compilation warnings appears for C++ files, that following
options are not valid:
-ffrestanding,
-Wno-format-zero-length
-Wno-main
-fgnu89-inline
-std-gnu99
Added checks to filter out unsupported flags.

Signed-off-by: Jaroslaw Stelter <Jaroslaw.Stelter@intel.com>
2022-07-07 10:26:22 +00:00
Keith Packard
c034050bba cmake/clang: Disable -Wunused-but-set-variable warnings
Not sure why this is needed for this branch, but it pretty clearly is --
there are hundreds of set-but-unused variables in the codebase.

Signed-off-by: Keith Packard <keithp@keithp.com>
2022-06-14 01:50:36 +09:00
Arvin Farahmand
b8f5968a42 cmake: gcc/clang: enable colour diagnostics in terminal output
When compiler results are piped through a non-terminal (e.g. ninja)
the compiler disables colour diagnostics. Using `-fdiagnostics-color`
forces the compiler to enable colour output. This flag is set for
clang and gcc when `ZEPHYR_BUILD_COLOUR_DIAGNOSTIC` environment
variable is set when a clean build is started.

Signed-off-by: Arvin Farahmand <arvinf@ip-logix.com>
2021-04-16 12:20:53 +02:00
Anas Nashif
e6e29c0ccf toolchain: clang: add -Wno-typedef-redefinition option
Without the -Wno-typedef-redefinition option, clang complains if a
typedef gets redefined in gnu99  mode (since this is officially a C11
feature).

While new versions of GCC do not seem to issue this warning in gnu99
mode anymore. So some existing code with typedef redefined which works
well with GCC will issue this warning.

Similar to what was done in 2354f055ec.

Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2020-11-02 14:30:37 -05:00
Torsten Rasmussen
c55c64e242 toolchain: improved toolchain abstraction for compilers and linker
First abstraction completed for the toolchains:
- gcc
- clang

Signed-off-by: Torsten Rasmussen <Torsten.Rasmussen@nordicsemi.no>
2020-09-04 20:36:59 +02:00