.PHONY: all o g clean link run
OPT =
SHELL = /bin/bash -O extglob
MAINS = $(wildcard main*.cc)
TARGETS_O = $(subst .cc,-o.exe,$(MAINS))
TARGETS_G = $(subst .cc,-g.exe,$(MAINS))
COMMONOBJS_O = $(subst .cc,-o.o,$(filter-out main%.cc, $(wildcard *.cc)))
COMMONOBJS_G = $(subst .cc,-g.o,$(filter-out main%.cc, $(wildcard *.cc)))
EXES = $(wildcard *.exe)
LIBS = -lfftw3
CXXFLAGS = -Wall -W -pedantic #-pg
#CXXFLAGS = -g -Wall -W #-pg
#CXXFLAGS =  -Wall -W -O3
CXX = g++
CC = g++

all:    g #o

g:    $(TARGETS_G)

o:    $(TARGETS_O)

$(TARGETS_G): main%-g.exe : main%-g.o	$(COMMONOBJS_G)
	$(CC) $^ $(LOADLIBES) $(LDLIBS_G) -o $@

$(TARGETS_O): main%-o.exe : main%-o.o	$(COMMONOBJS_O)
	$(CC) $^ $(LOADLIBES) $(LDLIBS_O) -o $@

%-g.o: %.cc $(wildcard *.h)
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -g -c -o $@ $<

%-o.o: %.cc $(wildcard *.h)
	$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O3 -c -o $@ $<

ifneq ($(MAKECMDGOALS), clean)
include .dep
endif

.dep: $(wildcard *.cc) $(wildcard *.h)
	@$(CXX) -MM $(CPPFLAGS) $(CFLAGS) $(wildcard *.cc) > .dep

clean:
	@$(RM) *.o *.exe core main
