1#! /bin/sh 2# $NetBSD: gen-platforms.sh,v 1.2 2023/07/05 11:42:14 rillig Exp $ 3 4# 5# Copyright (c) 2021 The NetBSD Foundation, Inc. 6# All rights reserved. 7# 8# Redistribution and use in source and binary forms, with or without 9# modification, are permitted provided that the following conditions 10# are met: 11# 1. Redistributions of source code must retain the above copyright 12# notice, this list of conditions and the following disclaimer. 13# 2. Redistributions in binary form must reproduce the above copyright 14# notice, this list of conditions and the following disclaimer in the 15# documentation and/or other materials provided with the distribution. 16# 17# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 18# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 19# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 20# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 21# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27# POSSIBILITY OF SUCH DAMAGE. 28 29# Regenerate the platforms list, to be used in t_integration.sh. 30 31set -eu 32 33exec 1>'gen-platforms.out' 34 35for file in ../../../../usr.bin/xlint/arch/*/targparam.h; do 36 platform=${file%/*} 37 platform=${platform##*/} 38 39 char=$(sed -n -E 's,.*"([su]char)\.h".*,\1,p' "$file") 40 ilp=$(sed -n -E 's,.*"(ilp32|lp64)\.h".*,\1,p' "$file") 41 size=$(awk '/#.*LONG$/ { l = "long" } /#.*INT$/ { i = "int" } END { print(i "" l) }' "$file") 42 ldbl=$(sed -n -E 's,^#.*LDOUBLE[^0-9]+([0-9]+)$,ldbl\1,p' "$file") 43 44 if [ "$size" != "int" ] && [ "$size" != "long" ]; then 45 size="????" # mips 46 fi 47 48 case $platform in ????*) indent='\t';; *) indent='\t\t';; esac 49 50 printf '\t\t\t''platform["%s"]'"$indent"'= "%s %-5s %-4s %s"\n' \ 51 "$platform" "$char" "$ilp" "$size" "$ldbl" 52done 53