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) on Msysgit
https://github.com/msysgit/msysgit/commit/3142da4038 and subsequent
development.

The --gui clean now also removes the VS2010 .sdf file, and the
vcs-svn_lib & xdiff_lib directories.

The script is made executable in line with $msysgit/cb9836b8a
(Mark scripts and binaries in /bin/ as executable, 2012-06-26)

Signed-off-by: Philip Oakley <philipoak...@iee.org>
---

TODO:
resolve any further cleaning of newer VS2010... build products.
---
 compat/vcbuild/README             |  2 +
 compat/vcbuild/scripts/msvc-build | 86 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 88 insertions(+)
 create mode 100755 compat/vcbuild/scripts/msvc-build

diff --git a/compat/vcbuild/README b/compat/vcbuild/README
index ad8633e..faaea69 100644
--- a/compat/vcbuild/README
+++ b/compat/vcbuild/README
@@ -57,3 +57,5 @@ The Steps of Build Git with VS2008
    Git, which you set up in step 1.
 
 Done!
+
+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 100755
index 0000000..d67203b
--- /dev/null
+++ b/compat/vcbuild/scripts/msvc-build
@@ -0,0 +1,86 @@
+#!/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 git.sdf libgit vcs-svn_lib xdiff_lib
+               # remove any other new VS2010... stuff as well: rm -rf  ?
+               ;;
+       '')
+               make clean
+               ;;
+       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.4.2.windows.1.5.gd32afb6

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to