llvm-mirror/utils/mkpatch
Reid Spencer ad67732a72 Fix this tool for use on Darwin which requires the file to come after the
commands. Linux is more forgiving.

Patch by Gordon Henriksen. Thanks, Gordon!

llvm-svn: 33285
2007-01-17 03:38:22 +00:00

38 lines
1.2 KiB
Bash
Executable File

#!/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 -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"