⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 makefile

📁 os源代码 os源代码 os源代码 os源代码 os源代码 os源代码
💻
字号:
# General Makefile for PowerPC
# Created by: Fabiano Kovalski


PROC=powerpc
TYPE=rtems

PATH:=/usr/local/bin:$(PATH)
LIBPATH=$(MSL_ROOT)/usr/local/$(PROC)-$(TYPE)/lib
INCPATH=$(MSL_ROOT)/usr/local/$(PROC)-$(TYPE)/include


###############################################################################
##  Standard commands
###############################################################################

CC=@$(PROC)-$(TYPE)-gcc
AS=@$(PROC)-$(TYPE)-as
AR=@$(PROC)-$(TYPE)-ar
LD=@$(PROC)-$(TYPE)-ld
NM=@$(PROC)-$(TYPE)-nm
OBJDUMP=@$(PROC)-$(TYPE)-objdump
OBJCOPY=@$(PROC)-$(TYPE)-objcopy
ECHO=@echo
MKDIR=@mkdir -p
RMDIR=@rmdir --ignore-fail-on-non-empty
DEL=@/bin/rm -f
CP=@cp


###############################################################################
##  Source paths
###############################################################################

PROJ_ROOT  =.
CODE_ROOT   =$(PROJ_ROOT)
LD_ROOT    =$(PROJ_ROOT)/Source
OS_ROOT    =$(PROJ_ROOT)/Source
SPECIFIC_ROOT  =$(OS_ROOT)/555 Specific


###############################################################################
##  Commands Parameters
###############################################################################

PROJ_NAME =OS

CFLAGS    =-w -fomit-frame-pointer -mcpu=powerpc -Wa,-mregnames 
CINCLUDES =-I$(CODE_ROOT) -I$(LD_ROOT) -I$(OS_ROOT) -I$(SPECIFIC_ROOT) 
AINCLUDES =-I$(CODE_ROOT),-I$(LD_ROOT),-I$(OS_ROOT),-I$(SPECIFIC_ROOT)
ASFLAGS   =-g -gdwarf-2 -L  -mspe
LDFLAGS   =-EB -N 

LINKERFILE = -T $(LD_ROOT)/555_ETAS_ROM.lcf

CODE_SRC   :=__start.c  __ppc_eabi_init.c
OS_SRC     :=555_ETAS_init.c main.c serial.c utilities.c eppc_exception.asm EXCEPT.asm
SPECIFIC_SRC   :=interrupt.c OS_CPU_C.c


OBJS_C      :=$(addprefix $(EVENT_ROOT)/, $(patsubst %.c,%.o,$(filter %.c,$(CODE_SRC))))   \
	    $(addprefix $(TASK_ROOT)/,  $(patsubst %.c,%.o,$(filter %.c,$(OS_SRC))))   \
	    $(addprefix $(COM_ROOT)/,   $(patsubst %.c,%.o,$(filter %.c,$(SPECIFIC_SRC)))) 
	    
OBJS_ASM    :=$(addprefix $(EVENT_ROOT)/, $(patsubst %.c,%.o,$(filter %.asm,$(CODE_SRC))))   \
	    $(addprefix $(TASK_ROOT)/,  $(patsubst %.c,%.o,$(filter %.asm,$(OS_SRC))))   \
	    $(addprefix $(COM_ROOT)/,   $(patsubst %.c,%.o,$(filter %.asm,$(SPECIFIC_SRC)))) 

OBJS_S       :=$(addprefix $(EVENT_ROOT)/, $(patsubst %.c,%.o,$(filter %.s,$(CODE_SRC))))   \
	    $(addprefix $(TASK_ROOT)/,  $(patsubst %.c,%.o,$(filter %.s,$(OS_SRC))))   \
	    $(addprefix $(COM_ROOT)/,   $(patsubst %.c,%.o,$(filter %.s,$(SPECIFIC_SRC)))) 

OBJS_ALL    :=$(addprefix $(OUTPUT)/obj/, $(notdir $(OBJS_S)) $(notdir $(OBJS_C)) $(notdir $(OBJS_ASM)))


###############################################################################
##  Pattern Rules
###############################################################################

%.o: %.S 
	$(ECHO) '$(PROC)/GNU C (ASM Pre-processing) Compiler building $(notdir $<)'
	$(MKDIR) $(OUTPUT)
	$(MKDIR) $(OUTPUT)/obj
	$(MKDIR) $(OUTPUT)/lst
	$(CC) -mbig-endian -c $(CFLAGS) $(CINCLUDES) -Wa,-mregnames,-alh="$(OUTPUT)/lst/$(notdir $(patsubst %.S,%.lst,$<))",-L,$(AINCLUDES) -o "$(OUTPUT)/obj/$(notdir $@)" "$<" 
	
%.o: %.c
	$(ECHO) '$(PROC)/GNU C Compiler building $(notdir $<)'
	$(MKDIR) $(OUTPUT)
	$(MKDIR) $(OUTPUT)/obj
	$(MKDIR) $(OUTPUT)/lst	
	$(CC) -mbig-endian -c $(CFLAGS) $(CINCLUDES) -Wa,-mregnames,-alh="$(OUTPUT)/lst/$(notdir $(patsubst %.c,%.lst,$<))",$(AINCLUDES) -o "$(OUTPUT)/obj/$(notdir $@)" "$<"
	
%.o: %.asm
	$(ECHO) '$(PROC)/GNU ASM Compiler building $(notdir $<)'
	$(MKDIR) $(OUTPUT)
	$(MKDIR) $(OUTPUT)/obj
	$(AS) -mbig-endian -mregnames $(ASFLAGS) $(AINCLUDES) -o "$(OUTPUT)/obj/$(notdir $@)" "$<"

###############################################################################
##  Build Rules
###############################################################################

all: build

build: $(OBJS_C) $(OBJS_ASM) $(OBJS_S)
	$(ECHO) '$(PROC)/GNU C Linker building target $(PROJ_NAME)'	
	$(MKDIR) $(OUTPUT)
	$(LD) $(LDFLAGS) -Map "$(OUTPUT)/$(PROJ_NAME).map" $(LINKERFILE) -o "$(OUTPUT)/$(PROJ_NAME).elf" $(OBJS_ALL)
	$(ECHO) 'Generating binaries for target $(PROJ_NAME)'
	$(OBJCOPY) -O srec   "$(OUTPUT)/$(PROJ_NAME).elf" "$(OUTPUT)/$(PROJ_NAME).srec"
	$(OBJCOPY) -O binary "$(OUTPUT)/$(PROJ_NAME).elf" "$(OUTPUT)/$(PROJ_NAME).bin"
	$(CP) "$(OUTPUT)/$(PROJ_NAME).elf" "$(PROJ_ROOT)/$(PROJ_NAME).elf"
	$(ECHO) 'Target $(PROJ_NAME) completed.'


clean:
	-$(DEL) $(OUTPUT)/obj/*.o $(OUTPUT)/lst/*.lst
	-$(DEL) "$(OUTPUT)/$(PROJ_NAME).elf" "$(OUTPUT)/$(PROJ_NAME).bin" "$(OUTPUT)/$(PROJ_NAME).map" "$(OUTPUT)/$(PROJ_NAME).srec"
	-$(DEL) "$(PROJ_ROOT)/$(PROJ_NAME).elf"
	-$(RMDIR) $(OUTPUT)/obj
	-$(RMDIR) $(OUTPUT)/lst
	-$(RMDIR) $(OUTPUT)
	$(ECHO) 'Target $(PROJ_NAME) clean.'
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -