# Makefile
CC=gcc
CFLAGS=-g -fPIC -c
LDFLAGS=-g -shared 

all: main libX.so libC.so libB.so libA.so

main: main.c
	$(CC) -g -o $@ $< -ldl

libX.so: libX.o
	$(CC) $(LDFLAGS) -o $@ $< 
libC.so: libC.o
	$(CC) $(LDFLAGS) -o $@ $< -ldl
libB.so: libB.o
	$(CC) $(LDFLAGS) -o $@ $< -L./ -lC
libA.so: libA.o
	$(CC) $(LDFLAGS) -o $@ $< -L./ -lB

libX.o: libX.c
	$(CC) $(CFLAGS) $<
libC.o: libC.c
	$(CC) $(CFLAGS) $<
libB.o: libB.c
	$(CC) $(CFLAGS) $<
libA.o: libA.c
	$(CC) $(CFLAGS) $<

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