include $(PRJDIR)/Makefile.common
-OBJS = lkarea.o lkdata.o lkeval.o lkhead.o lkihx.o lklex.o \
- lklibr.o lklist.o lkmain.o lkrloc.o lks19.o lksym.o \
- lkgb.o lkgg.o
-BINS = link
+OBJDIR = obj/$(EXT)
-CFLAGS += $(OPTS) -DINDEXLIB -DMLH_MAP -DUNIX -DSDK -DSDK_VERSION_STRING="\"3.0.0\"" -DTARGET_STRING="\"gbz80\""
+SLIBSRC = NewAlloc.c
+
+SRC = lkarea.c lkdata.c lkeval.c lkhead.c lkihx.c lklex.c \
+ lklibr.c lklist.c lkmain.c lkrloc.c lks19.c lksym.c \
+ lkgb.c lkgg.c
+
+OBJS = $(SRC:%.c=$(OBJDIR)/%.o)
+SLIBOBJS = $(SLIBSRC:%.c=$(OBJDIR)/%.o)
+
+BINS = $(BUILDDIR)link$(EXT)$(EXEEXT)
+
+CFLAGS += $(CPPFLAGS) $(OPTS) -DINDEXLIB -DMLH_MAP -DUNIX -DSDK
CFLAGS += -funsigned-char -DUNIX
+CFLAGS += -I$(PRJDIR)/as/$(PORT) -I$(SLIB)
+
+LDFLAGS += -lm $(EXTRALIBS)
all: $(BINS)
-$(BINS): $(OBJS)
- $(CC) $(LDFLAGS) -o $(BINS) $(OBJS)
+$(BINS): $(OBJDIR) $(OBJS) $(SLIBOBJS)
+ $(CC) -g -o $(BINS) $(OBJS) $(SLIBOBJS) $(LDFLAGS)
+
+$(OBJDIR):
+ mkdir -p $(OBJDIR)
+
+$(OBJDIR)/%.o: %.c
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(SLIB)/%.c
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+_link-z80:
+ $(MAKE) EXT=-z80$(E) PORT=z80
-%.o: %.c
- $(CC) -c $(CFLAGS) -I$(PRJDIR)/as/$(PORT) -o $@ $<
+_link-gbz80:
+ $(MAKE) EXT=-gbz80$(E) OPTS=-DGAMEBOY PORT=z80
-clean:
- rm -f $(OBJS) $(BINS)
+include clean.mk