CXX=g++ 
LDFLAGS=-v -Wl,--enable-auto-import #-Wl,-Map,map.log -Wl,-enable-extra-pe-debug
LDLIBS= 


all: dll.dll dllordinal.dll client.exe clientordinal.exe 

dllordinal.dll: dll.o 
	$(CXX) --shared $^ -o $@ -Wl,--out-implib-ordinal,libdllordinal.a

dll.dll: dll.o 
	$(CXX) --shared $^ -o $@ -Wl,--out-implib,libdll.a

#dll2.dll: dll2.o 
#	$(CXX) --shared $^ -o $@ -Wl,--out-implib,libdll2.a

#dll2.o: dll2.cc 

dll.o: dll.cc dll.h

dll.h dll.cc: dll.awk
#	the scripts writes to dll.h directly 
	gawk -f $^ >dll.cc

client.exe: client.o 
	$(CXX)-o $@ $^ $(LDFLAGS) -L. -ldll #-ldll2

clientordinal.exe: client.o dllordinal.dll 
	$(CXX) -o $@ $^ $(LDFLAGS) -L. -ldllordinal #-ldll2
  
client.o : client.cc dll.dll

clean:
	rm -f *.o *.dll *.exe *.map *.a dll.c dll.h *.bak *.log

check: client.exe clientordinal.exe 
	/bin/time -f "real %E s\nuser    %U s\nsystem  %S s" ./client.exe 
	/bin/time -f "real %E s\nuser    %U s\nsystem  %S s" ./clientordinal.exe

dist: 
	make clean 
	tar -cjvf client.tar.bz2 *.cc *.awk Makefile

.PHONY: check

