📄 makefile
字号:
#
# TOPPERS/JSP Kernel
# Toyohashi Open Platform for Embedded Real-Time Systems/
# Just Standard Profile Kernel
#
# Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
# Toyohashi Univ. of Technology, JAPAN
#
# 忋婰挊嶌尃幰偼丆埲壓偺 (1)乣(4) 偺忦審偐丆Free Software Foundation
# 偵傛偭偰岞昞偝傟偰偄傞 GNU General Public License 偺 Version 2 偵婰
# 弎偝傟偰偄傞忦審傪枮偨偡応崌偵尷傝丆杮僜僼僩僂僃傾乮杮僜僼僩僂僃傾
# 傪夵曄偟偨傕偺傪娷傓丏埲壓摨偠乯傪巊梡丒暋惢丒夵曄丒嵞攝晍乮埲壓丆
# 棙梡偲屇傇乯偡傞偙偲傪柍彏偱嫋戻偡傞丏
# (1) 杮僜僼僩僂僃傾傪僜乕僗僐乕僪偺宍偱棙梡偡傞応崌偵偼丆忋婰偺挊嶌
# 尃昞帵丆偙偺棙梡忦審偍傛傃壓婰偺柍曐徹婯掕偑丆偦偺傑傑偺宍偱僜乕
# 僗僐乕僪拞偵娷傑傟偰偄傞偙偲丏
# (2) 杮僜僼僩僂僃傾傪丆儔僀僽儔儕宍幃側偳丆懠偺僜僼僩僂僃傾奐敪偵巊
# 梡偱偒傞宍偱嵞攝晍偡傞応崌偵偼丆嵞攝晍偵敽偆僪僉儏儊儞僩乮棙梡
# 幰儅僯儏傾儖側偳乯偵丆忋婰偺挊嶌尃昞帵丆偙偺棙梡忦審偍傛傃壓婰
# 偺柍曐徹婯掕傪宖嵹偡傞偙偲丏
# (3) 杮僜僼僩僂僃傾傪丆婡婍偵慻傒崬傓側偳丆懠偺僜僼僩僂僃傾奐敪偵巊
# 梡偱偒側偄宍偱嵞攝晍偡傞応崌偵偼丆師偺偄偢傟偐偺忦審傪枮偨偡偙
# 偲丏
# (a) 嵞攝晍偵敽偆僪僉儏儊儞僩乮棙梡幰儅僯儏傾儖側偳乯偵丆忋婰偺挊
# 嶌尃昞帵丆偙偺棙梡忦審偍傛傃壓婰偺柍曐徹婯掕傪宖嵹偡傞偙偲丏
# (b) 嵞攝晍偺宍懺傪丆暿偵掕傔傞曽朄偵傛偭偰丆TOPPERS僾儘僕僃僋僩偵
# 曬崘偡傞偙偲丏
# (4) 杮僜僼僩僂僃傾偺棙梡偵傛傝捈愙揑傑偨偼娫愙揑偵惗偠傞偄偐側傞懝
# 奞偐傜傕丆忋婰挊嶌尃幰偍傛傃TOPPERS僾儘僕僃僋僩傪柶愑偡傞偙偲丏
#
# 杮僜僼僩僂僃傾偼丆柍曐徹偱採嫙偝傟偰偄傞傕偺偱偁傞丏忋婰挊嶌尃幰偍
# 傛傃TOPPERS僾儘僕僃僋僩偼丆杮僜僼僩僂僃傾偵娭偟偰丆偦偺揔梡壜擻惈傕
# 娷傔偰丆偄偐側傞曐徹傕峴傢側偄丏傑偨丆杮僜僼僩僂僃傾偺棙梡偵傛傝捈
# 愙揑傑偨偼娫愙揑偵惗偠偨偄偐側傞懝奞偵娭偟偰傕丆偦偺愑擟傪晧傢側偄丏
#
# @(#) $Id: Makefile,v 1.26 2003/06/18 15:13:40 hiro Exp $
#
#
# 僞乕僎僢僩偺巜掕乮Makefile.config 偱忋彂偒偝傟傞偺傪杊偖偨傔乯
#
all:
#
# 僞乕僎僢僩柤偺掕媊
#
CPU = @(CPU)
SYS = @(SYS)
TOOL = @(TOOL)
#
# 僜乕僗僼傽僀儖偺僨傿儗僋僩儕偺掕媊
#
SRCDIR = @(SRCDIR)
#
# 僆僽僕僃僋僩僼傽僀儖柤偺奼挘巕偺愝掕
#
OBJEXT = @(OBJEXT)
#
# 幚峴娐嫬偺掕媊乮偳傟偵傕奩摉偟側偄応崌偼丆偡傋偰僐儊儞僩傾僂僩偡傞乯
# 乮僞乕僎僢僩埶懚偵忋彂偒偝傟傞応崌偑偁傞乯
#
DBGENV := GDB_STUB
# DBGENV := PARTNER_J
#
# 僇乕僱儖儔僀僽儔儕乮libkernel.a乯偺僨傿儗僋僩儕柤
# 乮僇乕僱儖儔僀僽儔儕傕 make 懳徾偵偡傞帪偼丆嬻偵掕媊偡傞乯
#
KERNEL_LIB = @(KERNEL_LIB)
#
# 僞乕僎僢僩埶懚偺掕媊偺僀儞僋儖乕僪
#
ifdef TOOL
ifdef SYS
include $(SRCDIR)/config/$(CPU)-$(TOOL)/$(SYS)/Makefile.config
endif
include $(SRCDIR)/config/$(CPU)-$(TOOL)/Makefile.config
else
ifdef SYS
include $(SRCDIR)/config/$(CPU)/$(SYS)/Makefile.config
endif
include $(SRCDIR)/config/$(CPU)/Makefile.config
endif
#
# 嫟捠僐儞僷僀儖僆僾僔儑儞偺掕媊
#
COPTS := $(COPTS)
CDEFS := $(CDEFS)
INCLUDES := -I. -I$(SRCDIR)/include $(INCLUDES)
LDFLAGS := -nostdlib $(LDFLAGS)
LIBS := $(LIBS) -lgcc
CFLAGS = $(COPTS) $(CDEFS) $(INCLUDES)
#
# 傾僾儕働乕僔儑儞僾儘僌儔儉偵娭偡傞掕媊
#
UNAME = @(UNAME)
UTASK_CFG = $(UNAME).cfg
UTASK_DIR = $(SRCDIR)/library
UTASK_ASMOBJS =
UTASK_COBJS = $(UNAME).o @(UTASK)
UTASK_CFLAGS =
UTASK_LIBS =
#
# 僔僗僥儉僒乕價僗偵娭偡傞掕媊
#
STASK_DIR := $(STASK_DIR):$(SRCDIR)/systask:$(SRCDIR)/library
STASK_ASMOBJS := $(STASK_ASMOBJS)
STASK_COBJS := $(STASK_COBJS) timer.o serial.o logtask.o \
log_output.o vasyslog.o t_perror.o strerror.o
STASK_CFLAGS := $(STASK_CFLAGS) -I$(SRCDIR)/systask
STASK_LIBS := $(STASK_LIBS)
#
# 僇乕僱儖偵娭偡傞掕媊
#
# KERNEL_ASMOBJS: 僇乕僱儖儔僀僽儔儕偵娷傔傞丆僜乕僗偑傾僙儞僽儕尵岅偺
# 僆僽僕僃僋僩僼傽僀儖丏
# KERNEL_COBJS: 僇乕僱儖偺儔僀僽儔儕偵娷傔傞丆僜乕僗偑C尵岅偱丆僜乕僗
# 僼傽僀儖偲1懳1偵懳墳偡傞僆僽僕僃僋僩僼傽僀儖丏
# KERNEL_LCSRCS: 僇乕僱儖偺儔僀僽儔儕偵娷傔傞C尵岅偺僜乕僗僼傽僀儖偱丆
# 1偮偺僜乕僗僼傽僀儖偐傜暋悢偺僆僽僕僃僋僩僼傽僀儖傪惗
# 惉偡傞傕偺乮Makefile.kernel 偱掕媊乯丏
# KERNEL_LCOBJS: 忋偺僜乕僗僼傽僀儖偐傜惗惉偝傟傞僆僽僕僃僋僩僼傽僀儖
# 乮Makefile.kernel 偱掕媊乯丏
# KERNEL_AUX_COBJS: 儘乕僪儌僕儏乕儖偵娷傔側偄偑丆僇乕僱儖偺僜乕僗僼傽
# 僀儖偲摨偠僆僾僔儑儞傪揔梡偟偰僐儞僷僀儖偡傋偒僼傽
# 僀儖丏
#
KERNEL = $(SRCDIR)/kernel
KERNEL_DIR := $(KERNEL_DIR):$(KERNEL)
KERNEL_ASMOBJS := $(KERNEL_ASMOBJS)
KERNEL_COBJS := startup.o banner.o $(KERNEL_COBJS)
KERNEL_CFLAGS := $(KERNEL_CFLAGS) -I$(KERNEL)
ifdef OMIT_MAKEOFFSET
OFFSET_H =
KERNEL_AUX_COBJS = kernel_chk.o
else
OFFSET_H = offset.h
KERNEL_AUX_COBJS = makeoffset.o kernel_chk.o
endif
#
# 僆僽僕僃僋僩僼傽僀儖柤偺掕媊
#
OBJNAME = jsp
ifdef OBJEXT
OBJFILE = $(OBJNAME).$(OBJEXT)
else
OBJFILE = $(OBJNAME)
endif
#
# 僞乕僎僢僩僼傽僀儖乮暋悢傪摨帪偵慖戰偟偰偼側傜側偄乯
#
all: $(OBJFILE)
#all: $(OBJNAME).out
#all: $(OBJNAME).bin
#all: $(OBJNAME).srec
#
# 僇乕僱儖偺僐儞僼傿僊儏儗乕僔儑儞僼傽僀儖偺惗惉
#
kernel_cfg.c kernel_id.h kernel_chk.c: $(UTASK_CFG)
$(CC) -E $(INCLUDES) $(CDEFS) -x c-header $(UTASK_CFG) > tmpfile1
$(SRCDIR)/cfg/cfg -s tmpfile1 -c -obj -cpu $(CPU) -system $(SYS)
rm -f tmpfile1
##### 埲壓偼曇廤偟側偄偙偲 #####
#
# 娐嫬偵埶懚偡傞僐儞僷僀儖僆僾僔儑儞偺掕媊
#
ifdef DBGENV
CDEFS := $(CDEFS) -D$(DBGENV)
endif
#
# 僇乕僱儖儔僀僽儔儕偵娭楢偡傞掕媊
#
ifdef KERNEL_LIB
MAKE_KERNEL =
LIBKERNEL = $(KERNEL_LIB)/libkernel.a
else
MAKE_KERNEL = libkernel.a
LIBKERNEL = $(MAKE_KERNEL)
endif
#
# 僇乕僱儖偺僼傽僀儖峔惉偺掕媊
#
include $(KERNEL)/Makefile.kernel
#
# $(OBJNAME).chk 偺惗惉婯懃乮惷揑API偺僷儔儊乕僞僠僃僢僋乯
#
$(OBJNAME).chk: kernel_chk.s $(SRCDIR)/utils/gencheck
$(PERL) $(SRCDIR)/utils/gencheck kernel_chk.s > tmpfile2
mv tmpfile2 $(OBJNAME).chk
#
# offset.h 偺惗惉婯懃乮峔憿懱撪偺僆僼僙僢僩抣偺嶼弌乯
#
offset.h: makeoffset.s $(SRCDIR)/utils/genoffset
$(PERL) $(SRCDIR)/utils/genoffset makeoffset.s > tmpfile3
mv tmpfile3 offset.h
#
# 僜乕僗僼傽僀儖偺偁傞僨傿儗僋僩儕偵娭偡傞掕媊
#
vpath %.c $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR)
vpath %.S $(KERNEL_DIR):$(STASK_DIR):$(UTASK_DIR)
#
# 僐儞僷僀儖偺偨傔偺曄悢偺掕媊
#
KERNEL_LIB_OBJS = $(KERNEL_ASMOBJS) $(KERNEL_COBJS) $(KERNEL_LCOBJS)
STASK_OBJS = $(STASK_ASMOBJS) $(STASK_COBJS)
UTASK_OBJS = $(UTASK_ASMOBJS) $(UTASK_COBJS)
TASK_OBJS = $(UTASK_OBJS) $(STASK_OBJS) kernel_cfg.o
ALL_OBJS = $(START_OBJS) $(TASK_OBJS) $(END_OBJS)
ALL_LIBS = $(UTASK_LIBS) $(STASK_LIBS) $(LIBKERNEL) $(LIBS)
ifdef TEXT_START_ADDRESS
LDFLAGS := $(LDFLAGS) -Wl,-Ttext,$(TEXT_START_ADDRESS)
endif
ifdef DATA_START_ADDRESS
LDFLAGS := $(LDFLAGS) -Wl,-Tdata,$(DATA_START_ADDRESS)
endif
ifdef LDSCRIPT
LDFLAGS := $(LDFLAGS) -T $(SRCDIR)/config/$(LDSCRIPT)
endif
#
# 僇乕僱儖儔僀僽儔儕僼傽僀儖偺惗惉
#
libkernel.a: $(OFFSET_H) $(KERNEL_LIB_OBJS)
rm -f libkernel.a
$(AR) -rcs libkernel.a $(KERNEL_LIB_OBJS)
$(RANLIB) libkernel.a
#
# 慡懱偺儕儞僋
#
$(OBJFILE): Makefile.depend $(ALL_OBJS) $(MAKE_KERNEL) $(OBJNAME).chk
$(CC) $(CFLAGS) $(LDFLAGS) -o $(OBJFILE) \
$(START_OBJS) $(TASK_OBJS) $(ALL_LIBS) $(END_OBJS)
$(NM) $(OBJFILE) > $(OBJNAME).syms
$(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
$(SRCDIR)/cfg/chk -m $(OBJNAME).syms,$(OBJNAME).srec \
-obj -cs $(OBJNAME).chk -cpu $(CPU) -system $(SYS)
#
# PARTNER-J 偺偨傔偺僼傽僀儖
#
$(OBJNAME).out: $(OBJFILE)
cp $(OBJFILE) $(OBJNAME).out
#
# 僶僀僫儕僼傽僀儖偺惗惉
#
$(OBJNAME).bin: $(OBJFILE)
$(OBJCOPY) -O binary -S $(OBJFILE) $(OBJNAME).bin
#
# S儗僐乕僪僼傽僀儖偺惗惉
#
$(OBJNAME).srec: $(OBJFILE)
$(OBJCOPY) -O srec -S $(OBJFILE) $(OBJNAME).srec
#
# 僐儞僷僀儖寢壥偺徚嫀
#
clean:
rm -f \#* *~ *.o tmpfile?
rm -f $(MAKE_KERNEL) $(OBJNAME)
rm -f $(OBJNAME).syms $(OBJNAME).srec $(OBJNAME).chk
rm -f $(OBJNAME).exe $(OBJNAME).bin $(OBJNAME).out
rm -f kernel_cfg.c kernel_chk.c kernel_chk.s kernel_id.h kernel_obj.dat
rm -f makeoffset.s offset.h
cleankernel:
rm -rf $(KERNEL_LIB_OBJS)
rm -f makeoffset.s offset.h
cleandep:
rm -f Makefile.depend
realclean: cleandep clean
#
# kernel_cfg.c 偺僐儞僷僀儖儖乕儖偲埶懚娭學嶌惉儖乕儖偺掕媊
#
# kernel_cfg.c 偼丆傾僾儕働乕僔儑儞僾儘僌儔儉梡丆僔僗僥儉僒乕價僗梡丆
# 僇乕僱儖梡偺偡傋偰偺僆僾僔儑儞傪晅偗偰僐儞僷僀儖偡傞丏
#
KERNEL_CFG_CFLAG = $(UTASK_CFLAGS) $(STASK_CFLAGS) $(KERNEL_CFLAGS)
kernel_cfg.o: kernel_cfg.c
$(CC) -c $(CFLAGS) $(KERNEL_CFG_CFLAGS) $<
kernel_cfg.s: kernel_cfg.c
$(CC) -S $(CFLAGS) $(KERNEL_CFG_CFLAGS) $<
kernel_cfg.d: kernel_cfg.c
@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
-O "$(CFLAGS) $(KERNEL_CFG_CFLAGS)" $< >> Makefile.depend
#
# 摿暿側埶懚娭學偺掕媊
#
banner.o: $(filter-out banner.o,$(KERNEL_LIB_OBJS))
#
# 摿庩側埶懚娭學嶌惉儖乕儖偺掕媊
#
kernel_id.d: $(UTASK_CFG)
@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) -X \
-T "kernel_cfg.c kernel_id.h kernel_chk.c" \
-O "$(INCLUDES)" $< >> Makefile.depend
makeoffset.d: makeoffset.c
@$(PERL) $(SRCDIR)/utils/makedep -s -C $(CC) \
-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
kernel_chk.d: kernel_chk.c
@$(PERL) $(SRCDIR)/utils/makedep -s -C $(CC) \
-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
#
# 埶懚娭學僼傽僀儖偺惗惉
#
gendepend:
@echo "Generating Makefile.depend."
ifdef KERNEL_LIB
depend: cleandep kernel_cfg.c gendepend kernel_id.d \
kernel_chk.d $(ALL_OBJS:.o=.d)
else
depend: cleandep $(OFFSET_H) kernel_cfg.c gendepend kernel_id.d \
$(KERNEL_AUX_COBJS:.o=.d) $(KERNEL_ASMOBJS:.o=.d) \
$(KERNEL_COBJS:.o=.d) $(KERNEL_LCSRCS:.c=.d) $(ALL_OBJS:.o=.d)
endif
#
# 埶懚娭學僼傽僀儖傪僀儞僋儖乕僪
#
-include Makefile.depend
#
# 奐敪僣乕儖偺僐儅儞僪柤偺掕媊乮GNU奐敪娐嫬梡乯
#
ifndef TOOL
ifdef TARGET
TARGET_PREFIX = $(TARGET)-
else
TARGET_PREFIX =
endif
CC = $(TARGET_PREFIX)gcc
AS = $(TARGET_PREFIX)as
LD = $(TARGET_PREFIX)ld
AR = $(TARGET_PREFIX)ar
NM = $(TARGET_PREFIX)nm
RANLIB = $(TARGET_PREFIX)ranlib
OBJCOPY = $(TARGET_PREFIX)objcopy
OBJDUMP = $(TARGET_PREFIX)objdump
else
TARGET_PREFIX =
endif
PERL = @(PERL)
#
# 僐儞僷僀儖儖乕儖偺掕媊
#
KERNEL_ALL_COBJS = $(KERNEL_COBJS) $(KERNEL_AUX_COBJS)
$(KERNEL_ALL_COBJS): %.o: %.c
$(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
$(KERNEL_ALL_COBJS:.o=.s): %.s: %.c
$(CC) -S $(CFLAGS) $(KERNEL_CFLAGS) $<
$(KERNEL_LCOBJS): %.o:
$(CC) -D__$(*F) -o $@ -c $(CFLAGS) $(KERNEL_CFLAGS) $<
$(KERNEL_LCOBJS:.o=.s): %.s:
$(CC) -D__$(*F) -o $@ -S $(CFLAGS) $(KERNEL_CFLAGS) $<
$(KERNEL_ASMOBJS): %.o: %.S
$(CC) -c $(CFLAGS) $(KERNEL_CFLAGS) $<
$(STASK_COBJS): %.o: %.c
$(CC) -c $(CFLAGS) $(STASK_CFLAGS) $<
$(STASK_COBJS:.o=.s): %.s: %.c
$(CC) -S $(CFLAGS) $(STASK_CFLAGS) $<
$(STASK_ASMOBJS): %.o: %.S
$(CC) -c $(CFLAGS) $(STASK_CFLAGS) $<
$(UTASK_COBJS): %.o: %.c
$(CC) -c $(CFLAGS) $(UTASK_CFLAGS) $<
$(UTASK_COBJS:.o=.s): %.s: %.c
$(CC) -S $(CFLAGS) $(UTASK_CFLAGS) $<
$(UTASK_ASMOBJS): %.o: %.S
$(CC) -c $(CFLAGS) $(UTASK_CFLAGS) $<
#
# 埶懚娭學嶌惉儖乕儖偺掕媊
#
$(KERNEL_COBJS:.o=.d): %.d: %.c
@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
$(KERNEL_LCSRCS:.c=.d): %.d: %.c
@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) -T "$($*)" \
-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
$(KERNEL_LCOBJS:.o=.d): %.d:
@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) -T $*.o \
-O "-D__$(*F) $(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
$(KERNEL_ASMOBJS:.o=.d): %.d: %.S
@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
-O "$(CFLAGS) $(KERNEL_CFLAGS)" $< >> Makefile.depend
$(STASK_COBJS:.o=.d): %.d: %.c
@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
-O "$(CFLAGS) $(STASK_CFLAGS)" $< >> Makefile.depend
$(STASK_ASMOBJS:.o=.d): %.d: %.S
@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
-O "$(CFLAGS) $(STASK_CFLAGS)" $< >> Makefile.depend
$(UTASK_COBJS:.o=.d): %.d: %.c
@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
-O "$(CFLAGS) $(UTASK_CFLAGS)" $< >> Makefile.depend
$(UTASK_ASMOBJS:.o=.d): %.d: %.S
@$(PERL) $(SRCDIR)/utils/makedep -C $(CC) \
-O "$(CFLAGS) $(UTASK_CFLAGS)" $< >> Makefile.depend
#
# 僨僼僅儖僩僐儞僷僀儖儖乕儖傪忋彂偒
#
%.o: %.c
@echo "*** Default compile rules should not be used."
$(CC) -c $(CFLAGS) $<
%.s: %.c
@echo "*** Default compile rules should not be used."
$(CC) -S $(CFLAGS) $<
%.o: %.S
@echo "*** Default compile rules should not be used."
$(CC) -c $(CFLAGS) $<
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -