diff options
Diffstat (limited to 'build-aux')
-rw-r--r-- | build-aux/picolibc/CMakeLists.txt | 23 | ||||
-rw-r--r-- | build-aux/picolibc/cross-cortex-m0-none-eabi.txt | 66 |
2 files changed, 89 insertions, 0 deletions
diff --git a/build-aux/picolibc/CMakeLists.txt b/build-aux/picolibc/CMakeLists.txt new file mode 100644 index 0000000..e67347c --- /dev/null +++ b/build-aux/picolibc/CMakeLists.txt @@ -0,0 +1,23 @@ +# https://github.com/picolibc/picolibc/issues/696 + +include(ExternalProject) + +ExternalProject_Add(picolibc + PREFIX "${CMAKE_CURRENT_BINARY_DIR}" + SOURCE_DIR "${CMAKE_SOURCE_DIR}/3rd-party/picolibc" + CONFIGURE_COMMAND meson setup \ + --cross-file "${CMAKE_CURRENT_SOURCE_DIR}/cross-cortex-m0-none-eabi.txt" \ + -Dc_args=-funwind-tables \ + -Dc_args=-mpoke-function-name \ + -Dmultilib=false \ + -Dprefix="${CMAKE_CURRENT_BINARY_DIR}" \ + -Dincludedir=arm-none-eabi/include \ + -Dlibdir=arm-none-eabi/lib \ + -Dspecsdir=arm-none-eabi/lib \ + "${CMAKE_SOURCE_DIR}/3rd-party/picolibc" + BUILD_COMMAND ninja + INSTALL_COMMAND ninja install + LOG_CONFIGURE false + LOG_BUILD false + LOG_INSTALL false +) diff --git a/build-aux/picolibc/cross-cortex-m0-none-eabi.txt b/build-aux/picolibc/cross-cortex-m0-none-eabi.txt new file mode 100644 index 0000000..38f4c05 --- /dev/null +++ b/build-aux/picolibc/cross-cortex-m0-none-eabi.txt @@ -0,0 +1,66 @@ +# https://github.com/picolibc/picolibc/issues/696#issuecomment-2015532132 +# https://github.com/picolibc/picolibc/files/14726061/cross-cortex-m0-none-eabi.txt +# https://github.com/picolibc/picolibc/blob/1.8.8/scripts/cross-cortex-a9-none-eabi.txt +# https://github.com/picolibc/picolibc/blob/1.8.8/COPYING.picolibc#L2868-L2916 +# https://github.com/picolibc/picolibc/blob/1.8.8/COPYING.picolibc#L5908-L5936 +# +# Copyright (C) 2020 The Newlib Project +# Copyright (C) 2021-2024 Keith Packard +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# 3. Neither the name of the copyright holder nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +# INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED +# OF THE POSSIBILITY OF SUCH DAMAGE. +# +# SPDX-License-Identifier: BSD-3-Clause + +[binaries] +# Meson 0.53.2 doesn't use any cflags when doing basic compiler tests, +# so we have to add -nostdlib to the compiler configuration itself or +# early compiler tests will fail. This can be removed when picolibc +# requires at least version 0.54.2 of meson. +c = ['arm-none-eabi-gcc', '-mcpu=cortex-m0', '-nostdlib'] +cpp = ['arm-none-eabi-g++', '-mcpu=cortex-m0', '-nostdlib'] +ar = 'arm-none-eabi-ar' +as = 'arm-none-eabi-as' +nm = 'arm-none-eabi-nm' +strip = 'arm-none-eabi-strip' +# only needed to run tests +exe_wrapper = ['sh', '-c', 'test -z "$PICOLIBC_TEST" || run-arm "$@"', 'run-arm'] + +[host_machine] +system = 'none' +cpu_family = 'arm' +cpu = 'cortex-m0' +endian = 'little' + +[properties] +skip_sanity_check = true +default_flash_addr = '0x00000000' +default_flash_size = '0x00400000' +default_ram_addr = '0x20000000' +default_ram_size = '0x00200000' |