xref: /netbsd-src/external/gpl3/gcc.old/lib/libstdc++-v3/include/bits/arch/mkcxxconfig_h.sh (revision d914a3c1b942947a8b1fa87645678df29ac8e6ab)
136ac495dSmrg#! /bin/sh
236ac495dSmrg#
336ac495dSmrg# Copyright (c) 2013 Matthew R. Green
436ac495dSmrg# All rights reserved.
536ac495dSmrg#
636ac495dSmrg# Redistribution and use in source and binary forms, with or without
736ac495dSmrg# modification, are permitted provided that the following conditions
836ac495dSmrg# are met:
936ac495dSmrg# 1. Redistributions of source code must retain the above copyright
1036ac495dSmrg#    notice, this list of conditions and the following disclaimer.
1136ac495dSmrg# 2. Redistributions in binary form must reproduce the above copyright
1236ac495dSmrg#    notice, this list of conditions and the following disclaimer in the
1336ac495dSmrg#    documentation and/or other materials provided with the distribution.
1436ac495dSmrg#
1536ac495dSmrg# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1636ac495dSmrg# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1736ac495dSmrg# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
1836ac495dSmrg# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
1936ac495dSmrg# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
2036ac495dSmrg# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2136ac495dSmrg# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
2236ac495dSmrg# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
2336ac495dSmrg# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2436ac495dSmrg# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2536ac495dSmrg# SUCH DAMAGE.
2636ac495dSmrg
2736ac495dSmrg#
2836ac495dSmrg# Generate a c++config.h that will include the correct multilib c++config.h
2936ac495dSmrg#
3036ac495dSmrg# mkcxxconfig_h.sh [[<arch> <define>] ...] <arch>
3136ac495dSmrg#
3236ac495dSmrg#   generates a series of #ifdef 's with the final <arch> being the default
3336ac495dSmrg#
3436ac495dSmrg
3536ac495dSmrgemit_intro() {
3636ac495dSmrg	cat <<'__EOH1__'
37*d914a3c1Smrg/*	$NetBSD: mkcxxconfig_h.sh,v 1.8 2021/12/11 19:24:19 mrg Exp $	*/
3836ac495dSmrg
3936ac495dSmrg/* 	This file is automatically generated.  DO NOT EDIT!	 */
4036ac495dSmrg__EOH1__
4136ac495dSmrg
42*d914a3c1Smrg	netbsd_id=$(echo '$NetBSD: mkcxxconfig_h.sh,v 1.8 2021/12/11 19:24:19 mrg Exp $' | sed 's,[#$],,g;s,.*,&,')
4336ac495dSmrg	cat <<__EOH2__
4436ac495dSmrg/* 	Generated from: $netbsd_id	 */
4536ac495dSmrg
4636ac495dSmrg__EOH2__
4736ac495dSmrg}
4836ac495dSmrg
4936ac495dSmrgemit_final() {
5036ac495dSmrg	echo "#endif"
5136ac495dSmrg}
5236ac495dSmrg
5336ac495dSmrg# $1 - arch to include
5436ac495dSmrgemit_include() {
5536ac495dSmrg	echo "#include "'"'"bits/$1/c++config.h"'"'
5636ac495dSmrg}
5736ac495dSmrg
5836ac495dSmrg# $1 - define to ifdef
5936ac495dSmrgifdef=ifdef
6036ac495dSmrgemit_ifdef() {
6136ac495dSmrg	echo "#$ifdef $1"
6236ac495dSmrg	ifdef="elif"
6336ac495dSmrg}
6436ac495dSmrg
6536ac495dSmrgmain() {
6636ac495dSmrg	emit_intro
6736ac495dSmrg	while [ $# -gt 0 ]; do
6836ac495dSmrg		if [ $# -eq 1 ]; then
6936ac495dSmrg			echo '#else'
7036ac495dSmrg			emit_include $1
7136ac495dSmrg			break
7236ac495dSmrg		fi
7336ac495dSmrg		emit_ifdef $2
7436ac495dSmrg		emit_include $1
7536ac495dSmrg		shift
7636ac495dSmrg		shift
7736ac495dSmrg	done
7836ac495dSmrg	emit_final
7936ac495dSmrg}
8036ac495dSmrg
8136ac495dSmrgmain "$@"
82