]> git.sur5r.net Git - cc65/blobdiff - libsrc/Makefile
Force warning-free build (and added missing clean target).
[cc65] / libsrc / Makefile
index 6208d37b9058baeb5fb7a74e12bc86363670fa31..b4393a6ac3ead3cad165c2c3f52257c20b17c0a9 100644 (file)
@@ -10,12 +10,12 @@ CBMS = c128   \
 GEOS = geos-apple \
        geos-cbm
 
-TARGETS = $(CBMS)   \
-          $(GEOS)   \
-          apple2    \
+TARGETS = apple2    \
           apple2enh \
           atari     \
           atmos     \
+          $(CBMS)   \
+          $(GEOS)   \
           lynx      \
           nes       \
           supervision
@@ -60,11 +60,11 @@ mostlyclean:
        $(call RMDIR,../wrk)
 
 clean:
-       $(call RMDIR,../wrk ../lib $(addprefix ../,$(DRVTYPES)))
+       $(call RMDIR,../wrk ../lib ../targetutil $(addprefix ../,$(DRVTYPES)))
 
 else # TARGET
 
-CFLAGS += -Osir
+CFLAGS += -Osir -W error
 
 EXTZP = cbm510 \
         cbm610 \
@@ -74,6 +74,9 @@ MKINC = $(GEOS) \
         atari   \
         nes
 
+TARGETUTIL = apple2 \
+             geos-apple
+
 GEOSDIRS = common      \
            conio       \
            disk        \
@@ -90,59 +93,65 @@ GEOSDIRS = common      \
 ifeq ($(TARGET),apple2enh)
   OBJPFX = a2
   DRVPFX = a2e
-  DIRS = apple2
+  SRCDIR = apple2
 else
-  DIRS = $(TARGET)
+  SRCDIR = $(TARGET)
 endif
 
+SRCDIRS = $(SRCDIR)
+
 ifeq ($(TARGET),$(filter $(TARGET),$(CBMS)))
-  DIRS += cbm
+  SRCDIRS += cbm
 endif
 
 ifeq ($(TARGET),$(filter $(TARGET),$(GEOS)))
-  DIRS += $(addprefix $(TARGET)/,  $(GEOSDIRS))
-  DIRS += $(addprefix geos-common/,$(GEOSDIRS))
+  SRCDIRS += $(addprefix $(TARGET)/,  $(GEOSDIRS))
+  SRCDIRS += $(addprefix geos-common/,$(GEOSDIRS))
 endif
 
-DIRS += common   \
-        conio    \
-        dbg      \
-        em       \
-        joystick \
-        mouse    \
-        runtime  \
-        serial   \
-        tgi      \
-        zlib
+SRCDIRS += common   \
+           conio    \
+           dbg      \
+           em       \
+           joystick \
+           mouse    \
+           runtime  \
+           serial   \
+           tgi      \
+           zlib
 
-vpath %.s $(DIRS)
-vpath %.c $(DIRS)
+vpath %.s $(SRCDIRS)
+vpath %.c $(SRCDIRS)
 
