### Configuration.

CC = gcc
AR = ar
RANLIB = ranlib

CPPFLAGS = -Wall -g -O2
CFLAGS = -Wall -g -O2

LIBS = ./libw2a.a



### Objects

LIB_SRC =  \
bfile.cpp \
calc.cpp \
calendar.cpp \
cardfile.cpp \
chrstr.cpp \
cmnboxes.cpp \
config.cpp \
country.cpp \
custkeyb.cpp \
customw2.cpp \
desktop.cpp \
dialog.cpp \
dispatch.cpp \
dlgmaker.cpp \
dplib.cpp \
dragsize.cpp \
draw.cpp \
effects.cpp \
event.cpp \
filesel.cpp \
filework.cpp \
freana.cpp \
help.cpp \
kbd.cpp \
macroed.cpp \
night.cpp \
pane.cpp \
pctos32.cpp \
sdl.cpp \
sm_mem.cpp \
sounds.cpp \
system.cpp \
ulshow.cpp \
w2string.cpp \
wctrl.cpp \
wedit.cpp \
windows.cpp \
wobject.cpp \
wscrlbar.cpp \
wslider.cpp \
wstatic.cpp

TEST_SRC = \
test.cpp \
testmain.cpp

LIB_OBJ = $(LIB_SRC:%.cpp=%.o)
TEST_OBJ = $(TEST_SRC:%.cpp=%.o)

OBJS = $(LIB_OBJ) $(TEST_OBJ)




### Internals

INCLUDES = -I. -I.. -I../modules

COMPILE = $(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)

DEP_FILES_1 = $(foreach obj,$(OBJS),.deps/$(obj))
DEP_FILES = $(DEP_FILES_1:%.o=%.P)




### Normal build rules

all: libw2a test

libw2a: libw2a.a

libw2a.a: $(LIB_OBJ)


test: test testmain

testmain: libw2a.a testmain.o
	$(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ testmain.o $(LIBS)

test: libw2a.a test.o
	$(CC) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ testmain.o $(LIBS)


clean:
	rm -rf .deps core $(OBJS) libw2a.a test testmain




### Internal build rules

DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)

-include $(DEP_FILES)

%.o: %.cpp
	@echo '$(COMPILE) -c $<'; \
		$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
	@-cp .deps/$(*F).pp .deps/$(*F).P; \
		tr ' ' '\012' < .deps/$(*F).pp \
		| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
		>> .deps/$(*F).P; \
	rm .deps/$(*F).pp

%.a:
	rm -f $@
	$(AR) cru $@ $^
	$(RANLIB) $@
