
top = $(OMF_ROOT)

LIBRARIES = -L$(top)/lib
INCLUDES = -I$(top)

CXX = g++
CXXFLAGS = -g -Wall $(INCLUDES) $(LIBRARIES)

mod = \
	Properties
obj = $(mod:%=%.o)
dep = $(mod:%=%.dep)
bin = Properties
libs = -lOMF

tag_mod = Tag
tag_obj = $(tag_mod:%=%.o)
tag_dep = $(tag_mod:%=%.dep)
tag_bin = Tag
tag_libs = -lOMF -lModel

super_mod = Super
super_obj = $(super_mod:%=%.o)
super_dep = $(super_mod:%=%.dep)
super_bin = Super
super_libs = -lOMF -lModel

vis_mod = Vis
vis_obj = $(vis_mod:%=%.o)
vis_dep = $(vis_mod:%=%.dep)
vis_bin = Vis
vis_libs = -lOMF -lModel

mult_mod = Mult
mult_obj = $(mult_mod:%=%.o)
mult_dep = $(mult_mod:%=%.dep)
mult_bin = Mult
mult_libs = -lOMF -lModel

model_mod = Model
model_obj = $(model_mod:%=%.o)
model_dep = $(model_mod:%=%.dep)
model_bin = Model
model_libs = -lOMF -lModel


%.o: %.cpp
	$(CXX) -c $(CXXFLAGS) -o $@ $<

%.dep: %.cpp
	$(CXX) -c -MM $(CXXFLAGS) -o $@ $<

all: $(bin) \
	$(tag_bin) \
	$(super_bin) \
	$(vis_bin) \
	$(mult_bin) \
	$(model_bin)

$(bin): $(obj)
	$(CXX) $(CXXFLAGS) -o $(bin) $(obj) $(libs)

$(tag_bin): $(tag_obj)
	$(CXX) $(CXXFLAGS) -o $(tag_bin) $(tag_obj) $(tag_libs)

$(super_bin): $(super_obj)
	$(CXX) $(CXXFLAGS) -o $(super_bin) $(super_obj) $(super_libs)

$(vis_bin): $(vis_obj)
	$(CXX) $(CXXFLAGS) -o $(vis_bin) $(vis_obj) $(vis_libs)

$(mult_bin): $(mult_obj)
	$(CXX) $(CXXFLAGS) -o $(mult_bin) $(mult_obj) $(mult_libs)

$(model_bin): $(model_obj)
	$(CXX) $(CXXFLAGS) -o $(model_bin) $(model_obj) $(model_libs)

depend: $(dep) \
	$(tag_dep) \
	$(super_dep) \
	$(vis_dep) \
	$(mult_dep) \
	$(model_dep)
	for i in $(dep) $(tag_dep); do \
		cat $$i >> .deps; \
	done

clean:
	rm -f *~
	rm -f $(obj) $(dep) $(bin)
	rm -f $(tag_obj) $(tag_dep) $(tag_bin)
	rm -f $(super_obj) $(super_dep) $(super_bin)
	rm -f $(vis_obj) $(vis_dep) $(vis_bin)
	rm -f $(mult_obj) $(mult_dep) $(mult_bin)
	rm -f $(model_obj) $(model_dep) $(model_bin)

include .deps