#!/bin/sh # Copyright 2018 The Go Authors. All rights reserved. # Use of this source code is governed by a BSD-style # license that can be found in the LICENSE file. # Create tmp-runtime.inc from runtime.inc.raw. IN=runtime.inc.raw OUT=tmp-runtime.inc rm -f runtime.inc.tmp2 runtime.inc.tmp3 # _Complex_lock and _Reader_lock are Go translations of some AIX system # types and should not be exported back to C # semt is a Go translation of the C type sem_t; it fails to convert on # some systems and need not be exported back to C. # sigset conflicts with system type sigset on AIX, so we need to rename it. # boundsError has a field name that is a C keyword, and we don't need it. # mSpanInuse is both a constant and a field name, and we don't need it. grep -v "#define _" ${IN} | grep -v "#define [cm][01234] " | grep -v "#define empty " | grep -v "#define \\$" | grep -v "#define mSpanInUse " > runtime.inc.tmp2 for pattern in '_[GP][a-z]' _Max _Lock _Sig _Trace _MHeap _Num do grep "#define $pattern" ${IN} >> runtime.inc.tmp2 done TYPES="_Complex_lock _Reader_lock semt boundsError" for TYPE in $TYPES do sed -e '/struct '${TYPE}' {/,/^}/s/^.*$//' runtime.inc.tmp2 > runtime.inc.tmp3; mv runtime.inc.tmp3 runtime.inc.tmp2 done sed -e 's/sigset/sigset_go/' runtime.inc.tmp2 > runtime.inc.tmp3 mv runtime.inc.tmp3 runtime.inc.tmp2 # Make all the fields of type structs const. sed -e '/struct .*type {/,/^}/ s/ \(.*;\)/ const \1/' < runtime.inc.tmp2 > runtime.inc.tmp3 mv -f runtime.inc.tmp3 ${OUT} rm -f runtime.inc.tmp2 runtime.inc.tmp3 exit 0