📄 makefile.sdcc
字号:
############################################################################# arch/z80/src/Makefile.sdcc## Copyright (C) 2008 Gregory Nutt. All rights reserved.# Author: Gregory Nutt <spudmonkey@racsa.co.cr>## Redistribution and use in source and binary forms, with or without# modification, are permitted provided that the following conditions# are met:## 1. Redistributions of source code must retain the above copyright# notice, this list of conditions and the following disclaimer.# 2. Redistributions in binary form must reproduce the above copyright# notice, this list of conditions and the following disclaimer in# the documentation and/or other materials provided with the# distribution.# 3. Neither the name NuttX nor the names of its contributors may be# used to endorse or promote products derived from this software# without specific prior written permission.## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE# POSSIBILITY OF SUCH DAMAGE.########################################################################################################################################################## Tools# CFLAGS, CPPFLAGS, ASFLAGS, LDFLAGS are set in $(TOPDIR)/Make.defsCFLAGS += -I$(ARCH_SRCDIR)/chip -I$(ARCH_SRCDIR)/common -I$(TOPDIR)/schedCPPFLAGS += -D__ASSEMBLY__############################################################################# Files and directories# There should be one head source (.asm file)HEAD_AOBJ = $(HEAD_ASRC:$(ASMEXT)=$(OBJEXT))# Assembly sources and objectsASRCS = $(CHIP_ASRCS) $(CMN_ASRCS)AOBJS = $(ASRCS:$(ASMEXT)=$(OBJEXT))# C sources and objectsCSRCS = $(CHIP_CSRCS) $(CMN_CSRCS)COBJS = $(CSRCS:.c=$(OBJEXT))# All sources and objctsSRCS = $(ASRCS) $(CSRCS)OBJS = $(AOBJS) $(COBJS)# Sources that can have dependencies (no .asm files)DEPSRCS = $(CSRCS)# DirectoriesARCH_SRCDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/srcBOARDDIR = $(TOPDIR)/arch/$(CONFIG_ARCH)/src/boardVPATH = chip:common:board# LibrariesLIBGCC = ${shell $(CC) -print-libgcc-file-name}# Supports dynamic sizing of HEAP.#HEAP_BASE = ${shell ./mkhpbase.sh}############################################################################# Targetsall: $(HEAD_AOBJ) libarch$(LIBEXT)$(AOBJS) $(HEAD_AOBJ): %$(OBJEXT): %$(ASMEXT) $(call ASSEMBLE, $<, $@)$(COBJS): %$(OBJEXT): %.c $(call COMPILE, $<, $@)# This is a kludge to work around some conflicting symbols in libsdcc.liXqueb$(SDCCLIBDIR)/myz80.lib: $(SDCCLIBDIR)/$(SDCCLIB) @cat $(SDCCLIBDIR)/$(SDCCLIB) | \ grep -v alloc | grep -v free | grep -v printf | \ grep -v _str | grep -v _mem | grep -v crt0\.o \ > myz80.lib @sudo mv -f myz80.lib $(SDCCLIBDIR)/myz80.lib# Create a header file that contains addressing information needed by the codeup_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_PROC_STACK_SIZE))" >> 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.hasm_mem.h: @echo " CONFIG_COMPILER_OTHER == 0" > asm_mem.h @echo " CONFIG_COMPILER_SDCC == 1" >> asm_mem.hifeq ($(CC),sdcc) @echo " CONFIG_COMPILER == 1" >> asm_mem.helse @echo " CONFIG_COMPILER == 0" >> asm_mem.hendif @echo " CONFIG_STACK_END == ($(CONFIG_DRAM_SIZE) - 1)" >> asm_mem.h @echo " CONFIG_STACK_BASE == (CONFIG_STACK_END - $(CONFIG_PROC_STACK_SIZE))" >> asm_mem.h @echo " CONFIG_HEAP1_END == (CONFIG_STACK_END - $(CONFIG_PROC_STACK_SIZE) - 1)" >> asm_mem.h @echo " CONFIG_HEAP1_BASE == $(HEAP_BASE)" >> asm_mem.h# Combine all objects in this directory into a librarylibarch$(LIBEXT): up_mem.h asm_mem.h $(OBJS) @( for obj in $(OBJS) ; do \ $(call ARCHIVE, $@, $${obj}); \ done ; )# This builds the libboard library in the board/ subdirectory board/libboard$(LIBEXT): $(MAKE) -C board TOPDIR="$(TOPDIR)" libboard$(LIBEXT)# This target builds the final executablepass1.ihx: up_mem.h asm_mem.h $(SDCCLIBDIR)/myz80.lib $(HEAD_AOBJ) board/libboard$(LIBEXT) @echo "LD: pass1.ihx" @echo "--" >pass1.lnk # Non-interactive @echo "-k $(BOARDDIR)" >>pass1.lnk # Path to board library @echo "-k $(SDCCLIBDIR)" >>pass1.lnk # Path to SDCC z80 library @echo "-l libboard$(LIBEXT)" >>pass1.lnk # Name of board library @for LIB in $(LINKLIBS); do \ echo "-l $(TOPDIR)/$$LIB" >> pass1.lnk ;\ done @echo "-l myz80.lib" >>pass1.lnk # Name of SDCC z80 libraryifneq ($(CONFIG_LINKER_START_AREA),) @echo "-b START=$(CONFIG_LINKER_START_AREA)" >>pass1.lnk # Start of START areaelse @echo "-b START=0" >>pass1.lnk # Start of START areaendififneq ($(CONFIG_LINKER_CODE_AREA),) @echo "-b _CODE=$(CONFIG_LINKER_CODE_AREA)" >>pass1.lnk # Start of _CODE areaelse @echo "-b _CODE=256" >>pass1.lnk # Start of _CODE areaendif @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_AOBJ)" >>pass1.lnk # Path to head object @echo "-e" >>pass1.lnk # End of script @$(LD) -f pass1.lnk @rm -f up_mem.h asm_mem.h @rm -f up_allocateheap$(OBJEXT) $(HEAD_AOBJ) libarch$(LIBEXT) @$(MAKE) TOPDIR="$(TOPDIR)" libarch$(LIBEXT) @$(MAKE) TOPDIR="$(TOPDIR)" $(HEAD_AOBJ)nuttx.ihx: up_mem.h asm_mem.h $(SDCCLIBDIR)/myz80.lib $(HEAD_AOBJ) board/libboard$(LIBEXT) @echo "LD: nuttx.ihx" @echo "--" >nuttx.lnk # Non-interactive @echo "-k $(BOARDDIR)" >>nuttx.lnk # Path to board library @echo "-k $(SDCCLIBDIR)" >>nuttx.lnk # Path to SDCC z80 library @echo "-l libboard$(LIBEXT)" >>nuttx.lnk # Name of board library @for LIB in $(LINKLIBS); do \ echo "-l $(TOPDIR)/$$LIB" >> nuttx.lnk ;\ done @echo "-l myz80.lib" >>nuttx.lnk # Name of SDCC z80 libraryifneq ($(CONFIG_LINKER_START_AREA),) @echo "-b START=$(CONFIG_LINKER_START_AREA)" >>nuttx.lnk # Start of START areaelse @echo "-b START=0" >>nuttx.lnk # Start of START areaendififneq ($(CONFIG_LINKER_CODE_AREA),) @echo "-b _CODE=$(CONFIG_LINKER_CODE_AREA)" >>nuttx.lnk # Start of _CODE areaelse @echo "-b _CODE=256" >>nuttx.lnk # Start of _CODE areaendif @echo "-i" >>nuttx.lnk # Intel hex format @echo "-x" >>nuttx.lnk # Hexadecimal @echo "-m" >>nuttx.lnk # Generate a map file @echo "-j" >>nuttx.lnk # Generate a symbol file @echo "nuttx.ihx" >>nuttx.lnk # Path to head object @echo "$(HEAD_AOBJ)" >>nuttx.lnk # Path to head object @echo "-e" >>nuttx.lnk # End of script @$(LD) -f nuttx.lnknuttx$(EXEEXT): pass1.ihx nuttx.ihx @rm -f pass1.* @cp -f nuttx.map $(TOPDIR)/.ifeq ($(EXEEXT),.cmd) sed s/:00000001FF/:00520001AD/ nuttx.ihx | \ hex2cmd > $(TOPDIR)/nuttx.cmdelse @packihx nuttx.ihx > $(TOPDIR)/nuttx$(EXEEXT)endif# Build dependencies.depend: Makefile up_mem.h asm_mem.h chip/Make.defs $(DEPSRCS) @if [ -e board/Makefile ]; then \ $(MAKE) -C board TOPDIR="$(TOPDIR)" depend ; \ fi @$(MKDEP) --dep-path chip --dep-path common $(CC) -- $(CFLAGS) -- $(DEPSRCS) >Make.dep @touch $@depend: .dependclean: @if [ -e board/Makefile ]; then \ $(MAKE) -C board TOPDIR="$(TOPDIR)" clean ; \ fi @rm -f libarch$(LIBEXT) up_mem.h asm_mem.h pass1.* nuttx.* *~ .*.swp $(call CLEAN)distclean: clean @if [ -e board/Makefile ]; then \ $(MAKE) -C board TOPDIR="$(TOPDIR)" distclean ; \ fi @rm -f Make.dep .depend-include Make.dep
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -