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 case "$*" in 86 *-Dtest-long-double=false*) 87 echo "skipping io-long-double when test-long-double=false" 88 exit 77 89 ;; 90 esac 91 ;; 92esac 93 94# Check for sysroot-install and automatically set prefix if needed 95 96case "$*" in 97 *sysroot-install=true*) 98 case "$*" in 99 *-Dprefix*) 100 : 101 ;; 102 *) 103 SYSROOT_ORIG="$("${ARCH}-gcc" -print-sysroot)" 104 SYSROOT="$(readlink -f "$SYSROOT_ORIG")" 105 PREFIX="-Dprefix=$SYSROOT" 106 ;; 107 esac 108 ;; 109esac 110 111# Run meson 112 113case "$PREFIX" in 114 "") 115 meson setup \ 116 -Dincludedir=picolibc/"$ARCH"/include \ 117 -Dlibdir=picolibc/"$ARCH"/lib \ 118 --cross-file "$CROSS" \ 119 "$@" \ 120 "$DIR"/.. 121 ;; 122 *) 123 meson setup \ 124 -Dincludedir=picolibc/"$ARCH"/include \ 125 -Dlibdir=picolibc/"$ARCH"/lib \ 126 --cross-file "$CROSS" \ 127 "$PREFIX" "$@" \ 128 "$DIR"/.. 129 ;; 130esac 131