1#!/bin/sh 2# 3# SPDX-License-Identifier: BSD-3-Clause 4# 5# Copyright © 2019 Keith Packard 6# 7# Redistribution and use in source and binary forms, with or without 8# modification, are permitted provided that the following conditions 9# are met: 10# 11# 1. Redistributions of source code must retain the above copyright 12# notice, this list of conditions and the following disclaimer. 13# 14# 2. Redistributions in binary form must reproduce the above 15# copyright notice, this list of conditions and the following 16# disclaimer in the documentation and/or other materials provided 17# with the distribution. 18# 19# 3. Neither the name of the copyright holder nor the names of its 20# contributors may be used to endorse or promote products derived 21# from this software without specific prior written permission. 22# 23# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 28# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 29# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 30# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 31# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 32# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 33# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 34# OF THE POSSIBILITY OF SUCH DAMAGE. 35# 36DIR="$(dirname "$0")" 37 38# First argument must be target architecture 39 40case "$1" in 41 "") 42 echo "Usage: $0 <architecture>" 1>&2 43 exit 1 44 ;; 45esac 46 47export ARCH="$1" 48shift 49 50# Find cross compile configuration 51 52CROSS="$DIR"/cross-"$ARCH".txt 53 54if [ -f "$CROSS" ]; then 55 : 56else 57 echo "$0: $ARCH not supported" 1>&2 58 exit 1 59fi 60 61# 'clang-' prefix uses clang instead of gcc 62 63case "$ARCH" in 64 clang-*) 65 ARCH=$(echo "$ARCH" | sed 's/clang-//') 66 ;; 67esac 68 69case "$*" in 70 *-Dio-long-double=true*) 71 case "$ARCH" in 72 *rv[36][24]*|*riscv*|*aarch64*|*power9-fp128*|*sparc*) 73 case "$*" in 74 *-Dtinystdio=false*) 75 echo "io-long-double for legacy stdio not supported on riscv, aarch64, power-fp128 or sparc" 76 exit 77 77 ;; 78 esac 79 ;; 80 *power*|*avr*) 81 echo "io-long-double not supported on power double double or avr" 82 exit 77 83 ;; 84 esac 85 ;; 86esac 87 88# Check for sysroot-install and automatically set prefix if needed 89 90case "$*" in 91 *sysroot-install=true*) 92 case "$*" in 93 *-Dprefix*) 94 : 95 ;; 96 *) 97 SYSROOT_ORIG="$("${ARCH}-gcc" -print-sysroot)" 98 SYSROOT="$(readlink -f "$SYSROOT_ORIG")" 99 PREFIX="-Dprefix=$SYSROOT" 100 ;; 101 esac 102 ;; 103esac 104 105# Run meson 106 107case "$PREFIX" in 108 "") 109 meson setup \ 110 -Dincludedir=picolibc/"$ARCH"/include \ 111 -Dlibdir=picolibc/"$ARCH"/lib \ 112 --cross-file "$CROSS" \ 113 "$@" \ 114 "$DIR"/.. 115 ;; 116 *) 117 meson setup \ 118 -Dincludedir=picolibc/"$ARCH"/include \ 119 -Dlibdir=picolibc/"$ARCH"/lib \ 120 --cross-file "$CROSS" \ 121 "$PREFIX" "$@" \ 122 "$DIR"/.. 123 ;; 124esac 125