.SUFFIXES: .cc .cpp .c .o

TARGET=../bin/CacheUsers.dll
DOCTARGET=../file_id.diz
DEF=CacheUsers.def
OBJS=../o/CacheUsers.o ../o/avl_sid.o ../o/string.o ../o/memory.o ../o/CacheUsers.res.o
LIBS=-limagehlp -lntdll

all: $(TARGET) $(DOCTARGET)

WFLAGS=-ffor-scope -Wall -W -Werror -Wno-unused -Wpointer-arith -Wcast-qual -Wconversion
CFLAGS=-c -mcpu=pentiumpro -Os $(WFLAGS) -fno-rtti -fno-exceptions -fomit-frame-pointer -fstrict-aliasing -D__STRING_REVERSE -D__STRING_PLUS
LFLAGS=-mdll -s -nostartfiles

RM=rm -f
CC=gcc
DLLTOOL=dlltool
MAKE=make
M4=m4
WINDRES=windres
CP=cp

$(TARGET): $(OBJS)
	$(CC) $(LFLAGS) -o nul -Xlinker --base-file -Xlinker $(TARGET).base $(OBJS) $(LIBS)
	$(DLLTOOL) --dllname $(TARGET) --base-file $(TARGET).base --output-exp $(TARGET).exp --def $(DEF)
	$(CC) $(LFLAGS) -o $@ $(OBJS) $(TARGET).exp $(LIBS)
	$(RM) $(TARGET).base
	$(RM) $(TARGET).exp

../o/%.o: %.cpp
	$(CC) $(CFLAGS) -o $@ $<

../o/CacheUsers.res.o: CacheUsers.rc ./bootstrap/cuversion.h
	windres -i $< -o $@

./bootstrap/cuversion.h: cuversion.m4 cu_ver.m4
	$(M4) $< > $@

../file_id.diz: file_id_diz.m4 cu_ver.m4
	$(M4) $< > $@
