📄 makefile
字号:
# 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 + -