Some notes on development of the Go frontend
Ian Lance Taylor
iant@golang.org

The Go frontend currently only works with GCC.  I want to make it more
portable, but that work is not complete.


Go frontend as part of GCC
--------------------------

There is a copy of the Go frontend in the GCC source code.  However,
the Go frontend source code repository is not the GCC source code
repository.  This means that if you want to modify the Go frontend,
you need to do some setup.  This is how I do it.

The Go frontend sources are stored using Git hosted at
go.googlesource.com, and mirrored on github.com.  To check out the
source code:

git clone https://go.googlesource.com/gofrontend

(or use the mirror on github: git clone https://github.com/golang/gofrontend)

That gives you the frontend only.  Now you need a copy of the GCC
source code.  See https://gcc.gnu.org/git.html for details, or simply:

git clone git://gcc.gnu.org/git/gcc

The GCC source code will have a copy of the Go frontend, but because
you want to change the Go frontend, you will need to replace that copy
with your own.  I do this using symlinks.  Symlinking the Go frontend
proper is trivial.  Symlinking libgo is a bit harder, because
convenient use of automake and autoconf requires that they be able to
see the sources in top level of the GCC repository.  So this is what I
do:

rm -rf gcc/go/gofrontend
ln -s GOFRONTEND/go gcc/go/gofrontend
rm -rf libgo
mkdir libgo
for f in GOFRONTEND/libgo/*; do ln -s $f libgo/`basename $f`; done

You can then build GCC as usual, with --enable-languages=go.  The
build will use the Go frontend in your Git repository.

This is all you need to build gccgo yourself and develop your own
patches.  To get your patch committed, send them in using "git
codereview mail" as described at
https://golang.org/doc/gccgo_contribute.html ; it's the same process as
changes for the regular Go repository.

At present I am the only person who commits changes to the Go frontend
repository.  Because the GCC repository has a copy of the Go frontend,
I need to commit changes to both repositories.  To do this, I use a
script that copies changes from the Git repository to GCC's SVN
repository.  This script uses a file MERGE that exists only in the GCC
repository.  This is the script:

==================================================
#!/bin/sh

set -e

merge="/home/iant/gcc/trunk/gcc/go/gofrontend/MERGE"
current=`head -1 $merge`
next=`git log ${current}.. | grep '^commit' | tail -1 | sed -e 's/^[^ ]* //'`

if test "$next" = ""; then
  echo "gosync: already up to date"
  exit 0
fi

if git show -p $next | grep -e '^\(---\|+++\)' | fgrep 'go/'; then
  git log -1 $next > /home/iant/gcc/trunk/svn-commit.tmp
  git show -p $next | \
    sed -e 's|\(^[-+][-+][-+] [ab]\)/go|\1/gcc/go/gofrontend|' | \
    (cd /home/iant/gcc/trunk && patch -p1)
else
  echo "gosync: no relevant files in change $next"
fi

(echo ${next}; sed -ne '2,$p' $merge) > ${merge}.tmp
mv ${merge}.tmp ${merge}
==================================================

(When I'm working with a GCC release branch, I have variants which do
the same thing with my copy of the GCC release branch.)

Now every time I submit a change to the gofrontend repository, I run
gosync to copy the change to my copy of the GCC repository, and the
commit message is stored in svn-commit.tmp in the GCC repository.  I
don't automatically commit to both git and svn at once because some
gofrontend changes require changes to other parts of GCC, and an
automatic commit to GCC would mean that GCC was temporarily broken.
So instead after pushing the submit button on
go-review.googlesource.com I run "gosync; svn commit".  GCC rules
require that all GCC patches be sent to the mailing list
gcc-patches@gcc.gnu.org with an explanation, so I do that as well when
I run "svn commit".

In summary, there are three steps to every change to the gofrontend:
1) git submit
2) svn commit
3) send e-mail to gcc-patches@gcc.gnu.org

For the convenience of people who want to use gccgo without waiting
for a release and without living on tip, I maintain a gccgo branch of
GCC.  This lives at svn://gcc.gnu.org/svn/gcc/branches/gccgo.  I maintain
it using the general GCC branch policies described at
https://gcc.gnu.org/wiki/SvnBranch .
