| #!/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" |
| svn diff -N -x -u -N * > "$NAME".patch.raw 2>&1 |
| echo "mkpatch: Generating differences on all directories" |
| svn diff -x -u >> "$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 -e '/^[?] .*/d' -e '/^cvs diff: Diffing/d' "$NAME".patch.raw | awk '\ |
| BEGIN { deleting = 0; } \ |
| /^Index: .*[.]cvs$/ { deleting = 1; fname=substr($0,7); \ |
| print "Skipping: ", fname > "/dev/stderr"; } \ |
| /^Index:.*/ && !/^Index: .*[.]cvs$/ { deleting = 0; } \ |
| { if (! deleting) { print; } } ' > "$NAME".patch || \ |
| error "sed/awk cleanup failed" |
| |