git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 15/16] msvc-build: add complete Microsoft Visual C compilation script

From
Philip Oakley <philipoakley@iee.org>
Date
Jul 19, 2015, 20:08 UTC
Message-ID
<1437336497-4072-17-git-send-email-philipoakley@iee.org>
In-Reply-To
<1437336497-4072-1-git-send-email-philipoakley@iee.org>

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 <philipoakley@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

-- 
-- 
*** Please reply-to-all at all times ***
*** (do not pretend to know who is subscribed and who is not) ***
*** Please avoid top-posting. ***
The msysGit Wiki is here: https://github.com/msysgit/msysgit/wiki - Github accounts are free.

You received this message because you are subscribed to the Google
Groups "msysGit" group.
To post to this group, send email to msysgit@googlegroups.com
To unsubscribe from this group, send email to
msysgit+unsubscribe@googlegroups.com
For more options, and view previous threads, visit this group at
http://groups.google.com/group/msysgit?hl=en_US?hl=en

--- 
You received this message because you are subscribed to the Google Groups "Git for Windows" group.
To unsubscribe from this group and stop receiving emails from it, send an email to msysgit+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Previous: Philip OakleyNext: Philip Oakley
Message 25 of 26 in “Make the msvc-build scripts work again”
  1. 00/16 Make the msvc-build scripts work againPhilip Oakley, Jul 19, 2015
  2. 01/16 perl/Makefile: treat a missing PM.stamp as if emptyPhilip Oakley, Jul 19, 2015
  3. 02/16 .gitignore: improve MSVC ignore patternsPhilip Oakley, Jul 19, 2015
  4. 03/16 .gitignore: ignore library directories created by MSVC VS2008 buildsystemPhilip Oakley, Jul 19, 2015
  5. 04/16 (msvc-build) Vcproj.pm: remove duplicate GUIDPhilip Oakley, Jul 19, 2015
  6. 05/16 engine.pl: fix error message (lib->link)Philip Oakley, Jul 19, 2015
  7. 06/16 engine.pl: Properly accept quoted spaces in filenamesPhilip Oakley, Jul 19, 2015
  8. 07/16 engine.pl: Fix i18n -o option in msvc buildsystem generatorPhilip Oakley, Jul 19, 2015
  9. 08/16 engine.pl: ignore invalidcontinue.obj which is known to MSVCPhilip Oakley, Jul 19, 2015
  10. Eric SunshineJul 20, 2015
  11. Philip OakleyJul 20, 2015
  12. 09/16 engine.pl: name the msvc buildsystem's makedry error filePhilip Oakley, Jul 19, 2015
  13. 10/16 engine.pl: delete the captured stderr file if emptyPhilip Oakley, Jul 19, 2015
  14. Eric SunshineJul 20, 2015
  15. Philip OakleyJul 20, 2015
  16. Eric SunshineJul 20, 2015
  17. Philip OakleyJul 20, 2015
  18. Eric SunshineJul 20, 2015
  19. 11/16 engine.pl: add debug line to capture the dry-runPhilip Oakley, Jul 19, 2015
  20. 12/16 engine.pl: provide more debug print statementsPhilip Oakley, Jul 19, 2015
  21. 13/16 Vcproj.pm: list git.exe first to be startup projectPhilip Oakley, Jul 19, 2015
  22. 14/16 vcbuild/readme: Improve layout and reference msvc-build scriptPhilip Oakley, Jul 19, 2015
  23. Philip OakleyJul 19, 2015
  24. 14/16 vcbuild/readme: Improve layoutPhilip Oakley, Jul 19, 2015
  25. 15/16 msvc-build: add complete Microsoft Visual C compilation scriptPhilip Oakley, Jul 19, 2015
  26. 16/16 config.mak.uname: add MSVC No_SafeExeceptionHandler optionPhilip Oakley, Jul 19, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.