# Copyright 2010 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 for commands written in C.

ifeq (windows,$(findstring windows, $(shell uname | tr A-Z a-z | sed 's/mingw/windows/')))
TARG:=$(TARG).exe
endif

$(TARG): $(OFILES) $(LIB)
	$(HOST_LD) -o $(TARG) -L"$(GOROOT)"/lib $(OFILES) $(LIB) -lbio -l9 -lm

$(OFILES): $(HFILES)

clean:
	rm -f *.$(HOST_O) $(TARG) $(CLEANFILES)

ifneq ($(NOINSTALL),1)
install: $(QUOTED_GOBIN)/$(TARG)
endif

$(QUOTED_GOBIN)/$(TARG): $(TARG)
	cp $(TARG) "$(GOBIN)"/$(TARG)

y.tab.h: $(YFILES)
	bison -y $(HOST_YFLAGS) $(YFILES)

y.tab.c: y.tab.h
	test -f y.tab.c && touch y.tab.c

all: $(TARG)

%.$(HOST_O): %.c
	$(HOST_CC) $(HOST_CFLAGS) -c "$(PWD)/$*.c"

# These are used by enough different Makefiles to be
# worth writing down in one place, even if they don't
# apply to every command that builds with Make.ccmd
../%l/enam.o:
	cd ../$*l; $(MAKE) enam.o

