#!/bin/sh
# Copyright 2009 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.

# Generate builtin.c from $* (runtime.go and unsafe.go).
# Run this after changing runtime.go and unsafe.go
# or after changing the export metadata format in the compiler.
# Either way, you need to have a working compiler binary first.

set -e

eval $(go tool dist env)
if [ -z "$GOCHAR" ]; then
	echo 'missing $GOCHAR - go tool dist failed?' 1>&2
	exit 1
fi

GC=${GOCHAR}g
gcc -o mkbuiltin1 mkbuiltin1.c
rm -f _builtin.c
echo "// AUTO-GENERATED by mkbuiltin; DO NOT EDIT" >>_builtin.c
for i in runtime unsafe
do
	go tool $GC -A $i.go
	O=$GOCHAR ./mkbuiltin1 $i >>_builtin.c
done

# If _builtin.c has changed vs builtin.c,
# check in the new change.
cmp -s _builtin.c builtin.c || cp _builtin.c builtin.c
rm _builtin.c mkbuiltin1 unsafe.$GOCHAR runtime.$GOCHAR
