# Makefile for the Neural Network C++ library
# Copyright (C) 2000 Gianni Ceccarelli
# Released under the GNU LGPL, version 2.1

# This would work, if SGI's STL was written correctly (it makes a mess of namespaces)
# CXXFLAGS=-O9 -Wall -L. -fhonor-std
CXXFLAGS=-O9 -Wall -L.

all: libnn.so elems prova prova.rmlp

libnn.so: nn_base.o graph.o struct.o
	ld -E -r $^ -o $@
nn_base.o: nn_base.cpp nn_base.h graph.h
graph.o: graph.cpp graph.h
struct.o: struct.cpp struct.h graph.h nn_base.h

elems: elems.o mlp.o
	g++ ${CXXFLAGS} -o $@ $^ -lnn
prova: prova.o
	g++ ${CXXFLAGS} -o $@ $^ -lnn
prova.rmlp: prova.rmlp.o rmlp.o
	g++ ${CXXFLAGS} -o $@ $^ -lnn

mlp.o: mlp.cpp mlp.h nn_base.h graph.h
rmlp.o: rmlp.cpp rmlp.h struct.h graph.h nn_base.h
elems.o: elems.cpp mlp.h
prova.o: prova.cpp graph.h nn_base.h struct.h
prova.rmlp.o: prova.rmlp.cpp graph.h nn_base.h rmlp.h

clean:
	rm -f *.o *~ elems prova prova.rmlp libnn.so

dist:
	tar zcvf NNLib-0.1.tar.gz \
		LGPL.txt Makefile \
		graph.h graph.cpp \
		nn_base.h nn_base.cpp \
		struct.h struct.cpp \
		mlp.h mlp.cpp \
		rmlp.h rmlp.cpp \
		elems.cpp prova.cpp prova.rmlp.cpp \
		Documentation/
