[Author: Bo Shen <[email protected]>
[u-boot: 2014.01-rc1]
u-boot的Makefile中包括以下几个清除命令:unconfig, clean, tidy, clobber, mrproper, distclean。另外,涉及一个backup命令。
下面具体分析每一个清除所做的工作。
1. unconfig
766 unconfig: 767 @rm -f $(obj)include/config.h $(obj)include/config.mk \ 768 $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \ 769 $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep \ 770 $(obj)include/spl-autoconf.mk \ 771 $(obj)include/tpl-autoconf.mkunconfig就是对一些自动生成的文件进行删除。
2. clean
783 clean: 784 @rm -f $(obj)examples/standalone/82559_eeprom \ 785 $(obj)examples/standalone/atmel_df_pow2 \ 786 $(obj)examples/standalone/eepro100_eeprom \ 787 $(obj)examples/standalone/hello_world \ 788 $(obj)examples/standalone/interrupt \ 789 $(obj)examples/standalone/mem_to_mem_idma2intr \ 790 $(obj)examples/standalone/sched \ 791 $(obj)examples/standalone/smc911{11,x}_eeprom \ 792 $(obj)examples/standalone/test_burst \ 793 $(obj)examples/standalone/timer 794 @rm -f $(obj)examples/api/demo{,.bin} 795 @rm -f $(obj)tools/bmp_logo $(obj)tools/easylogo/easylogo \ 796 $(obj)tools/env/{fw_printenv,fw_setenv} \ 797 $(obj)tools/envcrc \ 798 $(obj)tools/gdb/{astest,gdbcont,gdbsend} \ 799 $(obj)tools/gen_eth_addr $(obj)tools/img2srec \ 800 $(obj)tools/mk{env,}image $(obj)tools/mpc86x_clk \ 801 $(obj)tools/mk{$(BOARD),}spl \ 802 $(obj)tools/mxsboot \ 803 $(obj)tools/ncb $(obj)tools/ubsha1 \ 804 $(obj)tools/kernel-doc/docproc \ 805 $(obj)tools/proftool 806 @rm -f $(obj)board/cray/L1/{bootscript.c,bootscript.image} \ 807 $(obj)board/matrix_vision/*/bootscript.img \ 808 $(obj)board/voiceblue/eeprom \ 809 $(obj)u-boot.lds \ 810 $(obj)arch/blackfin/cpu/init.{lds,elf} 811 @rm -f $(obj)include/bmp_logo.h 812 @rm -f $(obj)include/bmp_logo_data.h 813 @rm -f $(obj)lib/asm-offsets.s 814 @rm -f $(obj)include/generated/asm-offsets.h 815 @rm -f $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s 816 @rm -f $(TIMESTAMP_FILE) $(VERSION_FILE) 817 @$(MAKE) -s -C doc/DocBook/ cleandocs 818 @find $(OBJTREE) -type f \ 819 \( -name 'core' -o -name '*.bak' -o -name '*~' -o -name '*.su' \ 820 -o -name '*.o' -o -name '*.a' -o -name '*.exe' \ 821 -o -name '*.cfgtmp' \) -print \ 822 | xargs rm -f
818~822: The find "-print"参数:man find后可查找到对此的解释如下:
--->8---
print the full file name on the standard output, followed by a newline. If you are piping the output of find into another program and there is the faintest possibility that the files which you are searching for might contain a newline, then you should seriously consider using the "-print0" option instead of "-print".
---8<---
3. tidy
825 tidy: clean 826 find $(OBJTREE) -type f \( -name '*.depend*' \) -print | xargs rm -f
tidy在clean的基础上,对depend文件进行删除。
4. clobber
828 clobber: tidy 829 @find $(OBJTREE) -type f \( -name '*.srec' \ 830 -o -name '*.bin' -o -name u-boot.img \) \ 831 -print0 | xargs -0 rm -f 832 @rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS \ 833 $(obj)cscope.* $(obj)*.*~ 834 @rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL-y) 835 @rm -f $(obj)u-boot.kwb 836 @rm -f $(obj)u-boot.pbl 837 @rm -f $(obj)u-boot.imx 838 @rm -f $(obj)u-boot-with-spl.imx 839 @rm -f $(obj)u-boot-with-nand-spl.imx 840 @rm -f $(obj)u-boot.ubl 841 @rm -f $(obj)u-boot.ais 842 @rm -f $(obj)u-boot.dtb 843 @rm -f $(obj)u-boot.sb 844 @rm -f $(obj)u-boot.bd 845 @rm -f $(obj)u-boot.spr 846 @rm -f $(obj)nand_spl/{u-boot.{lds,lst},System.map} 847 @rm -f $(obj)nand_spl/{u-boot-nand_spl.lds,u-boot-spl,u-boot-spl.map} 848 @rm -f $(obj)spl/{u-boot-spl,u-boot-spl.bin,u-boot-spl.map} 849 @rm -f $(obj)spl/u-boot-spl.lds 850 @rm -f $(obj)tpl/{u-boot-tpl,u-boot-tpl.bin,u-boot-tpl.map} 851 @rm -f $(obj)tpl/u-boot-spl.lds 852 @rm -f $(obj)MLO MLO.byteswap 853 @rm -f $(obj)SPL 854 @rm -f $(obj)tools/xway-swap-bytes 855 @rm -fr $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm 856 @rm -fr $(obj)include/generated 857 @[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l -print | xargs rm -f 858 @rm -f $(obj)dts/*.tmp 859 @rm -f $(obj)spl/u-boot-spl{,-pad}.aisclobber在tidy的基础上更进一步的进行删除操作。
829~831: The find "-print0"参数:man find后可查找到对此的解释如下:
--->8---
print the full file name on the standard output, followed by a null character (instead of the newline character that "-print" uses). This allows file names that contain newlines or other types of white space to be correctly interpreted by programs that process the find output. This option corresponds to the -0 option of xargs.
---8<---
5. mrproper/distclean
861 mrproper \ 862 distclean: clobber unconfig 863 ifneq ($(OBJTREE),$(SRCTREE)) 864 rm -rf $(obj)* 865 endifmrproper与distclean进行的操作是一样的。在clobber与unconfig的基础上,看是否需要将obj目录删除。
6. backup.
867 backup: 868 F=`basename $(TOPDIR)` ; cd .. ; \ 869 gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
将源代码打成一个gzip的tar包。
gtar命令可能没有:workaround --> ln -s /bin/tar /bin/gtar