diff --git a/utils/mkpatch b/utils/mkpatch new file mode 100755 index 00000000000..3daa604db3b --- /dev/null +++ b/utils/mkpatch @@ -0,0 +1,36 @@ +#!/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" +