xref: /netbsd-src/tests/usr.bin/xlint/lint1/gen-platforms.sh (revision 1603ef6585f2749e804782955756b75415115f1c)
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