EXEEXT introduces to solve Cygwin problems
[fw/sdcc] / as / z80 / Makefile
index dafa16079d3652125841aa2f8f463dbd558032c9..beb428f466592b7ebfcaeb1030c62860fc1ab5ae 100644 (file)
@@ -2,15 +2,25 @@ PRJDIR = ../..
 
 include $(PRJDIR)/Makefile.common
 
+OBJDIR = obj/$(EXT)
+
 SDC    = .
+
+SLIBSRC        = NewAlloc.c
+
 SRC    = asdata.c asexpr.c aslex.c aslist.c asmain.c asout.c \
          assubr.c assym.c z80adr.c z80ext.c z80mch.c z80pst.c
-OBJS   = $(SRC:%.c=%.o)
-BINS   = $(BUILDDIR)/as$(EXT)
 
-CFLAGS += $(OPTS) -I. -DINDEXLIB -DMLH_MAP -DUNIX -DSDK
+OBJS   = $(SRC:%.c=$(OBJDIR)/%.o)
+SLIBOBJS       = $(SLIBSRC:%.c=$(OBJDIR)/%.o) 
+
+BINS   = $(BUILDDIR)as$(EXT)$(EXEEXT)
+
+CFLAGS += $(CPPFLAGS) $(OPTS) -I. -DINDEXLIB -DMLH_MAP -DUNIX -DSDK
 CFLAGS += -funsigned-char
-LDFLAGS += -lm
+CFLAGS += -I$(SLIB) 
+
+LDFLAGS += -lm $(EXTRALIBS)
 
 all:   dep $(BINS)
 
@@ -21,18 +31,30 @@ Makefile.dep: $(SRC) *.h
 
 include Makefile.dep
 
-$(BINS): $(OBJS)
-       $(CC) $(LDFLAGS) -o $(BINS) $(OBJS)
+# We need a '.stamp'-file in $(OBJDIR), because the time stamp
+# of $(OBJDIR) itself is always updated, when a file in $(OBJDIR)
+# is updated. A rule like
+#      $(OBJDIR)/anyfile: $(OBJDIR)
+# will always force a remake (at least on Linux ext2).
 
-# Hmm.  Should only rebuild if any of the source files are changed,
-# but must do a clean build to make sure that there isnt a mix of
-# z80 and gb stuff.
-wary: $(OBJS)
-       make clean
-       make $(BINS)
+$(OBJDIR)/.stamp:
+       mkdir -p $(OBJDIR)
+       touch $(OBJDIR)/.stamp
 
-%.o:   %.c
+$(BINS): $(OBJS) $(SLIBOBJS)
+       $(CC) -o $(BINS) $(OBJS) $(SLIBOBJS) $(LDFLAGS)
+
+
+$(OBJDIR)/%.o: %.c $(OBJDIR)/.stamp
+       $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(SLIB)/%.c $(OBJDIR)/.stamp
        $(CC) -c $(CFLAGS) -o $@ $<
 
-clean:
-       rm -f $(OBJS) $(BINS)
+_as-z80:
+       $(MAKE) EXT=-z80$(E)
+
+_as-gbz80:
+       $(MAKE) EXT=-gbz80$(E) OPTS=-DGAMEBOY
+
+include clean.mk