-OBJS := $(patsubst %.s,%.o,$(foreach dir,$(DIRS),$(wildcard $(dir)/*.s)))
-OBJS += $(patsubst %.c,%.o,$(foreach dir,$(DIRS),$(wildcard $(dir)/*.c)))
+OBJS := $(patsubst %.s,%.o,$(foreach dir,$(SRCDIRS),$(wildcard $(dir)/*.s)))
+OBJS += $(patsubst %.c,%.o,$(foreach dir,$(SRCDIRS),$(wildcard $(dir)/*.c)))
 
 OBJS := $(addprefix ../wrk/$(TARGET)/,$(sort $(notdir $(OBJS))))
 
 DEPS = $(OBJS:.o=.d)
 
-EXTRA_SRCPAT = $(firstword $(DIRS))/extra/%.s
+EXTRA_SRCPAT = $(SRCDIR)/extra/%.s
 EXTRA_OBJPAT = ../lib/$(TARGET)-%.o
-EXTRA_OBJS := $(patsubst $(EXTRA_SRCPAT),$(EXTRA_OBJPAT),$(wildcard $(firstword $(DIRS))/extra/*.s))
+EXTRA_OBJS := $(patsubst $(EXTRA_SRCPAT),$(EXTRA_OBJPAT),$(wildcard $(SRCDIR)/extra/*.s))
 
 ZPOBJ = ../wrk/$(TARGET)/zeropage.o
 ifeq ($(TARGET),$(filter $(TARGET),$(EXTZP)))
   ZPOBJ += ../wrk/$(TARGET)/extzp.o
 endif
 
-ifeq ($(TARGET),$(filter $(TARGET),$(MKINC)))
-  include $(TARGET)/Makefile.inc
+ifeq ($(SRCDIR),$(filter $(SRCDIR),$(MKINC)))
+  include $(SRCDIR)/Makefile.inc
+endif
+
+ifeq ($(SRCDIR),$(filter $(SRCDIR),$(TARGETUTIL)))
+  include $(SRCDIR)/targetutil/Makefile.inc
 endif
 
 ##########
 
 define DRVTYPE_template
 
-$1_SRCDIR = $$(firstword $$(DIRS))/$1
+$1_SRCDIR = $$(SRCDIR)/$1
 $1_OBJDIR = ../wrk/$$(TARGET)/$1
 $1_DRVDIR = ../$1
 
@@ -158,14 +167,11 @@ $1_STCS = $$(patsubst $$($1_DRVPAT),$$($1_STCPAT),$$($1_DRVS))
 
 $$($1_OBJS): | $$($1_OBJDIR)
 
-$$($1_OBJDIR):
-       @$$(call MKDIR,$$@)
-
 $$($1_DRVPAT): $$($1_OBJPAT) $$(ZPOBJ) | $$($1_DRVDIR)
        @echo $$(TARGET) - $$(@F)
        @$$(LD) -o $$@ -t module $$^
 
-$$($1_DRVDIR):
+$$($1_OBJDIR) $$($1_DRVDIR):
        @$$(call MKDIR,$$@)
 
 $(TARGET): $$($1_DRVS)
@@ -185,23 +191,38 @@ endef
 
 $(foreach drvtype,$(DRVTYPES),$(eval $(call DRVTYPE_template,$(drvtype))))
 
-AR = $(if $(wildcard ../bin/ar65*),../bin/ar65,ar65)
-CA = $(if $(wildcard ../bin/ca65*),../bin/ca65,ca65)
-CC = $(if $(wildcard ../bin/cc65*),../bin/cc65,cc65)
-CO = $(if $(wildcard ../bin/co65*),../bin/co65,co65)
-LD = $(if $(wildcard ../bin/ld65*),../bin/ld65,ld65)
+AR := $(if $(wildcard ../bin/ar65*),../bin/ar65,ar65)
+CA := $(if $(wildcard ../bin/ca65*),../bin/ca65,ca65)
+CC := $(if $(wildcard ../bin/cc65*),../bin/cc65,cc65)
+CO := $(if $(wildcard ../bin/co65*),../bin/co65,co65)
+LD := $(if $(wildcard ../bin/ld65*),../bin/ld65,ld65)
+
+##########
+
+define ASSEMBLE_recipe
+
+@echo $(TARGET) - $<
+@$(CA) -t $(TARGET) $(AFLAGS) --create-dep $(@:.o=.d) -o $@ $<
+
+endef
+
+##########
+
+define COMPILE_recipe
+
+@echo $(TARGET) - $<
+@$(CC) -t $(TARGET) $(CFLAGS) --create-dep $(@:.o=.d) -o $(@:.o=.s) $<
+@$(CA) -t $(TARGET) -o $@ $(@:.o=.s)
+
+endef
+
+##########
 
 ../wrk/$(TARGET)/%.o: %.s | ../wrk/$(TARGET)
-       @echo $(TARGET) - $<
-       @$(CA) -t $(TARGET) $(AFLAGS) --create-dep $(@:.o=.d) -o $@ $<
+       $(ASSEMBLE_recipe)
 
 ../wrk/$(TARGET)/%.o: %.c | ../wrk/$(TARGET)
-       @echo $(TARGET) - $<
-       @$(CC) -t $(TARGET) $(CFLAGS) --create-dep $(@:.o=.d) -o $(@:.o=.s) $<
-       @$(CA) -t $(TARGET) -o $@ $(@:.o=.s)
-
-../wrk/$(TARGET):
-       @$(call MKDIR,$@)
+       $(COMPILE_recipe)
 
 $(EXTRA_OBJPAT): $(EXTRA_SRCPAT) | ../lib
        @echo $(TARGET) - $<
@@ -210,7 +231,7 @@ $(EXTRA_OBJPAT): $(EXTRA_SRCPAT) | ../lib
 ../lib/$(TARGET).lib: $(OBJS) | ../lib
        $(AR) a $@ $?
 
-../lib:
+../wrk/$(TARGET) ../lib ../targetutil:
        @$(call MKDIR,$@)
 
 $(TARGET): $(EXTRA_OBJS) ../lib/$(TARGET).lib