L1OBJS=malloc.o free.o realloc.o utils.o garbage.o maccess.o calloc.o \
        memalign.o sbrk.o attach.o detach.o
LMD1OBJS=md-malloc.o md-free.o md-realloc.o md-utils.o md-garbage.o md-calloc.o \
        md-memalign.o md-sbrk.o md-attach.o md-detach.o md-maccess.o

L1CSRCS=$(srcdir)/l-malloc/malloc.c \
	$(srcdir)/l-malloc/free.c \
	$(srcdir)/l-malloc/realloc.c \
	$(srcdir)/l-malloc/utils.c \
	$(srcdir)/l-malloc/garbage.c \
	$(srcdir)/l-malloc/maccess.c \
	$(srcdir)/l-malloc/calloc.c \
	$(srcdir)/l-malloc/memalign.c \
	$(srcdir)/l-malloc/attach.c \
	$(srcdir)/l-malloc/detach.c \
	$(srcdir)/l-malloc/sbrk.c

$(L1OBJS):
	$(CC) $(ALL_CFLAGS) -c $(srcdir)/l-malloc/$(subst .o,.c,$@) -o $@

$(LMD1OBJS):
	$(CC) $(ALL_CFLAGS) -DMDCHECKER -c $(srcdir)/l-malloc/$(subst md-,,$(subst .o,.c,$@)) -o $@

OBJS += $(L1OBJS)
CSRCS += $(L1CSRCS)
MDOBJS += $(LMD1OBJS)
PLOBJS += $(LMD1OBJS)

# dependency
md-malloc.o malloc.o : $(srcdir)/l-malloc/malloc.c $(srcdir)/l-malloc/malloc.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h 
md-free.o free.o : $(srcdir)/l-malloc/free.c $(srcdir)/l-malloc/malloc.h ./message.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h ./errlist.h
md-realloc.o realloc.o : $(srcdir)/l-malloc/realloc.c $(srcdir)/l-malloc/malloc.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h ./errlist.h 
md-utils.o utils.o : $(srcdir)/l-malloc/utils.c $(srcdir)/l-malloc/malloc.h ./errlist.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h ./message.h 
md-garbage.o garbage.o : $(srcdir)/l-malloc/garbage.c $(srcdir)/l-malloc/malloc.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h ./message.h 
md-maccess.o maccess.o : $(srcdir)/l-malloc/maccess.c $(srcdir)/l-malloc/malloc.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h ./errlist.h \
  ./message.h ./maccess.mes $(srcdir)/l-malloc/macc-mmap.h 
md-calloc.o calloc.o : $(srcdir)/l-malloc/calloc.c $(srcdir)/l-malloc/malloc.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h 
md-memalign.o memalign.o : $(srcdir)/l-malloc/memalign.c $(srcdir)/l-malloc/malloc.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h ./errlist.h \
  ./message.h 
md-sbrk.o sbrk.o : $(srcdir)/l-malloc/sbrk.c $(srcdir)/l-malloc/malloc.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h ./errlist.h 
md-attach.o attach.o : $(srcdir)/l-malloc/attach.c $(srcdir)/l-malloc/malloc.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h 
md-detach.o detach.o : $(srcdir)/l-malloc/detach.c $(srcdir)/l-malloc/malloc.h \
  $(srcdir)/config.h $(srcdir)/checker.h ./machine.h $(srcdir)/config.h \
  $(srcdir)/lib/chkrlib.h ./string.h $(srcdir)/l-malloc/bitops.h
