Skip to content
Snippets Groups Projects
mkmakefile 1.16 KiB
Newer Older
  • Learn to ignore specific revisions
  • #!/bin/sh
    # Generates a small Makefile used in the root of the output
    # directory, to allow make to be started from there.
    # The Makefile also allow for more convinient build of external modules
    
    # Usage
    # $1 - Kernel src directory
    # $2 - Output directory
    # $3 - version
    # $4 - patchlevel
    
    
    test ! -r $2/Makefile -o -O $2/Makefile || exit 0
    # Only overwrite automatically generated Makefiles
    # (so we do not overwrite kernel Makefile)
    if test -e $2/Makefile && ! grep -q Automatically $2/Makefile
    then
    	exit 0
    fi
    if [ "${quiet}" != "silent_" ]; then
    	echo "  GEN     $2/Makefile"
    fi
    
    cat << EOF > $2/Makefile
    # Automatically generated by $0: don't edit
    
    VERSION = $3
    PATCHLEVEL = $4
    
    lastword = \$(word \$(words \$(1)),\$(1))
    makedir := \$(dir \$(call lastword,\$(MAKEFILE_LIST)))
    
    ifeq ("\$(origin V)", "command line")
    VERBOSE := \$(V)
    endif
    ifneq (\$(VERBOSE),1)
    Q := @
    endif
    
    MAKEARGS := -C $1
    MAKEARGS += O=\$(if \$(patsubst /%,,\$(makedir)),\$(CURDIR)/)\$(patsubst %/,%,\$(makedir))
    
    MAKEFLAGS += --no-print-directory
    
    
    .PHONY: __sub-make \$(MAKECMDGOALS)
    
    __sub-make:
    	\$(Q)\$(MAKE) \$(MAKEARGS) \$(MAKECMDGOALS)
    
    \$(filter-out __sub-make, \$(MAKECMDGOALS)): __sub-make