summaryrefslogtreecommitdiff
path: root/nuttx/arch/z80/src/Makefile.sdccl
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-12-07 19:02:57 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2012-12-07 19:02:57 +0000
commitbf0e0bb95ec767c971d01d70f1ba027ef585ce14 (patch)
tree59900051a4e3fa3ae3024115f7532c2eeda7aefd /nuttx/arch/z80/src/Makefile.sdccl
parent3c5cba9b94c3f5365034f044e18a58d425508c87 (diff)
downloadnuttx-bf0e0bb95ec767c971d01d70f1ba027ef585ce14.tar.gz
nuttx-bf0e0bb95ec767c971d01d70f1ba027ef585ce14.tar.bz2
nuttx-bf0e0bb95ec767c971d01d70f1ba027ef585ce14.zip
Redesign z80 build so that mkhpbase.sh bash script is not needed; remove support for older SDCC toolchains; Re-verify z80 build on Linux
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5416 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/arch/z80/src/Makefile.sdccl')
-rw-r--r--nuttx/arch/z80/src/Makefile.sdccl155
1 files changed, 48 insertions, 107 deletions
diff --git a/nuttx/arch/z80/src/Makefile.sdccl b/nuttx/arch/z80/src/Makefile.sdccl
index 916f85b70..d4cf28a45 100644
--- a/nuttx/arch/z80/src/Makefile.sdccl
+++ b/nuttx/arch/z80/src/Makefile.sdccl
@@ -75,15 +75,11 @@ VPATH = chip:common:board
LIBGCC = ${shell "$(CC)" $(ARCHCPUFLAGS) -print-libgcc-file-name}
-# Supports dynamic sizing of HEAP.
-#
-HEAP_BASE = ${shell ./mkhpbase.sh}
-
# Targets
all: $(HEAD_OBJ) libarch$(LIBEXT)
-.PHONY: board/libboard$(LIBEXT) pass1.lnk nuttx.lnk
+.PHONY: board/libboard$(LIBEXT) nuttx.lnk
$(AOBJS) $(HEAD_OBJ): %$(OBJEXT): %$(ASMEXT)
$(call ASSEMBLE, $<, $@)
@@ -93,72 +89,46 @@ $(COBJS): %$(OBJEXT): %.c
# This is a kludge to work around some conflicting symbols in libsdcc.lib
-$(TOPDIR)/lib/myz80.lib: $(SDCC_LIBDIR)/$(SDCCLIB)
-ifeq ($(CONFIG_SDCC_OLD),y)
- $(Q) cat $(SDCC_LIBDIR)/$(SDCCLIB) | \
- grep -v alloc | grep -v free | grep -v printf | \
- grep -v _str | grep -v _mem | grep -v crt0\.o \
- > $(TOPDIR)/lib/myz80.lib
-else
- $(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
-
-up_mem.h:
- @echo "#ifndef __UP_MEM_H" >up_mem.h
- @echo "#define __UP_MEM_H" >>up_mem.h
- @echo "" >>up_mem.h
- @echo "#include <nuttx/config.h>" >>up_mem.h
- @echo "" >>up_mem.h
- @echo "#define CONFIG_STACK_END $(CONFIG_DRAM_SIZE)" >> up_mem.h
- @echo "#define CONFIG_STACK_BASE (CONFIG_STACK_END - $(CONFIG_IDLETHREAD_STACKSIZE))" >> up_mem.h
- @echo "#define CONFIG_HEAP1_END CONFIG_STACK_BASE" >> up_mem.h
- @echo "#define CONFIG_HEAP1_BASE $(HEAP_BASE)" >> up_mem.h
- @echo "" >>up_mem.h
- @echo "#endif /* __UP_MEM_H */" >>up_mem.h
+$(TOPDIR)/lib/$(SDCCLIB): $(SDCC_LIBDIR)/$(SDCCLIB)
+ $(Q) cp $(SDCC_LIBDIR)/$(SDCCLIB) $(TOPDIR)/lib/$(SDCCLIB)
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _calloc.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _malloc.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _realloc.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _free.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) printf_large.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) sprintf.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) vprintf.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) strcpy.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) strlen.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strcat.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strchr.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strcmp.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strcspn.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strncat.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strncmp.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strncpy.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strpbrk.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strrchr.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strspn.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strstr.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _strtok.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _memchr.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _memcmp.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _memcpy.rel
+ $(Q) sdar d $(TOPDIR)/lib/$(SDCCLIB) _memset.rel
+
+# Create a header file that contains addressing information needed by the
+# assemlby language start-up code. Locate the IDLE thread stack at the
+# end of RAM. The heap then extends from s__HEAP to the bottom of the
+# IDLE thread stack
asm_mem.h:
- @echo " CONFIG_COMPILER_OTHER == 0" > asm_mem.h
- @echo " CONFIG_COMPILER_SDCC == 1" >> asm_mem.h
-ifeq ($(CC),sdcc)
- @echo " CONFIG_COMPILER == 1" >> asm_mem.h
-else
- @echo " CONFIG_COMPILER == 0" >> asm_mem.h
-endif
@echo " CONFIG_STACK_END == ($(CONFIG_DRAM_SIZE) - 1)" >> asm_mem.h
@echo " CONFIG_STACK_BASE == (CONFIG_STACK_END - $(CONFIG_IDLETHREAD_STACKSIZE))" >> asm_mem.h
- @echo " CONFIG_HEAP1_END == (CONFIG_STACK_END - $(CONFIG_IDLETHREAD_STACKSIZE) - 1)" >> asm_mem.h
- @echo " CONFIG_HEAP1_BASE == $(HEAP_BASE)" >> asm_mem.h
# Combine all objects in this directory into a library
-libarch$(LIBEXT): up_mem.h asm_mem.h $(OBJS)
+libarch$(LIBEXT): asm_mem.h $(OBJS)
$(call ARCHIVE, $@, $(OBJS))
# This builds the libboard library in the board/ subdirectory
@@ -168,43 +138,6 @@ board/libboard$(LIBEXT):
# This target builds the final executable
-pass1.lnk:
- @echo "LD: pass1.ihx"
- @echo "--" >pass1.lnk # Non-interactive
- @echo "-k $(BOARDDIR)" >>pass1.lnk # Path to board 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 ;\
- done
- @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
-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.ihx" >>pass1.lnk # Path to head object
- @echo "$(HEAD_OBJ)" >>pass1.lnk # Path to head object
- @echo "-e" >>pass1.lnk # End of script
-
-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)
- $(Q) $(MAKE) TOPDIR="$(TOPDIR)" libarch$(LIBEXT)
- $(Q) $(MAKE) TOPDIR="$(TOPDIR)" $(HEAD_OBJ)
-
nuttx.lnk:
@echo "--" >nuttx.lnk # Non-interactive
@echo "-k $(BOARDDIR)" >>nuttx.lnk # Path to board library
@@ -213,7 +146,18 @@ nuttx.lnk:
$(Q) for LIB in $(LINKLIBS); do \
echo "-l $(TOPDIR)/lib/$$LIB" >> nuttx.lnk ;\
done
- @echo "-l myz80.lib" >>nuttx.lnk # Name of SDCC z80 library
+ @echo "-l $(SDCCLIB)" >>nuttx.lnk # Name of SDCC z80 library
+ifneq ($(CONFIG_LINKER_CODE_AREA),)
+ @echo "-b _CODE=$(CONFIG_LINKER_CODE_AREA)" >>nuttx.lnk # Start of _CODE area
+else
+ @echo "-b _CODE=0x0200" >>nuttx.lnk # Start of _CODE area
+endif
+ifneq ($(CONFIG_LINKER_DATA_AREA),)
+ @echo "-b _CODE=$(CONFIG_LINKER_DATA_AREA)" >>nuttx.lnk
+else
+ @echo "-b _DATA=0x8000" >>nuttx.lnk # Start of _DATA area
+endif
+
ifneq ($(CONFIG_LINKER_START_AREA),)
@echo "-b START=$(CONFIG_LINKER_START_AREA)" >>nuttx.lnk # Start of START area
endif
@@ -233,10 +177,9 @@ endif
@echo "$(HEAD_OBJ)" >>nuttx.lnk # Path to head object
@echo "-e" >>nuttx.lnk # End of script
-nuttx$(EXEEXT): pass1.ihx up_mem.h asm_mem.h $(TOPDIR)/lib/myz80.lib $(HEAD_OBJ) board/libboard$(LIBEXT) nuttx.lnk
+nuttx$(EXEEXT): asm_mem.h $(TOPDIR)/lib/$(SDCCLIB) $(HEAD_OBJ) board/libboard$(LIBEXT) nuttx.lnk
@echo "LD: nuttx.ihx"
$(Q) $(LD) -f nuttx.lnk
- $(Q) rm -f pass1.*
$(Q) cp -f nuttx.map $(TOPDIR)/.
ifeq ($(EXEEXT),.cmd)
sed s/:00000001FF/:00520001AD/ nuttx.ihx | \
@@ -257,7 +200,7 @@ export_head: board/libboard$(LIBEXT) $(HEAD_OBJ)
# Build dependencies
-.depend: Makefile up_mem.h asm_mem.h chip/Make.defs $(DEPSRCS)
+.depend: Makefile asm_mem.h chip/Make.defs $(DEPSRCS)
$(Q) if [ -e board/Makefile ]; then \
$(MAKE) -C board TOPDIR="$(TOPDIR)" depend ; \
fi
@@ -270,9 +213,7 @@ clean:
$(Q) if [ -e board/Makefile ]; then \
$(MAKE) -C board TOPDIR="$(TOPDIR)" clean ; \
fi
- $(call DELFILE, up_mem.h)
$(call DELFILE, asm_mem.h)
- $(call DELFILE, pass1.*)
$(call DELFILE, nuttx.*)
$(call DELFILE, libarch$(LIBEXT))
$(call CLEAN)