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

all: foo lib-c0.so lib-c1.so lib-c2.so
	./foo
	cp lib-c1.so lib-c.so
	./foo
	cp lib-c2.so lib-c.so
	./foo

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

lib-c.so: lib-c0.so
	cp lib-c0.so lib-c.so

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

lib-c0.so: c0.o
	$(CC) -Wl,-soname,lib-c.so -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 $@ $^

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

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

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

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

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