|  | #!/bin/bash | 
|  | # | 
|  | # This script makes a patch for LLVM ensuring the correct diff options and | 
|  | # putting the files in a standard review order. | 
|  |  | 
|  |  | 
|  | function error { | 
|  | retcode="$?" | 
|  | echo "mkpatch: error: $1 ($retcode)" | 
|  | exit 1 | 
|  | } | 
|  |  | 
|  | if [ ! -e llvm.spec.in ] ; then | 
|  | error "Please change directory to the LLVM top source directory" | 
|  | fi | 
|  | if [ "$#" -ne 1 ] ; then | 
|  | error "usage: utils/mkpatch [PATCH_NAME]" | 
|  | fi | 
|  | NAME="$1" | 
|  | echo "mkpatch: Generating differences on top level files" | 
|  | cvs diff -l -Ntdup -5 . > "$NAME".patch.raw 2>&1 | 
|  | echo "mkpatch: Generating differences on all directories" | 
|  | cvs diff -Ntdup -5 >> "$NAME".patch.raw 2>&1 \ | 
|  | autoconf docs utils include lib/System lib/Support lib/VMCore lib/AsmParser \ | 
|  | lib/Bytecode lib/Analysis lib/Transforms lib/CodeGen lib/Target \ | 
|  | lib/ExecutionEngine lib/Debugger lib/Linker \ | 
|  | tools test runtime projects examples win32 Xcode | 
|  |  | 
|  | echo "mkpatch: Removing cruft from the patch file" | 
|  | sed "$NAME".patch.raw -e '/^[?] .*/d' -e '/^cvs diff: Diffing/d' | awk '\ | 
|  | BEGIN { deleting = 0; } \ | 
|  | /^Index: .*[.]cvs$/ { deleting = 1; } \ | 
|  | /^Index:.*/ && !/^Index: .*[.]cvs$/ { deleting = 0; } \ | 
|  | { if (! deleting) { print; } } \ | 
|  | '  > "$NAME".patch  || error "sed/awk cleanup failed" | 
|  |  |