include Makefile.include

TESTER = tester$(EXEEXT)

SUBDIRS = smol per mrgal mmj

OBJS = ModelSpec.o \
	ModelSolution.o \
	SolutionTester.o \
	tester.o

# Those for which we don't include a .d file
SUBOBJS = \
	smol/SmolSolution.o \
	per/PerSolution.o \
	mrgal/MRGalSolution.o \
	mmj/MMJSolution.o \
	mmj/CGASolution.o \
	mmj/SSA1Solution.o

all: all-subdirs $(TESTER)

all-subdirs:
	for d in $(SUBDIRS); do \
    make -C $$d all || exit; \
  done

$(TESTER): $(OBJS) $(SUBOBJS)
	$(CXX) $(LDFLAGS) -o $(TESTER) $(OBJS) $(SUBOBJS) $(LIBS) $(FCLIBS)

clean: clean-subdirs
	rm -f *.o *.d $(TESTER)

clean-subdirs:
	for d in $(SUBDIRS); do \
    make -C $$d clean || exit; \
  done

distclean: clean
	rm -f Makefile.include config.status config.log
	rm -rf autom4te.cache

configure: configure.ac
	autoconf

Makefile.include: Makefile.include.in config.status
	./config.status

config.status: configure
ifeq ($(wildcard config.status), )
$(error Please run ./configure first)
else
	./config.status --recheck
endif

-include $(OBJS:.o=.d)

.PHONY: all all-subdirs clean clean-subdirs
