.SUFFIXES: .cc .cpp .c .o

TARGET=EditCmpl.dll
SRCS=EditCmpl.cpp MatPat.cpp cmpl.cpp mcmpl.cpp acmpl.cpp avl_words.cpp avl_windows.cpp string.cpp memory.cpp SelColor.cpp
DEF=EditCmpl.def
OBJS=$(patsubst %.cpp,%.o,$(filter %.cpp,$(SRCS)))
DEPS=$(patsubst %.cpp,%.d,$(filter %.cpp,$(SRCS)))
LIBS=-lcrtdll

all: $(TARGET)

#size
#CFLAGS=-c -Os -Wall -Werror -Wno-unused -fno-rtti -fno-exceptions -fno-builtin -fomit-frame-pointer -fstrict-aliasing
#speed
CFLAGS=-c -mcpu=pentiumpro -O3 -Wall -Werror -Wno-unused -fno-rtti -fno-exceptions -fomit-frame-pointer -fstrict-aliasing
LFLAGS=-mdll -s -nostartfiles

AS=as
RM=rm -f
CC=gcc
DLLTOOL=dlltool

%.d: %.cpp
	$(SHELL) -ec '$(CXX) -c -MM $(CXXFLAGS) $< | sed '\''s/\($*\)\.o[ :]*/\1.o $@: /g'\'' > $@; [ -s $@ ] || rm -f $@'

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

-include $(DEPS)

$(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

clear:
	$(RM) $(TARGET)
	$(RM) $(OBJS)
	$(RM) $(DEPS)
