Implement the README to facilitate cross community development. Include comments for those Windows folks not yet fully familiar with bash commands. This is identical to the msysgit script, except for the 'cd toplevel' step, and comments for the edification of converts from Windows. Original author: Johannes Schindelin (2011-11-01 3142da4 : Add a script to make the MSVC build more convenient). Signed-off-by: Philip Oakley <philipoakley@xxxxxxx> --- TODO: Also resolve the cleaning of newer VS2010 products. --- compat/vcbuild/README | 2 +- compat/vcbuild/scripts/msvc-build | 89 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 compat/vcbuild/scripts/msvc-build diff --git a/compat/vcbuild/README b/compat/vcbuild/README index 7548dc4..faaea69 100644 --- a/compat/vcbuild/README +++ b/compat/vcbuild/README @@ -58,4 +58,4 @@ The Steps of Build Git with VS2008 Done! -Or, use the Msysgit msvc-build script; available from that project. +Or, use the msvc-build script; available from /compat/vcbuild/scripts/. diff --git a/compat/vcbuild/scripts/msvc-build b/compat/vcbuild/scripts/msvc-build new file mode 100644 index 0000000..52b925d --- /dev/null +++ b/compat/vcbuild/scripts/msvc-build @@ -0,0 +1,89 @@ +#!/bin/sh + +# This msvc-build command should be executed from the msysgit directory level +# This is so that the 'cd/git' step works and the subequent operations have the right msysgit super directory. +set -e # Exit immediately if a command exits with a nonzero exit status. + +gui= +clean= +while test $# -gt 0 +do + case "$1" in + --gui|--dev|--devenv|--vs|--visual-studio) + gui=t + ;; + clean) + clean=t + ;; + *) + echo "Usage: $0 [--vs] [clean]" >&2 + exit 1 + ;; + esac + shift +done + +cd $(git rev-parse --show-toplevel) + +case "$clean" in +t) + case "$gui" in + t) + rm -rf git.sln libgit + # remove all the new VS2010 stuff as well + # rm -rf git.sdf + ;; + '') + make clean + # surely needs "make clean MSVC=1" + # otherwise it could assume the wrong make products [MinGW vs Windows]. + ;; + esac + exit + ;; +esac + +to_ignore="$(git ls-files --other --exclude-standard msvcgit msvc-build.cmd)" +test -z "$to_ignore" || { + mkdir -p .git/info && + echo "$to_ignore" | + sed 's/^/\//' >> .git/info/exclude +} || exit + +test -d msvcgit || git clone git://repo.or.cz/msvcgit.git + +vsvars= +# assume cl.exe will populate its relevant environment variables +# if cl.exe does not exist, populate vsvars with the most recent Visual Studio path +type cl.exe 2> /dev/null || +vsvars="$(ls -t \ + "$PROGRAMFILES/Microsoft Visual Studio"*/Common7/Tools/vsvars32.bat | + head -n 1)" + + +config_mak= +# if a config.mak file (dot, not underscore) exists, back it up, +# remember the backup file name in config_mak. +test -f config.mak && +config_mak=config.mak.bup.$$ && +mv config.mak $config_mak + +cat > config.mak << EOF +CFLAGS += -Imsvcgit/32bits/include +LDFLAGS += -Lmsvcgit/32bits/lib +EOF + +echo "call \"$vsvars\"" > msvc-build.cmd +if test -z "$gui" +then + echo 'make MSVC=1' >> msvc-build.cmd +else + echo 'perl contrib/buildsystems/generate -g Vcproj' >> msvc-build.cmd + echo 'start git.sln' >> msvc-build.cmd +fi + +cmd /c msvc-build.cmd + +# if we made a backup file (name in config_mak), then restore it. +test -z "$config_mak" || +mv $config_mak config.mak -- 2.3.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html