CC=gcc

all: iny inx
	echo "Testing with xyz() in libX"
	ln -sf libX_inx.so libX.so; ln -sf libY_inx.so libY.so
	./iny
	echo "Testing with xyz() in libY"
	ln -sf libX_iny.so libX.so; ln -sf libY_iny.so libY.so
	./iny
	echo "Testing with xyz() in libX"
	ln -sf libX_inx.so libX.so; ln -sf libY_inx.so libY.so
	./inx
	echo "Testing with xyz() in libY"
	ln -sf libX_iny.so libX.so; ln -sf libY_iny.so libY.so
	./inx

libX_inx.so: libX.c
	$(CC) -DXYZ -fPIC -shared -o $@ $^ -Wl,--version-script,libX_inx.map 

libY_inx.so: libY.c
	$(CC) -fPIC -shared -o $@ $^ -Wl,--version-script,libY_inx.map 

libX_iny.so: libX.c
	$(CC) -fPIC -shared -o $@ $^ -Wl,--version-script,libX_iny.map 

libY_iny.so: libY.c
	$(CC) -DXYZ -g -fPIC -shared -o $@ $^ -Wl,--version-script,libY_iny.map 

iny: main.c libX_iny.so libY_iny.so
	ln -sf libX_iny.so libX.so; ln -sf libY_iny.so libY.so
	$(CC) -o $@ main.c libX.so libY.so -Wl,-rpath,.

inx: main.c libX_inx.so libY_inx.so
	ln -sf libX_inx.so libX.so; ln -sf libY_inx.so libY.so
	$(CC) -o $@ main.c libX.so libY.so -Wl,-rpath,.

clean:
	rm -f a.out inx iny lib*.so

tar:
	tar cfz test.tar.gz Makefile *.c *.map
