]> cloudbase.mooo.com Git - avrcpm.git/blobdiff - avr/Makefile
SVN --> GIT
[avrcpm.git] / avr / Makefile
index efc5b1c04e6c93cc39db1f175d9e049687e7c287..a91a77237bd7569eb498346822c2eb5b707374d3 100644 (file)
@@ -2,41 +2,93 @@
 # is public domain), believed to be neutral to any flavor of "make"
 # (GNU make, BSD make, SysV make)
 
-#MCU = atmega8
-MCU = atmega328P
-F_CPU = 20000000
-#BAUD = 19200
-BAUD = 57600
+#For a description of of the following built options see 'config.inc'
+#Defining options here will override the defaults from the config file.
+
+#MCU = atmega88
+MCU = atmega328p
+#F_CPU = 20000000
+#DRAM_8BIT = 0
+#BAUD = 57600
 #BAUD = 115200
+#I2C_SUPPORT = 0
+#EM_Z80        = 0
+#FAT16_SUPPORT = 0
+#CPMDSK_SUPPORT = 0
+#MMCBOOTLOADER = 0
 
-DRAM_8BIT = 1
-#I2C = 1
 
 TARGET = avrcpm
-ASRC0  = avrcpm.asm 
+ASRC0  = avrcpm.asm
 
-ASRC0 += config.inc macros.inc init.asm dram-refresh.asm timer.asm utils.asm 
+ASRC0 += config.inc macros.inc init.asm dram-refresh.asm timer.asm utils.asm
 ASRC0 += mmc.asm mmc-old.asm virt_ports.asm
-ASRC0 += dsk_cpm.asm dsk_fat16.asm dsk_fsys.asm dsk_mgr.asm dsk_ram.asm 
+ASRC0 += dsk_cpm.asm dsk_fat16.asm dsk_fsys.asm dsk_mgr.asm dsk_ram.asm
 ASRC0 += 8080int-orig.asm 8080int.asm 8080int-jmp.asm 8080int-t3.asm 8080int-t3-jmp.asm Z80int-jmp.asm
 
