Commit Graph

29 Commits (feature-cmake-object-libraries)

Author SHA1 Message Date
Hugues Kamba b193d97532 CMake: Fix Cortex-A9 flags for GCC_ARM toolchain
The -mcpu=cortex-a9 flag conflicts with the march=armv7-a flag.
Opted to keep mcpu=cortex-a9 as it is more specific and
allows GCC to perform better optimization.

The compiler is also changed to use soft-float ABI as it
was necessary to successfully build. Without it the application
appears to be built with soft-float ABI and it conflicts with
the previous setting which was built with hard-float ABI.
This may be related to: https://gitlab.kitware.com/cmake/cmake/-/issues/21173
2021-03-12 13:21:04 +00:00
Lingkai Dong 6dc85e0386 Workaround for Cortex-M33 Arm toochain linking
Binaries generated for Cortex-M33 targets (e.g. Musca S1/B1) using
the Arm toolchain + CMake is unable to run, unless we instruct the
linker to not use floating points.

Note: This is a temporary workaround, because
* Ideally, the Arm linker should be able to auto detect the
  architecture support from the input object files, but it's not
  always the case. We already have a similar workaround for Cortex-M4.
* The full option to use should be `--cpu=Cortex-M33.no_dsp.no_fp`
  but `no_dsp` currently conflicts with CMake's compilation tests
  (no option to disable DSP in the test objects before linking).
2021-03-09 17:35:48 +00:00
Martin Kojtal 6c08123dff
Merge pull request #14313 from hugueskamba/hk_cmake_fix_cortex_m33_gcc
CMake: Fix Cortex-M33 GCC build
2021-02-23 14:23:01 +00:00
Hugues Kamba cd6cb71c29 CMake: Fix Cortex-M33 GCC build
The GCC flag to specify the floating-point hardware (`mfpu`) does not accept
the value `none`. The default value is `auto` which causes the compiler to
select the floating-point and Advanced SIMD instructions based on the
settings of -mcpu and -march. The extension option `+nofp` has been added
to disable floating point instructions.
2021-02-22 15:21:20 +00:00
Hugues Kamba 261deae561 CMake: Fix Cortex-A9 builds with GCC_ARM
Add the `-march` flag for Cortex-A9 GCC_ARM in order to
generate instructions for the armv7-a machine type.
2021-02-22 11:28:06 +00:00
reme 6220ca5fd5 STM32WL : ADDING CORTEX-M4 LINK OPTION
Add link option in file used for compilation.
Due to a bug in mbedtools environment.
2021-02-08 09:42:51 +00:00
Martin Kojtal 6dd44e7ec7
Merge pull request #14190 from 0xc0170/fix_ns_cores
CMake cores: fix NS cores
2021-02-03 10:17:21 +00:00
Martin Kojtal d48cc295f2
Merge pull request #14213 from 0xc0170/dev_add_cortexm55
Add cortex-m55 to CMake support
2021-02-03 09:39:32 +00:00
Martin Kojtal 0bcd1f770f Add cortex-m55 to CMake support 2021-01-28 16:46:18 +00:00
Martin Kojtal 0a990e702a CMake cores: align fpu settings
Move the fpu settings across all cores so they are aligned.
Some cores did not have fpu set for ARMClang. I matched here both toolchains to set up
the fpu the same (Only exception is soft vs hard - that is separate issue I would not like to touch
in this series).
2021-01-27 12:30:21 +00:00
Martin Kojtal 8e2c9575be CMake cores: remove dsp as it is on by default 2021-01-27 12:20:48 +00:00
Martin Kojtal 5d8d2bae76 CMake cores: fix dsp for M33FE (enabling it)
I realized we specified nodsp for M33 core but had march for FE parts enabled with dsp.
This fixes it.

M33F has no dsp. M33FE cores have dsp enabled.
2021-01-27 10:30:28 +00:00
Martin Kojtal 15acc009a0 CMake cores: remove march, not needed if we use mcpu 2021-01-27 10:25:48 +00:00
Martin Kojtal 30065905b8 CMake cores: fix cpu flag
Couple of cores did not have common flag `--mcpu` set
2021-01-26 14:13:19 +00:00
Martin Kojtal 747de9f849 CMake cores: fix NS cores
Set DOMAIN_NS=1 only for _NS cores. We had it otherway around.
I verified one non NS target that was failing to build, plus also checked the old tools
that had this definitions:

