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

# DO NOT EDIT.  Automatically generated by gobuild.
# gobuild -m >Makefile

D=/crypto/

include $(GOROOT)/src/Make.$(GOARCH)
AR=gopack

default: packages

clean:
	rm -rf *.[$(OS)] *.a [$(OS)].out _obj

test: packages
	gotest

coverage: packages
	gotest
	6cov -g `pwd` | grep -v '_test\.go:'

%.$O: %.go
	$(GC) -I_obj $*.go

%.$O: %.c
	$(CC) $*.c

%.$O: %.s
	$(AS) $*.s

O1=\
	cipher.$O\
	xor.$O\

O2=\
	cmac.$O\
	ctr.$O\
	ecb.$O\
	ofb.$O\

O3=\
	cbc.$O\
	cfb.$O\
	eax.$O\


phases: a1 a2 a3
_obj$D/block.a: phases

a1: $(O1)
	$(AR) grc _obj$D/block.a cipher.$O xor.$O
	rm -f $(O1)

a2: $(O2)
	$(AR) grc _obj$D/block.a cmac.$O ctr.$O ecb.$O ofb.$O
	rm -f $(O2)

a3: $(O3)
	$(AR) grc _obj$D/block.a cbc.$O cfb.$O eax.$O
	rm -f $(O3)


newpkg: clean
	mkdir -p _obj$D
	$(AR) grc _obj$D/block.a

$(O1): newpkg
$(O2): a1
$(O3): a2
$(O4): a3

nuke: clean
	rm -f $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/block.a

packages: _obj$D/block.a

install: packages
	test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D
	cp _obj$D/block.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/block.a