+EXTRA_DIST := autorevision.cache
+
+PREFIX = $(PROG)_$(VERSION)
+DIST_NAME = $(PREFIX).zip
+
+$(foreach X,$(subst =,:=,$(subst ",,$(filter VCS_%,\
+       $(shell autorevision -q -t sh -o ./autorevision.cache)))),$(eval $X))
+
+VERSION := $(shell echo "$(VCS_TAG)" | sed -e 's/^v//g')
+VMAJOR  := $(shell echo "$(VCS_TAG)" | sed -E 's/([^0-9]*)([0-9]+)([.])([0-9]+)([^0-9]*)/\2/')
+VMINOR  := $(shell echo "$(VCS_TAG)" | sed -E 's/([^0-9]*)([0-9]+)([.])([0-9]+)([^0-9]*)/\4/')
+
+
+ifneq ($(VCS_TICK),0)
+  VERSION := $(VERSION)-$(VCS_TICK)
+endif
+ifneq ($(VCS_BRANCH),master)
+  VERSION := $(VERSION)-$(VCS_BRANCH)
+endif
+ifeq ($(VCS_WC_MODIFIED),1)
+  VERSION := $(VERSION)-dirty
+endif
+
 ifneq ($(DRAM_8BIT),0)
   ASRC0 += dram-8bit.inc dram-8bit.asm sw-uart.asm i2c.asm
 else
-  ASRC0 += dram-4bit.inc dram-4bit.asm hw-uart.asm 
+  ASRC0 += dram-4bit.inc dram-4bit.asm hw-uart.asm
 endif
 
-#ASRC := $(ASRC0) svnrev.inc
-ASRC := $(ASRC0) svnrev.inc
+ASRC = $(ASRC0)
 
 # Place -D or -U options here
-CDEFS = -DF_CPU=$(F_CPU) -DBAUD=$(BAUD) -D$(MCU) -DDRAM_8BIT=$(DRAM_8BIT) 
-ifdef I2C
-  CDEFS += -DI2C=$(I2C)
+CDEFS = -D$(MCU) -DVERSION=\"$(VERSION)\" -DVMAJOR=$(VMAJOR) -DVMINOR=$(VMINOR)
+ifdef F_CPU
+  CDEFS += -DF_CPU=$(F_CPU)
+endif
+ifdef DRAM_8BIT
+  CDEFS += -DDRAM_8BIT=$(DRAM_8BIT)
+endif
+ifdef BAUD
+  CDEFS += -DBAUD=$(BAUD)
+endif
+ifdef I2C_SUPPORT
+  CDEFS += -DI2C_SUPPORT=$(I2C_SUPPORT)
+endif
+ifdef EM_Z80
+  CDEFS += -DEM_Z80=$(EM_Z80)
+endif
+ifdef FAT16_SUPPORT
+  CDEFS += -DFAT16_SUPPORT=$(FAT16_SUPPORT)
+endif
+ifdef CPMDSK_SUPPORT
+  CDEFS += -DCPMDSK_SUPPORT=$(CPMDSK_SUPPORT)
+endif
+ifdef MMCBOOTLOADER
+  CDEFS += -DMMCBOOTLOADER=$(MMCBOOTLOADER)
+endif
+ifdef TESTVERSION
+  CDEFS += -DTESTVERSION=$(TESTVERSION)
 endif
 
-ASPATH = C:/Programme/Atmel/AVR\ Tools/AvrAssembler2
-DEFS = $(ASPATH)/Appnotes
+ASPATH := C:/Programme/Atmel/AVR\ Tools/AvrAssembler2
+DEFS := $(ASPATH)/Appnotes
 
 ifeq "$(OS)" "Windows_NT"
   PLATFORM=win32
@@ -52,6 +104,11 @@ endif
 AS = $(WINE) $(ASPATH)/avrasm2.exe
 ASFLAGS = -I $(DEFS) $(CDEFS)
 
+OBJCOPY = avr-objcopy
+CRCGEN = crcgen
+
+HEXTOBIN = $(OBJCOPY) -I ihex -O binary --gap-fill 0xff
+
 # Programming support using avrdude. Settings and variables.
 
 AVRDUDE_PROGRAMMER = dragon_isp
@@ -60,7 +117,6 @@ AVRDUDE_PORT = usb
 AVRDUDE_WRITE_FLASH = -U flash:w:$(TARGET).hex
 AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
 
-
 # Uncomment the following if you want avrdude's erase cycle counter.
 # Note that this counter needs to be initialized first using -Yn,
 # see avrdude manual.
@@ -71,7 +127,7 @@ AVRDUDE_WRITE_EEPROM = -U eeprom:w:$(TARGET).eep
 #AVRDUDE_NO_VERIFY = -V
 
 # Increase verbosity level.  Please use this when submitting bug
-# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude> 
+# reports about avrdude. See <http://savannah.nongnu.org/projects/avrdude>
 # to submit bug reports.
 #AVRDUDE_VERBOSE = -v -v
 
@@ -82,26 +138,19 @@ AVRDUDE = avrdude
 REMOVE = rm -f
 MV = mv -f
 
-
-# Define all listing files.
-#LST = $(ASRC:.asm=.lst)
-
-# Combine all necessary flags and optional flags.
-# Add target processor to flags.
-ALL_ASFLAGS =  $(ASFLAGS)
-
-.PHONY:        all hex eep lst map program flash eeprom tags clean
+.PHONY:        all bin hex eep lst map program flash eeprom tags clean
 
 # Default target.
 all: hex lst
 
-hex: $(TARGET).hex $(ASRC)
-eep: $(TARGET).eep $(ASRC)
-lst: $(TARGET).lst $(ASRC)
-map: $(TARGET).map $(ASRC)
+hex: $(TARGET).hex
+eep: $(TARGET).eep
+lst: $(TARGET).lst
+map: $(TARGET).map
+bin: $(TARGET)-$(VMAJOR).$(VMINOR).bin
 
 
-# Program the device.  
+# Program the device.
 program: $(TARGET).hex $(TARGET).eep
        $(AVRDUDE) $(AVRDUDE_FLAGS) $(AVRDUDE_WRITE_FLASH) $(AVRDUDE_WRITE_EEPROM)
 
@@ -117,25 +166,26 @@ $(TARGET).eep: $(ASRC)
 $(TARGET).lst: $(ASRC)
 $(TARGET).map: $(ASRC)
 
-#.SUFFIXES: .hex .eep .lst
+
 .SUFFIXES:
 
+%-$(VMAJOR).$(VMINOR).bin: %.hex
+       $(HEXTOBIN) $< $@
+       $(CRCGEN) $@
+
 %.hex: %.asm
-       $(AS) $(ALL_ASFLAGS) -fI -o $@ $<
+       $(AS) $(ASFLAGS) -fI -o $@ $<
 
 %.lst: %.asm
-       @$(AS) $(ALL_ASFLAGS) -v0 -f- -l $@ $<
+       @$(AS) $(ASFLAGS) -v0 -f- -l $@ $<
 
 %.map: %.asm
-       $(AS) $(ALL_ASFLAGS) -v0 -f- -m $@ $<
+       $(AS) $(ASFLAGS) -v0 -f- -m $@ $<
 
 tags: $(SRC) $(ASRC)
        ctags $(SRC) $(ASRC)
 
-svnrev.inc: $(ASRC0)
-       @svnrev -osvnrev.inc $^
-
 # Target: clean project.
 clean:
-       $(REMOVE) $(TARGET).hex $(TARGET).eep $(TARGET).obj $(TARGET).map $(TARGET).lst
-
+       $(REMOVE) $(TARGET).hex $(TARGET).eep $(TARGET).obj $(TARGET).map $(TARGET).lst \
+               $(TARGET)-$(VMAJOR).$(VMINOR).bin