.SUFFIXES:
.SUFFIXES: .m4 .h


CFLAGS=-c -mcpu=pentiumpro -O3 -Wall
LFLAGS=-s
LIBS=-lmpr

RM=rm
CC=gcc
DLLTOOL=dlltool
M4=m4

DEF=bcopy.def
OBJS=bcopy.o bcopy.res.o
TARGET=bcopy.dll

SVCOBJS=bcsvc.o bcHandler.o bcThreads.o bcLog.o bcInfo.o bcsvc.res.o
SVCH=bcCommon.h bcsvc.h
SVCTARGET=bcsvc.exe

all: $(SVCTARGET) $(TARGET)

.m4.h:
	$(M4) $< > $@

$(SVCTARGET): $(SVCOBJS)
	$(CC) $(LFLAGS) -o $@ $^ libntdll.a

bcHandler.o: bcHandler.c bcToken.c $(SVCH)
	$(CC) $(CFLAGS) $< -o $@

bcsvc.o: bcsvc.c $(SVCH) bcversion.h
	$(CC) $(CFLAGS) $< -o $@

bcThreads.o: bcThreads.c $(SVCH)
	$(CC) $(CFLAGS) $< -o $@

bcLog.o: bcLog.c bcsvcmsg.h bcversion.h bcsvc.msg
	$(CC) $(CFLAGS) $< -o $@

bcInfo.o: bcInfo.c $(SVCH)
	$(CC) $(CFLAGS) $< -o $@

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

bcopy.o: bcopy.cpp bcopy_find.cpp bcplugmix.cpp bcplugin.h bcplugdialogproc.cpp bcconfig.cpp bcopy_eject.cpp
	$(CC) $(CFLAGS) $< -o $@

bcopy.res.o: bcopy.rc bcversion.h
	windres -i $< -o $@

bcsvc.res.o: bcsvc.rc bcversion.h bcsvc.msg
	windres -i $< -o $@

bcsvc.msg bcsvcmsg.h: bcsvc.mc
	mc $<


clear:
	$(RM) *.o
	$(RM) *.msg
	$(RM) $(SVCTARGET) $(TARGET)
	$(RM) bcversion.h
