linux arm sbus,嵌入式ARM系列linux2.4配置makefile完全注释(2)

#驱动程序选项依赖文件添加处

DRIVERS-n :=

DRIVERS-y :=

DRIVERS-m :=

DRIVERS- :=

DRIVERS-$(CONFIG_ACPI_BOOT) += drivers/acpi/acpi.o

DRIVERS-$(CONFIG_PARPORT) += drivers/parport/driver.o

DRIVERS-y += drivers/serial/serial.o \

drivers/char/char.o \

drivers/block/block.o \

drivers/misc/misc.o \

drivers/net/net.o

DRIVERS-$(CONFIG_AGP) += drivers/char/agp/agp.o

DRIVERS-$(CONFIG_DRM_NEW) += drivers/char/drm/drm.o

DRIVERS-$(CONFIG_DRM_OLD) += drivers/char/drm-4.0/drm.o

DRIVERS-$(CONFIG_NUBUS) += drivers/nubus/nubus.a

DRIVERS-$(CONFIG_NET_FC) += drivers/net/fc/fc.o

DRIVERS-$(CONFIG_DEV_APPLETALK) +=

drivers/net/appletalk/appletalk.o

DRIVERS-$(CONFIG_TR) += drivers/net/tokenring/tr.o

DRIVERS-$(CONFIG_WAN) += drivers/net/wan/wan.o

DRIVERS-$(CONFIG_ARCNET) += drivers/net/arcnet/arcnetdrv.o

DRIVERS-$(CONFIG_ATM) += drivers/atm/atm.o

DRIVERS-$(CONFIG_IDE) += drivers/ide/idedriver.o

DRIVERS-$(CONFIG_FC4) += drivers/fc4/fc4.a

DRIVERS-$(CONFIG_SCSI) += drivers/scsi/scsidrv.o

DRIVERS-$(CONFIG_FUSION_BOOT) +=

drivers/message/fusion/fusion.o

DRIVERS-$(CONFIG_IEEE1394) += drivers/ieee1394/ieee1394drv.o

ifneq

($(CONFIG_CD_NO_IDESCSI)$(CONFIG_BLK_DEV_IDECD)$(CONFIG_BLK_DEV_SR)$(CONFIG_PARIDE_PCD),)

DRIVERS-y += drivers/cdrom/driver.o

endif

DRIVERS-$(CONFIG_SOUND) += drivers/sound/sounddrivers.o

DRIVERS-$(CONFIG_PCI) += drivers/pci/driver.o

DRIVERS-$(CONFIG_MTD) += drivers/mtd/mtdlink.o

DRIVERS-$(CONFIG_PCMCIA) += drivers/pcmcia/pcmcia.o

DRIVERS-$(CONFIG_NET_PCMCIA) +=

drivers/net/pcmcia/pcmcia_net.o

DRIVERS-$(CONFIG_NET_WIRELESS) +=

drivers/net/wireless/wireless_net.o

DRIVERS-$(CONFIG_PCMCIA_CHRDEV) +=

drivers/char/pcmcia/pcmcia_char.o

DRIVERS-$(CONFIG_DIO) += drivers/dio/dio.a

DRIVERS-$(CONFIG_SBUS) += drivers/sbus/sbus_all.o

DRIVERS-$(CONFIG_ZORRO) += drivers/zorro/driver.o

DRIVERS-$(CONFIG_FC4) += drivers/fc4/fc4.a

DRIVERS-$(CONFIG_PPC32) += drivers/macintosh/macintosh.o

DRIVERS-$(CONFIG_MAC) += drivers/macintosh/macintosh.o

DRIVERS-$(CONFIG_ISAPNP) += drivers/pnp/pnp.o

DRIVERS-$(CONFIG_SGI_IP22) += drivers/sgi/sgi.a

DRIVERS-$(CONFIG_VT) += drivers/video/video.o

DRIVERS-$(CONFIG_PARIDE) += drivers/block/paride/paride.a

DRIVERS-$(CONFIG_HAMRADIO) += drivers/net/hamradio/hamradio.o

DRIVERS-$(CONFIG_TC) += drivers/tc/tc.a

DRIVERS-$(CONFIG_USB) += drivers/usb/usbdrv.o

DRIVERS-$(CONFIG_USB_GADGET) += drivers/usb/gadget/built-in.o

DRIVERS-y +=drivers/media/media.o

DRIVERS-$(CONFIG_INPUT) += drivers/input/inputdrv.o

DRIVERS-$(CONFIG_HIL) += drivers/hil/hil.o

DRIVERS-$(CONFIG_I2O) += drivers/message/i2o/i2o.o

DRIVERS-$(CONFIG_IRDA) += drivers/net/irda/irda.o