```
   91:     "Cortex-M23-NS":   ["__CORTEX_M23", "ARM_MATH_ARMV8MBL", "DOMAIN_NS=1",
   92                          "__CMSIS_RTOS", "__MBED_CMSIS_RTOS_CM"],
   93      "Cortex-M23":      ["__CORTEX_M23", "ARM_MATH_ARMV8MBL", "__CMSIS_RTOS",
   94                          "__MBED_CMSIS_RTOS_CM"],
```
2021-01-25 12:21:40 +00:00
Hugues Kamba db189bae6d CMake: Correct ARM toolchain MCU core flags
Some armasm flags are passed to the ASM whilst we actually use armclang to invoke it. This causes build failures as armclang is not compatible with armasm flags.
This commit passes the same flags to all tools in the chain.
2021-01-22 10:54:47 +00:00
jeromecoutant 541c6817c1 CMAKE : correct "Cortex-M7F" link options for ARM 2021-01-20 10:34:07 +01:00
Martin Kojtal fa2101c48d
Merge pull request #14155 from jeromecoutant/PR_M33_CMAKE
CMAKE / M33 : DOMAIN_NS issue
2021-01-20 08:04:46 +00:00
Hugues Kamba 53cc382a96 CMake: Fix Cortex-M33-NS and Cortex-M33 ASM flags
The ASM flags were not supported by armclang, use the armclang alternatives.
Removed armlink --cpu flag as they generate a CMake configuration
time error. Furthermore, it is not necessary to specify the
processor or architecture as the linker auto-detects it from
the input object files.
See: https://developer.arm.com/documentation/101754/0615/armlink-Reference/armlink-Command-line-Options/--cpu-name--armlink-
2021-01-18 17:50:15 +00:00
jeromecoutant e6ec31108e CMAKE / M33 : DOMAIN_NS issue 2021-01-15 11:28:46 +01:00
Hugues Kamba ea6661caf3 CMake: Fix GCC_ARM Cortex-M33 and Cortex-M33-NS support
Add missing toolchain option to specify the CPU core
2020-12-10 11:29:07 +00:00
Hugues Kamba 59da1e952c CMake: Fix GCC_ARM Cortex-M3 support
Add missing toolchain option to specify the CPU core
2020-12-10 11:28:08 +00:00
Hugues Kamba 229b9ad43b CMake: Fix GCC_ARM Cortex-M0 support
Add missing toolchain option to specify the CPU core
2020-12-10 11:26:19 +00:00
Jamie Smith 36288029c1 Fix some formatting issues. 2020-12-08 02:28:50 -08:00
Jamie Smith 78be77ee5a Change toolchain file to load core and toolchain options *before* compilers are loaded. 2020-12-03 10:57:23 -08:00
Hugues Kamba 46c35965c5 CMake: Create separate function to set MCU core compile defintions
The new function (mbed_set_cpu_core_definitions()) should always be
called as it has defintions needed by Mbed OS to work with that
particular MCU core.
mbed_set_cpu_core_options() should only be called if a third-party
toolchain file has not been used as it has compile options that can
cause conflicts.
2020-11-06 17:25:23 +00:00
Rajkumar Kanagaraj 7171f62489 Replace PUBLIC to INTERFACE keyword 2020-11-06 17:25:22 +00:00
Rajkumar Kanagaraj e7c0d93ad4 CMake: add mbed-os and mbed-baremetal targets
mbed-os consists of mbed-core and mbed-rtos
mbed-baremetal consists of mbed-core

The main change is for mbed-core. Changing from object library to be interface. This way it allows us to do the above to have 2 main targets for users to use.

This should be backward compatible change as mbed-os target we used contains the same files/options as previously set.
2020-11-06 17:25:22 +00:00
Hugues Kamba cac1b25465 CMake: Move modules under tools subdirectory 2020-11-06 17:25:21 +00:00