diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-12-07 19:02:57 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2012-12-07 19:02:57 +0000 |
commit | bf0e0bb95ec767c971d01d70f1ba027ef585ce14 (patch) | |
tree | 59900051a4e3fa3ae3024115f7532c2eeda7aefd /nuttx/arch/z80/src/Makefile.sdccl | |
parent | 3c5cba9b94c3f5365034f044e18a58d425508c87 (diff) | |
download | nuttx-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.sdccl | 155 |
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) |