1 #!/bin/sh 2 # Generates a small Makefile used in the root of the output 3 # directory, to allow make to be started from there. 4 # The Makefile also allow for more convinient build of external modules 5 6 # Usage 7 # $1 - Kernel src directory 8 # $2 - Output directory 9 # $3 - version 10 # $4 - patchlevel 11 12 13 test ! -r $2/Makefile -o -O $2/Makefile || exit 0 14 # Only overwrite automatically generated Makefiles 15 # (so we do not overwrite kernel Makefile) 16 if test -e $2/Makefile && ! grep -q Automatically $2/Makefile 17 then 18 exit 0 19 fi 20 if [ "${quiet}" != "silent_" ]; then 21 echo " GEN $2/Makefile" 22 fi 23 24 cat << EOF > $2/Makefile 25 # Automatically generated by $0: don't edit 26 27 VERSION = $3 28 PATCHLEVEL = $4 29 30 lastword = \$(word \$(words \$(1)),\$(1)) 31 makedir := \$(dir \$(call lastword,\$(MAKEFILE_LIST))) 32 33 ifeq ("\$(origin V)", "command line") 34 VERBOSE := \$(V) 35 endif 36 ifneq (\$(VERBOSE),1) 37 Q := @ 38 endif 39 40 MAKEARGS := -C $1 41 MAKEARGS += O=\$(if \$(patsubst /%,,\$(makedir)),\$(CURDIR)/)\$(patsubst %/,%,\$(makedir)) 42 43 MAKEFLAGS += --no-print-directory 44 45 .PHONY: __sub-make \$(MAKECMDGOALS) 46 47 __sub-make: 48 \$(Q)\$(MAKE) \$(MAKEARGS) \$(MAKECMDGOALS) 49 50 \$(filter-out __sub-make, \$(MAKECMDGOALS)): __sub-make 51 @: 52 EOF 53