|
|
|
@ -33,14 +33,12 @@
@@ -33,14 +33,12 @@
|
|
|
|
|
#
|
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
# Tools
|
|
|
|
|
# CFLAGS, CPPFLAGS, ASFLAGS, LDFLAGS are set in $(TOPDIR)/Make.defs
|
|
|
|
|
|
|
|
|
|
CFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(TOPDIR)/sched
|
|
|
|
|
CPPFLAGS += -D__ASSEMBLY__
|
|
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
# Files and directories
|
|
|
|
|
|
|
|
|
|
# There should be one head source (.asm file)
|
|
|
|
@ -81,7 +79,6 @@ LIBGCC = ${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}
@@ -81,7 +79,6 @@ LIBGCC = ${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}
|
|
|
|
|
#
|
|
|
|
|
HEAP_BASE = ${shell ./mkhpbase.sh}
|
|
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
# Targets
|
|
|
|
|
|
|
|
|
|
all: $(HEAD_OBJ) libarch$(LIBEXT) |
|
|
|
@ -96,40 +93,39 @@ $(COBJS): %$(OBJEXT): %.c
@@ -96,40 +93,39 @@ $(COBJS): %$(OBJEXT): %.c
|
|
|
|
|
|
|
|
|
|
# This is a kludge to work around some conflicting symbols in libsdcc.lib
|
|
|
|
|
|
|
|
|
|
$(SDCC_LIBDIR)/myz80.lib: $(SDCC_LIBDIR)/$(SDCCLIB) |
|
|
|
|
$(TOPDIR)/lib/myz80.lib: $(SDCC_LIBDIR)/$(SDCCLIB) |
|
|
|
|
ifeq ($(CONFIG_SDCC_OLD),y) |
|
|
|
|
$(Q) cat $(SDCC_LIBDIR)\$(SDCCLIB) | \
|
|
|
|
|
$(Q) cat $(SDCC_LIBDIR)/$(SDCCLIB) | \
|
|
|
|
|
grep -v alloc | grep -v free | grep -v printf | \
|
|
|
|
|
grep -v _str | grep -v _mem | grep -v crt0\.o \
|
|
|
|
|
> myz80.lib
|
|
|
|
|
$(Q) mv -f myz80.lib $(SDCC_LIBDIR)\myz80.lib
|
|
|
|
|
> $(TOPDIR)/lib/myz80.lib
|
|
|
|
|
else |
|
|
|
|
$(Q) cp $(SDCC_LIBDIR)\z80.lib $(SDCC_LIBDIR)\myz80.lib
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _calloc.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _malloc.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _realloc.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _free.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib printf_large.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib sprintf.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib vprintf.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib strcpy.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib strlen.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strcat.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strchr.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strcmp.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strcspn.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strncat.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strncmp.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strncpy.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strpbrk.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strrchr.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strspn.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strstr.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _strtok.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _memchr.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _memcmp.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _memcpy.rel
|
|
|
|
|
$(Q) sdar d $(SDCC_LIBDIR)\myz80.lib _memset.rel
|
|
|
|
|
$(Q) cp $(SDCC_LIBDIR)/z80.lib $(TOPDIR)/lib/myz80.lib
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _calloc.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _malloc.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _realloc.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _free.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib printf_large.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib sprintf.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib vprintf.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib strcpy.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib strlen.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strcat.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strchr.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strcmp.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strcspn.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strncat.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strncmp.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strncpy.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strpbrk.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strrchr.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strspn.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strstr.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _strtok.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _memchr.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _memcmp.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _memcpy.rel
|
|
|
|
|
$(Q) sdar d $(TOPDIR)/lib/myz80.lib _memset.rel
|
|
|
|
|
endif |
|
|
|
|
|
|
|
|
|
# Create a header file that contains addressing information needed by the code
|
|
|
|
@ -173,10 +169,10 @@ board/libboard$(LIBEXT):
@@ -173,10 +169,10 @@ board/libboard$(LIBEXT):
|
|
|
|
|
# This target builds the final executable
|
|
|
|
|
|
|
|
|
|
pass1.lnk: |
|
|
|
|
@echo "LD: pass1.hex"
|
|
|
|
|
@echo "LD: pass1.ihx"
|
|
|
|
|
@echo "--" >pass1.lnk # Non-interactive
|
|
|
|
|
@echo "-k $(BOARDDIR)" >>pass1.lnk # Path to board library
|
|
|
|
|
@echo "-k $(SDCC_LIBDIR)" >>pass1.lnk # Path to SDCC z80 library
|
|
|
|
|
@echo "-k $(TOPDIR)/lib" >>pass1.lnk # Path to top-level lib-directory
|
|
|
|
|
@echo "-l libboard$(LIBEXT)" >>pass1.lnk # Name of board library
|
|
|
|
|
$(Q) for LIB in $(LINKLIBS); do \
|
|
|
|
|
echo "-l $(TOPDIR)/lib/$$LIB" >> pass1.lnk ;\
|
|
|
|
@ -184,24 +180,25 @@ pass1.lnk:
@@ -184,24 +180,25 @@ pass1.lnk:
|
|
|
|
|
@echo "-l myz80.lib" >>pass1.lnk # Name of SDCC z80 library
|
|
|
|
|
ifneq ($(CONFIG_LINKER_START_AREA),) |
|
|
|
|
@echo "-b START=$(CONFIG_LINKER_START_AREA)" >>pass1.lnk # Start of START area
|
|
|
|
|
else |
|
|
|
|
@echo "-b START=0" >>pass1.lnk # Start of START area
|
|
|
|
|
endif |
|
|
|
|
ifneq ($(CONFIG_LINKER_CODE_AREA),) |
|
|
|
|
@echo "-b _CODE=$(CONFIG_LINKER_CODE_AREA)" >>pass1.lnk # Start of _CODE area
|
|
|
|
|
else |
|
|
|
|
@echo "-b _CODE=256" >>pass1.lnk # Start of _CODE area
|
|
|
|
|
endif |
|
|
|
|
ifneq ($(CONFIG_LINKER_DATA_AREA),) |
|
|
|
|
@echo "-b _CODE=$(CONFIG_LINKER_DATA_AREA)" >>pass1.lnk
|
|
|
|
|
endif |
|
|
|
|
@echo "-i" >>pass1.lnk # Intel hex format
|
|
|
|
|
@echo "-x" >>pass1.lnk # Hexadecimal
|
|
|
|
|
@echo "-m" >>pass1.lnk # Generate a map file
|
|
|
|
|
@echo "-j" >>pass1.lnk # Generate a symbol file
|
|
|
|
|
@echo "pass1.hex" >>pass1.lnk # Path to head object
|
|
|
|
|
@echo "pass1.ihx" >>pass1.lnk # Path to head object
|
|
|
|
|
@echo "$(HEAD_OBJ)" >>pass1.lnk # Path to head object
|
|
|
|
|
@echo "-e" >>pass1.lnk # End of script
|
|
|
|
|
|
|
|
|
|
pass1.hex: up_mem.h asm_mem.h $(SDCC_LIBDIR)/myz80.lib $(HEAD_OBJ) board/libboard$(LIBEXT) pass1.lnk |
|
|
|
|
@echo "LD: pass1.hex"
|
|
|
|
|
pass1.ihx: up_mem.h asm_mem.h $(TOPDIR)/lib/myz80.lib $(HEAD_OBJ) board/libboard$(LIBEXT) pass1.lnk |
|
|
|
|
@echo "LD: pass1.ihx"
|
|
|
|
|
$(Q) $(LD) -f pass1.lnk
|
|
|
|
|
$(Q) rm -f up_mem.h asm_mem.h
|
|
|
|
|
$(Q) rm -f up_allocateheap$(OBJEXT) $(HEAD_OBJ) libarch$(LIBEXT)
|
|
|
|
@ -211,7 +208,7 @@ pass1.hex: up_mem.h asm_mem.h $(SDCC_LIBDIR)/myz80.lib $(HEAD_OBJ) board/libboar
@@ -211,7 +208,7 @@ pass1.hex: up_mem.h asm_mem.h $(SDCC_LIBDIR)/myz80.lib $(HEAD_OBJ) board/libboar
|
|
|
|
|
nuttx.lnk: |
|
|
|
|
@echo "--" >nuttx.lnk # Non-interactive
|
|
|
|
|
@echo "-k $(BOARDDIR)" >>nuttx.lnk # Path to board library
|
|
|
|
|
@echo "-k $(SDCC_LIBDIR)" >>nuttx.lnk # Path to SDCC z80 library
|
|
|
|
|
@echo "-k $(TOPDIR)/lib" >>nuttx.lnk # Path to top-level lib directory
|
|
|
|
|
@echo "-l libboard$(LIBEXT)" >>nuttx.lnk # Name of board library
|
|
|
|
|
$(Q) for LIB in $(LINKLIBS); do \
|
|
|
|
|
echo "-l $(TOPDIR)/lib/$$LIB" >> nuttx.lnk ;\
|
|
|
|
@ -219,13 +216,14 @@ nuttx.lnk:
@@ -219,13 +216,14 @@ nuttx.lnk:
|
|
|
|
|
@echo "-l myz80.lib" >>nuttx.lnk # Name of SDCC z80 library
|
|
|
|
|
ifneq ($(CONFIG_LINKER_START_AREA),) |
|
|
|
|
@echo "-b START=$(CONFIG_LINKER_START_AREA)" >>nuttx.lnk # Start of START area
|
|
|
|
|
else |
|
|
|
|
@echo "-b START=0" >>nuttx.lnk # Start of START area
|
|
|
|
|
endif |
|
|
|
|
ifneq ($(CONFIG_LINKER_CODE_AREA),) |
|
|
|
|
@echo "-b _CODE=$(CONFIG_LINKER_CODE_AREA)" >>nuttx.lnk # Start of _CODE area
|
|
|
|
|
else |
|
|
|
|
@echo "-b _CODE=256" >>nuttx.lnk # Start of _CODE area
|
|
|
|
|
endif |
|
|
|
|
ifneq ($(CONFIG_LINKER_DATA_AREA),) |
|
|
|
|
@echo "-b _CODE=$(CONFIG_LINKER_DATA_AREA)" >>nuttx.lnk
|
|
|
|
|
endif |
|
|
|
|
@echo "-i" >>nuttx.lnk # Intel hex format
|
|
|
|
|
@echo "-x" >>nuttx.lnk # Hexadecimal
|
|
|
|
@ -235,7 +233,7 @@ endif
@@ -235,7 +233,7 @@ endif
|
|
|
|
|
@echo "$(HEAD_OBJ)" >>nuttx.lnk # Path to head object
|
|
|
|
|
@echo "-e" >>nuttx.lnk # End of script
|
|
|
|
|
|
|
|
|
|
nuttx$(EXEEXT): pass1.hex up_mem.h asm_mem.h $(SDCC_LIBDIR)/myz80.lib $(HEAD_OBJ) board/libboard$(LIBEXT) nuttx.lnk |
|
|
|
|
nuttx$(EXEEXT): pass1.ihx up_mem.h asm_mem.h $(TOPDIR)/lib/myz80.lib $(HEAD_OBJ) board/libboard$(LIBEXT) nuttx.lnk |
|
|
|
|
@echo "LD: nuttx.ihx"
|
|
|
|
|
$(Q) $(LD) -f nuttx.lnk
|
|
|
|
|
$(Q) rm -f pass1.*
|
|
|
|
@ -288,3 +286,4 @@ distclean: clean
@@ -288,3 +286,4 @@ distclean: clean
|
|
|
|
|
$(call DELFILE, .depend)
|
|
|
|
|
|
|
|
|
|
-include Make.dep |
|
|
|
|
|
|
|
|
|