VERSIONLO = @VERSIONLO@
VERSIONP = @VERSIONP@
-SHELL = /bin/sh
-CC = @CC@
-CPP = @CPP@
-INSTALL = @INSTALL@
+SHELL = /bin/sh
+CC = @CC@
+CPP = @CPP@
+INSTALL = @INSTALL@
STRIP = @STRIP@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
-srcdir = @srcdir@
-prefix = @prefix@
+srcdir = @srcdir@
+prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
libdir = @libdir@
VPATH = @srcdir@
-CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/..
-CFLAGS = @CFLAGS@ -Wall -DUNIX
-M_OR_MM = @M_OR_MM@
-LDFLAGS = @LDFLAGS@
+CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/.. -I$(top_builddir)
+CFLAGS = @CFLAGS@ -Wall -DUNIX -I$(srcdir)/.. -I$(top_builddir)
+M_OR_MM = @M_OR_MM@
+LDFLAGS = @LDFLAGS@
-LKOBJECTS = lkmain.o lkarea.o lkihx.o \
- lklibr.o lkrloc.o lks19.o \
- lkelf.o lkmem.o \
- ../lkaomf51.o ../lkdata.o \
- ../lkeval.o ../lkhead.o ../lklex.o ../lklist.o \
- ../lknoice.o ../lkstore.o ../lksym.o \
- ../../asxxsrc/strcmpi.o
-LKSOURCES = $(patsubst %.o,%.c,$(LKOBJECTS))
+OBJDIR = obj
-ASLINK = $(top_builddir)/bin/link-hc08$(EXEEXT)
+ASXXLIB = $(srcdir)/../../asxxsrc
+
+LKLIB = $(srcdir)/..
+
+ASXXLIBSRC = strcmpi.c
+
+LKLIBSRC = lkaomf51.c lkdata.c lkeval.c \
+ lkhead.c lklex.c lklist.c \
+ lknoice.c lkstore.c lksym.c
+
+SRC = lkmain.c lkarea.c lkihx.c \
+ lklibr.c lkrloc.c lks19.c \
+ lkelf.c lkmem.c
+
+LKSOURCES = $(SRC) $(LKLIBSRC:%.c=$(LKLIB)/%.c) $(ASXXLIBSRC:%.c=$(ASXXLIB)/%.c)
+
+OBJS = $(SRC:%.c=$(OBJDIR)/%.o)
+LKOBJS = $(LKLIBSRC:%.c=$(OBJDIR)/%.o)
+ASXXLIBOBJS = $(ASXXLIBSRC:%.c=$(OBJDIR)/%.o)
+LKOBJECTS = $(OBJS) $(LKOBJS) $(ASXXLIBOBJS)
+
+ASLINK = $(top_builddir)/bin/link-hc08$(EXEEXT)
transform = @program_transform_name@
# Compiling entire program or any subproject
# ------------------------------------------
all: checkconf $(ASLINK)
+#all:
+# echo $(LKSOURCES)
$(ASLINK): $(LKOBJECTS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(LKOBJECTS)
# ---------------------
dep: Makefile.dep
-Makefile.dep: $(LKSOURCES) $(srcdir)/../*.h $(top_builddir)/*.h $(top_srcdir)/*.h
+Makefile.dep: $(LKSOURCES) $(LKLIB)/*.h $(top_builddir)/*.h
$(CPP) $(CPPFLAGS) $(M_OR_MM) $(filter %.c,$^) >Makefile.dep
ifeq "$(findstring $(MAKECMDGOALS),uninstall check installcheck installdirs \
# My rules
# --------
-.c.o:
- $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
+$(OBJDIR)/.stamp:
+ mkdir -p $(OBJDIR)
+ touch $(OBJDIR)/.stamp
+
+$(OBJDIR)/%.o: %.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(LKLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(ASXXLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
# Remaking configuration
VPATH = @srcdir@
-CPPFLAGS = @CPPFLAGS@ -I.. -I$(srcdir)/..
-CFLAGS = @CFLAGS@ -Wall -DINDEXLIB -DUNIX
+CPPFLAGS = @CPPFLAGS@ -I$(srcdir)/.. -I$(top_builddir)
+CFLAGS = @CFLAGS@ -Wall -DINDEXLIB -DUNIX -I$(srcdir)/.. -I$(top_builddir)
M_OR_MM = @M_OR_MM@
LDFLAGS = @LDFLAGS@
-LKOBJECTS = lkmain.o lkarea.o lkihx.o \
- lklibr.o lkrloc.o lks19.o \
- lkmem.o \
- ../lkaomf51.o ../lkdata.o \
- ../lkeval.o ../lkhead.o ../lklex.o ../lklist.o \
- ../lknoice.o ../lkstore.o ../lksym.o \
- ../../asxxsrc/strcmpi.o
-LKSOURCES = $(patsubst %.o,%.c,$(LKOBJECTS))
+OBJDIR = obj
+
+ASXXLIB = $(srcdir)/../../asxxsrc
+
+LKLIB = $(srcdir)/..
+
+ASXXLIBSRC = strcmpi.c
+
+LKLIBSRC = lkaomf51.c lkdata.c lkeval.c \
+ lkhead.c lklex.c lklist.c \
+ lknoice.c lkstore.c lksym.c
+
+SRC = lkmain.c lkarea.c lkihx.c \
+ lklibr.c lkrloc.c lks19.c \
+ lkmem.c
+
+LKSOURCES = $(SRC) $(LKLIBSRC:%.c=$(LKLIB)/%.c) $(ASXXLIBSRC:%.c=$(ASXXLIB)/%.c)
+
+OBJS = $(SRC:%.c=$(OBJDIR)/%.o)
+LKOBJS = $(LKLIBSRC:%.c=$(OBJDIR)/%.o)
+ASXXLIBOBJS = $(ASXXLIBSRC:%.c=$(OBJDIR)/%.o)
+LKOBJECTS = $(OBJS) $(LKOBJS) $(ASXXLIBOBJS)
ASLINK = $(top_builddir)/bin/aslink$(EXEEXT)
# ---------------------
dep: Makefile.dep
-Makefile.dep: $(LKSOURCES) $(srcdir)/../*.h $(top_builddir)/*.h $(top_srcdir)/*.h
+Makefile.dep: $(LKSOURCES) $(LKLIB)/*.h $(top_builddir)/*.h
$(CPP) $(CPPFLAGS) $(M_OR_MM) $(filter %.c,$^) >Makefile.dep
ifeq "$(findstring $(MAKECMDGOALS),uninstall check installcheck installdirs \
# My rules
# --------
-.c.o:
- $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
+$(OBJDIR)/.stamp:
+ mkdir -p $(OBJDIR)
+ touch $(OBJDIR)/.stamp
+
+$(OBJDIR)/%.o: %.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(LKLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
+
+$(OBJDIR)/%.o: $(ASXXLIB)/%.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
# Remaking configuration
include $(top_builddir)/Makefile.common
-OBJDIR = obj$(EXT)
+OBJDIR = obj$(EXT)
-SLIBSRC = NewAlloc.c
+ASXXLIB = $(srcdir)/../../asxxsrc
-SRC = lkmain.c lkarea.c lkihx.c \
- lklibr.c lkrloc.c lks19.c \
- lkgb.c lkgg.c \
- ../lkaomf51.c ../lkdata.c \
- ../lkeval.c ../lkhead.c ../lklex.c ../lklist.c \
- ../lknoice.c ../lkstore.c ../lksym.c \
- ../../asxxsrc/strcmpi.c
+ASXXLIBSRC = strcmpi.c
-OBJS = $(SRC:%.c=$(OBJDIR)/%.o)
-SLIBOBJS = $(SLIBSRC:%.c=$(OBJDIR)/%.o)
+LKLIB = $(srcdir)/..
-BINS = $(BUILDDIR)link$(EXT)$(EXEEXT)
+LKLIBSRC = lkaomf51.c lkdata.c lkeval.c \
+ lkhead.c lklex.c lklist.c \
+ lknoice.c lkstore.c lksym.c
-CPPFLAGS+= -I.. -I$(srcdir)/..
-CFLAGS += $(CPPFLAGS) $(OPTS) -DINDEXLIB -DMLH_MAP -DSDK
-CFLAGS += -funsigned-char -DUNIX
-CFLAGS += -I$(top_builddir)/as/$(PORT) -I$(SLIB)
+SRC = lkmain.c lkarea.c lkihx.c \
+ lklibr.c lkrloc.c lks19.c \
+ lkgb.c lkgg.c
+
+LKSOURCES = $(SRC) $(LKLIBSRC:%.c=$(LKLIB)/%.c) $(ASXXLIBSRC:%.c=$(ASXXLIB)/%.c)
+
+OBJS = $(SRC:%.c=$(OBJDIR)/%.o)
+LKOBJS = $(LKLIBSRC:%.c=$(OBJDIR)/%.o)
+ASXXLIBOBJS = $(ASXXLIBSRC:%.c=$(OBJDIR)/%.o)
+LKOBJECTS = $(OBJS) $(LKOBJS) $(ASXXLIBOBJS)
+
+BINS = $(BUILDDIR)link$(EXT)$(EXEEXT)
+
+CPPFLAGS += -I.. -I$(srcdir)/..
+CFLAGS += $(CPPFLAGS) $(OPTS) -DINDEXLIB -DMLH_MAP -DSDK
+CFLAGS += -funsigned-char -DUNIX
+CFLAGS += -I$(top_builddir)/as/$(PORT)
LDFLAGS = @LDFLAGS@ -lm $(EXTRALIBS)
-all: $(BINS)
+all: $(BINS)
-$(BINS): $(OBJDIR) $(OBJS) $(SLIBOBJS)
- $(CC) -g -o $(BINS) $(OBJS) $(SLIBOBJS) $(LDFLAGS)
+$(BINS): $(LKOBJECTS)
+ $(CC) -g -o $(BINS) $(LKOBJECTS) $(LDFLAGS)
-$(OBJDIR):
+# 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
+
+$(OBJDIR)/%.o: %.c $(OBJDIR)/.stamp
+ $(CC) -c $(CFLAGS) -o $@ $<
-$(OBJDIR)/%.o: %.c
+$(OBJDIR)/%.o: $(LKLIB)/%.c $(OBJDIR)/.stamp
$(CC) -c $(CFLAGS) -o $@ $<
-$(OBJDIR)/%.o: $(SLIB)/%.c
+$(OBJDIR)/%.o: $(ASXXLIB)/%.c $(OBJDIR)/.stamp
$(CC) -c $(CFLAGS) -o $@ $<
_link-z80:
include $(top_builddir)/Makefile.common
-OBJDIR = obj/$(EXT)
+OBJDIR = obj$(EXT)
ASXXLIB = $(srcdir)/../asxxsrc