# 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.

# -*- Makefile -*-

GO = /home/iant/go/bin/gccgo

LDFLAGS = -Wl,-R,/home/iant/go/lib

PRETTY_OBJS = \
	ast.o \
	compilation.o \
	globals.o \
	object.o \
	parser.o \
	platform.o \
	pretty.o \
	printer.o \
	scanner.o \
	type.o \
	typechecker.o \
	universe.o \
	utils.o

pretty: $(PRETTY_OBJS)
	$(GO) $(LDFLAGS) -o $@ $(PRETTY_OBJS)

test: pretty
	test.sh

install: pretty
	cp pretty $(HOME)/bin/pretty

clean:
	rm -f pretty *.o  *~


pretty.o:	 platform.o printer.o compilation.o

compilation.o:	 platform.o scanner.o parser.o ast.o typechecker.o

ast.o:	 scanner.o

scanner.o:	 utils.o

parser.o:	 scanner.o ast.o

platform.o:	 utils.o

printer.o:	 scanner.o ast.o

typechecker.o:   ast.o universe.o globals.o type.o

universe.o:      globals.o object.o type.o

object.o:        globals.o

type.o:          globals.o object.o

.SUFFIXES:
.SUFFIXES: .go .o

.go.o:
	$(GO) -O2 -c -g $<
