-#
-#
-#
+VPATH = @srcdir@
+srcdir = @srcdir@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
-VERSION = @VERSION@
-VERSIONHI = @VERSIONHI@
-VERSIONLO = @VERSIONLO@
-VERSIONP = @VERSIONP@
+include $(top_builddir)/Makefile.common
-SHELL = /bin/sh
-CC = @CC@
-CPP = @CPP@
-INSTALL = @INSTALL@
+OBJDIR = obj$(EXT)
-PRJDIR = ../..
+UTILLIB = $(srcdir)/../../support/Util
+UTILSRC = dbuf.c dbuf_string.c
+UTILLIBOBJS = $(UTILSRC:%.c=$(OBJDIR)/%.o)
-srcdir = @srcdir@
-prefix = @prefix@
-exec_prefix = @exec_prefix@
-bindir = @bindir@
-libdir = @libdir@
-datadir = @datadir@
-includedir = @include@
-mandir = @mandir@
-man1dir = $(mandir)/man1
-man2dir = $(mandir)/man2
-infodir = @infodir@
+ASXXLIB = $(srcdir)/../asxxsrc
+ASXXLIBSRC = strcmpi.c assym.c aslex.c asnoice.c
+ASXXLIBOBJS = $(ASXXLIBSRC:%.c=$(OBJDIR)/%.o)
-CPPFLAGS = @CPPFLAGS@ -I. -I$(PRJDIR)
-CFLAGS = @CFLAGS@ -Wall -DINDEXLIB -DMLH_MAP -DUNIX -DSDK -funsigned-char -ggdb
-M_OR_MM = @M_OR_MM@
-LDFLAGS = @LDFLAGS@ -lm
+SRC = asmain.c assubr.c \
+ asexpr.c asdata.c aslist.c asout.c \
+ z80ext.c z80pst.c z80mch.c z80adr.c
+OBJS = $(SRC:%.c=$(OBJDIR)/%.o)
-ASOBJECTS = asdata.o asexpr.o aslex.o aslist.o asmain.o asout.o \
- assubr.o assym.o z80adr.o z80ext.o z80mch.o z80pst.o
-ASSOURCES = $(patsubst %.o,%.c,$(ASOBJECTS))
+ASSOURCES = $(SRC) $(ASXXLIBSRC:%.c=$(ASXXLIB)/%.c) $(UTILSRC:%.c=$(UTILLIB)/%.c)
-ASXZ80 = $(PRJDIR)/bin/as-z80
+ASOBJECTS = $(OBJS) $(ASXXLIBOBJS) $(UTILLIBOBJS)
-# Compiling entire program or any subproject
-# ------------------------------------------
-all: checkconf $(ASXZ80)
+BINS = $(BUILDDIR)/as$(EXT)$(EXEEXT)
-$(ASXZ80): $(ASOBJECTS)
- $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(ASOBJECTS)
+CFLAGS += $(CPPFLAGS) $(OPTS) -I. -I$(srcdir)/../../support/Util -DINDEXLIB -DMLH_MAP -DUNIX -DSDK
+CFLAGS += -funsigned-char
-# Compiling and installing everything and runing test
-# ---------------------------------------------------
-install: all installdirs
- $(INSTALL) -s $(ASXZ80) $(bindir)/as-z80
+LDFLAGS = @LDFLAGS@ -lm $(EXTRALIBS)
-# Deleting all the installed files
-# --------------------------------
-uninstall:
- rm -f $(bindir)/as-z80
-
-
-# Performing self-test
-# --------------------
-check:
+all: dep $(BINS)
+dep: Makefile.dep
-# Performing installation test
-# ----------------------------
-installcheck:
+Makefile.dep: $(ASSOURCES) $(srcdir)/*.h
+ $(CPP) $(CPPFLAGS) $(M_OR_MM) $(filter %.c,$^) > Makefile.dep
+ifeq "$(findstring $(MAKECMDGOALS),uninstall check installcheck installdirs \
+ clean distclean mostlyclean realclean)" ""
+ -include Makefile.dep
+endif
-# Creating installation directories
-# ---------------------------------
-installdirs:
- $(INSTALL) -d $(bindir)
+# 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).
+$(OBJDIR)/.stamp:
+ mkdir -p $(OBJDIR)
+ touch $(OBJDIR)/.stamp
-# Creating dependencies
-# ---------------------
-dep: Makefile.dep
+$(BINS): $(ASOBJECTS)
+ $(CC) -o $(BINS) $(ASOBJECTS) $(LDFLAGS)
-Makefile.dep: $(ASSOURCES) *.h $(PRJDIR)/*.h
- $(CPP) $(CPPFLAGS) $(M_OR_MM) $(ASSOURCES) >Makefile.dep
+$(OBJDIR)/%.o: %.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
-include Makefile.dep
-include clean.mk
+$(OBJDIR)/%.o: $(ASXXLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
-# My rules
-# --------
-.c.o:
- $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
+$(OBJDIR)/%.o: $(UTILLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+_as-z80:
+ $(MAKE) EXT=-z80$(E)
-# Remaking configuration
-# ----------------------
-checkconf:
- @if [ -f $(PRJDIR)/devel ]; then\
- $(MAKE) -f conf.mk srcdir="$(srcdir)" PRJDIR="$(PRJDIR)" freshconf;\
- fi
+_as-gbz80:
+ $(MAKE) EXT=-gbz80$(E) OPTS=-DGAMEBOY
-# End of Makefile
+include $(srcdir)/clean.mk