DRIVERS-$(CONFIG_I2C) += drivers/i2c/i2c.o

DRIVERS-$(CONFIG_PHONE) += drivers/telephony/telephony.o

DRIVERS-$(CONFIG_MD) += drivers/md/mddev.o

DRIVERS-$(CONFIG_GSC) += drivers/gsc/gscbus.o

DRIVERS-$(CONFIG_BLUEZ) += drivers/bluetooth/bluetooth.o

DRIVERS-$(CONFIG_HOTPLUG_PCI) +=

drivers/hotplug/vmlinux-obj.o

DRIVERS-$(CONFIG_ISDN_BOOL) += drivers/isdn/vmlinux-obj.o

DRIVERS-$(CONFIG_CRYPTO) += crypto/crypto.o

DRIVERS := $(DRIVERS-y)

# files removed with 'make clean'

CLEAN_FILES = \

kernel/ksyms.lst include/linux/compile.h \

$(LINUX) System.map \

.tmp* \

drivers/char/consolemap_deftbl.c

drivers/video/promcon_tbl.c \

drivers/char/conmakehash \

drivers/char/drm\1/'

uts_nodomain := sed -e 's/[.].*$$//'

#新版本建立的第二步

include/linux/compile.h: $(CONFIGURATION) include/linux/version.h

newversion

@echo -n \#`cat .version` >

.ver1

@if [ -n "$(CONFIG_SMP)" ] ; then echo -n " SMP"

>> .ver1; fi

@if [ -f .name ]; then echo -n

\-`cat .name` >> .ver1; fi

@LANG=C echo ' '`date`

>> .ver1

@echo \#define UTS_VERSION \"`cat .ver1 |

$(uts_truncate)`\" > .ver

@LANG=C echo \#define LINUX_COMPILE_TIME \"`date

+%T`\" >> .ver

@echo \#define LINUX_COMPILE_BY \"`whoami`\"

>> .ver

@echo \#define LINUX_COMPILE_HOST \"`hostname |

$(uts_truncate) | $(uts_nodomain)`\"

>> .ver

@([ -x /bin/dnsdomainname ]

&& /bin/dnsdomainname

> .ver1) || \

([ -x /bin/domainname ]

&& /bin/domainname >

.ver1) || \

echo > .ver1

@echo \#define LINUX_COMPILE_DOMAIN \"`cat .ver1

| $(uts_truncate)`\" >> .ver

@echo \#define LINUX_COMPILER \"`$(CC) $(CFLAGS)

-v 2>&1 | tail -n 1`\"

>> .ver

@mv -f .ver $@

@rm -f .ver1

#新版本建立的第三步

include/linux/version.h: ./Makefile

@expr length "$(KERNELRELEASE)"

\<= $(uts_len) > /dev/null || \

(echo KERNELRELEASE

\"$(KERNELRELEASE)\" exceeds $(uts_len) characters

>&2; false)

@echo \#define UTS_RELEASE \"$(KERNELRELEASE)\"

> .ver

@echo \#define LINUX_VERSION_CODE `expr

$(VERSION) \\* 65536 + $(PATCHLEVEL) \\* 256 + $(SUBLEVEL)`

>> .ver

@echo '#define KERNEL_VERSION(a,b,c) (((a)

<< 16) + ((b)

<< 8) + (c))'

>>.ver

@mv -f .ver $@

#

comma := ,

#建立版本目标文件

init/version.o: init/version.c include/linux/compile.h

include/config/MARKER

$(CC) $(CFLAGS) $(CFLAGS_KERNEL)

-DUTS_MACHINE='"$(ARCH)"' -DKBUILD_BASENAME=$(subst

$(comma),_,$(subst -,_,$(*F))) -c -o init/version.o

init/version.c

#生成main.O的规则

init/main.o: init/main.c include/config/MARKER

$(CC) $(CFLAGS) $(CFLAGS_KERNEL) $(PROFILING)

-DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) -c -o $@

$<

#生成do_mounts的规则

init/do_mounts.o: init/do_mounts.c include/config/MARKER

$(CC) $(CFLAGS) $(CFLAGS_KERNEL) $(PROFILING)

-DKBUILD_BASENAME=$(subst $(comma),_,$(subst -,_,$(*F))) -c -o $@

$<

#一起编译fs lib mm ipc kernel drivers net的各自相关make命令:fs lib mm ipc

kernel drivers net

fs lib mm ipc kernel drivers net: dummy

$(MAKE) CFLAGS="$(CFLAGS) $(CFLAGS_KERNEL)"

$(subst $@, _dir_$@, $@)

TAGS: dummy

{ find include/asm-${ARCH} -name '*.h' -print ;

\

find include -type d \( -name "asm-*" -o -name

config \) -prune -o -name '*.h' -print ; \

find $(SUBDIRS) init arch/${ARCH} -name '*.[chS]'

; } | grep -v SCCS | grep -v '\.svn' | etags -

# Exuberant ctags works better with -I

tags: dummy

CTAGSF=`ctags --version | grep -i exuberant

