CC          := gcc
CFLAGS      := -Wall -c
LFLAGS      := -Wall
ALL         := f_lock p_lock m_lock no_lock

all: $(ALL)

f_lock: lock.o flock-lib.o rw-lib.o err.o
	$(CC) $(LFLAGS) -o $@ $^

p_lock: lock.o lock-lib.o rw-lib.o err.o
	$(CC) $(LFLAGS) -o $@ $^

m_lock: m_lock.o lock-lib.o rw-lib.o err.o
	$(CC) $(LFLAGS) -o $@ $^

no_lock: no-lock.o rw-lib.o err.o
	$(CC) $(LFLAGS) -o $@ $^

m_lock.o: lock.c rw-lib.h err.h lock-lib.h
	$(CC) -DMANDATORY $(CFLAGS) -o $@ $<

lock.o: lock.c rw-lib.h err.h lock-lib.h
	$(CC) $(CFLAGS) $<

no-lock.o: no-lock.c rw-lib.h err.h lock-lib.h
	$(CC) $(CFLAGS) $<

flock-lib.o: flock-lib.c rw-lib.h err.h lock-lib.h
	$(CC) $(CFLAGS) $<

lock-lib.o: lock-lib.c rw-lib.h err.h lock-lib.h
	$(CC) $(CFLAGS) $<

rw-lib.o: rw-lib.c rw-lib.h err.h
	$(CC) $(CFLAGS) $<

err.o: err.c err.h
	$(CC) $(CFLAGS) $<

clean:
	rm -f *.o $(ALL)

mrproper:
	rm -f *.o $(ALL) core *~
