CPP		= g++ -E
CPPFLAGS	= 
CXX		= g++ -c 
CXXFLAGS	= -Wall -g 
LD		= g++ 
LDFLAGS		= -L./ -lbar -Wl,-rpath,.
SO		= g++ -shared
SOFLAGS		= -Wl,-rpath,. -Wl,-soname,


%.o:%.cc
	$(CXX) $(CPPFLAGS) $(CXXFLAGS) $< -o $@

%:%.o
	$(LD) $(LDFLAGS) $< -o $@

all:	main

libfoo.so:foo.o
	$(SO) $(SOFLAGS)$@.1.0 $^ -o $@.1.0
	ln -sf $@.1.0 $@.1
	ln -sf $@.1 $@

libbar.so:bar.o libfoo.so
	$(SO) $(SOFLAGS)$@.1.0 $< -L. -lfoo -o $@.1.0
	ln -sf $@.1.0 $@.1
	ln -sf $@.1 $@

main:	main.o libbar.so 

clean:
	rm -f *.o *.so* *~ main

dist:
	mkdir load-order
	cp foo.cc foo.hh bar.cc bar.hh main.cc Makefile load-order/
	tar -czvf load-order.tar.gz load-order
	rm -rf load-order