CC=gcc
AR=ar
RM=/bin/rm -f
INSTALL=cp -rpf
TDR=tdr -M

PREFIX?=/usr/local/tsf4g/
SOURCES?=.

CFLAGS?=-Wall -Wconversion -Wcast-qual -Wpointer-arith -Wredundant-decls -Wmissing-declarations -Werror --pipe -fno-common

ifdef debug
DEBUG_CFLAGS=-g3 -ggdb3 -DMAKE_DEBUG
else
DEBUG_CFLAGS=-O3 -DMAKE_RELEASE
endif

ifdef big
CFLAGS+=-DTSF4G_BIGENDIAN
endif

REALCC=$(CC) $(CFLAGS) $(DEBUG_CFLAGS) $(CINC)
REALLD=$(CC) $(LDPATH)
REALAR=$(AR)
REALINSTALL=$(INSTALL)
REALTDR=$(TDR) $(TDRINC)

JDR_FILE=$(TDR_FILE:.tdr=.jdr)
JDR_H_FILE=$(JDR_FILE:.jdr=.jdr.h)
GENFILE=$(JDR_H_FILE) $(JDR_FILE)

OFILE=$(CFILE:.c=.o)
DFILE=$(OFILE:.o=.d) $(JDR_FILE:.jdr=.jdr.d)

.PHONY: all clean dep install

all:dep $(GENFILE) $(TARGET)

$(LIBRARY): $(OFILE)
	$(REALAR) r $(LIBRARY) $^

$(BINARY): $(OFILE) $(DEPOFILE)
	$(REALLD) -o $@ $^ $(DEPLIBS)

%.o: %.c
	$(REALCC) -o $@ -MMD -c $<

%.jdr.h:%.jdr
	tcg -sh $<

%.jdr:%.tdr
	$(REALTDR) $<

%.c: %.re
	re2c -c -F -t$*.h -o$*.c $<

%.h: %.re
	re2c -c -F -t$*.h -o$*.c $<

clean:
	$(RM) $(TARGET) $(OFILE) $(DFILE) $(GENFILE)

-include $(DFILE)
