BIN = myprog
ARCHIVE = libmylist.a
SO = libmylist.so

${BIN}: list.o main.o
	gcc -o $@ $^

%.o: %.c list.h
	gcc -c -fPIC $<

static: main.o ${ARCHIVE}
	gcc $^ -o ${BIN}

dynamic: main.o ${SO}
	gcc $< -lmylist -L. -o ${BIN}
	@echo 'Execute this command: export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:'

${ARCHIVE}: list.o
	ar rcs ${ARCHIVE} $^

${SO}: list.o
	gcc -shared -o ${SO} $^

clean:
	rm ${BIN} *.o ${ARCHIVE} ${SO}
