From 3f9b40dab7345cea8864b11a4af7847988075827 Mon Sep 17 00:00:00 2001 From: Jordan Williams Date: Mon, 18 Oct 2021 10:22:18 -0500 Subject: Generic-ELF: Add platform module to configure the .elf file extension The `.elf` extension is a common convention used for embedded binaries. Both Arm and RISC-V use the ELF file format for executables. Configuring the `.elf` file extension is typically done incorrectly. Most embedded developers set this in toolchain files, which is not the correct place. This is typically accomplished through a hack by setting the individual language file extensions for C, CXX, and ASM. Multiple CMake issues in the past have been opened related to this. * #16538 * #20163 * #17880 A platform module makes it simpler and less error prone for developers targeting these ubiquitous bare-metal platforms. This PR attempts to solve this globally with a generic platform. This could also be solved by using more specific platform modules, such as one for each of bare-metal Arm and RISC-V. --- Copyright.txt | 1 + Modules/Platform/Generic-ELF.cmake | 7 +++++++ 2 files changed, 8 insertions(+) create mode 100644 Modules/Platform/Generic-ELF.cmake diff --git a/Copyright.txt b/Copyright.txt index 7f51293..b703193 100644 --- a/Copyright.txt +++ b/Copyright.txt @@ -63,6 +63,7 @@ The following individuals and institutions are among the Contributors: * Ilya Lavrenov * Insight Software Consortium * Jan Woetzel +* Jordan Williams * Julien Schueller * Kelly Thompson * Konstantin Podsvirov diff --git a/Modules/Platform/Generic-ELF.cmake b/Modules/Platform/Generic-ELF.cmake new file mode 100644 index 0000000..943cb6b --- /dev/null +++ b/Modules/Platform/Generic-ELF.cmake @@ -0,0 +1,7 @@ +# This is a platform definition file for platforms without +# an operating system using the ELF executable format. +# It is used when CMAKE_SYSTEM_NAME is set to "Generic-ELF" + +include(Platform/Generic) + +set(CMAKE_EXECUTABLE_SUFFIX .elf) -- cgit v0.12