summaryrefslogtreecommitdiff
path: root/build-aux/picolibc
diff options
context:
space:
mode:
Diffstat (limited to 'build-aux/picolibc')
-rw-r--r--build-aux/picolibc/CMakeLists.txt23
-rw-r--r--build-aux/picolibc/cross-cortex-m0-none-eabi.txt66
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'