#MARCH=-march=athlon-tbird
CXXFLAGS=-ansi -pedantic -Wall -O3
includedir = $(CURDIR)/include
CXXFLAGS+= -I$(includedir)

PREFIX ?= /usr

export MARCH CXXFLAGS

VPATH = src $(SUBDIRS)

OBJECTS = main.o classic_exc.o textfile_exc.o
OBJECTS += koch_exc.o qrz_exc.o check.o setup.o

SUBDIRS =  libaudiostream libkeyer
SUBDIRS += libmenus libexercises
SUBDIRS += libdatafile librandom

.PHONY: all clean clean_libs clean_aldo install $(SUBDIRS)
.LIBPATTERNS:=lib%.a

all:
	$(MAKE) libs
	$(MAKE) aldo

libs: $(SUBDIRS) 

$(SUBDIRS):
	@$(MAKE) -C $@ static

aldo: $(OBJECTS) -ldatafile -laudiostream -lmorse -lkeyer -lmenus -lrandom
	$(CXX) -o $@ $^

main.o: main.cpp $(HEADERS)
	$(CXX) $(MARCH) $(CXXFLAGS) -c $< -o $@

classic_exc.o: classic_exc.cpp $(HEADERS)
	$(CXX) $(MARCH) $(CXXFLAGS) -c $< -o $@

check.o: check.cpp $(HEADERS)
	$(CXX) $(MARCH) $(CXXFLAGS) -c $< -o $@

setup.o: setup.cpp $(HEADERS)
	$(CXX) $(MARCH) $(CXXFLAGS) -c $< -o $@

koch_exc.o: koch_exc.cpp $(HEADERS)
	$(CXX) $(MARCH) $(CXXFLAGS) -c $< -o $@

textfile_exc.o: textfile_exc.cpp $(HEADERS)
	$(CXX) $(MARCH) $(CXXFLAGS) -c $< -o $@

qrz_exc.o: qrz_exc.cpp $(HEADERS)
	$(CXX) $(MARCH) $(CXXFLAGS) -c $< -o $@

clean: clean_libs clean_aldo

clean_libs: 
	$(MAKE) -C libaudiostream clean
	$(MAKE) -C libkeyer clean
	$(MAKE) -C libmenus clean
	$(MAKE) -C libexercises clean
	$(MAKE) -C libdatafile clean
	$(MAKE) -C librandom clean

clean_aldo:
	@$(RM) aldo $(OBJECTS)

install: libs aldo uninstall
	@strip aldo
	@install -m555 -oroot aldo $(PREFIX)/bin/

uninstall:
	@$(RM) $(PREFIX)/bin/aldo
