📄 rules.in
字号:
# -----------------------------------------------------
# Makefile.rules
# This Makefile contains global settings that are
# included in other Makefiles.
# -----------------------------------------------------
# -----------------------------------------------------
# Some handy definitions.
# -----------------------------------------------------
ADS_BUILD = 0
USE_C_LIBRARY = 0
# tools
ARMLINK = armlink
ARMCC = armcc
ARMASM = armasm
FROMELF = fromelf
ifeq ($(ADS_BUILD),1)
AR = armar
AR_OPTS = -create
LIB_EXT = a
PROC_TYPE = -proc ARM7TDMI
SYM_LIST = -symbols -list
else
AR = armlib
AR_OPTS = -c -o
LIB_EXT = alf
PROC_TYPE = -arm7t
SYM_LIST = -symbols
ZEROPAD = -nozeropad
endif
HOSTCC = cc -g
CLEAN = /usr/bin/rcsclean
MAKE = gnumake
# where stuff is (in uHAL)
# [A] The directories
UHALINCLUDEDIR = $(UHAL_BASE)/h
UHALBOARDDIR = $(UHAL_BASE)/Boards/$(BOARD_TYPE)
UHALPROCESSORDIR = $(UHAL_BASE)/Processors
UHALARMDIR = $(UHAL_BASE)/Processors/$(PROCESSOR_TYPE)
UHALLIBDIR = $(UHAL_BASE)/Sources/
UHALTOOLDIR = $(UHAL_BASE)/tools/
# [B] Sources
UHALLIBSOURCES = $(UHALLIBDIR)/crt.c $(UHALLIBDIR)/external.s \
$(UHALLIBDIR)/iolib.c $(UHALLIBDIR)/irqlib.s $(UHALLIBDIR)/led.c \
$(UHALLIBDIR)/pci.c $(UHALLIBDIR)/uart.c $(UHALLIBDIR)/boot.s \
$(UHALLIBDIR)/divide.s $(UHALLIBDIR)/heap.c $(UHALLIBDIR)/irqtrap.s \
$(UHALLIBDIR)/timer.c
UHALBOARDSOURCES = $(UHALBOARDDIR)/board.c $(UHALBOARDDIR)/driver.s \
$(UHALBOARDDIR)/memmap.s
UHALPROCESSORSOURCES = $(UHALPROCESSORDIR)/cache.c \
$(UHALPROCESSORDIR)/control.s $(UHALPROCESSORDIR)/mmu.s
# [C] Include files
UHALLIBINCLUDES = $(UHALINCLUDEDIR)/uhal.h $(UHALINCLUDEDIR)/cdefs.h \
$(UHALINCLUDEDIR)/bits.h $(UHALINCLUDEDIR)/sizes.h
UHALBOARDINCLUDES = $(UHALBOARDDIR)/platform.h \
$(UHALBOARDDIR)/platform.s $(UHALBOARDDIR)/target.s
UHALPROCESSORINCLUDES = $(UHALPROCESSORDIR)/mmu_h.h \
$(UHALPROCESSORDIR)/mmu_h.s $(UHALPROCESSORDIR)/mmumacro.s
#
# Variables used in compilation/dependencies
#
# [A] The list of include files
UHAL_INCLUDE_FILES = $(UHALLIBINCLUDES) $(UHALBOARDINCLUDES) $(UHALPROCESSORINCLUDES)
# [B] Every file in the uHAL library
UHAL_SOURCE_FILES = $(UHALLIBSOURCES) $(UHALLIBINCLUDES) \
$(UHALBOARDSOURCES) $(UHALBOARDINCLUDES) \
$(UHALPROCESSORSOURCES) $(UHALPROCESSORINCLUDES)
# [C] The include path
INCL = -I$(UHALINCLUDEDIR),$(UHALLIBDIR),$(UHALBOARDDIR),$(UHALPROCESSORDIR),$(UHALARMDIR)
# Where stuff is (in PCI library)
PCIINCLUDEDIR = $(PCILIB_BASE)/Sources
PCI_SOURCE_FILES = $(PCILIB_BASE)/Sources/pci.c
PCI_INCLUDE_FILES = $(PCIINCLUDEDIR)/pcilib.h
# Where stuff is (in Flash library)
FLASHINCLUDEDIR = $(FLASHLIB_BASE)/Sources
FLASH_INCLUDE_FILES = $(FLASHINCLUDEDIR)/flash_lib.h $(FLASHINCLUDEDIR)/sib.h
# libraries that can be linked against
UHALLIB = $(UHAL_BASE)/Build/$(BOARD_NAME).b/$(TARGET)/uHALlibrary.$(LIB_EXT)
PCILIB = $(PCILIB_BASE)/Build/$(BOARD_NAME).b/$(TARGET)/PCIlib.$(LIB_EXT)
FLASHLIB = $(FLASHLIB_BASE)/Build/$(BOARD_NAME).b/$(TARGET)/Flash_Lib.$(LIB_EXT)
ifeq ($(ADS_BUILD),0)
AFUCLIBRARY = $(ARMLIB)/armlib.32l
ifeq ($(USE_C_LIBRARY),1)
ARMCLIBRARY = $(ARMLIB)/armlib.32l
CDEFS = -DUSE_C_LIBRARY=$(USE_C_LIBRARY)
ADEFS = -PD "USE_C_LIBRARY SETL {TRUE}"
endif
else
AFUCLIBRARY = $(ARMLIB)/armlib/c_a__sn.l
endif
#------------------------------------------------------------
# This is the default endianess - it can be overwritten on the
# make command line by ENDIAN=BIG
ENDIAN = LITTLE
LITTLE_ENDIANFLAG= -li
LITTLE_ENDIANDEFN= -DLITTLE_ENDIAN
LITTLE_ENDIANSFX= l
BIG_ENDIANFLAG= -bi
BIG_ENDIANDEFN= -DBIG_ENDIAN
BIG_ENDIANSFX= b
ENDIANFLAG= $($(ENDIAN)_ENDIANFLAG)
ENDIANDEFN= $($(ENDIAN)_ENDIANDEFN)
ENDIANSFX= $($(ENDIAN)_ENDIANSFX)
#
# now make compiler and assembler arguments
#
CCENDIAN= $(ENDIANFLAG) $(ENDIANDEFN)
ASENDIAN= $(ENDIANFLAG)
# -----------------------------------------------------
# Do some ADEFS and CDEFS mangling...
# -----------------------------------------------------
# work out the OS that we're running in.
ifeq ($(CONFIG),Windows)
OS_TYPE = Windows
else
ifeq ($(OS),Windows_NT)
OS_TYPE = Windows
else
OS_TYPE = Unix
endif
endif
ifeq ($(OS_TYPE),Windows)
# Bash/GNU running under DOS/windows
ifeq ($(TARGET),semihosted)
TEXT = 0x8000
CDEFS := $(CDEFS) -DSEMIHOSTED=1 $(CCENDIAN) -DADS_BUILD=$(ADS_BUILD)
ADEFS := $(ADEFS) -PD "SEMIHOSTED SETL {TRUE}" $(ASENDIAN) -PD "ADS_BUILD SETA $(ADS_BUILD)"
LTEXT = -first 'boot.o(SelfBoot)'
LDEFS = $(ARMCLIBRARY) $(LTEXT) -ro-base $(TEXT)
FDEFS =
ELFDEFS =
endif
ifeq ($(TARGET),standalone)
CDEFS = -DSTANDALONE $(CCENDIAN) -DADS_BUILD=$(ADS_BUILD)
ADEFS = -PD "STANDALONE SETL {TRUE}" $(ASENDIAN) -PD "ADS_BUILD SETA $(ADS_BUILD)"
LTEXT = -first 'boot.o(SelfBoot)' -rw-base $(DATA)
LDEFS = $(LTEXT) -ro-base $(TEXT)
FDEFS =
ELFDEFS = $(ZEROPAD)
endif
else
# 'Normal' Unix
ifeq ($(TARGET),demon)
TEXT = 0x8000
CDEFS = -DDEMON=1 $(CCENDIAN)
ADEFS = -PD "DEMON SETL {TRUE}" $(ASENDIAN)
LTEXT = -first 'boot.o(SelfBoot)'
LDEFS = $(LTEXT) -ro-base $(TEXT)
FDEFS =
ELFDEFS =
endif
ifeq ($(TARGET),semihosted)
TEXT = 0x8000
CDEFS := $(CDEFS) -DSEMIHOSTED=1 $(CCENDIAN) -DADS_BUILD=$(ADS_BUILD)
ADEFS := $(ADEFS) -PD "SEMIHOSTED SETL {TRUE}" $(ASENDIAN) -PD "ADS_BUILD SETA $(ADS_BUILD)"
LTEXT = -first 'boot.o(SelfBoot)'
LDEFS = $(ARMCLIBRARY) $(LTEXT) -ro-base $(TEXT)
FDEFS =
ELFDEFS =
endif
ifeq ($(TARGET),standalone)
CDEFS = -DSTANDALONE $(CCENDIAN) -DADS_BUILD=$(ADS_BUILD)
ADEFS = -PD "STANDALONE SETL {TRUE}" $(ASENDIAN) -PD "ADS_BUILD SETA $(ADS_BUILD)"
LTEXT = -first 'boot.o(SelfBoot)' -rw-base $(DATA)
LDEFS = $(LTEXT) -ro-base $(TEXT)
FDEFS =
ELFDEFS = $(ZEROPAD)
endif
endif
#
# Debug?
#
ifdef DEBUG
CDEFS := $(CDEFS) -g -DDEBUG=1
ADEFS := $(ADEFS) -PD "DEBUG SETL {TRUE}"
LDEFS := $(LDEFS) -debug
else
CDEFS := $(CDEFS)
ADEFS := $(ADEFS)
LDEFS := $(LDEFS)
ELFDEFS := $(ELFDEFS) -nodebug
endif
#
# Final compiler, assembler and linker definitions.
#
# The -zpq262144 flag works around a C compiler bug.
#
ifeq ($(ADS_BUILD),1)
CDEFS := -apcs /noswst $(CDEFS) -D$(BOARD_TYPE)=1 -D$(PROCESSOR_TYPE)=1 -zpq262144
ADEFS := -apcs /noswst $(ADEFS) -PD "$(BOARD_TYPE) SETL {TRUE}" -PD "$(PROCESSOR_TYPE) SETL {TRUE}"
LDEFS := $(LDEFS)
else
CDEFS := -apcs 3/32bit/noswst $(CDEFS) -fz -D$(BOARD_TYPE)=1 -D$(PROCESSOR_TYPE)=1 -zpq262144
ADEFS := -apcs 3/32bit/noswst $(ADEFS) -PD "$(BOARD_TYPE) SETL {TRUE}" -PD "$(PROCESSOR_TYPE) SETL {TRUE}"
LDEFS := $(LDEFS) -noscanlib
endif
# -----------------------------------------------------
# The default rules.
# -----------------------------------------------------
.SUFFIXES:
.SUFFIXES: .bin .elf .o .s .c
.o.bin:
$(ARMLINK) -BIN $*.o -o $*.bin
.o.$(LINK_OUTPUT):
$(ARMLINK) $(LDEFS) $*.o -o $*.elf
.s.o:
$(ARMASM) $(ADEFS) -I$(INCLUDES) $*.s -g -arch 4 -o $*.o
.c.o:
$(ARMCC) $(CDEFS) $(CFL) -c -I. $(PROC_TYPE) $*.c -o $*.o
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -