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

📄 rules.make

📁 使用Linux ARM GCC编译器来编译
💻 MAKE
字号:
## This file contains rules which are shared between multiple Makefiles.### False targets.#.PHONY: dummy## Special variables which should not be exported#unexport EXTRA_AFLAGSunexport EXTRA_CFLAGSunexport EXTRA_LDFLAGSunexport EXTRA_ARFLAGSunexport SUBDIRSunexport SUB_DIRSunexport ALL_SUB_DIRSunexport MOD_SUB_DIRSunexport O_TARGETunexport ALL_MOBJSunexport obj-yunexport obj-munexport obj-nunexport obj-unexport export-objsunexport subdir-yunexport subdir-munexport subdir-nunexport subdir-## Get things started.#first_rule: sub_dirs	$(MAKE) all_targetsboth-m          := $(filter $(mod-subdirs), $(subdir-y))SUB_DIRS	:= $(subdir-y)MOD_SUB_DIRS	:= $(sort $(subdir-m) $(both-m))ALL_SUB_DIRS	:= $(sort $(subdir-y) $(subdir-m) $(subdir-n) $(subdir-))## Common rules#%.s: %.c	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -S $< -o $@%.i: %.c	$(CPP) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) $< > $@%.o: %.c	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -c -o $@ $<	@ ( \	    echo 'ifeq ($(strip $(subst $(comma),:,$(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@))),$$(strip $$(subst $$(comma),:,$$(CFLAGS) $$(EXTRA_CFLAGS) $$(CFLAGS_$@))))' ; \	    echo 'FILES_FLAGS_UP_TO_DATE += $@' ; \	    echo 'endif' \	) > $(dir $@)/.$(notdir $@).flags%.o: %.s	$(AS) $(AFLAGS) $(EXTRA_CFLAGS) -o $@ $<%.s: %.S	$(CPP) $(AFLAGS) $(EXTRA_AFLAGS) $(AFLAGS_$@) $< > $@%.o: %.S	$(CC) $(AFLAGS) $(EXTRA_AFLAGS) $(AFLAGS_$@) -c -o $@ $<%.lst: %.c	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -g -c -o $*.o $<	$(TOPDIR)/scripts/makelst $* $(TOPDIR) $(OBJDUMP)###all_targets: $(O_TARGET) $(L_TARGET)## Rule to compile a set of .o files into one .o file#ifdef O_TARGET$(O_TARGET): $(obj-y)	rm -f $@    ifneq "$(strip $(obj-y))" ""	$(LD) $(EXTRA_LDFLAGS) -r -o $@ $(filter $(obj-y), $^)    else	$(AR) rcs $@    endif	@ ( \	    echo 'ifeq ($(strip $(subst $(comma),:,$(EXTRA_LDFLAGS) $(obj-y))),$$(strip $$(subst $$(comma),:,$$(EXTRA_LDFLAGS) $$(obj-y))))' ; \	    echo 'FILES_FLAGS_UP_TO_DATE += $@' ; \	    echo 'endif' \	) > $(dir $@)/.$(notdir $@).flagsendif # O_TARGET## Rule to compile a set of .o files into one .a file#ifdef L_TARGET$(L_TARGET): $(obj-y)	rm -f $@	$(AR) $(EXTRA_ARFLAGS) rcs $@ $(obj-y)	@ ( \	    echo 'ifeq ($(strip $(subst $(comma),:,$(EXTRA_ARFLAGS) $(obj-y))),$$(strip $$(subst $$(comma),:,$$(EXTRA_ARFLAGS) $$(obj-y))))' ; \	    echo 'FILES_FLAGS_UP_TO_DATE += $@' ; \	    echo 'endif' \	) > $(dir $@)/.$(notdir $@).flagsendif## This make dependencies quickly#fastdep: dummy	$(TOPDIR)/scripts/mkdep $(CFLAGS) $(EXTRA_CFLAGS) -- $(wildcard *.[chS]) > .dependifdef ALL_SUB_DIRS	$(MAKE) $(patsubst %,_sfdep_%,$(ALL_SUB_DIRS)) _FASTDEP_ALL_SUB_DIRS="$(ALL_SUB_DIRS)"endififdef _FASTDEP_ALL_SUB_DIRS$(patsubst %,_sfdep_%,$(_FASTDEP_ALL_SUB_DIRS)):	$(MAKE) -C $(patsubst _sfdep_%,%,$@) fastdependif	## A rule to make subdirectories#subdir-list = $(sort $(patsubst %,_subdir_%,$(SUB_DIRS)))sub_dirs: dummy $(subdir-list)ifdef SUB_DIRS$(subdir-list) : dummy	$(MAKE) -C $(patsubst _subdir_%,%,$@)endif## A rule to make modules#ALL_MOBJS = $(filter-out $(obj-y), $(obj-m))ifneq "$(strip $(ALL_MOBJS))" ""MOD_DESTDIR := $(shell $(CONFIG_SHELL) $(TOPDIR)/scripts/pathdown.sh)endifunexport MOD_DIRSMOD_DIRS := $(MOD_SUB_DIRS) $(MOD_IN_SUB_DIRS)ifneq "$(strip $(MOD_DIRS))" "".PHONY: $(patsubst %,_modsubdir_%,$(MOD_DIRS))$(patsubst %,_modsubdir_%,$(MOD_DIRS)) : dummy	$(MAKE) -C $(patsubst _modsubdir_%,%,$@) modules.PHONY: $(patsubst %,_modinst_%,$(MOD_DIRS))$(patsubst %,_modinst_%,$(MOD_DIRS)) : dummy	$(MAKE) -C $(patsubst _modinst_%,%,$@) modules_installendif.PHONY: modulesmodules: $(ALL_MOBJS) dummy \	 $(patsubst %,_modsubdir_%,$(MOD_DIRS)).PHONY: _modinst___modinst__: dummyifneq "$(strip $(ALL_MOBJS))" ""	mkdir -p $(MODLIB)/kernel/$(MOD_DESTDIR)	cp $(ALL_MOBJS) $(MODLIB)/kernel/$(MOD_DESTDIR)$(MOD_TARGET)endif.PHONY: modules_installmodules_install: _modinst__ \	 $(patsubst %,_modinst_%,$(MOD_DIRS))## A rule to do nothing#dummy:## This is useful for testing#script:	$(SCRIPT)## This sets version suffixes on exported symbols# Separate the object into "normal" objects and "exporting" objects# Exporting objects are: all objects that define symbol tables#ifdef CONFIG_MODULESmulti-used	:= $(filter $(list-multi), $(obj-y) $(obj-m))multi-objs	:= $(foreach m, $(multi-used), $($(basename $(m))-objs))active-objs	:= $(sort $(multi-objs) $(obj-y) $(obj-m))ifdef CONFIG_MODVERSIONSifneq "$(strip $(export-objs))" ""MODINCL = $(TOPDIR)/include/linux/modules# The -w option (enable warnings) for genksyms will return here in 2.1# So where has it gone?## Added the SMP separator to stop module accidents between uniprocessor# and SMP Intel boxes - AC - from bits by Michael Chastain#ifdef CONFIG_SMP	genksyms_smp_prefix := -p smp_else	genksyms_smp_prefix := endif$(MODINCL)/%.ver: %.c	@if [ ! -r $(MODINCL)/$*.stamp -o $(MODINCL)/$*.stamp -ot $< ]; then \		echo '$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -E -D__GENKSYMS__ $<'; \		echo '| $(GENKSYMS) $(genksyms_smp_prefix) -k $(VERSION).$(PATCHLEVEL).$(SUBLEVEL) > $@.tmp'; \		$(CC) $(CFLAGS) $(EXTRA_CFLAGS) -E -D__GENKSYMS__ $< \		| $(GENKSYMS) $(genksyms_smp_prefix) -k $(VERSION).$(PATCHLEVEL).$(SUBLEVEL) > $@.tmp; \		if [ -r $@ ] && cmp -s $@ $@.tmp; then echo $@ is unchanged; rm -f $@.tmp; \		else echo mv $@.tmp $@; mv -f $@.tmp $@; fi; \	fi; touch $(MODINCL)/$*.stamp	$(addprefix $(MODINCL)/,$(export-objs:.o=.ver)): $(TOPDIR)/include/linux/autoconf.h# updates .ver files but not modversions.hfastdep: $(addprefix $(MODINCL)/,$(export-objs:.o=.ver))# updates .ver files and modversions.h like before (is this needed?)dep: fastdep update-modverfileendif # export-objs # update modversions.h, but only if it would changeupdate-modverfile:	@(echo "#ifndef _LINUX_MODVERSIONS_H";\	  echo "#define _LINUX_MODVERSIONS_H"; \	  echo "#include <linux/modsetver.h>"; \	  cd $(TOPDIR)/include/linux/modules; \	  for f in *.ver; do \	    if [ -f $$f ]; then echo "#include <linux/modules/$${f}>"; fi; \	  done; \	  echo "#endif"; \	) > $(TOPDIR)/include/linux/modversions.h.tmp	@if [ -r $(TOPDIR)/include/linux/modversions.h ] && cmp -s $(TOPDIR)/include/linux/modversions.h $(TOPDIR)/include/linux/modversions.h.tmp; then \		echo $(TOPDIR)/include/linux/modversions.h was not updated; \		rm -f $(TOPDIR)/include/linux/modversions.h.tmp; \	else \		echo $(TOPDIR)/include/linux/modversions.h was updated; \		mv -f $(TOPDIR)/include/linux/modversions.h.tmp $(TOPDIR)/include/linux/modversions.h; \	fi$(active-objs): $(TOPDIR)/include/linux/modversions.helse$(TOPDIR)/include/linux/modversions.h:	@echo "#include <linux/modsetver.h>" > $@endif # CONFIG_MODVERSIONSifneq "$(strip $(export-objs))" ""$(export-objs): $(TOPDIR)/include/linux/modversions.h$(export-objs): %.o: %.c	$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -DEXPORT_SYMTAB -c $(@:.o=.c)	@ ( \	    echo 'ifeq ($(strip $(subst $(comma),:,$(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -DEXPORT_SYMTAB)),$$(strip $$(subst $$(comma),:,$$(CFLAGS) $$(EXTRA_CFLAGS) $$(CFLAGS_$@) -DEXPORT_SYMTAB)))' ; \	    echo 'FILES_FLAGS_UP_TO_DATE += $@' ; \	    echo 'endif' \	) > $(dir $@)/.$(notdir $@).flagsendifendif # CONFIG_MODULES## include dependency files if they exist#ifneq ($(wildcard .depend),)include .dependendififneq ($(wildcard $(TOPDIR)/.hdepend),)include $(TOPDIR)/.hdependendif## Find files whose flags have changed and force recompilation.# For safety, this works in the converse direction:#   every file is forced, except those whose flags are positively up-to-date.#FILES_FLAGS_UP_TO_DATE :=# For use in expunging commas from flags, which mung our checking.comma = ,FILES_FLAGS_EXIST := $(wildcard .*.flags)ifneq ($(FILES_FLAGS_EXIST),)include $(FILES_FLAGS_EXIST)endifFILES_FLAGS_CHANGED := $(strip \    $(filter-out $(FILES_FLAGS_UP_TO_DATE), \	$(O_TARGET) $(L_TARGET) $(active-objs) \	))# A kludge: .S files don't get flag dependencies (yet),#   because that will involve changing a lot of Makefiles.  Also#   suppress object files explicitly listed in $(IGNORE_FLAGS_OBJS).#   This allows handling of assembly files that get translated into#   multiple object files (see arch/ia64/lib/idiv.S, for example).FILES_FLAGS_CHANGED := $(strip \    $(filter-out $(patsubst %.S, %.o, $(wildcard *.S) $(IGNORE_FLAGS_OBJS)), \    $(FILES_FLAGS_CHANGED)))ifneq ($(FILES_FLAGS_CHANGED),)$(FILES_FLAGS_CHANGED): dummyendif

⌨️ 快捷键说明

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