#
#
#

VERSION="0.6.3"

TARGETS=liblpmdutility.a config.h lpmd lpmd-analyzer lpmd-converter lpmd-visualizer



all: subdirs $(TARGETS)


Makefile: packagesetup
	./setup 



subdirs:
	cd tests && $(MAKE)

install: subdirs-install $(TARGETS)
	ginstall -v -d /usr/local/lib
	ginstall -v -d /usr/local/bin

	ginstall -v -D liblpmdutility.a /usr/local/lib
	ginstall -v -D lpmd /usr/local/bin
	ginstall -v -D lpmd-analyzer /usr/local/bin
	ginstall -v -D lpmd-converter /usr/local/bin
	ginstall -v -D lpmd-visualizer /usr/local/bin


uninstall: subdirs-uninstall
	rm -vf /usr/local/lib/liblpmdutility.a
	rm -vf /usr/local/bin/lpmd
	rm -vf /usr/local/bin/lpmd-analyzer
	rm -vf /usr/local/bin/lpmd-converter
	rm -vf /usr/local/bin/lpmd-visualizer
	(rmdir /usr/local/lib || true) 2>/dev/null
	(rmdir /usr/local/bin || true) 2>/dev/null

controlparser.o: controlparser.cc /usr/local/include/lpmd/array.h /usr/local/include/lpmd/util.h /usr/local/include/lpmd/property.h /usr/local/include/lpmd/systemmodifier.h /usr/local/include/lpmd/visualizer.h controlparser.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c controlparser.cc -o controlparser.o

quickmode.o: quickmode.cc quickmode.h /usr/local/include/lpmd/error.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c quickmode.cc -o quickmode.o

replayintegrator.o: replayintegrator.cc replayintegrator.h /usr/local/include/lpmd/simulation.h /usr/local/include/lpmd/potential.h /usr/local/include/lpmd/session.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c replayintegrator.cc -o replayintegrator.o

refsimulation.o: refsimulation.cc refsimulation.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c refsimulation.cc -o refsimulation.o

application.o: application.cc application.h quickmode.h /usr/local/include/lpmd/simulationbuilder.h /usr/local/include/lpmd/cellgenerator.h /usr/local/include/lpmd/cellreader.h /usr/local/include/lpmd/cellwriter.h /usr/local/include/lpmd/systemmodifier.h /usr/local/include/lpmd/systemfilter.h /usr/local/include/lpmd/visualizer.h /usr/local/include/lpmd/combinedpotential.h /usr/local/include/lpmd/properties.h /usr/local/include/lpmd/property.h /usr/local/include/lpmd/storedvalue.h /usr/local/include/lpmd/value.h /usr/local/include/lpmd/session.h /usr/local/include/lpmd/refparticleset.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c application.cc -o application.o

autotest.o: autotest.cc application.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c autotest.cc -o autotest.o

help.o: help.cc application.h config.h /usr/local/include/lpmd/session.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c help.cc -o help.o

palmtree.o: palmtree.cc palmtree.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c palmtree.cc -o palmtree.o

liblpmdutility.a: controlparser.o quickmode.o replayintegrator.o refsimulation.o application.o autotest.o help.o palmtree.o
	ar rcs liblpmdutility.a controlparser.o quickmode.o replayintegrator.o refsimulation.o application.o autotest.o help.o palmtree.o

config.h: config.h.in
	cat config.h.in | ./setup --expand="version=0.6.3" > config.h

lpmd.o: lpmd.cc lpmd.h config.h palmtree.h /usr/local/include/lpmd/combinedpotential.h /usr/local/include/lpmd/integrator.h /usr/local/include/lpmd/properties.h /usr/local/include/lpmd/timer.h /usr/local/include/lpmd/configuration.h /usr/local/include/lpmd/property.h /usr/local/include/lpmd/storedvalue.h /usr/local/include/lpmd/value.h /usr/local/include/lpmd/session.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c lpmd.cc -o lpmd.o

lpmd: lpmd.o liblpmdutility.a
	g++ -o lpmd lpmd.o liblpmdutility.a -L/usr/local/lib -llpmd -ldl -lm

analyzer.o: analyzer.cc analyzer.h quickmode.h config.h /usr/local/include/lpmd/value.h /usr/local/include/lpmd/cellformat.h /usr/local/include/lpmd/session.h /usr/local/include/lpmd/error.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c analyzer.cc -o analyzer.o

lpmd-analyzer: analyzer.o liblpmdutility.a
	g++ -o lpmd-analyzer analyzer.o liblpmdutility.a -L/usr/local/lib -llpmd -ldl -lm

converter.o: converter.cc converter.h quickmode.h config.h replayintegrator.h /usr/local/include/lpmd/cellformat.h /usr/local/include/lpmd/session.h /usr/local/include/lpmd/error.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c converter.cc -o converter.o

lpmd-converter: converter.o liblpmdutility.a
	g++ -o lpmd-converter converter.o liblpmdutility.a -L/usr/local/lib -llpmd -ldl -lm

visualizer.o: visualizer.cc visualizer.h quickmode.h config.h replayintegrator.h refsimulation.h /usr/local/include/lpmd/cellformat.h /usr/local/include/lpmd/session.h /usr/local/include/lpmd/error.h
	g++ -Wall -O3 -ffast-math -funroll-all-loops -finline-functions -std=gnu++98 -I/usr/local/include -c visualizer.cc -o visualizer.o

lpmd-visualizer: visualizer.o liblpmdutility.a
	g++ -o lpmd-visualizer visualizer.o liblpmdutility.a -L/usr/local/lib -llpmd -ldl -lm


.PHONY: subdirs-install subdirs-check check subdirs-clean clean subdirs-uninstall

subdirs-install: 
	cd tests && $(MAKE) install

subdirs-check: 
	cd tests && $(MAKE) check

check: subdirs-check


subdirs-clean: 
	cd tests && $(MAKE) clean

clean: subdirs-clean
	rm -f $(TARGETS) controlparser.o quickmode.o replayintegrator.o refsimulation.o application.o autotest.o help.o palmtree.o lpmd.o analyzer.o converter.o visualizer.o

subdirs-uninstall: 
	cd tests && $(MAKE) uninstall

