SHLIBLDFLAGS=-Wl,--version-script=c.map

default: foo lib-c1.so lib-c2.so
	./foo
	cp lib-c1.so lib-c.so
	$(CC) -o $@ foo.o -Wl,-rpath,. lib-b.so
	./foo
	cp lib-c2.so lib-c.so
	$(CC) -o $@ foo.o -Wl,-rpath,. lib-b.so
	./foo

foo: foo.o lib-b.so 
	$(CC) -o $@ foo.o -Wl,-rpath,. lib-b.so

bar: bar.o lib-b.so 
	$(CC) -o $@ bar.o -Wl,-rpath,. lib-b.so

lib-b.so: b.o lib-a.so
	$(CC) -shared -o $@ $^

lib-a.so: a.o lib-c.so
	$(CC) -shared -o $@ $^
	
lib-c.so: c.o
	$(CC) -shared -o $@ $^
	
lib-c1.so: c1.o
	$(CC) -Wl,-soname,lib-c.so $(SHLIBLDFLAGS) -shared -o $@ $^
	
lib-c2.so: c2.o
	$(CC) -Wl,-soname,lib-c.so $(SHLIBLDFLAGS) -shared -o $@ $^
	
c1.o: c1.c
	$(CC) -fPIC -c $^

c2.o: c2.c
	$(CC) -fPIC -c $^

c.o: c.c
	$(CC) -fPIC -c $^

a.o: a.c
	$(CC) -fPIC -c $^

b.o: b.c
	$(CC) -fPIC -c $^

clean:
	-rm -f *.o foo bar lib*.so