>/dev/null && echo

"-I __initdata,__exitdata,EXPORT_SYMBOL,EXPORT_SYMBOL_NOVERS"`;

\

ctags $$CTAGSF `find include/asm-$(ARCH) -name

'*.h'` && \

find include -type d \( -name "asm-*" -o -name

config \) -prune -o -name '*.h' -print | xargs ctags $$CTAGSF -a

&& \

find $(SUBDIRS) init -name '*.[ch]' | xargs ctags

$$CTAGSF -a

#定义与模块有关的make命令

#第一步

ifdef CONFIG_MODULES

ifdef CONFIG_MODVERSIONS

MODFLAGS += -DMODVERSIONS -include

$(HPATH)/linux/modversions.h

endif

#第二步

.PHONY: modules

modules: $(patsubst %, _mod_%, $(SUBDIRS))

.PHONY: $(patsubst %, _mod_%, $(SUBDIRS))

$(patsubst %, _mod_%, $(SUBDIRS)) : include/linux/version.h

include/config/MARKER

$(MAKE) -C $(patsubst _mod_%, %, $@)

CFLAGS="$(CFLAGS) $(MODFLAGS)" MAKING_MODULES=1 modules

#第三步

.PHONY: modules_install

modules_install: _modinst_ $(patsubst %, _modinst_%, $(SUBDIRS))

_modinst_post

.PHONY: _modinst_

ifeq ($(CONFIG_UCLINUX),y)

_modinst_:

else

_modinst_:

@rm -rf $(MODLIB)/kernel

@rm -f $(MODLIB)/build

@mkdir -p $(MODLIB)/kernel

@ln -s $(TOPDIR) $(MODLIB)/build

endif

# If System.map exists, run depmod. This

deliberately does not have a

# dependency on System.map since that would run the dependency tree

on

# vmlinux. This depmod is only for convenience to

give the initial

# boot a modules.dep even before / is mounted

read-write. However the

# boot script depmod is the master version.

ifeq "$(strip $(INSTALL_MOD_PATH))" ""

depmod_opts :=

else

depmod_opts := -b $(INSTALL_MOD_PATH) -r

endif

.PHONY: _modinst_post

_modinst_post: _modinst_post_pcmcia

if [ -r System.map ]; then $(DEPMOD) -ae -F

System.map $(depmod_opts) $(KERNELRELEASE); fi

# Backwards compatibilty symlinks for people still using old

versions

# of pcmcia-cs with hard coded pathnames on

insmod. Remove

# _modinst_post_pcmcia for kernel 2.4.1.

.PHONY: _modinst_post_pcmcia

_modinst_post_pcmcia:

cd $(MODLIB); \

mkdir -p pcmcia; \

find kernel -path '*/pcmcia/*' -name '*.o' |

xargs -i -r ln -sf ../{} pcmcia

.PHONY: $(patsubst %, _modinst_%, $(SUBDIRS))

$(patsubst %, _modinst_%, $(SUBDIRS)) :

$(MAKE) -C $(patsubst _modinst_%, %, $@)

modules_install

#第四步

# modules disabled....

else

modules modules_install: dummy

@echo

@echo "The present kernel configuration has

modules disabled."

@echo "Type 'make config' and enable loadable

module support."

@echo "Then build a kernel with module support

enabled."

@echo

@exit 1

endif

#关于清楚的make命令:clean 功能删除一些在文件编译中产生文件

clean: archclean

find . \( -name '*.[oas]' -o -name core -o -name

'.*.flags' \) -type f -print \

| grep -v lxdialog/ | xargs rm -f

rm -f $(CLEAN_FILES)

rm -rf $(CLEAN_DIRS)

$(MAKE) -C Documentation/DocBook clean

#关于清楚的make命令:mrproper 比clean更彻底

mrproper: clean archmrproper

find . \( -size 0 -o -name .depend \) -type f

-print | xargs rm -f

rm -f $(MRPROPER_FILES)

rm -rf $(MRPROPER_DIRS)

$(MAKE) -C Documentation/DocBook mrproper

#关于清楚的make命令:distclean 最彻底的清除指令

distclean: mrproper

rm -f core `find . \( -not -type d \) -and

\

