mirror of
https://github.com/golang/go
synced 2024-11-22 21:00:04 -07:00
new approach for generating sysimport.c
(renamed to avoid any conflict with old p4 copies). this approach doesn't require auto-generating files also kept in p4, so it should be easier on go users who don't sync very often. this approach will be more work for go developers: builtin.c needs to be copied to builtin.c.boot in p4 as new functions are added. mkbuiltin does this for certain $USERs to help us remember. R=r DELTA=343 (176 added, 162 deleted, 5 changed) OCL=25803 CL=25805
This commit is contained in:
parent
681299a444
commit
af678a593d
@ -26,7 +26,7 @@ OFILES=\
|
|||||||
mparith1.$O\
|
mparith1.$O\
|
||||||
mparith2.$O\
|
mparith2.$O\
|
||||||
mparith3.$O\
|
mparith3.$O\
|
||||||
sysimport.$O\
|
builtin.$O\
|
||||||
compat.$O\
|
compat.$O\
|
||||||
|
|
||||||
$(LIB): $(OFILES)
|
$(LIB): $(OFILES)
|
||||||
@ -40,25 +40,11 @@ y.tab.h: $(YFILES)
|
|||||||
y.tab.c: y.tab.h
|
y.tab.c: y.tab.h
|
||||||
test -f y.tab.c && touch y.tab.c
|
test -f y.tab.c && touch y.tab.c
|
||||||
|
|
||||||
# the test here checks whether we have 6g at all.
|
builtin.c: sys.go unsafe.go mkbuiltin1.c mkbuiltin
|
||||||
# if so, use it. if not, just use the sysimport.c we have.
|
mkbuiltin >builtin.c || \
|
||||||
# this happens on fresh perforce checkouts where
|
(echo 'mkbuiltin failed; using bootstrap copy of builtin.c'; cp builtin.c.boot builtin.c)
|
||||||
# sysimport.c ends up with an older time stamp
|
|
||||||
# than sys.go (or unsafe.go or mksys.c).
|
|
||||||
sysimport.c: sys.go unsafe.go mksys.c
|
|
||||||
if test -x $(BIN)/6g; then \
|
|
||||||
p4 open sysimport.c; \
|
|
||||||
gcc -o mksys mksys.c; \
|
|
||||||
6g sys.go; \
|
|
||||||
6g unsafe.go; \
|
|
||||||
./mksys sys >_sysimport.c && \
|
|
||||||
./mksys unsafe >>_sysimport.c && \
|
|
||||||
mv _sysimport.c sysimport.c; \
|
|
||||||
elif test -f sysimport.c; then \
|
|
||||||
touch sysimport.c; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(OFILES) *.6 enam.c 6.out a.out y.tab.h y.tab.c $(LIB) _sysimport.c
|
rm -f $(OFILES) *.6 enam.c 6.out a.out y.tab.h y.tab.c $(LIB) mkbuiltin1 builtin.c _builtin.c
|
||||||
|
|
||||||
install: $(LIB)
|
install: $(LIB)
|
||||||
|
31
src/cmd/gc/mkbuiltin
Executable file
31
src/cmd/gc/mkbuiltin
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
#!/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.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
gcc -o mkbuiltin1 mkbuiltin1.c
|
||||||
|
6g sys.go
|
||||||
|
6g unsafe.go
|
||||||
|
rm -f _builtin.c
|
||||||
|
./mkbuiltin1 sys >_builtin.c
|
||||||
|
./mkbuiltin1 unsafe >>_builtin.c
|
||||||
|
|
||||||
|
# If _builtin.c has changed vs builtin.c.boot,
|
||||||
|
# check in the new change if being run by
|
||||||
|
# one of the people who tends to work on
|
||||||
|
# the compiler. This makes sure that changes
|
||||||
|
# don't get forgotten, without causing problems
|
||||||
|
# in end user Go repositories.
|
||||||
|
case "$USER" in
|
||||||
|
ken | r | rsc)
|
||||||
|
if ! cmp _builtin.c builtin.c.boot
|
||||||
|
then
|
||||||
|
p4 open builtin.c.boot
|
||||||
|
cp _builtin.c builtin.c.boot
|
||||||
|
fi
|
||||||
|
esac
|
||||||
|
|
||||||
|
cat _builtin.c
|
||||||
|
rm -f _builtin.c
|
||||||
|
|
@ -1,8 +1,8 @@
|
|||||||
// Copyright 2009 The Go Authors. All rights reserved.
|
// Copyright 2009 The Go Authors. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
// Extract import data from sys.6 and generate C string version.
|
// Compile .go file, import data from .6 file, and generate C string version.
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -18,7 +18,7 @@ main(int argc, char **argv)
|
|||||||
char buf[1024], initfunc[1024], *p, *q;
|
char buf[1024], initfunc[1024], *p, *q;
|
||||||
|
|
||||||
if(argc != 2) {
|
if(argc != 2) {
|
||||||
fprintf(stderr, "usage: sys sys\n");
|
fprintf(stderr, "usage: mkbuiltin1 sys\n");
|
||||||
fprintf(stderr, "in file $1.6 s/PACKAGE/$1/\n");
|
fprintf(stderr, "in file $1.6 s/PACKAGE/$1/\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user