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 13test ! -r $2/Makefile -o -O $2/Makefile || exit 0 14# Only overwrite automatically generated Makefiles 15# (so we do not overwrite kernel Makefile) 16if test -e $2/Makefile && ! grep -q Automatically $2/Makefile 17then 18 exit 0 19fi 20if [ "${quiet}" != "silent_" ]; then 21 echo " GEN $2/Makefile" 22fi 23 24cat << EOF > $2/Makefile 25# Automatically generated by $0: don't edit 26 27VERSION = $3 28PATCHLEVEL = $4 29 30lastword = \$(word \$(words \$(1)),\$(1)) 31makedir := \$(dir \$(call lastword,\$(MAKEFILE_LIST))) 32 33ifeq ("\$(origin V)", "command line") 34VERBOSE := \$(V) 35endif 36ifneq (\$(VERBOSE),1) 37Q := @ 38endif 39 40MAKEARGS := -C $1 41MAKEARGS += O=\$(if \$(patsubst /%,,\$(makedir)),\$(CURDIR)/)\$(patsubst %/,%,\$(makedir)) 42 43MAKEFLAGS += --no-print-directory 44 45.PHONY: all \$(MAKECMDGOALS) 46 47all := \$(filter-out all Makefile,\$(MAKECMDGOALS)) 48 49all: 50 \$(Q)\$(MAKE) \$(MAKEARGS) \$(all) 51 52Makefile:; 53 54\$(all): all 55 @: 56 57%/: all 58 @: 59EOF 60