# makefile for module rocdigs with mingw

#..\rocs\bin\ogen.exe rocdigs.xml
#md bin
#cd bin
#del /Q *.*
#gcc -c -I..\.. ..\impl\*.c

#dllwrap --def ..\..\rocdigs\rocdigs.def p50.o ..\..\rocrail\bin\wrapper\*.o ..\..\rocs\bin\librocs.a -liphlpapi -lwsock32 -lmpr -ladvapi32 -o ..\..\bin\p50.dll


MOUNTPOINT=..
OUTDIR=..\winbin
GENDIR=..\wingen
TMPOUTDIR=$(GENDIR)\rocdigs\bin
DEBUG=-g

CPP=gcc
LNK=gcc
INCL_PATH=$(MOUNTPOINT)
CC_FLAGS=-c $(DEBUG) -I$(INCL_PATH) -I$(GENDIR)
LNK_FLAGS=
LIBS=$(OUTDIR)\libwrapper.a $(OUTDIR)\librocs.a -liphlpapi -lwsock32 -lmpr -ladvapi32 -lwinmm

OBJS=$(patsubst impl/%.c,$(TMPOUTDIR)/%.o,$(wildcard impl/*.c))
DDXOBJS=$(patsubst impl/ddx/%.c,$(TMPOUTDIR)/ddx/%.o,$(wildcard impl/ddx/*.c))
LNOBJS=$(patsubst impl/loconet/%.c,$(TMPOUTDIR)/loconet/%.o,$(wildcard impl/loconet/*.c))
ECOSOBJS=$(patsubst impl/ecos/%.c,$(TMPOUTDIR)/ecos/%.o,$(wildcard impl/ecos/*.c))
ROCNETOBJS=$(patsubst impl/rocnet/%.c,$(TMPOUTDIR)/rocnet/%.o,$(wildcard impl/rocnet/*.c))
COMMONOBJS=$(patsubst impl/common/%.c,$(TMPOUTDIR)/common/%.o,$(wildcard impl/common/*.c))


all: $(OBJS) $(OUTDIR)\opendcc.dll $(OUTDIR)\p50.dll $(OUTDIR)\p50x.dll $(OUTDIR)\hsi88.dll $(OUTDIR)\barjut.dll $(OUTDIR)\srcp.dll \
	$(OUTDIR)\lenz.dll $(OUTDIR)\roco.dll $(OUTDIR)\zimo.dll $(OUTDIR)\dinamo.dll $(OUTDIR)\om32.dll \
	$(OUTDIR)\slx.dll $(OUTDIR)\ecos.dll $(OUTDIR)\ddx.dll $(OUTDIR)\loconet.dll $(OUTDIR)\rocnet.dll \
	$(OUTDIR)\virtual.dll $(OUTDIR)\mcs2.dll $(OUTDIR)\clock.dll
#	-del /Q $(TMPOUTDIR)\*.o

# ------------------------------------------------------------
# The Digital Interfaces as shared libraries.
# ------------------------------------------------------------
$(OUTDIR)\opendcc.dll: $(TMPOUTDIR)\opendcc.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\opendcc.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\opendcc.dll
$(OUTDIR)\p50.dll: $(TMPOUTDIR)\p50.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\p50.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\p50.dll
$(OUTDIR)\p50x.dll: $(TMPOUTDIR)\p50x.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\p50x.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\p50x.dll
$(OUTDIR)\srcp.dll: $(TMPOUTDIR)\srcp.o $(TMPOUTDIR)\srcp07.o $(TMPOUTDIR)\srcp08.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\srcp.o $(TMPOUTDIR)\srcp07.o $(TMPOUTDIR)\srcp08.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\srcp.dll
$(OUTDIR)\hsi88.dll: $(TMPOUTDIR)\hsi88.o $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\hsi88.o $(LIBS) -o $(OUTDIR)\hsi88.dll
$(OUTDIR)\barjut.dll: $(TMPOUTDIR)\barjut.o $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\barjut.o $(LIBS) -o $(OUTDIR)\barjut.dll
$(OUTDIR)\lenz.dll: $(TMPOUTDIR)\lenz.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\lenz.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\lenz.dll
$(OUTDIR)\roco.dll: $(TMPOUTDIR)\roco.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\roco.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\roco.dll
$(OUTDIR)\zimo.dll: $(TMPOUTDIR)\zimo.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\zimo.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\zimo.dll
$(OUTDIR)\dinamo.dll: $(TMPOUTDIR)\dinamo.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\dinamo.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\dinamo.dll
$(OUTDIR)\om32.dll: $(TMPOUTDIR)/om32.o $(COMMONOBJS) $(OUTDIR)/librocs.a $(OUTDIR)/libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\om32.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\om32.dll
$(OUTDIR)\slx.dll: $(TMPOUTDIR)\slx.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\slx.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\slx.dll
$(OUTDIR)\ecos.dll: $(ECOSOBJS) $(TMPOUTDIR)\ecos.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\ecos.o $(COMMONOBJS) $(ECOSOBJS) $(LIBS) -o $(OUTDIR)\ecos.dll
$(OUTDIR)\loconet.dll: $(LNOBJS) $(TMPOUTDIR)\loconet.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\loconet.o $(COMMONOBJS) $(LNOBJS) $(LIBS) -o $(OUTDIR)\loconet.dll
$(OUTDIR)\rocnet.dll: $(ROCNETOBJS) $(TMPOUTDIR)\rocnet.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\rocnet.o $(COMMONOBJS) $(ROCNETOBJS) $(LIBS) -o $(OUTDIR)\rocnet.dll
$(OUTDIR)\ddx.dll: $(DDXOBJS) $(TMPOUTDIR)\ddx.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\ddx.o $(COMMONOBJS) $(DDXOBJS) $(LIBS) -o $(OUTDIR)\ddx.dll
$(OUTDIR)\virtual.dll: $(TMPOUTDIR)\virtual.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\virtual.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\virtual.dll
$(OUTDIR)\mcs2.dll: $(TMPOUTDIR)\mcs2.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\mcs2.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\mcs2.dll
$(OUTDIR)\clock.dll: $(TMPOUTDIR)\clock.o $(COMMONOBJS) $(OUTDIR)\librocs.a $(OUTDIR)\libwrapper.a
	dllwrap --def rocdigs.def $(TMPOUTDIR)\clock.o $(COMMONOBJS) $(LIBS) -o $(OUTDIR)\clock.dll

# ------------------------------------------------------------
# The RocDigs objects.
# ------------------------------------------------------------
$(TMPOUTDIR)/%.o: impl/%.c
	$(CPP) $(CC_FLAGS) $< -o $@

$(TMPOUTDIR)/loconet/%.o: impl/loconet/%.c
	$(CPP) $(CC_FLAGS) $< -o $@

$(TMPOUTDIR)/rocnet/%.o: impl/rocnet/%.c
	$(CPP) $(CC_FLAGS) $< -o $@

$(TMPOUTDIR)/ecos/%.o: impl/ecos/%.c
	$(CPP) $(CC_FLAGS) $< -o $@

$(TMPOUTDIR)/ddx/%.o: impl/ddx/%.c
	$(CPP) $(CC_FLAGS) $< -o $@

$(TMPOUTDIR)/common/%.o: impl/common/%.c
	$(CPP) $(CC_FLAGS) $< -o $@

clean:
	-mkdir $(OUTDIR)
	-mkdir $(TMPOUTDIR)
	-mkdir -p $(TMPOUTDIR)\ddx
	-mkdir -p $(TMPOUTDIR)\loconet
	-mkdir -p $(TMPOUTDIR)\rocnet
	-mkdir -p $(TMPOUTDIR)\ecos
	-mkdir -p $(TMPOUTDIR)\common
	-mkdir $(GENDIR)\rocdigs
	-del /Q $(TMPOUTDIR)\ddx\*.o
	-del /Q $(TMPOUTDIR)\loconet\*.o
	-del /Q $(TMPOUTDIR)\rocnet\*.o
	-del /Q $(TMPOUTDIR)\ecos\*.o
	-del /Q $(TMPOUTDIR)\common\*.o
	-del /Q $(TMPOUTDIR)\*.o
	-del /Q $(OUTDIR)\p50.dll
	-del /Q $(OUTDIR)\p50x.dll
	-del /Q $(OUTDIR)\srcp.dll
	-del /Q $(OUTDIR)\hsi88.dll
	-del /Q $(OUTDIR)\barjut.dll
	-del /Q $(OUTDIR)\lenz.dll
	-del /Q $(OUTDIR)\roco.dll
	-del /Q $(OUTDIR)\zimo.dll
	-del /Q $(OUTDIR)\dinamo.dll
	-del /Q $(OUTDIR)\om32.dll
	-del /Q $(OUTDIR)\slx.dll
	-del /Q $(OUTDIR)\ecos.dll
	-del /Q $(OUTDIR)\loconet.dll
	-del /Q $(OUTDIR)\rocnet.dll
	-del /Q $(OUTDIR)\ddx.dll
	-del /Q $(OUTDIR)\virtual.dll
	-del /Q $(OUTDIR)\mcs2.dll
	-del /Q $(OUTDIR)\clock.dll
	cd $(GENDIR)\rocdigs & ..\$(OUTDIR)\ogen.exe ..\..\rocdigs\rocdigs.xml ..\\
	cd $(GENDIR)\rocdigs & ..\$(OUTDIR)\xml2cstr.exe ..\..\common\version.xml impl\version.c svnLog
	
