| #!/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. |
| # _FILE has incomplete __lock and __state fields on uclibc-ng. |
| |
| grep -v "#define _" ${IN} | grep -v "#define [cm][012345] " | 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 _FILE" |
| 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 |