#	Makefile for FreeBSD

CC=	cc
TC=	../build/tc

default:	txtrn ux txx txopt txpp txinfo txx-static

txtrn:	txtrn.t
	$(TC) txtrn.t

ux:	ux.t
	$(TC) ux.t

txx:	txx.o lib.o txx_ext.h txx_ext.h
	$(CC) -g -o txx txx.o lib.o

lib.o:	lib.c
	$(CC) -g -o lib.o -DBASIC_EXT -c lib.c

txx-static:	txx.o lib.o txx_ext.h txx_ext.h
	ld -o txx-static -s -Bstatic ../build/scrt0.o txx.o lib.o \
	/usr/lib/libgcc.a /usr/lib/libc.a

txx.o:	txx.c txx_ext.h
	$(CC) -DBASIC_EXT -g -o txx.o -c txx.c

txopt:	txopt.t
	$(TC) txopt.t

txpp:	txpp.t
	$(TC) txpp.t

txinfo:	txinfo.t
	$(TC) txinfo.t

.c.o:
	$(CC) -g -c $<

bnf:
	yacc tx.bnf; rm y.tab.c

diff:
	./txtrn <txtrn.t >__stage_1
	./txx __stage_1 <txtrn.t >__stage_2
	cmp __stage_1 __stage_2 && rm __stage_1 __stage_2

hotdiff:
	./txtrn <txtrn.t >__txtrn.UNOPT
	./txopt <__txtrn.UNOPT >__txtrn
	./txtrn <txopt.t >__txopt.UNOPT
	./txopt <__txopt.UNOPT >__txopt
	./txx __txtrn < txtrn.t > __txtrn_2.UNOPT
	./txx __txopt <__txtrn_2.UNOPT >__txtrn_2
	cmp __txtrn.UNOPT __txtrn_2.UNOPT
	cmp __txtrn __txtrn_2
	rm -f __txtrn.UNOPT __txtrn __txtrn_2.UNOPT __txtrn_2 \
		__txopt.UNOPT __txopt

clean:
	rm -f *.o *.core core *.tcode *.s *.ERR

clobber:	clean
	rm -f txtrn ux txx txx-static txopt txpp txinfo

