CC = gcc
CFLAGS=-O -g
LDFLAGS=-Wl,-rpath=.
SOFLAGS=-Wl,-z,now

main: main.c a.so b.so
	$(CC) $(CFLAGS) $(LDFLAGS) -o main main.c a.so b.so

a.o: a.c
	$(CC) $(CFLAGS) -fpic -o a.o -c a.c
a.so: a.o
	$(CC) $(CFLAGS) $(SOFLAGS) -shared -o a.so a.o

b.o: b.c
	$(CC) $(CFLAGS) -fpic -o b.o -c b.c
b.so: b.o a.so
	$(CC) $(CFLAGS) $(SOFLAGS) -shared -o b.so b.o a.so

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