\( -name '*.orig' -o -name '*.rej' -o -name '*~'

\

-o -name '*.bak' -o -name '#*#' -o -name

'.*.orig' \

-o -name '.*.rej' -o -name '.SUMS' -o -size 0 \)

-type f -print` TAGS tags

#系统备份的make命令:backup 因为mrproper位清除指令,因此系统备份就 在清除了系统垃圾以后的备份

backup: mrproper

cd .. && tar cf -

linux/ | gzip -9 > backup.gz

sync

sgmldocs:

chmod 755 $(TOPDIR)/scripts/docgen

chmod 755 $(TOPDIR)/scripts/gen-all-syms

chmod 755 $(TOPDIR)/scripts/kernel-doc

$(MAKE) -C $(TOPDIR)/Documentation/DocBook

books

psdocs: sgmldocs

$(MAKE) -C Documentation/DocBook ps

pdfdocs: sgmldocs

$(MAKE) -C Documentation/DocBook pdf

htmldocs: sgmldocs

$(MAKE) -C Documentation/DocBook html

mandocs:

chmod 755 $(TOPDIR)/scripts/kernel-doc

chmod 755 $(TOPDIR)/scripts/split-man

$(MAKE) -C Documentation/DocBook man

#对系统文件信息进行整合的make命令:sums

该指令可以统计uclinux源代码中的所有文件信息,并整合形成.SUM文件

sums:

find . -type f -print | sort | xargs sum

> .SUMS

#建立编译过程必须的文件间的依赖

dep-files: scripts/mkdep archdep include/linux/version.h

rm -f .depend .hdepend

$(MAKE) $(patsubst %,_sfdep_%,$(SUBDIRS))

_FASTDEP_ALL_SUB_DIRS="$(SUBDIRS)"

ifdef CONFIG_MODVERSIONS

$(MAKE) update-modverfile

endif

find $(FINDHPATH) \( -name SCCS -o -name .svn \)

-prune -o -follow -name \*.h ! -name modversions.h -print | xargs

scripts/mkdep -- > .hdepend

scripts/mkdep -- init/*.c >

.depend

#设定模块版本文件

ifdef CONFIG_MODVERSIONS

MODVERFILE := $(TOPDIR)/include/linux/modversions.h

else

MODVERFILE :=

endif

export MODVERFILE

#建立依赖的make命令:depend 和dep

depend dep: dep-files

checkconfig:

find * -name '*.[hcS]' -type f -print | sort |

xargs $(PERL) -w scripts/checkconfig.pl

checkhelp:

find * -name [cC]onfig.in -print | sort | xargs

$(PERL) -w scripts/checkhelp.pl

checkincludes:

find * -name '*.[hcS]' -type f -print | sort |

xargs $(PERL) -w scripts/checkincludes.pl

ifdef CONFIGURATION

..$(CONFIGURATION):

@echo

@echo "You have a bad or nonexistent"

.$(CONFIGURATION) ": running 'make" $(CONFIGURATION)"'"

@echo

$(MAKE) $(CONFIGURATION)

@echo

@echo "Successful. Try re-making (ignore the

error that follows)"

@echo

exit 1

#当系统需要进行系统配置时和dummy的实现

#dummy: ..$(CONFIGURATION)

dummy:

else

dummy:

endif

#执行规则make文件:Rules.make

include Rules.make

#

# This generates dependencies for the .h files.

#

#脚本解析文件

scripts/mkdep: scripts/mkdep.c

$(HOSTCC) $(HOSTCFLAGS) -o scripts/mkdep

scripts/mkdep.c

scripts/split-include: scripts/split-include.c

$(HOSTCC) $(HOSTCFLAGS) -o scripts/split-include

scripts/split-include.c

#

# RPM target

#

# If you do a make spec before packing the tarball you can rpm -ta

it

#

spec:

. scripts/mkspec >kernel.spec

#

# Build a tar ball, generate an rpm from it and pack the

result

# There arw two bits of magic here

# 1) The use of /. to avoid tar packing just the symlink

# 2) Removing the .dep files as they have source paths in them

that

# will become

invalid

#

#程序安装rpm

rpm: clean spec

find . \( -size 0 -o -name .depend -o -name

.hdepend \) -type f -print | xargs rm -f

set -e; \

cd $(TOPDIR)/.. ; \

ln -sf $(TOPDIR) $(KERNELPATH) ; \

tar -cvz --exclude CVS -f $(KERNELPATH).tar.gz

$(KERNELPATH)/. ; \

rm $(KERNELPATH) ; \

cd $(TOPDIR) ; \

. scripts/mkversion > .version ;

\

$(RPM) -ta $(TOPDIR)/../$(KERNELPATH).tar.gz ;

\

rm $(TOPDIR)/../$(KERNELPATH).tar.gz

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值