blob: ca443ba7dcc1970a4a0fa28f26941774d3345811 [file] [log] [blame]
#!/bin/sh
# Copyright 2011 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.
# This script generates the various derived files involved in
# building package runtime.
#
# autogen.sh rebuilds everything
# autogen.sh -clean deletes the generated files
. ../../buildinfo.sh
HELPERS="goc2c mkversion"
rm -f $HELPERS z*
if [ "$1" = "-clean" ]; then
exit 0
fi
set -e
if [ "$GOROOT" = "" ]; then
echo "$0"': $GOROOT must be set' >&2
exit 2
fi
# Use goc2c to translate .goc files into arch-specific .c files.
quietgcc -o goc2c -I "$GOROOT/include" goc2c.c "$GOROOT/lib/lib9.a"
for file in *.goc
do
for arch in $GOARCHES
do
base=$(echo $file | sed 's/\.goc$//')
GOARCH=$arch ./goc2c $file >z.tmp
mv -f z.tmp z${base}_$arch.c
done
done
# Version constants.
quietgcc -o mkversion -I "$GOROOT/include" mkversion.c "$GOROOT/lib/lib9.a"
GOROOT="$GOROOT_FINAL" ./mkversion >z.tmp
mv z.tmp zversion.go
for arch in $GOARCHES
do
(
echo '// AUTO-GENERATED by autogen.sh; DO NOT EDIT'
echo
echo 'package runtime'
echo
echo 'const theGoarch = "'$arch'"'
) >zgoarch_$arch.go
done
for os in $GOOSES
do
(
echo '// AUTO-GENERATED by autogen.sh; DO NOT EDIT'
echo
echo 'package runtime'
echo
echo 'const theGoos = "'$os'"'
) >zgoos_$os.go
done
# Definitions of runtime structs, translated from C to Go.
for osarch in $GOOSARCHES
do
./mkgodefs.sh $osarch proc.c iface.c hashmap.c chan.c >z.tmp
mv -f z.tmp zruntime_defs_$osarch.go
done
# Struct field offsets, for use by assembly files.
for osarch in $GOOSARCHES
do
./mkasmh.sh $osarch proc.c defs.h >z.tmp
mv -f z.tmp zasm_$osarch.h
done
rm -f $HELPERS