
top = $(OMF_ROOT)

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

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

mod = 	Test \
	Integer \
	Boolean \
	String \
	List \
	Set \
	ModelObject \
	Metamodel \
	ModelElement \
	GeneralizableElement \
	Class \
	Contains \
	Generalizes
obj = $(mod:%=%.o)
dep = $(mod:%=%.dep)
bin = Test
libs = -lboost_unit_test_framework-gcc-mt-d -lOMF -lModel

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

xmi_mod = Xmi
xmi_obj = $(xmi_mod:%=%.o)
xmi_dep = $(xmi_mod:%=%.dep)
xmi_bin = Xmi
xmi_libs = -lOMF -lModel

iter_mod = Iter
iter_obj = $(iter_mod:%=%.o)
iter_dep = $(iter_mod:%=%.dep)
iter_bin = Iter
iter_libs = -lOMF -lModel

cont_mod = Containers
cont_obj = $(cont_mod:%=%.o)
cont_dep = $(cont_mod:%=%.dep)
cont_bin = Containers
cont_libs = -lOMF -lModel

all_deps = $(tag_deps) \
	$(xmi_deps) \
	$(iter_deps) \
	$(cont_deps)

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

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

all: $(bin)

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

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

$(xmi_bin): $(xmi_obj)
	$(CXX) $(CXXFLAGS) -o $(xmi_bin) $(xmi_obj) $(xmi_libs)

$(iter_bin): $(iter_obj)
	$(CXX) $(CXXFLAGS) -o $(iter_bin) $(iter_obj) $(iter_libs)

$(cont_bin): $(cont_obj)
	$(CXX) $(CXXFLAGS) -o $(cont_bin) $(cont_obj) $(cont_libs)

depend: $(dep)
	for i in $(dep); do \
		cat $$i >> .deps; \
	done

clean:
	rm -f *~
	rm -f $(obj) $(dep) $(bin)
	rm -f $(tag_obj) $(tag_dep) $(tag_bin)
	rm -f $(xmi_obj) $(xmi_dep) $(xmi_bin)
	rm -f $(iter_obj) $(iter_dep) $(iter_bin)
	rm -f $(cont_obj) $(cont_dep) $(cont_bin)

include .deps