All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 06/11] Add miss git-compat-util.h at regex.c and fnmatch.c Add git-compat-util.h to enable build at MSVC environment
@ 2009-08-17 16:04 Frank Li
  2009-08-17 16:04 ` [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c Frank Li
                   ` (2 more replies)
  0 siblings, 3 replies; 91+ messages in thread
From: Frank Li @ 2009-08-17 16:04 UTC (permalink / raw)
  To: git, msysgit; +Cc: Johannes.Schindelin, Frank Li

Signed-off-by: Frank Li <lznuaa@gmail.com>
---
 compat/fnmatch/fnmatch.c |    4 ++++
 compat/regex/regex.c     |    4 ++++
 2 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/compat/fnmatch/fnmatch.c b/compat/fnmatch/fnmatch.c
index 14feac7..5cbd49c 100644
--- a/compat/fnmatch/fnmatch.c
+++ b/compat/fnmatch/fnmatch.c
@@ -16,6 +16,10 @@
    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.  */
 
+#ifdef _MSC_VER
+#include "git-compat-util.h"
+#endif
+
 #if HAVE_CONFIG_H
 # include <config.h>
 #endif
diff --git a/compat/regex/regex.c b/compat/regex/regex.c
index 5728de1..2298a3a 100644
--- a/compat/regex/regex.c
+++ b/compat/regex/regex.c
@@ -20,6 +20,10 @@
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
 
 /* AIX requires this to be the first thing in the file. */
+#ifdef _MSC_VER
+#include "git-compat-util.h"
+#endif
+
 #if defined (_AIX) && !defined (REGEX_MALLOC)
   #pragma alloca
 #endif
-- 
1.6.4.msysgit.0

^ permalink raw reply related	[flat|nested] 91+ messages in thread

* [PATCH 07/11] Add  O_BINARY flag to open flag at mingw.c
  2009-08-17 16:04 [PATCH 06/11] Add miss git-compat-util.h at regex.c and fnmatch.c Add git-compat-util.h to enable build at MSVC environment Frank Li
@ 2009-08-17 16:04 ` Frank Li
  2009-08-17 16:04   ` [PATCH 08/11] Place __stdcall to correct position Frank Li
  2009-08-17 16:58   ` [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c Johannes Schindelin
  2009-08-17 16:51 ` [PATCH 06/11] Add miss git-compat-util.h at regex.c and fnmatch.c Add git-compat-util.h to enable build at MSVC environment Johannes Schindelin
  2009-08-17 19:23 ` Johannes Sixt
  2 siblings, 2 replies; 91+ messages in thread
From: Frank Li @ 2009-08-17 16:04 UTC (permalink / raw)
  To: git, msysgit; +Cc: Johannes.Schindelin, Frank Li

Windows will convert CR\LF and union code at text mode.
Git doesn't like this. Add O_BINARY flag to open function

Signed-off-by: Frank Li <lznuaa@gmail.com>
---
 compat/mingw.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/compat/mingw.c b/compat/mingw.c
index 75c74b1..d5fa0ed 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -132,7 +132,7 @@ int mingw_open (const char *filename, int oflags, ...)
 	if (!strcmp(filename, "/dev/null"))
 		filename = "nul";
 
-	fd = open(filename, oflags, mode);
+	fd = open(filename, oflags | O_BINARY, mode);
 
 	if (fd < 0 && (oflags & O_CREAT) && errno == EACCES) {
 		DWORD attrs = GetFileAttributes(filename);
@@ -278,7 +278,7 @@ int mkstemp(char *template)
 	char *filename = mktemp(template);
 	if (filename == NULL)
 		return -1;
-	return open(filename, O_RDWR | O_CREAT, 0600);
+	return open(filename, O_RDWR | O_CREAT | O_BINARY, 0600);
 }
 
 int gettimeofday(struct timeval *tv, void *tz)
-- 
1.6.4.msysgit.0

^ permalink raw reply related	[flat|nested] 91+ messages in thread

* [PATCH 08/11] Place __stdcall to correct position.
  2009-08-17 16:04 ` [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c Frank Li
@ 2009-08-17 16:04   ` Frank Li
  2009-08-17 16:05     ` [PATCH 09/11] Add MSVC porting header files Frank Li
  2009-08-17 17:01     ` [PATCH 08/11] Place __stdcall to correct position Johannes Schindelin
  2009-08-17 16:58   ` [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c Johannes Schindelin
  1 sibling, 2 replies; 91+ messages in thread
From: Frank Li @ 2009-08-17 16:04 UTC (permalink / raw)
  To: git, msysgit; +Cc: Johannes.Schindelin, Frank Li

MSVC require __stdcall is between return value and function name.
ALL Win32 API definition is as TYPE WINAPI function name

Signed-off-by: Frank Li <lznuaa@gmail.com>
---
 compat/mingw.c |    4 ++--
 run-command.c  |    4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/compat/mingw.c b/compat/mingw.c
index d5fa0ed..0c9c793 100644
--- a/compat/mingw.c
+++ b/compat/mingw.c
@@ -1017,7 +1017,7 @@ static sig_handler_t timer_fn = SIG_DFL;
  * length to call the signal handler.
  */
 
-static __stdcall unsigned ticktack(void *dummy)
+static unsigned __stdcall ticktack(void *dummy)
 {
 	while (WaitForSingleObject(timer_event, timer_interval) == WAIT_TIMEOUT) {
 		if (timer_fn == SIG_DFL)
@@ -1146,7 +1146,7 @@ void mingw_open_html(const char *unixpath)
 
 int link(const char *oldpath, const char *newpath)
 {
-	typedef BOOL WINAPI (*T)(const char*, const char*, LPSECURITY_ATTRIBUTES);
+	typedef  BOOL (WINAPI *T)(const char*, const char*, LPSECURITY_ATTRIBUTES);
 	static T create_hard_link = NULL;
 	if (!create_hard_link) {
 		create_hard_link = (T) GetProcAddress(
diff --git a/run-command.c b/run-command.c
index df139da..423b506 100644
--- a/run-command.c
+++ b/run-command.c
@@ -295,12 +295,12 @@ int run_command_v_opt_cd_env(const char **argv, int opt, const char *dir, const
 }
 
 #if defined(__MINGW32__) || defined(_MSC_VER)
-static __stdcall unsigned run_thread(void *data)
+static unsigned __stdcall run_thread(void *data)
 {
 	struct async *async = data;
 	return async->proc(async->fd_for_proc, async->data);
 }
-#endif
+#endif /* __MINGW32__ || _MSC_VER */
 
 int start_async(struct async *async)
 {
-- 
1.6.4.msysgit.0

^ permalink raw reply related	[flat|nested] 91+ messages in thread

* [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 16:04   ` [PATCH 08/11] Place __stdcall to correct position Frank Li
@ 2009-08-17 16:05     ` Frank Li
  2009-08-17 16:05       ` [PATCH 10/11] Add MSVC Project file Frank Li
                         ` (2 more replies)
  2009-08-17 17:01     ` [PATCH 08/11] Place __stdcall to correct position Johannes Schindelin
  1 sibling, 3 replies; 91+ messages in thread
From: Frank Li @ 2009-08-17 16:05 UTC (permalink / raw)
  To: git, msysgit; +Cc: Johannes.Schindelin, Frank Li

Add unix head file, dirent.h, unistd.h  and time.h
Add MSVC special porting head file msvc.h and msvc.c.

Signed-off-by: Frank Li <lznuaa@gmail.com>
---
 compat/msvc.c                   |   33 ++++++++++
 compat/msvc.h                   |   95 +++++++++++++++++++++++++++++
 compat/vcbuild/include/dirent.h |  127 +++++++++++++++++++++++++++++++++++++++
 compat/vcbuild/include/unistd.h |   92 ++++++++++++++++++++++++++++
 compat/vcbuild/sys/time.h       |   21 +++++++
 git-compat-util.h               |   12 ++++-
 6 files changed, 379 insertions(+), 1 deletions(-)
 create mode 100644 compat/msvc.c
 create mode 100644 compat/msvc.h
 create mode 100644 compat/vcbuild/include/dirent.h
 create mode 100644 compat/vcbuild/include/unistd.h
 create mode 100644 compat/vcbuild/sys/time.h

diff --git a/compat/msvc.c b/compat/msvc.c
new file mode 100644
index 0000000..80afd4d
--- /dev/null
+++ b/compat/msvc.c
@@ -0,0 +1,33 @@
+#include "../git-compat-util.h"
+#include "win32.h"
+#include <conio.h>
+#include "../strbuf.h"
+
+DIR *opendir(const char *name)
+{
+	int len;
+	DIR *p;
+	p = (DIR*)malloc(sizeof(DIR));
+	memset(p, 0, sizeof(DIR));
+	strncpy(p->dd_name, name, PATH_MAX);
+	len = strlen(p->dd_name);
+	p->dd_name[len] = '/';
+	p->dd_name[len+1] = '*';
+
+	if (p == NULL)
+		return NULL;
+
+	p->dd_handle = _findfirst(p->dd_name, &p->dd_dta);
+
+	if (p->dd_handle == -1) {
+		free(p);
+		return NULL;
+	}
+	return p;
+}
+int closedir(DIR *dir)
+{
+	_findclose(dir->dd_handle);
+	free(dir);
+	return 0;
+}
diff --git a/compat/msvc.h b/compat/msvc.h
new file mode 100644
index 0000000..6071565
--- /dev/null
+++ b/compat/msvc.h
@@ -0,0 +1,95 @@
+#ifndef __MSVC__HEAD
+#define __MSVC__HEAD
+
+#define WINVER 0x0500
+#define _WIN32_WINNT 0x0500
+#define _WIN32_WINDOWS 0x0410
+#define _WIN32_IE 0x0700
+#define NTDDI_VERSION NTDDI_WIN2KSP1
+#include <winsock2.h>
+
+/*Configuration*/
+
+#define NO_PREAD
+#define NO_OPENSSL
+#define NO_LIBGEN_H
+#define NO_SYMLINK_HEAD
+#define NO_IPV6
+#define NO_SETENV
+#define NO_UNSETENV
+#define NO_STRCASESTR
+#define NO_STRLCPY
+#define NO_MEMMEM
+#define NO_C99_FORMAT
+#define NO_STRTOUMAX
+#define NO_MKDTEMP
+#define NO_MKSTEMPS
+
+#define RUNTIME_PREFIX
+#define NO_ST_BLOCKS_IN_STRUCT_STAT
+#define NO_NSEC
+#define USE_WIN32_MMAP
+#define USE_NED_ALLOCATOR
+
+#define NO_REGEX
+
+#define NO_SYS_SELECT_H
+#define NO_PTHEADS
+#define HAVE_STRING_H 1
+#define STDC_HEADERS
+#define NO_ICONV
+
+#define inline __inline
+#define __inline__ __inline
+
+#define SNPRINTF_RETURNS_BOGUS
+
+#define SHA1_HEADER "mozilla-sha1\\sha1.h"
+
+#define ETC_GITCONFIG "%HOME%"
+
+#define NO_PTHREADS
+#define NO_CURL
+
+
+#define NO_STRTOUMAX
+#define REGEX_MALLOC
+
+
+#define GIT_EXEC_PATH "bin"
+#define GIT_VERSION "1.6"
+#define BINDIR "bin"
+#define PREFIX "."
+#define GIT_MAN_PATH "man"
+#define GIT_INFO_PATH "info"
+#define GIT_HTML_PATH "html"
+#define DEFAULT_GIT_TEMPLATE_DIR "templates"
+
+#define NO_STRLCPY
+#define NO_UNSETENV
+#define NO_SETENV
+
+#define strdup _strdup
+#define read _read
+#define close _close
+#define dup _dup
+#define dup2 _dup2
+#define strncasecmp _strnicmp
+#define strtoull _strtoui64
+
+#define __attribute__(x)
+
+static __inline int strcasecmp (const char *s1, const char *s2)
+{
+	int size1=strlen(s1);
+	int sisz2=strlen(s2);
+
+	return _strnicmp(s1,s2,sisz2>size1?sisz2:size1);
+}
+
+#include "compat/mingw.h"
+#undef ERROR
+#undef stat
+#define stat(x,y) mingw_lstat
+#define stat      _stat64
+#endif
\ No newline at end of file
diff --git a/compat/vcbuild/include/dirent.h b/compat/vcbuild/include/dirent.h
new file mode 100644
index 0000000..a6b6f4c
--- /dev/null
+++ b/compat/vcbuild/include/dirent.h
@@ -0,0 +1,127 @@
+/*
+ * DIRENT.H (formerly DIRLIB.H)
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ */
+#ifndef _DIRENT_H_
+#define _DIRENT_H_
+
+/* All the headers include this file. */
+//#include <_mingw.h>
+
+#include <io.h>
+
+#define PATH_MAX 512
+
+#define __MINGW_NOTHROW
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct dirent
+{
+	long		d_ino;		/* Always zero. */
+	unsigned short	d_reclen;	/* Always zero. */
+	unsigned short	d_namlen;	/* Length of name in d_name. */
+	char		d_name[FILENAME_MAX]; /* File name. */
+};
+
+/*
+ * This is an internal data structure. Good programmers will not use it
+ * except as an argument to one of the functions below.
+ * dd_stat field is now int (was short in older versions).
+ */
+typedef struct
+{
+	/* disk transfer area for this dir */
+	struct _finddata_t	dd_dta;
+
+	/* dirent struct to return from dir (NOTE: this makes this thread
+	 * safe as long as only one thread uses a particular DIR struct at
+	 * a time) */
+	struct dirent		dd_dir;
+
+	/* _findnext handle */
+	long			dd_handle;
+
+	/*
+         * Status of search:
+	 *   0 = not started yet (next entry to read is first entry)
+	 *  -1 = off the end
+	 *   positive = 0 based index of next entry
+	 */
+	int			dd_stat;
+
+	/* given path for dir with search pattern (struct is extended) */
+	char			dd_name[PATH_MAX+3];
+} DIR;
+
+DIR* __cdecl __MINGW_NOTHROW opendir (const char*);
+struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);
+int __cdecl __MINGW_NOTHROW closedir (DIR*);
+void __cdecl __MINGW_NOTHROW rewinddir (DIR*);
+long __cdecl __MINGW_NOTHROW telldir (DIR*);
+void __cdecl __MINGW_NOTHROW seekdir (DIR*, long);
+
+
+/* wide char versions */
+
+struct _wdirent
+{
+	long		d_ino;		/* Always zero. */
+	unsigned short	d_reclen;	/* Always zero. */
+	unsigned short	d_namlen;	/* Length of name in d_name. */
+	wchar_t		d_name[FILENAME_MAX]; /* File name. */
+};
+
+/*
+ * This is an internal data structure. Good programmers will not use it
+ * except as an argument to one of the functions below.
+ */
+typedef struct
+{
+	/* disk transfer area for this dir */
+	//struct _wfinddata_t	dd_dta;
+
+	/* dirent struct to return from dir (NOTE: this makes this thread
+	 * safe as long as only one thread uses a particular DIR struct at
+	 * a time) */
+	struct _wdirent		dd_dir;
+
+	/* _findnext handle */
+	long			dd_handle;
+
+	/*
+         * Status of search:
+	 *   0 = not started yet (next entry to read is first entry)
+	 *  -1 = off the end
+	 *   positive = 0 based index of next entry
+	 */
+	int			dd_stat;
+
+	/* given path for dir with search pattern (struct is extended) */
+	wchar_t			dd_name[1];
+} _WDIR;
+
+
+
+_WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);
+struct _wdirent*  __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);
+int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);
+void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);
+long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);
+void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);
+
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _DIRENT_H_ */
diff --git a/compat/vcbuild/include/unistd.h b/compat/vcbuild/include/unistd.h
new file mode 100644
index 0000000..a0f59e6
--- /dev/null
+++ b/compat/vcbuild/include/unistd.h
@@ -0,0 +1,92 @@
+#ifndef _UNISTD_
+#define _UNISTD_
+
+/* Win32 define for porting git*/
+
+#ifndef _MODE_T_
+#define	_MODE_T_
+typedef unsigned short _mode_t;
+
+#ifndef	_NO_OLDNAMES
+typedef _mode_t	mode_t;
+#endif
+#endif	/* Not _MODE_T_ */
+
+#ifndef _SSIZE_T_
+#define _SSIZE_T_
+typedef long _ssize_t;
+
+#ifndef	_OFF_T_
+#define	_OFF_T_
+typedef long _off_t;
+
+#ifndef	_NO_OLDNAMES
+typedef _off_t	off_t;
+#endif
+#endif	/* Not _OFF_T_ */
+
+
+#ifndef	_NO_OLDNAMES
+typedef _ssize_t ssize_t;
+#endif
+#endif /* Not _SSIZE_T_ */
+
+typedef signed char int8_t;
+typedef unsigned char   uint8_t;
+typedef short  int16_t;
+typedef unsigned short  uint16_t;
+typedef int  int32_t;
+typedef unsigned   uint32_t;
+typedef long long  int64_t;
+typedef unsigned long long   uint64_t;
+
+typedef long long  intmax_t;
+typedef unsigned long long uintmax_t;
+
+typedef int64_t off64_t;
+
+#define STDOUT_FILENO 1
+#define STDERR_FILENO 2
+
+/* Some defines for _access nAccessMode (MS doesn't define them, but
+ * it doesn't seem to hurt to add them). */
+#define	F_OK	0	/* Check for file existence */
+/* Well maybe it does hurt.  On newer versions of MSVCRT, an access mode
+   of 1 causes invalid parameter error. */ 
+#define	X_OK	0	/* MS access() doesn't check for execute permission. */
+#define	W_OK	2	/* Check for write permission */
+#define	R_OK	4	/* Check for read permission */
+
+#define	_S_IFIFO	0x1000	/* FIFO */
+#define	_S_IFCHR	0x2000	/* Character */
+#define	_S_IFBLK	0x3000	/* Block: Is this ever set under w32? */
+#define	_S_IFDIR	0x4000	/* Directory */
+#define	_S_IFREG	0x8000	/* Regular */
+
+#define	_S_IFMT		0xF000	/* File type mask */
+
+#define	_S_IXUSR	_S_IEXEC
+#define	_S_IWUSR	_S_IWRITE
+#define	_S_IRUSR	_S_IREAD
+#define	_S_ISDIR(m)	(((m) & _S_IFMT) == _S_IFDIR)
+
+#define	S_IFIFO		_S_IFIFO
+#define	S_IFCHR		_S_IFCHR
+#define	S_IFBLK		_S_IFBLK
+#define	S_IFDIR		_S_IFDIR
+#define	S_IFREG		_S_IFREG
+#define	S_IFMT		_S_IFMT
+#define	S_IEXEC		_S_IEXEC
+#define	S_IWRITE	_S_IWRITE
+#define	S_IREAD		_S_IREAD
+#define	S_IRWXU		_S_IRWXU
+#define	S_IXUSR		_S_IXUSR
+#define	S_IWUSR		_S_IWUSR
+#define	S_IRUSR		_S_IRUSR
+
+
+#define	S_ISDIR(m)	(((m) & S_IFMT) == S_IFDIR)
+#define	S_ISREG(m)	(((m) & S_IFMT) == S_IFREG)
+#define	S_ISFIFO(m)	(((m) & S_IFMT) == S_IFIFO)
+
+#endif
\ No newline at end of file
diff --git a/compat/vcbuild/sys/time.h b/compat/vcbuild/sys/time.h
new file mode 100644
index 0000000..6ed82c0
--- /dev/null
+++ b/compat/vcbuild/sys/time.h
@@ -0,0 +1,21 @@
+#ifndef	_UTIME_H_
+#define	_UTIME_H_
+/*
+ * Structure used by _utime function.
+ */
+struct _utimbuf
+{
+	time_t	actime;		/* Access time */
+	time_t	modtime;	/* Modification time */
+};
+
+#ifndef	_NO_OLDNAMES
+/* NOTE: Must be the same as _utimbuf above. */
+struct utimbuf
+{
+	time_t	actime;
+	time_t	modtime;
+};
+#endif	/* Not _NO_OLDNAMES */
+
+#endif
diff --git a/git-compat-util.h b/git-compat-util.h
index 9f941e4..cb89294 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -77,8 +77,10 @@
 #include <string.h>
 #include <errno.h>
 #include <limits.h>
+#ifndef _MSC_VER
 #include <sys/param.h>
 #include <sys/types.h>
+#endif
 #include <dirent.h>
 #include <sys/time.h>
 #include <time.h>
@@ -86,7 +88,12 @@
 #include <fnmatch.h>
 #include <assert.h>
 #include <regex.h>
+
+#ifndef _MSC_VER
 #include <utime.h>
+#endif
+
+#ifndef _MSC_VER
 #ifndef __MINGW32__
 #include <sys/wait.h>
 #include <sys/poll.h>
@@ -114,7 +121,10 @@
 #else 	/* __MINGW32__ */
 /* pull in Windows compatibility stuff */
 #include "compat/mingw.h"
-#endif	/* __MINGW32__ */
+#endif  /* __MINGW32__ */
+#else   /* _MSC_VER */
+#include "compat/msvc.h"
+#endif	/* _MSC_VER */
 
 #ifndef NO_LIBGEN_H
 #include <libgen.h>
-- 
1.6.4.msysgit.0

^ permalink raw reply related	[flat|nested] 91+ messages in thread

* [PATCH 10/11] Add MSVC Project file
  2009-08-17 16:05     ` [PATCH 09/11] Add MSVC porting header files Frank Li
@ 2009-08-17 16:05       ` Frank Li
  2009-08-17 17:11         ` Johannes Schindelin
                           ` (2 more replies)
  2009-08-17 17:09       ` [PATCH 09/11] Add MSVC porting header files Johannes Schindelin
  2009-08-17 19:21       ` [msysGit] " Johannes Sixt
  2 siblings, 3 replies; 91+ messages in thread
From: Frank Li @ 2009-08-17 16:05 UTC (permalink / raw)
  To: git, msysgit; +Cc: Johannes.Schindelin, Frank Li

Add libgit.vcproj to build common library.
Add git.vcproj to build git program.

Signed-off-by: Frank Li <lznuaa@gmail.com>
---
 compat/vcbuild/git/git.vcproj       |  197 +++++
 compat/vcbuild/libgit/libgit.vcproj | 1347 +++++++++++++++++++++++++++++++++++
 2 files changed, 1544 insertions(+), 0 deletions(-)
 create mode 100644 compat/vcbuild/git/git.vcproj
 create mode 100644 compat/vcbuild/libgit/libgit.vcproj

diff --git a/compat/vcbuild/git/git.vcproj b/compat/vcbuild/git/git.vcproj
new file mode 100644
index 0000000..6f85de3
--- /dev/null
+++ b/compat/vcbuild/git/git.vcproj
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="gb2312"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="git"
+	ProjectGUID="{E3E30E51-C5AD-407B-AB43-985E4111474A}"
+	RootNamespace="git"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)\bin"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="0"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="wininet.lib ws2_32.lib "
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)\bin"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="1"
+			CharacterSet="0"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="wininet.lib ws2_32.lib "
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="1"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\..\git.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
diff --git a/compat/vcbuild/libgit/libgit.vcproj b/compat/vcbuild/libgit/libgit.vcproj
new file mode 100644
index 0000000..bbc3aed
--- /dev/null
+++ b/compat/vcbuild/libgit/libgit.vcproj
@@ -0,0 +1,1347 @@
+<?xml version="1.0" encoding="gb2312"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9.00"
+	Name="libgit"
+	ProjectGUID="{F6DEC8C3-B803-4A86-8848-430F08B499E3}"
+	RootNamespace="libgit"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="196613"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="4"
+			CharacterSet="0"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				InlineFunctionExpansion="1"
+				AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
+				PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="4"
+			CharacterSet="0"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				InlineFunctionExpansion="1"
+				EnableIntrinsicFunctions="true"
+				AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
+				PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
+				RuntimeLibrary="2"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLibrarianTool"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath="..\..\msvc.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\mozilla-sha1\sha1.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath="..\..\..\archive.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\attr.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\blob.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\branch.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\bundle.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\cache-tree.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\cache.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\color.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\commit.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\csum-file.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\decorate.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\delta.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diff.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diffcore.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\dir.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\exec_cmd.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\fetch-pack.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\fsck.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\git-compat-util.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\graph.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\grep.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\hash.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\help.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\http.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\levenshtein.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\list-objects.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\ll-merge.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\log-tree.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\mailmap.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\merge-recursive.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\notes.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\object.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pack-refs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pack-revindex.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pack.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\parse-options.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\patch-ids.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pkt-line.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\progress.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\quote.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\reachable.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\reflog-walk.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\refs.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\remote.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\rerere.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\revision.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\run-command.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\send-pack.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\sha1-lookup.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\shortlog.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\sideband.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\sigchain.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\strbuf.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\string-list.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tag.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tar.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\thread-utils.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\transport.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tree-walk.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tree.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\unpack-trees.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\userdiff.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\utf8.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\walker.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\wt-status.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff-interface.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+		</Filter>
+		<Filter
+			Name="compat"
+			>
+			<File
+				RelativePath="..\..\..\compat\basename.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\cygwin.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\fnmatch\fnmatch.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\fnmatch\fnmatch.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\fopen.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\memmem.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\mingw.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\mingw.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\mkdtemp.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\mkstemps.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\pread.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\qsort.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\regex\regex.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\regex\regex.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\setenv.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\snprintf.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\strcasestr.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\strlcpy.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\strtoumax.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\unsetenv.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\win32.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\win32mmap.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\compat\winansi.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="git"
+			>
+			<File
+				RelativePath="..\..\..\abspath.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\alias.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\alloc.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\archive-tar.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\archive-zip.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\archive.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\attr.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\base85.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\bisect.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\blob.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\branch.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-add.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-annotate.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-apply.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-archive.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-bisect--helper.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-blame.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-branch.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-bundle.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-cat-file.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-check-attr.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-check-ref-format.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-checkout-index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-checkout.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-clean.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-clone.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-commit-tree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-commit.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-config.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-count-objects.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-describe.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-diff-files.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-diff-index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-diff-tree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-diff.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-fast-export.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-fetch--tool.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-fetch-pack.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-fetch.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-fmt-merge-msg.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-for-each-ref.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-fsck.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-gc.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-grep.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-help.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-init-db.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-log.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-ls-files.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-ls-remote.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-ls-tree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-mailinfo.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-mailsplit.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-merge-base.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-merge-file.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-merge-ours.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-merge-recursive.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-merge.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-mktree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-mv.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-name-rev.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-pack-objects.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-pack-refs.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-prune-packed.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-prune.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-push.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-read-tree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-receive-pack.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-reflog.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-remote.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-rerere.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-reset.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-rev-list.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-rev-parse.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-revert.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-rm.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-send-pack.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-shortlog.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-show-branch.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-show-ref.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-stripspace.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-symbolic-ref.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-tag.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-tar-tree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-unpack-objects.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-update-index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-update-ref.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-upload-archive.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-verify-pack.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-verify-tag.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\builtin-write-tree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\bundle.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\cache-tree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\color.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\combine-diff.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\commit.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\config.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\connect.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\convert.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\copy.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\csum-file.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\ctype.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\date.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\decorate.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diff-delta.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diff-lib.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diff-no-index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diff.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diffcore-break.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diffcore-delta.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diffcore-order.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diffcore-pickaxe.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\diffcore-rename.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\dir.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\editor.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\entry.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\environment.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\exec_cmd.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\fsck.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\graph.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\grep.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\hash.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\help.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\ident.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\levenshtein.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\list-objects.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\ll-merge.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\lockfile.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\log-tree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\mailmap.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\match-trees.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\merge-file.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\merge-recursive.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\merge-tree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\name-hash.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\object.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pack-check.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pack-refs.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pack-revindex.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pack-write.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pager.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\parse-options.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\patch-delta.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\patch-ids.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\path.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pkt-line.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\preload-index.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\pretty.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\progress.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\quote.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\reachable.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\read-cache.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\reflog-walk.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\refs.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\remote.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\rerere.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\revision.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\run-command.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\server-info.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\setup.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\sha1-lookup.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\sha1_file.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\sha1_name.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\shallow.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\sideband.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\sigchain.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\strbuf.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\string-list.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\symlinks.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tag.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\thread-utils.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\trace.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\transport.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tree-diff.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tree-walk.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\tree.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\unpack-trees.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\usage.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\userdiff.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\utf8.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\walker.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\wrapper.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\write_or_die.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\ws.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\wt-status.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff-interface.c"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="xdiff"
+			>
+			<File
+				RelativePath="..\..\..\xdiff\xdiff.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xdiffi.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xdiffi.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xemit.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xemit.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xinclude.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xmacros.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xmerge.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xpatience.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xprepare.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xprepare.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xtypes.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xutils.c"
+				>
+			</File>
+			<File
+				RelativePath="..\..\..\xdiff\xutils.h"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
-- 
1.6.4.msysgit.0

^ permalink raw reply related	[flat|nested] 91+ messages in thread

* Re: [PATCH 06/11] Add miss git-compat-util.h at regex.c and fnmatch.c Add git-compat-util.h to enable build at MSVC environment
  2009-08-17 16:04 [PATCH 06/11] Add miss git-compat-util.h at regex.c and fnmatch.c Add git-compat-util.h to enable build at MSVC environment Frank Li
  2009-08-17 16:04 ` [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c Frank Li
@ 2009-08-17 16:51 ` Johannes Schindelin
  2009-08-17 19:23 ` Johannes Sixt
  2 siblings, 0 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 16:51 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit

Hi,

On Tue, 18 Aug 2009, Frank Li wrote:

> Signed-off-by: Frank Li <lznuaa@gmail.com>

How about this instead?

	Add missing git-compat-util.h to regex.c and fnmatch.c

	This will be needed to compile with Microsoft Visual C++.

> diff --git a/compat/fnmatch/fnmatch.c b/compat/fnmatch/fnmatch.c
> index 14feac7..5cbd49c 100644
> --- a/compat/fnmatch/fnmatch.c
> +++ b/compat/fnmatch/fnmatch.c
> @@ -16,6 +16,10 @@
>     write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
>     Boston, MA 02111-1307, USA.  */
>  
> +#ifdef _MSC_VER
> +#include "git-compat-util.h"
> +#endif
> +

Why not leave those #ifdef guards?  Either they don't hurt, or they will 
hurt Microsoft Visual C++, too.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 07/11] Add  O_BINARY flag to open flag at mingw.c
  2009-08-17 16:04 ` [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c Frank Li
  2009-08-17 16:04   ` [PATCH 08/11] Place __stdcall to correct position Frank Li
@ 2009-08-17 16:58   ` Johannes Schindelin
  2009-08-18  2:02     ` Frank Li
  1 sibling, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 16:58 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit

Hi,

On Tue, 18 Aug 2009, Frank Li wrote:

> Windows will convert CR\LF and union code at text mode.
> Git doesn't like this. Add O_BINARY flag to open function
> 
> Signed-off-by: Frank Li <lznuaa@gmail.com>

How about this instead?

	mingw.c: Use the O_BINARY flag to open files

	On Windows, non-text files must be opened using the O_BINARY flag. 
	MinGW does this for us automatically, but Microsoft Visual C++
	does not.

	Also, Johannes said that this would be a nice cleanup.

BTW what about fopen()?

Patch is obviously good.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 08/11] Place __stdcall to correct position.
  2009-08-17 16:04   ` [PATCH 08/11] Place __stdcall to correct position Frank Li
  2009-08-17 16:05     ` [PATCH 09/11] Add MSVC porting header files Frank Li
@ 2009-08-17 17:01     ` Johannes Schindelin
  2009-08-18  1:51       ` Frank Li
  1 sibling, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 17:01 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit

Hi,

On Tue, 18 Aug 2009, Frank Li wrote:

> MSVC require __stdcall is between return value and function name.
> ALL Win32 API definition is as TYPE WINAPI function name
> 
> Signed-off-by: Frank Li <lznuaa@gmail.com>

How about "... to the correct ..." and "MSVC requires _stdcall to be 
between return value..." and "All Win32 API functions are declared with 
the WINAPI attribute."?

> diff --git a/compat/mingw.c b/compat/mingw.c
> index d5fa0ed..0c9c793 100644
> --- a/compat/mingw.c
> +++ b/compat/mingw.c
> @@ -1146,7 +1146,7 @@ void mingw_open_html(const char *unixpath)
>  
>  int link(const char *oldpath, const char *newpath)
>  {
> -	typedef BOOL WINAPI (*T)(const char*, const char*, LPSECURITY_ATTRIBUTES);
> +	typedef  BOOL (WINAPI *T)(const char*, const char*, LPSECURITY_ATTRIBUTES);

An extra space slipped in, there.

> diff --git a/run-command.c b/run-command.c
> index df139da..423b506 100644
> --- a/run-command.c
> +++ b/run-command.c
> @@ -295,12 +295,12 @@ int run_command_v_opt_cd_env(const char **argv, int opt, const char *dir, const
>  }
>  
>  #if defined(__MINGW32__) || defined(_MSC_VER)
> -static __stdcall unsigned run_thread(void *data)
> +static unsigned __stdcall run_thread(void *data)
>  {
>  	struct async *async = data;
>  	return async->proc(async->fd_for_proc, async->data);
>  }
> -#endif
> +#endif /* __MINGW32__ || _MSC_VER */

I do not think this is necessary.  There are only 5 lines wrapped into 
those #ifdef guards, the developer should be able to see that far.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 16:05     ` [PATCH 09/11] Add MSVC porting header files Frank Li
  2009-08-17 16:05       ` [PATCH 10/11] Add MSVC Project file Frank Li
@ 2009-08-17 17:09       ` Johannes Schindelin
  2009-08-17 19:31         ` Pau Garcia i Quiles
  2009-08-18  2:15         ` Frank Li
  2009-08-17 19:21       ` [msysGit] " Johannes Sixt
  2 siblings, 2 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 17:09 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit

Hi,

On Tue, 18 Aug 2009, Frank Li wrote:

> Add unix head file, dirent.h, unistd.h  and time.h

These are copied from somewhere.  From where?  What is the license?

> Add MSVC special porting head file msvc.h and msvc.c.

This is added by you.  Logically, that should be a separate patch.

> diff --git a/compat/msvc.h b/compat/msvc.h
> new file mode 100644
> index 0000000..6071565
> --- /dev/null
> +++ b/compat/msvc.h
> @@ -0,0 +1,95 @@
> +#ifndef __MSVC__HEAD
> +#define __MSVC__HEAD
> +
> +#define WINVER 0x0500
> +#define _WIN32_WINNT 0x0500
> +#define _WIN32_WINDOWS 0x0410
> +#define _WIN32_IE 0x0700
> +#define NTDDI_VERSION NTDDI_WIN2KSP1
> +#include <winsock2.h>
> +
> +/*Configuration*/
> +
> +#define NO_PREAD
> +#define NO_OPENSSL
> +#define NO_LIBGEN_H
> +#define NO_SYMLINK_HEAD
> +#define NO_IPV6
> +#define NO_SETENV
> +#define NO_UNSETENV
> +#define NO_STRCASESTR
> +#define NO_STRLCPY
> +#define NO_MEMMEM
> +#define NO_C99_FORMAT
> +#define NO_STRTOUMAX
> +#define NO_MKDTEMP
> +#define NO_MKSTEMPS
> +
> +#define RUNTIME_PREFIX
> +#define NO_ST_BLOCKS_IN_STRUCT_STAT
> +#define NO_NSEC
> +#define USE_WIN32_MMAP
> +#define USE_NED_ALLOCATOR
> +
> +#define NO_REGEX
> +
> +#define NO_SYS_SELECT_H
> +#define NO_PTHEADS
> +#define HAVE_STRING_H 1
> +#define STDC_HEADERS
> +#define NO_ICONV

These would normally be defined in the Makefile.  You might want to state 
that in a comment.

Or maybe move the definitions (along with vsnprintf) to the .vcproj file, 
which is the logical pendant of the Makefile?

> +#define inline __inline
> +#define __inline__ __inline

These definitions are unrelated to the surrounding ones; please move them 
elsewhere.

> +
> +#define SNPRINTF_RETURNS_BOGUS
> +
> +#define SHA1_HEADER "mozilla-sha1\\sha1.h"
> +
> +#define ETC_GITCONFIG "%HOME%"
> +
> +#define NO_PTHREADS
> +#define NO_CURL
> +
> +
> +#define NO_STRTOUMAX
> +#define REGEX_MALLOC
> +
> +
> +#define GIT_EXEC_PATH "bin"
> +#define GIT_VERSION "1.6"
> +#define BINDIR "bin"
> +#define PREFIX "."
> +#define GIT_MAN_PATH "man"
> +#define GIT_INFO_PATH "info"
> +#define GIT_HTML_PATH "html"
> +#define DEFAULT_GIT_TEMPLATE_DIR "templates"
> +
> +#define NO_STRLCPY
> +#define NO_UNSETENV
> +#define NO_SETENV

Would these NO_ definitions not _love_ to be close to their siblings?

What is the reason for those empty lines?  Their placement and amount look 
rather arbitrary to me.

> +#define strdup _strdup
> +#define read _read
> +#define close _close
> +#define dup _dup
> +#define dup2 _dup2
> +#define strncasecmp _strnicmp
> +#define strtoull _strtoui64

vsnprintf could go right here.

> +#define __attribute__(x)

The two inline definitions could go right here.

> +static __inline int strcasecmp (const char *s1, const char *s2)
> +{
> +	int size1=strlen(s1);
> +	int sisz2=strlen(s2);
> +
> +	return _strnicmp(s1,s2,sisz2>size1?sisz2:size1);
> +}
> +
> +#include "compat/mingw.h"
> +#undef ERROR
> +#undef stat
> +#define stat(x,y) mingw_lstat
> +#define stat      _stat64
> +#endif

Looks much nicer now, thanks!

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 16:05       ` [PATCH 10/11] Add MSVC Project file Frank Li
@ 2009-08-17 17:11         ` Johannes Schindelin
  2009-08-17 17:34         ` Paolo Bonzini
  2009-08-17 22:27         ` [PATCH 10/11] Add MSVC Project file Thiago Farina
  2 siblings, 0 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 17:11 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit

Hi,

On Tue, 18 Aug 2009, Frank Li wrote:

> Add libgit.vcproj to build common library.
> Add git.vcproj to build git program.
> 
> Signed-off-by: Frank Li <lznuaa@gmail.com>

The commit subject should read "... files", as you add two files, not one.

I hope that somebody else is going to review this patch...

And don't you lack .vcproj files for the non-builtins?

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 16:05       ` [PATCH 10/11] Add MSVC Project file Frank Li
  2009-08-17 17:11         ` Johannes Schindelin
@ 2009-08-17 17:34         ` Paolo Bonzini
  2009-08-17 17:40           ` Erik Faye-Lund
  2009-08-17 22:27         ` [PATCH 10/11] Add MSVC Project file Thiago Farina
  2 siblings, 1 reply; 91+ messages in thread
From: Paolo Bonzini @ 2009-08-17 17:34 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit, Johannes.Schindelin

I don't know if this is in any way feasible (does not seem to hard 
actually), but I think these files should be automatically generated.

Otherwise, bitrot is going to happen in zero time.

Also, a cleaner XML without verbosities like

+			<Tool
+				Name="VCMIDLTool"
+			/>

would make the patch easier to review.

I agree with dscho on the non-builtins.

Paolo

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 17:34         ` Paolo Bonzini
@ 2009-08-17 17:40           ` Erik Faye-Lund
  2009-08-17 18:16             ` Paolo Bonzini
  2009-08-17 19:53             ` Johannes Schindelin
  0 siblings, 2 replies; 91+ messages in thread
From: Erik Faye-Lund @ 2009-08-17 17:40 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Frank Li, git, msysgit, Johannes.Schindelin

On Mon, Aug 17, 2009 at 7:34 PM, Paolo Bonzini<bonzini@gnu.org> wrote:
> Also, a cleaner XML without verbosities like
>
> +                       <Tool
> +                               Name="VCMIDLTool"
> +                       />
>
> would make the patch easier to review.

...but will it make it more annoying to maintain in the long run? It
might be painful to work with a mixture of hand-written and
msdev-written XML. Of course, if we get some scripts in place to
generate the vcproj-files this might not be a problem...


-- 
Erik "kusma" Faye-Lund
kusmabite@gmail.com
(+47) 986 59 656

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 17:40           ` Erik Faye-Lund
@ 2009-08-17 18:16             ` Paolo Bonzini
  2009-08-17 19:53             ` Johannes Schindelin
  1 sibling, 0 replies; 91+ messages in thread
From: Paolo Bonzini @ 2009-08-17 18:16 UTC (permalink / raw)
  To: Erik Faye-Lund; +Cc: Frank Li, git, msysgit, Johannes.Schindelin

On 08/17/2009 07:40 PM, Erik Faye-Lund wrote:
> On Mon, Aug 17, 2009 at 7:34 PM, Paolo Bonzini<bonzini@gnu.org>  wrote:
>> Also, a cleaner XML without verbosities like
>>
>> +<Tool
>> +                               Name="VCMIDLTool"
>> +                       />
>>
>> would make the patch easier to review.
>
> ...but will it make it more annoying to maintain in the long run? It
> might be painful to work with a mixture of hand-written and
> msdev-written XML. Of course, if we get some scripts in place to
> generate the vcproj-files this might not be a problem...

Yes, my remark applied only if the generation was scripted.  Otherwise, 
it would be an annoyance in addition to being subject to bitrot.

Paolo

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [msysGit] [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 16:05     ` [PATCH 09/11] Add MSVC porting header files Frank Li
  2009-08-17 16:05       ` [PATCH 10/11] Add MSVC Project file Frank Li
  2009-08-17 17:09       ` [PATCH 09/11] Add MSVC porting header files Johannes Schindelin
@ 2009-08-17 19:21       ` Johannes Sixt
  2 siblings, 0 replies; 91+ messages in thread
From: Johannes Sixt @ 2009-08-17 19:21 UTC (permalink / raw)
  To: msysgit; +Cc: Frank Li, git, Johannes.Schindelin

On Montag, 17. August 2009, Frank Li wrote:
> diff --git a/compat/msvc.h b/compat/msvc.h
> new file mode 100644
> index 0000000..6071565
> --- /dev/null
> +++ b/compat/msvc.h
> @@ -0,0 +1,95 @@
> +#ifndef __MSVC__HEAD
...
> +#endif
> \ No newline at end of file

Please fix these "No newline at end of file" an all cases (I quoted only one 
instance where I saw this).

-- Hannes

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 06/11] Add miss git-compat-util.h at regex.c and fnmatch.c Add git-compat-util.h to enable build at MSVC environment
  2009-08-17 16:04 [PATCH 06/11] Add miss git-compat-util.h at regex.c and fnmatch.c Add git-compat-util.h to enable build at MSVC environment Frank Li
  2009-08-17 16:04 ` [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c Frank Li
  2009-08-17 16:51 ` [PATCH 06/11] Add miss git-compat-util.h at regex.c and fnmatch.c Add git-compat-util.h to enable build at MSVC environment Johannes Schindelin
@ 2009-08-17 19:23 ` Johannes Sixt
  2 siblings, 0 replies; 91+ messages in thread
From: Johannes Sixt @ 2009-08-17 19:23 UTC (permalink / raw)
  To: msysgit; +Cc: Frank Li, git, Johannes.Schindelin


On Montag, 17. August 2009, Frank Li wrote:
> Signed-off-by: Frank Li <lznuaa@gmail.com>
> ---
>  compat/fnmatch/fnmatch.c |    4 ++++
>  compat/regex/regex.c     |    4 ++++
>  2 files changed, 8 insertions(+), 0 deletions(-)
>
> diff --git a/compat/fnmatch/fnmatch.c b/compat/fnmatch/fnmatch.c
> index 14feac7..5cbd49c 100644
> --- a/compat/fnmatch/fnmatch.c
> +++ b/compat/fnmatch/fnmatch.c
> @@ -16,6 +16,10 @@
>     write to the Free Software Foundation, Inc., 59 Temple Place - Suite
> 330, Boston, MA 02111-1307, USA.  */
>
> +#ifdef _MSC_VER
> +#include "git-compat-util.h"
> +#endif

There is a *lot* to explain: Why the *heck* is this needed?

> diff --git a/compat/regex/regex.c b/compat/regex/regex.c
> index 5728de1..2298a3a 100644
> --- a/compat/regex/regex.c
> +++ b/compat/regex/regex.c
> @@ -20,6 +20,10 @@
>     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
>
>  /* AIX requires this to be the first thing in the file. */
> +#ifdef _MSC_VER
> +#include "git-compat-util.h"
> +#endif

Same here.

-- Hannes

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 17:09       ` [PATCH 09/11] Add MSVC porting header files Johannes Schindelin
@ 2009-08-17 19:31         ` Pau Garcia i Quiles
  2009-08-17 19:48           ` CMake, was " Johannes Schindelin
  2009-08-17 20:07           ` [msysGit] " Johannes Sixt
  2009-08-18  2:15         ` Frank Li
  1 sibling, 2 replies; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 19:31 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Frank Li, git, msysgit

>> diff --git a/compat/msvc.h b/compat/msvc.h
>> new file mode 100644
>> index 0000000..6071565
>> --- /dev/null
>> +++ b/compat/msvc.h
>> @@ -0,0 +1,95 @@
>> +#ifndef __MSVC__HEAD
>> +#define __MSVC__HEAD
>> +
>> +#define WINVER 0x0500
>> +#define _WIN32_WINNT 0x0500
>> +#define _WIN32_WINDOWS 0x0410
>> +#define _WIN32_IE 0x0700
>> +#define NTDDI_VERSION NTDDI_WIN2KSP1
>> +#include <winsock2.h>
>> +
>> +/*Configuration*/
>> +
>> +#define NO_PREAD
>> +#define NO_OPENSSL
>> +#define NO_LIBGEN_H
>> +#define NO_SYMLINK_HEAD
>> +#define NO_IPV6
>> +#define NO_SETENV
>> +#define NO_UNSETENV
>> +#define NO_STRCASESTR
>> +#define NO_STRLCPY
>> +#define NO_MEMMEM
>> +#define NO_C99_FORMAT
>> +#define NO_STRTOUMAX
>> +#define NO_MKDTEMP
>> +#define NO_MKSTEMPS
>> +
>> +#define RUNTIME_PREFIX
>> +#define NO_ST_BLOCKS_IN_STRUCT_STAT
>> +#define NO_NSEC
>> +#define USE_WIN32_MMAP
>> +#define USE_NED_ALLOCATOR
>> +
>> +#define NO_REGEX
>> +
>> +#define NO_SYS_SELECT_H
>> +#define NO_PTHEADS
>> +#define HAVE_STRING_H 1
>> +#define STDC_HEADERS
>> +#define NO_ICONV
>
> These would normally be defined in the Makefile.  You might want to state
> that in a comment.
>
> Or maybe move the definitions (along with vsnprintf) to the .vcproj file,
> which is the logical pendant of the Makefile?

What about having a CMake build system, which would work on every
platform (including cross-compiling), and would produce an appropriate
config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever
is fit for each platform? If it's OK to include such a build system
upstream, I'm volunteering to implement it.

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* CMake, was Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 19:31         ` Pau Garcia i Quiles
@ 2009-08-17 19:48           ` Johannes Schindelin
  2009-08-17 19:51             ` Pau Garcia i Quiles
  2009-08-17 20:07           ` [msysGit] " Johannes Sixt
  1 sibling, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 19:48 UTC (permalink / raw)
  To: Pau Garcia i Quiles; +Cc: Frank Li, git, msysgit


Hi,

On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:

> What about having a CMake build system, which would work on every
> platform (including cross-compiling), and would produce an appropriate
> config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever
> is fit for each platform? If it's OK to include such a build system
> upstream, I'm volunteering to implement it.

And reap in another dependency?

First Python, then CMake, what tomorrow?  Is it the month of adding 
dependencies?

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 19:48           ` CMake, was " Johannes Schindelin
@ 2009-08-17 19:51             ` Pau Garcia i Quiles
  2009-08-17 19:54               ` Pau Garcia i Quiles
                                 ` (2 more replies)
  0 siblings, 3 replies; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 19:51 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Frank Li, git, msysgit

On Mon, Aug 17, 2009 at 9:48 PM, Johannes
Schindelin<Johannes.Schindelin@gmx.de> wrote:

> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:
>
>> What about having a CMake build system, which would work on every
>> platform (including cross-compiling), and would produce an appropriate
>> config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever
>> is fit for each platform? If it's OK to include such a build system
>> upstream, I'm volunteering to implement it.
>
> And reap in another dependency?
>
> First Python, then CMake, what tomorrow?  Is it the month of adding
> dependencies?

I'd say it's the month of getting problems solved.

CMake would make git a lot easier to build on Windows, particularly
with Visual C++. Replace autotools with CMake and suddenly you need to
maintain a single build system for every platform and compiler git
supports/will support. That's a sound advantage to me.

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 17:40           ` Erik Faye-Lund
  2009-08-17 18:16             ` Paolo Bonzini
@ 2009-08-17 19:53             ` Johannes Schindelin
  2009-08-17 20:02               ` Paolo Bonzini
                                 ` (2 more replies)
  1 sibling, 3 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 19:53 UTC (permalink / raw)
  To: Erik Faye-Lund; +Cc: Paolo Bonzini, Frank Li, git, msysgit

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1221 bytes --]

Hi,

On Mon, 17 Aug 2009, Erik Faye-Lund wrote:

> On Mon, Aug 17, 2009 at 7:34 PM, Paolo Bonzini<bonzini@gnu.org> wrote:
> > Also, a cleaner XML without verbosities like
> >
> > +                       <Tool
> > +                               Name="VCMIDLTool"
> > +                       />
> >
> > would make the patch easier to review.
> 
> ...but will it make it more annoying to maintain in the long run? It 
> might be painful to work with a mixture of hand-written and 
> msdev-written XML. Of course, if we get some scripts in place to 
> generate the vcproj-files this might not be a problem...

I think the killer argument against such a script (I actually though of 
that myself, but decided against it for that very reason) is that the 
result is to be used by Microsoft Visual Studio users, who do not 
typically have a scripting language, and who would not want to use it 
anyway.

Of course, we could have a script that verifies that the .vcproj files 
contain reference the appropriate files (which it would know about by 
being called from the Makefile and being passed the file names), maybe 
even be able to edit the .vcproj file if it is missing some.  Should not 
be too hard in Perl.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 19:51             ` Pau Garcia i Quiles
@ 2009-08-17 19:54               ` Pau Garcia i Quiles
  2009-08-17 20:58               ` Johannes Schindelin
  2009-08-17 21:20               ` Reece Dunn
  2 siblings, 0 replies; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 19:54 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Frank Li, git, msysgit

On Mon, Aug 17, 2009 at 9:51 PM, Pau Garcia i
Quiles<pgquiles@elpauer.org> wrote:
> On Mon, Aug 17, 2009 at 9:48 PM, Johannes
> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>
>> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:
>>
>>> What about having a CMake build system, which would work on every
>>> platform (including cross-compiling), and would produce an appropriate
>>> config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever
>>> is fit for each platform? If it's OK to include such a build system
>>> upstream, I'm volunteering to implement it.
>>
>> And reap in another dependency?
>>
>> First Python, then CMake, what tomorrow?  Is it the month of adding
>> dependencies?
>
> I'd say it's the month of getting problems solved.
>
> CMake would make git a lot easier to build on Windows, particularly
> with Visual C++. Replace autotools with CMake and suddenly you need to
> maintain a single build system for every platform and compiler git
> supports/will support. That's a sound advantage to me.

I forgot to say CMake would be a build-dependency, not a runtime
dependency, in case anyone is wondering.

More info about CMake:
http://www.cmake.org

Tutorial:
http://www.elpauer.org/stuff/learning_cmake.pdf

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 19:53             ` Johannes Schindelin
@ 2009-08-17 20:02               ` Paolo Bonzini
  2009-08-17 20:54                 ` Johannes Schindelin
  2009-08-17 20:17               ` Pau Garcia i Quiles
  2009-08-18 12:58               ` [RFC] Enable compilation by Makefile for the MSVC toolchain Marius Storm-Olsen
  2 siblings, 1 reply; 91+ messages in thread
From: Paolo Bonzini @ 2009-08-17 20:02 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Erik Faye-Lund, Frank Li, git, msysgit


> I think the killer argument against such a script (I actually though of 
> that myself, but decided against it for that very reason) is that the 
> result is to be used by Microsoft Visual Studio users, who do not 
> typically have a scripting language, and who would not want to use it 
> anyway.

But the script could run whenever the Makefile is updated, even under
Unix.  Of course, there are chances of bitrotting, but it cannot be
worse than having failures every time a builtin is added or otherwise a
file is added.

The main problem I see with the script is that the output would
naturally be a .gitignore-d file, but it will not be for the reason you
mention.

> Of course, we could have a script that verifies that the .vcproj files 
> contain reference the appropriate files (which it would know about by 
> being called from the Makefile and being passed the file names), maybe 
> even be able to edit the .vcproj file if it is missing some.  Should not 
> be too hard in Perl.

Yes, it's not very far from what I had in mind.

Paolo

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [msysGit] Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 19:31         ` Pau Garcia i Quiles
  2009-08-17 19:48           ` CMake, was " Johannes Schindelin
@ 2009-08-17 20:07           ` Johannes Sixt
  1 sibling, 0 replies; 91+ messages in thread
From: Johannes Sixt @ 2009-08-17 20:07 UTC (permalink / raw)
  To: Pau Garcia i Quiles; +Cc: msysgit, Johannes Schindelin, Frank Li, git

On Montag, 17. August 2009, Pau Garcia i Quiles wrote:
> What about having a CMake build system, ...

No, thank you. I have to use it for the little bit of KDE development that I 
do, and it is a horror. With autotools I at least was able to reuse my shell 
programming skills, but cmake is an entirely new language, and an absolutely 
horrible one (IMHO, of course).

-- Hannes

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 19:53             ` Johannes Schindelin
  2009-08-17 20:02               ` Paolo Bonzini
@ 2009-08-17 20:17               ` Pau Garcia i Quiles
  2009-08-17 20:43                 ` Reece Dunn
  2009-08-17 20:56                 ` Johannes Schindelin
  2009-08-18 12:58               ` [RFC] Enable compilation by Makefile for the MSVC toolchain Marius Storm-Olsen
  2 siblings, 2 replies; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 20:17 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Erik Faye-Lund, Paolo Bonzini, Frank Li, git, msysgit

On Mon, Aug 17, 2009 at 9:53 PM, Johannes
Schindelin<Johannes.Schindelin@gmx.de> wrote:

> Of course, we could have a script that verifies that the .vcproj files
> contain reference the appropriate files (which it would know about by
> being called from the Makefile and being passed the file names), maybe
> even be able to edit the .vcproj file if it is missing some.  Should not
> be too hard in Perl.

You'll need to special-case for Visual C++ 2010, which is different
and incompatible with previous versions. Hence my suggestion for
CMake: appropriate project files would be generated for the tool the
user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything
else.

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 20:17               ` Pau Garcia i Quiles
@ 2009-08-17 20:43                 ` Reece Dunn
  2009-08-17 20:54                   ` Pau Garcia i Quiles
  2009-08-17 20:56                 ` Johannes Schindelin
  1 sibling, 1 reply; 91+ messages in thread
From: Reece Dunn @ 2009-08-17 20:43 UTC (permalink / raw)
  To: Pau Garcia i Quiles
  Cc: Johannes Schindelin, Erik Faye-Lund, Paolo Bonzini, Frank Li,
	git, msysgit

2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:
> On Mon, Aug 17, 2009 at 9:53 PM, Johannes
> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>
>> Of course, we could have a script that verifies that the .vcproj files
>> contain reference the appropriate files (which it would know about by
>> being called from the Makefile and being passed the file names), maybe
>> even be able to edit the .vcproj file if it is missing some.  Should not
>> be too hard in Perl.
>
> You'll need to special-case for Visual C++ 2010, which is different
> and incompatible with previous versions. Hence my suggestion for
> CMake: appropriate project files would be generated for the tool the
> user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything
> else.

The problem is that you'd still need the Visual Studio projects (one
each for 6, 7 (2002), 7.1 (2003), 8 (2005), 9 (2008) and 10 (2010) --
yes, there'll need to be one for each version of Visual Studio) as
people who use Visual Studio tend to primarily use the IDE. CMake
(which Windows users will need to download & install from somewhere)
will sit outside this -- unless you mean making the project files be
the "Makefile project" type and simply use it to invoke CMake and host
the source files to ease access to them from the IDE?

Also, not every posix system will have CMake installed (e.g. Linux
From Scratch systems) and that's not including "exotic" systems like
Solaris and the *BSDs.

- Reece

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 20:43                 ` Reece Dunn
@ 2009-08-17 20:54                   ` Pau Garcia i Quiles
  2009-08-17 21:05                     ` Reece Dunn
  2009-08-17 21:05                     ` Johannes Schindelin
  0 siblings, 2 replies; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 20:54 UTC (permalink / raw)
  To: Reece Dunn
  Cc: Johannes Schindelin, Erik Faye-Lund, Paolo Bonzini, Frank Li,
	git, msysgit

On Mon, Aug 17, 2009 at 10:43 PM, Reece Dunn<msclrhd@googlemail.com> wrote:
> 2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:
>> On Mon, Aug 17, 2009 at 9:53 PM, Johannes
>> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>>
>>> Of course, we could have a script that verifies that the .vcproj files
>>> contain reference the appropriate files (which it would know about by
>>> being called from the Makefile and being passed the file names), maybe
>>> even be able to edit the .vcproj file if it is missing some.  Should not
>>> be too hard in Perl.
>>
>> You'll need to special-case for Visual C++ 2010, which is different
>> and incompatible with previous versions. Hence my suggestion for
>> CMake: appropriate project files would be generated for the tool the
>> user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything
>> else.
>
> The problem is that you'd still need the Visual Studio projects (one
> each for 6, 7 (2002), 7.1 (2003), 8 (2005), 9 (2008) and 10 (2010) --
> yes, there'll need to be one for each version of Visual Studio) as
> people who use Visual Studio tend to primarily use the IDE. CMake
> (which Windows users will need to download & install from somewhere)
> will sit outside this -- unless you mean making the project files be
> the "Makefile project" type and simply use it to invoke CMake and host
> the source files to ease access to them from the IDE?

If a CMake build system is provided, you will not need a single Visual
Studio project, or the autotools build system, or anything else. Just
CMake and the CMake build system (which are a bunch of CMakeLists.txt
plain text files).

CMake takes the CMakeLists.txt file(s) as the input and generates
makefiles for gcc, vcproj files for Visual C++, makefiles for NMake,
Eclipse projects for Eclipse, XCode projects for XCode, etc.

> Also, not every posix system will have CMake installed (e.g. Linux
> From Scratch systems) and that's not including "exotic" systems like
> Solaris and the *BSDs.

CMake is available for many platforms (Linux x86-32 and x86-64, PPC,
Solaris Sparc, HP-UX, Irix, AIX PPC) as a binary from the CMake site (
http://cmake.org/cmake/resources/software.html ) and as source for the
rest.

*BSD? It is available in the ports section (and maybe as a binary,
too) in FreeBSD(
http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/cmake/ ), NetBSD and
OpenBSD.

Linux from scratch? If people are brave enough to build and use LFS,
they are brave enough to build CMake (CMake is autocontained and
bootstraps itself, it only depends on a C++ compiler to build itself).

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 20:02               ` Paolo Bonzini
@ 2009-08-17 20:54                 ` Johannes Schindelin
  0 siblings, 0 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 20:54 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: Erik Faye-Lund, Frank Li, git, msysgit


Hi,

On Mon, 17 Aug 2009, Paolo Bonzini wrote:

> > I think the killer argument against such a script (I actually though 
> > of that myself, but decided against it for that very reason) is that 
> > the result is to be used by Microsoft Visual Studio users, who do not 
> > typically have a scripting language, and who would not want to use it 
> > anyway.
> 
> But the script could run whenever the Makefile is updated, even under 
> Unix.

But that would have to be kept in mind by the maintainer, and he could not 
test it.

Besides, IIUC you were proposing a generator, while I suggested a 
rewriter.  My idea would require much less work, as the changes to the 
original, known good, .vcproj are minimal.

So let's have a script (if anybody feels compelled enough) that we can run 
from time to time and when it updates at least one of the .vcproj file, we 
throw the result at Frank Li for testing.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 20:17               ` Pau Garcia i Quiles
  2009-08-17 20:43                 ` Reece Dunn
@ 2009-08-17 20:56                 ` Johannes Schindelin
  2009-08-17 20:59                   ` Pau Garcia i Quiles
  1 sibling, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 20:56 UTC (permalink / raw)
  To: Pau Garcia i Quiles; +Cc: Erik Faye-Lund, Paolo Bonzini, Frank Li, git, msysgit

[-- Attachment #1: Type: TEXT/PLAIN, Size: 983 bytes --]

Hi,

On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:

> On Mon, Aug 17, 2009 at 9:53 PM, Johannes
> Schindelin<Johannes.Schindelin@gmx.de> wrote:
> 
> > Of course, we could have a script that verifies that the .vcproj files 
> > contain reference the appropriate files (which it would know about by 
> > being called from the Makefile and being passed the file names), maybe 
> > even be able to edit the .vcproj file if it is missing some.  Should 
> > not be too hard in Perl.
> 
> You'll need to special-case for Visual C++ 2010, which is different
> and incompatible with previous versions.

Ah, my beloved Microsoft time tax!

> Hence my suggestion for CMake: appropriate project files would be 
> generated for the tool the user chooses, be it VC++ 2005, VC++2010, gcc, 
> Borland C++ or anything else.

The problem is that this will bitrot even more, as nobody will use it for 
gcc, Borland C++, XCode, Eclipse or anything else, except for Microsoft 
Visual C++.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 19:51             ` Pau Garcia i Quiles
  2009-08-17 19:54               ` Pau Garcia i Quiles
@ 2009-08-17 20:58               ` Johannes Schindelin
  2009-08-17 21:03                 ` Pau Garcia i Quiles
  2009-08-17 21:20               ` Reece Dunn
  2 siblings, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 20:58 UTC (permalink / raw)
  To: Pau Garcia i Quiles; +Cc: Frank Li, git, msysgit

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1257 bytes --]

Hi,

On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:

> On Mon, Aug 17, 2009 at 9:48 PM, Johannes
> Schindelin<Johannes.Schindelin@gmx.de> wrote:
> 
> > On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:
> >
> >> What about having a CMake build system, which would work on every
> >> platform (including cross-compiling), and would produce an appropriate
> >> config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever
> >> is fit for each platform? If it's OK to include such a build system
> >> upstream, I'm volunteering to implement it.
> >
> > And reap in another dependency?
> >
> > First Python, then CMake, what tomorrow?  Is it the month of adding
> > dependencies?
> 
> I'd say it's the month of getting problems solved.

What?  I beg your _pardon_?

> CMake would make git a lot easier to build on Windows, particularly with 
> Visual C++. Replace autotools with CMake and suddenly you need to 
> maintain a single build system for every platform and compiler git 
> supports/will support. That's a sound advantage to me.

Well, I heard some pretty different opinions, and they are from quite 
recently.

In any case, before you get CMake to compile in msysGit, I think we do not 
need to talk about getting problems solved.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 20:56                 ` Johannes Schindelin
@ 2009-08-17 20:59                   ` Pau Garcia i Quiles
  2009-08-17 21:11                     ` Johannes Schindelin
  0 siblings, 1 reply; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 20:59 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Erik Faye-Lund, Paolo Bonzini, Frank Li, git, msysgit

On Mon, Aug 17, 2009 at 10:56 PM, Johannes
Schindelin<Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:
>
>> On Mon, Aug 17, 2009 at 9:53 PM, Johannes
>> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>>
>> > Of course, we could have a script that verifies that the .vcproj files
>> > contain reference the appropriate files (which it would know about by
>> > being called from the Makefile and being passed the file names), maybe
>> > even be able to edit the .vcproj file if it is missing some.  Should
>> > not be too hard in Perl.
>>
>> You'll need to special-case for Visual C++ 2010, which is different
>> and incompatible with previous versions.
>
> Ah, my beloved Microsoft time tax!

Sorry, but I make a living developing cross-platform software and
porting stuff among any funny combination of Linux, Windows, gcc,
mingw, Intel C++ and Visual C++ you can think of. CMake makes my life
easier (possible!). Given that the patches we are talking about happen
to add support for Visual C++, I'd say it stepped in at the right
moment.

>> Hence my suggestion for CMake: appropriate project files would be
>> generated for the tool the user chooses, be it VC++ 2005, VC++2010, gcc,
>> Borland C++ or anything else.
>
> The problem is that this will bitrot even more, as nobody will use it for
> gcc, Borland C++, XCode, Eclipse or anything else, except for Microsoft
> Visual C++.

How do you know? Also, please note I'm not talking about *adding* a
CMake build system, I'm talking about *replacing* the existing
autotools build system with a CMake build system, even if they coexist
for some time.

What would be the point of having two build-systems, one (autotools)
useless for Visual C++, the other one (CMake) apt for every platform ?

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 20:58               ` Johannes Schindelin
@ 2009-08-17 21:03                 ` Pau Garcia i Quiles
  0 siblings, 0 replies; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 21:03 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Frank Li, git, msysgit

> In any case, before you get CMake to compile in msysGit, I think we do not
> need to talk about getting problems solved.

At this moment I feel like developing a CMake build system for git
would be a waste of time, it would never be accepted upstream. I'm not
sure I want to spend my time in such an effort (it would easily take
2-3 days full time) and see it trashed. Sorry for being so clear, but
I tend to contribute only to projects where my help and time are
appreciated.

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 20:54                   ` Pau Garcia i Quiles
@ 2009-08-17 21:05                     ` Reece Dunn
  2009-08-17 22:17                       ` Johan 't Hart
  2009-08-17 21:05                     ` Johannes Schindelin
  1 sibling, 1 reply; 91+ messages in thread
From: Reece Dunn @ 2009-08-17 21:05 UTC (permalink / raw)
  To: Pau Garcia i Quiles
  Cc: Johannes Schindelin, Erik Faye-Lund, Paolo Bonzini, Frank Li,
	git, msysgit


2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:
> On Mon, Aug 17, 2009 at 10:43 PM, Reece Dunn<msclrhd@googlemail.com> wrote:
>> 2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:
>>> On Mon, Aug 17, 2009 at 9:53 PM, Johannes
>>> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>>>
>>>> Of course, we could have a script that verifies that the .vcproj files
>>>> contain reference the appropriate files (which it would know about by
>>>> being called from the Makefile and being passed the file names), maybe
>>>> even be able to edit the .vcproj file if it is missing some.  Should not
>>>> be too hard in Perl.
>>>
>>> You'll need to special-case for Visual C++ 2010, which is different
>>> and incompatible with previous versions. Hence my suggestion for
>>> CMake: appropriate project files would be generated for the tool the
>>> user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything
>>> else.
>>
>> The problem is that you'd still need the Visual Studio projects (one
>> each for 6, 7 (2002), 7.1 (2003), 8 (2005), 9 (2008) and 10 (2010) --
>> yes, there'll need to be one for each version of Visual Studio) as
>> people who use Visual Studio tend to primarily use the IDE. CMake
>> (which Windows users will need to download & install from somewhere)
>> will sit outside this -- unless you mean making the project files be
>> the "Makefile project" type and simply use it to invoke CMake and host
>> the source files to ease access to them from the IDE?
>
> If a CMake build system is provided, you will not need a single Visual
> Studio project, or the autotools build system, or anything else. Just
> CMake and the CMake build system (which are a bunch of CMakeLists.txt
> plain text files).

Note that I said that people who use Visual Studio are more likely to
build and develop things through the Visual Studio IDE. Unless there
is IDE integration for it, they are not likely to use it.

For an automated build, CMake would probably work.

Looking around, it seems that CMake on Windows assumes that Microsoft
Visual C is used; that is, you have to explicitly specify CC for MinGW
or cygwin to build.

> CMake takes the CMakeLists.txt file(s) as the input and generates
> makefiles for gcc, vcproj files for Visual C++, makefiles for NMake,
> Eclipse projects for Eclipse, XCode projects for XCode, etc.
>
>> Also, not every posix system will have CMake installed (e.g. Linux
>> From Scratch systems) and that's not including "exotic" systems like
>> Solaris and the *BSDs.
>
> CMake is available for many platforms (Linux x86-32 and x86-64, PPC,
> Solaris Sparc, HP-UX, Irix, AIX PPC) as a binary from the CMake site (
> http://cmake.org/cmake/resources/software.html ) and as source for the
> rest.
>
> *BSD? It is available in the ports section (and maybe as a binary,
> too) in FreeBSD(
> http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/cmake/ ), NetBSD and
> OpenBSD.

Ok, I stand corrected there.

> Linux from scratch? If people are brave enough to build and use LFS,
> they are brave enough to build CMake (CMake is autocontained and
> bootstraps itself, it only depends on a C++ compiler to build itself).

At what about at the bootstrap stage? A C compiler will be available,
but a C++ one may not.

- Reece

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 20:54                   ` Pau Garcia i Quiles
  2009-08-17 21:05                     ` Reece Dunn
@ 2009-08-17 21:05                     ` Johannes Schindelin
  2009-08-17 21:23                       ` Pau Garcia i Quiles
  1 sibling, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 21:05 UTC (permalink / raw)
  To: Pau Garcia i Quiles
  Cc: Reece Dunn, Erik Faye-Lund, Paolo Bonzini, Frank Li, git, msysgit

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1985 bytes --]

Hi,

On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:

> On Mon, Aug 17, 2009 at 10:43 PM, Reece Dunn<msclrhd@googlemail.com> wrote:
> > 2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:
> >> On Mon, Aug 17, 2009 at 9:53 PM, Johannes
> >> Schindelin<Johannes.Schindelin@gmx.de> wrote:
> >>
> >>> Of course, we could have a script that verifies that the .vcproj 
> >>> files contain reference the appropriate files (which it would know 
> >>> about by being called from the Makefile and being passed the file 
> >>> names), maybe even be able to edit the .vcproj file if it is missing 
> >>> some.  Should not be too hard in Perl.
> >>
> >> You'll need to special-case for Visual C++ 2010, which is different 
> >> and incompatible with previous versions. Hence my suggestion for 
> >> CMake: appropriate project files would be generated for the tool the 
> >> user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything 
> >> else.
> >
> > The problem is that you'd still need the Visual Studio projects (one 
> > each for 6, 7 (2002), 7.1 (2003), 8 (2005), 9 (2008) and 10 (2010) -- 
> > yes, there'll need to be one for each version of Visual Studio) as 
> > people who use Visual Studio tend to primarily use the IDE. CMake 
> > (which Windows users will need to download & install from somewhere) 
> > will sit outside this -- unless you mean making the project files be 
> > the "Makefile project" type and simply use it to invoke CMake and host 
> > the source files to ease access to them from the IDE?
> 
> If a CMake build system is provided, you will not need a single Visual 
> Studio project, or the autotools build system, or anything else. Just 
> CMake and the CMake build system (which are a bunch of CMakeLists.txt 
> plain text files).

You are putting an undue burden on the already overloaded maintainer.

Well, let's see if you can provide a /src/cmake/release.sh that compiles 
CMake from scratch, and _then_ I'll look into CMake again.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 20:59                   ` Pau Garcia i Quiles
@ 2009-08-17 21:11                     ` Johannes Schindelin
  2009-08-17 22:26                       ` Johan 't Hart
  2009-08-17 22:44                       ` Pau Garcia i Quiles
  0 siblings, 2 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 21:11 UTC (permalink / raw)
  To: Pau Garcia i Quiles; +Cc: Erik Faye-Lund, Paolo Bonzini, Frank Li, git, msysgit

Hi,

On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:

> On Mon, Aug 17, 2009 at 10:56 PM, Johannes
> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>
> > The problem is that this will bitrot even more, as nobody will use it 
> > for gcc, Borland C++, XCode, Eclipse or anything else, except for 
> > Microsoft Visual C++.
> 
> How do you know? Also, please note I'm not talking about *adding* a 
> CMake build system, I'm talking about *replacing* the existing autotools 
> build system with a CMake build system, even if they coexist for some 
> time.

You are mistaken.  We do not require using the autotools.  I _never_ call 
"./configure" yet the Makefile magically works.  Cool, huh?

But here's a clue: you will probably _never_ succeed in getting a 
replacement of the make-based build in git.git by the maintainer.  Make is 
just too ubiquitous and well-established for that.

Having said that, a CMake-based system _in addition_ to what is 
tried-and-tested to be able to support all those different kinds of 
Microsoft Visual Studio (took me 3 attempts to write that without a 
Freudian) would be welcome, _if_ you succeed in making it compile out of 
the box on msysGit.

By out-of-the-box I mean: you send a patch that adds 
/src/cmake/release.sh, I apply the patch (after briefly scanning that it 
does not install a backdoor on a machine that is not even mine, and 
therefore will never see even a single of my passwords typed in), run it, 
it compiles installs and commits cmake and cmake works.

If that's not possible, I refuse to add another problem rather than 
solving one.

If you succeed, I will ask you to do the same for Python, as you clearly 
proved by that point that you are a magician.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 19:51             ` Pau Garcia i Quiles
  2009-08-17 19:54               ` Pau Garcia i Quiles
  2009-08-17 20:58               ` Johannes Schindelin
@ 2009-08-17 21:20               ` Reece Dunn
  2009-08-17 21:29                 ` Pau Garcia i Quiles
  2 siblings, 1 reply; 91+ messages in thread
From: Reece Dunn @ 2009-08-17 21:20 UTC (permalink / raw)
  To: Pau Garcia i Quiles; +Cc: Johannes Schindelin, Frank Li, git, msysgit

2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:
> On Mon, Aug 17, 2009 at 9:48 PM, Johannes
> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>
>> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:
>>
>>> What about having a CMake build system, which would work on every
>>> platform (including cross-compiling), and would produce an appropriate
>>> config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever
>>> is fit for each platform? If it's OK to include such a build system
>>> upstream, I'm volunteering to implement it.
>>
>> And reap in another dependency?
>>
>> First Python, then CMake, what tomorrow?  Is it the month of adding
>> dependencies?
>
> I'd say it's the month of getting problems solved.
>
> CMake would make git a lot easier to build on Windows, particularly
> with Visual C++. Replace autotools with CMake and suddenly you need to
> maintain a single build system for every platform and compiler git
> supports/will support. That's a sound advantage to me.

Realistically, you'd need CMake for Windows/msvc and autotools for
POSIX systems. I know that CMake is supported on POSIX, but not
everyone has access to it. Poppler, for example, has this dual build
system to support Windows as well as other systems (that, and it has
KDE4 bindings, so CMake is pretty much a given).

For CMake to work, it would need to support building all of git
(including the man, html and pdf documents from the asciidoc sources),
the localisation support and the optional packages (OpenSSL, CURL). I
know that KDE uses CMake, so this should all be possible.

- Reece

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 21:05                     ` Johannes Schindelin
@ 2009-08-17 21:23                       ` Pau Garcia i Quiles
  2009-08-17 22:10                         ` Johannes Schindelin
  0 siblings, 1 reply; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 21:23 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Reece Dunn, Erik Faye-Lund, Paolo Bonzini, Frank Li, git, msysgit

On Mon, Aug 17, 2009 at 11:05 PM, Johannes
Schindelin<Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:
>
>> On Mon, Aug 17, 2009 at 10:43 PM, Reece Dunn<msclrhd@googlemail.com> wrote:
>> > 2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:
>> >> On Mon, Aug 17, 2009 at 9:53 PM, Johannes
>> >> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>> >>
>> >>> Of course, we could have a script that verifies that the .vcproj
>> >>> files contain reference the appropriate files (which it would know
>> >>> about by being called from the Makefile and being passed the file
>> >>> names), maybe even be able to edit the .vcproj file if it is missing
>> >>> some.  Should not be too hard in Perl.
>> >>
>> >> You'll need to special-case for Visual C++ 2010, which is different
>> >> and incompatible with previous versions. Hence my suggestion for
>> >> CMake: appropriate project files would be generated for the tool the
>> >> user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything
>> >> else.
>> >
>> > The problem is that you'd still need the Visual Studio projects (one
>> > each for 6, 7 (2002), 7.1 (2003), 8 (2005), 9 (2008) and 10 (2010) --
>> > yes, there'll need to be one for each version of Visual Studio) as
>> > people who use Visual Studio tend to primarily use the IDE. CMake
>> > (which Windows users will need to download & install from somewhere)
>> > will sit outside this -- unless you mean making the project files be
>> > the "Makefile project" type and simply use it to invoke CMake and host
>> > the source files to ease access to them from the IDE?
>>
>> If a CMake build system is provided, you will not need a single Visual
>> Studio project, or the autotools build system, or anything else. Just
>> CMake and the CMake build system (which are a bunch of CMakeLists.txt
>> plain text files).
>
> You are putting an undue burden on the already overloaded maintainer.

Sorry, but I'm a bit lost now. What maintainer are we talking about now? Junio?

As I would be providing a turn-key CMake build system, the only burden
I would be putting on the maintainer would be learning CMake.

Given that I'm providing a comprehensive (100+ slides) CMake tutorial
( http://www.elpauer.org/stuff/learning_cmake.pdf ) , which I use in
my CMake workshops, I think I'm making that burden a bit lighter.

If the next git conference is somewhere in Europe, I could also fly
there and we'd have a CMake tutorial, if people would feel more
comfortable that way.

> Well, let's see if you can provide a /src/cmake/release.sh that compiles
> CMake from scratch, and _then_ I'll look into CMake again.

Again, I'm a bit lost. What '/src/cmake/release.sh' are we talking
about now? Would that be part of CMake or git ?

If you want to build CMake from scratch, you only need to download the
source from http://cmake.org/cmake/resources/software.html , then run
"./bootstrap" in the source directory. That's true for every platform
but Visual C++, which requires you to download a pre-built CMake
binary to build CMake.

If you mean you want to bootstrap git (i. e. download the git tarball,
which would include the CMake sources, then bootstrap CMake, then
build git using the CMake build system), I'd say that makes no sense
at all. That would be like saying you want to include the autotools
sources, the OpenSSL sources, the curl sources, the Subversion
sources, etc in the git tarball. Insane.

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 21:20               ` Reece Dunn
@ 2009-08-17 21:29                 ` Pau Garcia i Quiles
  0 siblings, 0 replies; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 21:29 UTC (permalink / raw)
  To: Reece Dunn; +Cc: Johannes Schindelin, Frank Li, git, msysgit

On Mon, Aug 17, 2009 at 11:20 PM, Reece Dunn<msclrhd@googlemail.com> wrote:

> Realistically, you'd need CMake for Windows/msvc and autotools for
> POSIX systems. I know that CMake is supported on POSIX, but not
> everyone has access to it. Poppler, for example, has this dual build
> system to support Windows as well as other systems (that, and it has
> KDE4 bindings, so CMake is pretty much a given).

It's not exactly like that. It would be more accurate to say "if you
have POSIX, CMake will work; if you don't have POSIX, it may or may
not work".

I'd say 99% of git users run git on a platform which supports enough
POSIX to build CMake.

Please note if you are cross-compiling git, you need CMake (hence
POSIX) on the platform you are cross-compiling on (the "host
platform"), not on the platform you are cross-compiling for (the
"target platform").

> For CMake to work, it would need to support building all of git
> (including the man, html and pdf documents from the asciidoc sources),
> the localisation support and the optional packages (OpenSSL, CURL). I
> know that KDE uses CMake, so this should all be possible.

All possible. Plus using CMake would make easier to build installers
(NSIS, WiX, .deb, .rpm, etc), submit the results of the tests to a
dashboard ( http://my.cdash.org/ ), and more.

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 21:23                       ` Pau Garcia i Quiles
@ 2009-08-17 22:10                         ` Johannes Schindelin
  2009-08-17 22:19                           ` Pau Garcia i Quiles
  0 siblings, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 22:10 UTC (permalink / raw)
  To: Pau Garcia i Quiles
  Cc: Reece Dunn, Erik Faye-Lund, Paolo Bonzini, Frank Li, git, msysgit

Hi,

On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:

> On Mon, Aug 17, 2009 at 11:05 PM, Johannes
> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>
> > You are putting an undue burden on the already overloaded maintainer.
> 
> Sorry, but I'm a bit lost now. What maintainer are we talking about now? 
> Junio?

I was talking about me, as maintainer of msysGit.

> As I would be providing a turn-key CMake build system, the only burden I 
> would be putting on the maintainer would be learning CMake.
> 
> Given that I'm providing a comprehensive (100+ slides) CMake tutorial
> ( http://www.elpauer.org/stuff/learning_cmake.pdf ) , which I use in
> my CMake workshops, I think I'm making that burden a bit lighter.
> 
> If the next git conference is somewhere in Europe, I could also fly
> there and we'd have a CMake tutorial, if people would feel more
> comfortable that way.

This is exactly what I mean by burden.  Why do I have to learn a new 
system, and suffer the hassle of integrating it into the current build 
system, which works quite well thankyouverymuch?

Never run a changing system.

> > Well, let's see if you can provide a /src/cmake/release.sh that 
> > compiles CMake from scratch, and _then_ I'll look into CMake again.
> 
> Again, I'm a bit lost. What '/src/cmake/release.sh' are we talking about 
> now? Would that be part of CMake or git ?

Maybe this:

http://article.gmane.org/gmane.comp.version-control.git/126286

and this:

http://repo.or.cz/w/msysgit.git?a=blob;f=src/curl/release.sh;h=d7516cbf6e92af4de138ce405d88561fbe1e92a8;hb=968336eddac1874c56cd934d10783566af5a3e26

helps.

To quote myself (as you appear to have missed that):

	Having said that, a CMake-based system _in addition_ to what is 
	tried-and-tested to be able to support all those different kinds of 
	Microsoft Visual Studio (took me 3 attempts to write that without a 
	Freudian) would be welcome, _if_ you succeed in making it compile out
	of the box on msysGit.

	By out-of-the-box I mean: you send a patch that adds 
	/src/cmake/release.sh, I apply the patch (after briefly scanning 
	that it	does not install a backdoor on a machine that is not even
	mine, and therefore will never see even a single of my passwords
	typed in), run it, it compiles installs and commits cmake and cmake
	works.

Short form: if you make it easy for me, I will look at it again, if you 
make it hard on me, you will just have done to me what you now try 
to avoid yourself: wasted time.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 21:05                     ` Reece Dunn
@ 2009-08-17 22:17                       ` Johan 't Hart
  0 siblings, 0 replies; 91+ messages in thread
From: Johan 't Hart @ 2009-08-17 22:17 UTC (permalink / raw)
  To: Reece Dunn
  Cc: Pau Garcia i Quiles, Johannes Schindelin, Erik Faye-Lund,
	Paolo Bonzini, Frank Li, git, msysgit

Reece Dunn schreef:

> Note that I said that people who use Visual Studio are more likely to
> build and develop things through the Visual Studio IDE. Unless there
> is IDE integration for it, they are not likely to use it.

CMake generates a .vcproj file for visual studio, so users who want to 
use the IDE let CMake generate the .vcproj file and then use the IDE to 
debug git.
There could be a batchfile like /vc_build/make_vs_files.bat or something 
to make it easy for VS users using the IDE.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 22:10                         ` Johannes Schindelin
@ 2009-08-17 22:19                           ` Pau Garcia i Quiles
  2009-08-17 22:21                             ` Paolo Bonzini
  0 siblings, 1 reply; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 22:19 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Reece Dunn, Erik Faye-Lund, Paolo Bonzini, Frank Li, git, msysgit

On Tue, Aug 18, 2009 at 12:10 AM, Johannes
Schindelin<Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:
>
>> On Mon, Aug 17, 2009 at 11:05 PM, Johannes
>> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>>
>> > You are putting an undue burden on the already overloaded maintainer.
>>
>> Sorry, but I'm a bit lost now. What maintainer are we talking about now?
>> Junio?
>
> I was talking about me, as maintainer of msysGit.
>
>> As I would be providing a turn-key CMake build system, the only burden I
>> would be putting on the maintainer would be learning CMake.
>>
>> Given that I'm providing a comprehensive (100+ slides) CMake tutorial
>> ( http://www.elpauer.org/stuff/learning_cmake.pdf ) , which I use in
>> my CMake workshops, I think I'm making that burden a bit lighter.
>>
>> If the next git conference is somewhere in Europe, I could also fly
>> there and we'd have a CMake tutorial, if people would feel more
>> comfortable that way.
>
> This is exactly what I mean by burden.  Why do I have to learn a new
> system, and suffer the hassle of integrating it into the current build
> system, which works quite well thankyouverymuch?

Because it works for every platform, including Visual C++, where a
Bourne shell is not available and where you currently need to maintain
a different built system.

> Never run a changing system.
>
>> > Well, let's see if you can provide a /src/cmake/release.sh that
>> > compiles CMake from scratch, and _then_ I'll look into CMake again.
>>
>> Again, I'm a bit lost. What '/src/cmake/release.sh' are we talking about
>> now? Would that be part of CMake or git ?
>
> Maybe this:
>
> http://article.gmane.org/gmane.comp.version-control.git/126286
>
> and this:
>
> http://repo.or.cz/w/msysgit.git?a=blob;f=src/curl/release.sh;h=d7516cbf6e92af4de138ce405d88561fbe1e92a8;hb=968336eddac1874c56cd934d10783566af5a3e26
>
> helps.
>
> To quote myself (as you appear to have missed that):
>
>        Having said that, a CMake-based system _in addition_ to what is
>        tried-and-tested to be able to support all those different kinds of
>        Microsoft Visual Studio (took me 3 attempts to write that without a
>        Freudian) would be welcome, _if_ you succeed in making it compile out
>        of the box on msysGit.
>
>        By out-of-the-box I mean: you send a patch that adds
>        /src/cmake/release.sh, I apply the patch (after briefly scanning
>        that it does not install a backdoor on a machine that is not even
>        mine, and therefore will never see even a single of my passwords
>        typed in), run it, it compiles installs and commits cmake and cmake
>        works.

Hmmm indeed I have missed a lot, thanks. A lot of what you had written
in other e-mails was being hidden by GMail as "quoted" text :-/

It seems we are talking about two different things here. I'm talking
about getting the CMake-based build system in git.git, you are talking
about msysgit. If getting into msysgit is the first step to getting
into git.git, I'll start from msysgit. Are the differences between
both branches so big they cannot be merged into a single branch yet ?

> Short form: if you make it easy for me, I will look at it again, if you
> make it hard on me, you will just have done to me what you now try
> to avoid yourself: wasted time.

Let's see what I can do.

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 22:19                           ` Pau Garcia i Quiles
@ 2009-08-17 22:21                             ` Paolo Bonzini
  2009-08-17 22:32                               ` Thiago Farina
  2009-08-17 22:33                               ` Thiago Farina
  0 siblings, 2 replies; 91+ messages in thread
From: Paolo Bonzini @ 2009-08-17 22:21 UTC (permalink / raw)
  To: Pau Garcia i Quiles
  Cc: Johannes Schindelin, Reece Dunn, Erik Faye-Lund, Frank Li, git, msysgit


>> This is exactly what I mean by burden.  Why do I have to learn a new
>> system, and suffer the hassle of integrating it into the current build
>> system, which works quite well thankyouverymuch?
>
> Because it works for every platform, including Visual C++, where a
> Bourne shell is not available and where you currently need to maintain
> a different built system.

But it comes with its own share of idiosyncracies.  There are as many 
CMake haters as there are autotools haters.

I don't see CMake being used by git.git before hell freezes over.  For 
msysgit, however, it may be an interesting approach.

> Let's see what I can do.

I'm also curious.

Paolo

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 21:11                     ` Johannes Schindelin
@ 2009-08-17 22:26                       ` Johan 't Hart
  2009-08-17 23:00                         ` Pau Garcia i Quiles
  2009-08-17 22:44                       ` Pau Garcia i Quiles
  1 sibling, 1 reply; 91+ messages in thread
From: Johan 't Hart @ 2009-08-17 22:26 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Pau Garcia i Quiles, Erik Faye-Lund, Paolo Bonzini, Frank Li,
	git, msysgit


Johannes Schindelin schreef:

> Having said that, a CMake-based system _in addition_ to what is 
> tried-and-tested to be able to support all those different kinds of 
> Microsoft Visual Studio (took me 3 attempts to write that without a 
> Freudian) would be welcome, _if_ you succeed in making it compile out of 
> the box on msysGit.

That would require (I think) that CMake is build by the msysgit gcc 
tools available in msysgit, since CMake can't be build by VS right? Pau 
do you think that is possible?

It would be fun. Download the msysgit netinstaller, set it up, install 
it, and after that, CMake is bootstrapped, and the visual studio .vcproj 
files are generated and everyone (VS developers and msys developers) are 
ready to go!

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 16:05       ` [PATCH 10/11] Add MSVC Project file Frank Li
  2009-08-17 17:11         ` Johannes Schindelin
  2009-08-17 17:34         ` Paolo Bonzini
@ 2009-08-17 22:27         ` Thiago Farina
  2009-08-17 22:29           ` Thiago Farina
  2009-08-17 22:39           ` Johannes Schindelin
  2 siblings, 2 replies; 91+ messages in thread
From: Thiago Farina @ 2009-08-17 22:27 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit, Johannes.Schindelin

[-- Attachment #1: Type: text/plain, Size: 67139 bytes --]

What about the common-cmds.h that is included in builtin-help.c? How it will
be generated?
I followed the instructions in ReadMe, then I can't compile because of this
"missing" file.
On Mon, Aug 17, 2009 at 1:05 PM, Frank Li <lznuaa@gmail.com> wrote:

> Add libgit.vcproj to build common library.
> Add git.vcproj to build git program.
>
> Signed-off-by: Frank Li <lznuaa@gmail.com>
> ---
>  compat/vcbuild/git/git.vcproj       |  197 +++++
>  compat/vcbuild/libgit/libgit.vcproj | 1347
> +++++++++++++++++++++++++++++++++++
>  2 files changed, 1544 insertions(+), 0 deletions(-)
>  create mode 100644 compat/vcbuild/git/git.vcproj
>  create mode 100644 compat/vcbuild/libgit/libgit.vcproj
>
> diff --git a/compat/vcbuild/git/git.vcproj b/compat/vcbuild/git/git.vcproj
> new file mode 100644
> index 0000000..6f85de3
> --- /dev/null
> +++ b/compat/vcbuild/git/git.vcproj
> @@ -0,0 +1,197 @@
> +<?xml version="1.0" encoding="gb2312"?>
> +<VisualStudioProject
> +       ProjectType="Visual C++"
> +       Version="9.00"
> +       Name="git"
> +       ProjectGUID="{E3E30E51-C5AD-407B-AB43-985E4111474A}"
> +       RootNamespace="git"
> +       Keyword="Win32Proj"
> +       TargetFrameworkVersion="196613"
> +       >
> +       <Platforms>
> +               <Platform
> +                       Name="Win32"
> +               />
> +       </Platforms>
> +       <ToolFiles>
> +       </ToolFiles>
> +       <Configurations>
> +               <Configuration
> +                       Name="Debug|Win32"
> +
> OutputDirectory="$(SolutionDir)$(ConfigurationName)\bin"
> +                       IntermediateDirectory="$(ConfigurationName)"
> +                       ConfigurationType="1"
> +                       CharacterSet="0"
> +                       >
> +                       <Tool
> +                               Name="VCPreBuildEventTool"
> +                       />
> +                       <Tool
> +                               Name="VCCustomBuildTool"
> +                       />
> +                       <Tool
> +                               Name="VCXMLDataGeneratorTool"
> +                       />
> +                       <Tool
> +                               Name="VCWebServiceProxyGeneratorTool"
> +                       />
> +                       <Tool
> +                               Name="VCMIDLTool"
> +                       />
> +                       <Tool
> +                               Name="VCCLCompilerTool"
> +                               Optimization="0"
> +
> AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
> +
> PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
> +                               MinimalRebuild="true"
> +                               BasicRuntimeChecks="3"
> +                               RuntimeLibrary="3"
> +                               UsePrecompiledHeader="0"
> +                               WarningLevel="3"
> +                               DebugInformationFormat="4"
> +                       />
> +                       <Tool
> +                               Name="VCManagedResourceCompilerTool"
> +                       />
> +                       <Tool
> +                               Name="VCResourceCompilerTool"
> +                       />
> +                       <Tool
> +                               Name="VCPreLinkEventTool"
> +                       />
> +                       <Tool
> +                               Name="VCLinkerTool"
> +                               AdditionalDependencies="wininet.lib
> ws2_32.lib "
> +                               LinkIncremental="2"
> +                               GenerateDebugInformation="true"
> +                               SubSystem="1"
> +                               TargetMachine="1"
> +                       />
> +                       <Tool
> +                               Name="VCALinkTool"
> +                       />
> +                       <Tool
> +                               Name="VCManifestTool"
> +                       />
> +                       <Tool
> +                               Name="VCXDCMakeTool"
> +                       />
> +                       <Tool
> +                               Name="VCBscMakeTool"
> +                       />
> +                       <Tool
> +                               Name="VCFxCopTool"
> +                       />
> +                       <Tool
> +                               Name="VCAppVerifierTool"
> +                       />
> +                       <Tool
> +                               Name="VCPostBuildEventTool"
> +                       />
> +               </Configuration>
> +               <Configuration
> +                       Name="Release|Win32"
> +
> OutputDirectory="$(SolutionDir)$(ConfigurationName)\bin"
> +                       IntermediateDirectory="$(ConfigurationName)"
> +                       ConfigurationType="1"
> +                       CharacterSet="0"
> +                       WholeProgramOptimization="1"
> +                       >
> +                       <Tool
> +                               Name="VCPreBuildEventTool"
> +                       />
> +                       <Tool
> +                               Name="VCCustomBuildTool"
> +                       />
> +                       <Tool
> +                               Name="VCXMLDataGeneratorTool"
> +                       />
> +                       <Tool
> +                               Name="VCWebServiceProxyGeneratorTool"
> +                       />
> +                       <Tool
> +                               Name="VCMIDLTool"
> +                       />
> +                       <Tool
> +                               Name="VCCLCompilerTool"
> +                               Optimization="2"
> +                               EnableIntrinsicFunctions="true"
> +
> AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
> +
> PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
> +                               RuntimeLibrary="2"
> +                               EnableFunctionLevelLinking="true"
> +                               UsePrecompiledHeader="0"
> +                               WarningLevel="3"
> +                               DebugInformationFormat="3"
> +                       />
> +                       <Tool
> +                               Name="VCManagedResourceCompilerTool"
> +                       />
> +                       <Tool
> +                               Name="VCResourceCompilerTool"
> +                       />
> +                       <Tool
> +                               Name="VCPreLinkEventTool"
> +                       />
> +                       <Tool
> +                               Name="VCLinkerTool"
> +                               AdditionalDependencies="wininet.lib
> ws2_32.lib "
> +                               LinkIncremental="1"
> +                               GenerateDebugInformation="true"
> +                               SubSystem="1"
> +                               OptimizeReferences="2"
> +                               EnableCOMDATFolding="2"
> +                               TargetMachine="1"
> +                       />
> +                       <Tool
> +                               Name="VCALinkTool"
> +                       />
> +                       <Tool
> +                               Name="VCManifestTool"
> +                       />
> +                       <Tool
> +                               Name="VCXDCMakeTool"
> +                       />
> +                       <Tool
> +                               Name="VCBscMakeTool"
> +                       />
> +                       <Tool
> +                               Name="VCFxCopTool"
> +                       />
> +                       <Tool
> +                               Name="VCAppVerifierTool"
> +                       />
> +                       <Tool
> +                               Name="VCPostBuildEventTool"
> +                       />
> +               </Configuration>
> +       </Configurations>
> +       <References>
> +       </References>
> +       <Files>
> +               <Filter
> +                       Name="Source Files"
> +                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
> +
> UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
> +                       >
> +                       <File
> +                               RelativePath="..\..\..\git.c"
> +                               >
> +                       </File>
> +               </Filter>
> +               <Filter
> +                       Name="Header Files"
> +                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
> +
> UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
> +                       >
> +               </Filter>
> +               <Filter
> +                       Name="Resource Files"
> +
> Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
> +
> UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
> +                       >
> +               </Filter>
> +       </Files>
> +       <Globals>
> +       </Globals>
> +</VisualStudioProject>
> diff --git a/compat/vcbuild/libgit/libgit.vcproj
> b/compat/vcbuild/libgit/libgit.vcproj
> new file mode 100644
> index 0000000..bbc3aed
> --- /dev/null
> +++ b/compat/vcbuild/libgit/libgit.vcproj
> @@ -0,0 +1,1347 @@
> +<?xml version="1.0" encoding="gb2312"?>
> +<VisualStudioProject
> +       ProjectType="Visual C++"
> +       Version="9.00"
> +       Name="libgit"
> +       ProjectGUID="{F6DEC8C3-B803-4A86-8848-430F08B499E3}"
> +       RootNamespace="libgit"
> +       Keyword="Win32Proj"
> +       TargetFrameworkVersion="196613"
> +       >
> +       <Platforms>
> +               <Platform
> +                       Name="Win32"
> +               />
> +       </Platforms>
> +       <ToolFiles>
> +       </ToolFiles>
> +       <Configurations>
> +               <Configuration
> +                       Name="Debug|Win32"
> +
> OutputDirectory="$(SolutionDir)$(ConfigurationName)"
> +                       IntermediateDirectory="$(ConfigurationName)"
> +                       ConfigurationType="4"
> +                       CharacterSet="0"
> +                       >
> +                       <Tool
> +                               Name="VCPreBuildEventTool"
> +                       />
> +                       <Tool
> +                               Name="VCCustomBuildTool"
> +                       />
> +                       <Tool
> +                               Name="VCXMLDataGeneratorTool"
> +                       />
> +                       <Tool
> +                               Name="VCWebServiceProxyGeneratorTool"
> +                       />
> +                       <Tool
> +                               Name="VCMIDLTool"
> +                       />
> +                       <Tool
> +                               Name="VCCLCompilerTool"
> +                               Optimization="0"
> +                               InlineFunctionExpansion="1"
> +
> AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
> +                               PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
> +                               MinimalRebuild="true"
> +                               BasicRuntimeChecks="3"
> +                               RuntimeLibrary="3"
> +                               UsePrecompiledHeader="0"
> +                               WarningLevel="3"
> +                               DebugInformationFormat="3"
> +                       />
> +                       <Tool
> +                               Name="VCManagedResourceCompilerTool"
> +                       />
> +                       <Tool
> +                               Name="VCResourceCompilerTool"
> +                       />
> +                       <Tool
> +                               Name="VCPreLinkEventTool"
> +                       />
> +                       <Tool
> +                               Name="VCLibrarianTool"
> +                       />
> +                       <Tool
> +                               Name="VCALinkTool"
> +                       />
> +                       <Tool
> +                               Name="VCXDCMakeTool"
> +                       />
> +                       <Tool
> +                               Name="VCBscMakeTool"
> +                       />
> +                       <Tool
> +                               Name="VCFxCopTool"
> +                       />
> +                       <Tool
> +                               Name="VCPostBuildEventTool"
> +                       />
> +               </Configuration>
> +               <Configuration
> +                       Name="Release|Win32"
> +
> OutputDirectory="$(SolutionDir)$(ConfigurationName)"
> +                       IntermediateDirectory="$(ConfigurationName)"
> +                       ConfigurationType="4"
> +                       CharacterSet="0"
> +                       WholeProgramOptimization="1"
> +                       >
> +                       <Tool
> +                               Name="VCPreBuildEventTool"
> +                       />
> +                       <Tool
> +                               Name="VCCustomBuildTool"
> +                       />
> +                       <Tool
> +                               Name="VCXMLDataGeneratorTool"
> +                       />
> +                       <Tool
> +                               Name="VCWebServiceProxyGeneratorTool"
> +                       />
> +                       <Tool
> +                               Name="VCMIDLTool"
> +                       />
> +                       <Tool
> +                               Name="VCCLCompilerTool"
> +                               Optimization="2"
> +                               InlineFunctionExpansion="1"
> +                               EnableIntrinsicFunctions="true"
> +
> AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
> +                               PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
> +                               RuntimeLibrary="2"
> +                               EnableFunctionLevelLinking="true"
> +                               UsePrecompiledHeader="0"
> +                               WarningLevel="3"
> +                               DebugInformationFormat="3"
> +                       />
> +                       <Tool
> +                               Name="VCManagedResourceCompilerTool"
> +                       />
> +                       <Tool
> +                               Name="VCResourceCompilerTool"
> +                       />
> +                       <Tool
> +                               Name="VCPreLinkEventTool"
> +                       />
> +                       <Tool
> +                               Name="VCLibrarianTool"
> +                       />
> +                       <Tool
> +                               Name="VCALinkTool"
> +                       />
> +                       <Tool
> +                               Name="VCXDCMakeTool"
> +                       />
> +                       <Tool
> +                               Name="VCBscMakeTool"
> +                       />
> +                       <Tool
> +                               Name="VCFxCopTool"
> +                       />
> +                       <Tool
> +                               Name="VCPostBuildEventTool"
> +                       />
> +               </Configuration>
> +       </Configurations>
> +       <References>
> +       </References>
> +       <Files>
> +               <Filter
> +                       Name="Source Files"
> +                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
> +
> UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
> +                       >
> +                       <File
> +                               RelativePath="..\..\msvc.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\mozilla-sha1\sha1.c"
> +                               >
> +                       </File>
> +               </Filter>
> +               <Filter
> +                       Name="Header Files"
> +                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
> +
> UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
> +                       >
> +                       <File
> +                               RelativePath="..\..\..\archive.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\attr.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\blob.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\branch.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\bundle.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\cache-tree.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\cache.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\color.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\commit.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\csum-file.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\decorate.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\delta.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diff.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diffcore.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\dir.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\exec_cmd.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\fetch-pack.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\fsck.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\git-compat-util.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\graph.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\grep.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\hash.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\help.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\http.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\levenshtein.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\list-objects.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\ll-merge.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\log-tree.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\mailmap.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\merge-recursive.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\notes.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\object.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pack-refs.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pack-revindex.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pack.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\parse-options.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\patch-ids.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pkt-line.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\progress.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\quote.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\reachable.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\reflog-walk.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\refs.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\remote.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\rerere.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\revision.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\run-command.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\send-pack.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\sha1-lookup.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\shortlog.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\sideband.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\sigchain.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\strbuf.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\string-list.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\tag.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\tar.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\thread-utils.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\transport.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\tree-walk.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\tree.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\unpack-trees.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\userdiff.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\utf8.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\walker.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\wt-status.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff-interface.h"
> +                               >
> +                       </File>
> +               </Filter>
> +               <Filter
> +                       Name="Resource Files"
> +
> Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
> +
> UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
> +                       >
> +               </Filter>
> +               <Filter
> +                       Name="compat"
> +                       >
> +                       <File
> +                               RelativePath="..\..\..\compat\basename.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\cygwin.h"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\compat\fnmatch\fnmatch.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\compat\fnmatch\fnmatch.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\fopen.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\memmem.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\mingw.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\mingw.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\mkdtemp.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\mkstemps.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\pread.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\qsort.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\compat\regex\regex.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\compat\regex\regex.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\setenv.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\snprintf.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\strcasestr.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\strlcpy.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\strtoumax.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\unsetenv.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\win32.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\win32mmap.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\compat\winansi.c"
> +                               >
> +                       </File>
> +               </Filter>
> +               <Filter
> +                       Name="git"
> +                       >
> +                       <File
> +                               RelativePath="..\..\..\abspath.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\alias.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\alloc.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\archive-tar.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\archive-zip.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\archive.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\attr.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\base85.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\bisect.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\blob.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\branch.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-add.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-annotate.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-apply.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-archive.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-bisect--helper.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-blame.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-branch.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-bundle.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-cat-file.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-check-attr.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-check-ref-format.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-checkout-index.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-checkout.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-clean.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-clone.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-commit-tree.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-commit.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-config.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-count-objects.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-describe.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-diff-files.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-diff-index.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-diff-tree.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-diff.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-fast-export.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-fetch--tool.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-fetch-pack.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-fetch.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-fmt-merge-msg.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-for-each-ref.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-fsck.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-gc.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-grep.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-help.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-init-db.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-log.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-ls-files.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-ls-remote.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-ls-tree.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-mailinfo.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-mailsplit.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-merge-base.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-merge-file.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-merge-ours.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-merge-recursive.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-merge.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-mktree.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-mv.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-name-rev.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-pack-objects.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-pack-refs.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-prune-packed.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-prune.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-push.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-read-tree.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-receive-pack.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-reflog.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-remote.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-rerere.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-reset.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-rev-list.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-rev-parse.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-revert.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-rm.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-send-pack.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-shortlog.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-show-branch.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-show-ref.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-stripspace.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-symbolic-ref.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-tag.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\builtin-tar-tree.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-unpack-objects.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-update-index.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-update-ref.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-upload-archive.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-verify-pack.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-verify-tag.c"
> +                               >
> +                       </File>
> +                       <File
> +
> RelativePath="..\..\..\builtin-write-tree.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\bundle.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\cache-tree.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\color.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\combine-diff.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\commit.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\config.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\connect.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\convert.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\copy.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\csum-file.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\ctype.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\date.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\decorate.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diff-delta.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diff-lib.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diff-no-index.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diff.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diffcore-break.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diffcore-delta.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diffcore-order.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diffcore-pickaxe.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\diffcore-rename.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\dir.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\editor.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\entry.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\environment.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\exec_cmd.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\fsck.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\graph.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\grep.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\hash.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\help.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\ident.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\levenshtein.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\list-objects.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\ll-merge.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\lockfile.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\log-tree.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\mailmap.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\match-trees.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\merge-file.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\merge-recursive.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\merge-tree.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\name-hash.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\object.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pack-check.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pack-refs.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pack-revindex.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pack-write.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pager.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\parse-options.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\patch-delta.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\patch-ids.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\path.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pkt-line.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\preload-index.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\pretty.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\progress.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\quote.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\reachable.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\read-cache.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\reflog-walk.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\refs.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\remote.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\rerere.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\revision.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\run-command.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\server-info.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\setup.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\sha1-lookup.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\sha1_file.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\sha1_name.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\shallow.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\sideband.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\sigchain.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\strbuf.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\string-list.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\symlinks.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\tag.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\thread-utils.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\trace.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\transport.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\tree-diff.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\tree-walk.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\tree.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\unpack-trees.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\usage.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\userdiff.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\utf8.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\walker.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\wrapper.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\write_or_die.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\ws.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\wt-status.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff-interface.c"
> +                               >
> +                       </File>
> +               </Filter>
> +               <Filter
> +                       Name="xdiff"
> +                       >
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xdiff.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xdiffi.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xdiffi.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xemit.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xemit.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xinclude.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xmacros.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xmerge.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xpatience.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xprepare.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xprepare.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xtypes.h"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xutils.c"
> +                               >
> +                       </File>
> +                       <File
> +                               RelativePath="..\..\..\xdiff\xutils.h"
> +                               >
> +                       </File>
> +               </Filter>
> +       </Files>
> +       <Globals>
> +       </Globals>
> +</VisualStudioProject>
> --
> 1.6.4.msysgit.0
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>

[-- Attachment #2: Type: text/html, Size: 81034 bytes --]

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 22:27         ` [PATCH 10/11] Add MSVC Project file Thiago Farina
@ 2009-08-17 22:29           ` Thiago Farina
  2009-08-17 22:39           ` Johannes Schindelin
  1 sibling, 0 replies; 91+ messages in thread
From: Thiago Farina @ 2009-08-17 22:29 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit, Johannes.Schindelin

[-- Attachment #1: Type: text/plain, Size: 68751 bytes --]

What about the common-cmds.h that is included in builtin-help.c? How it will
be generated?
I followed the instructions in ReadMe, then I can't compile because of this
"missing" file.

On Mon, Aug 17, 2009 at 7:27 PM, Thiago Farina <tfransosi@gmail.com> wrote:

> What about the common-cmds.h that is included in builtin-help.c? How it
> will be generated?
> I followed the instructions in ReadMe, then I can't compile because of this
> "missing" file.
>
> On Mon, Aug 17, 2009 at 1:05 PM, Frank Li <lznuaa@gmail.com> wrote:
>
>> Add libgit.vcproj to build common library.
>> Add git.vcproj to build git program.
>>
>> Signed-off-by: Frank Li <lznuaa@gmail.com>
>> ---
>>  compat/vcbuild/git/git.vcproj       |  197 +++++
>>  compat/vcbuild/libgit/libgit.vcproj | 1347
>> +++++++++++++++++++++++++++++++++++
>>  2 files changed, 1544 insertions(+), 0 deletions(-)
>>  create mode 100644 compat/vcbuild/git/git.vcproj
>>  create mode 100644 compat/vcbuild/libgit/libgit.vcproj
>>
>> diff --git a/compat/vcbuild/git/git.vcproj b/compat/vcbuild/git/git.vcproj
>> new file mode 100644
>> index 0000000..6f85de3
>> --- /dev/null
>> +++ b/compat/vcbuild/git/git.vcproj
>> @@ -0,0 +1,197 @@
>> +<?xml version="1.0" encoding="gb2312"?>
>> +<VisualStudioProject
>> +       ProjectType="Visual C++"
>> +       Version="9.00"
>> +       Name="git"
>> +       ProjectGUID="{E3E30E51-C5AD-407B-AB43-985E4111474A}"
>> +       RootNamespace="git"
>> +       Keyword="Win32Proj"
>> +       TargetFrameworkVersion="196613"
>> +       >
>> +       <Platforms>
>> +               <Platform
>> +                       Name="Win32"
>> +               />
>> +       </Platforms>
>> +       <ToolFiles>
>> +       </ToolFiles>
>> +       <Configurations>
>> +               <Configuration
>> +                       Name="Debug|Win32"
>> +
>> OutputDirectory="$(SolutionDir)$(ConfigurationName)\bin"
>> +                       IntermediateDirectory="$(ConfigurationName)"
>> +                       ConfigurationType="1"
>> +                       CharacterSet="0"
>> +                       >
>> +                       <Tool
>> +                               Name="VCPreBuildEventTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCCustomBuildTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCXMLDataGeneratorTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCWebServiceProxyGeneratorTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCMIDLTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCCLCompilerTool"
>> +                               Optimization="0"
>> +
>> AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
>> +
>> PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
>> +                               MinimalRebuild="true"
>> +                               BasicRuntimeChecks="3"
>> +                               RuntimeLibrary="3"
>> +                               UsePrecompiledHeader="0"
>> +                               WarningLevel="3"
>> +                               DebugInformationFormat="4"
>> +                       />
>> +                       <Tool
>> +                               Name="VCManagedResourceCompilerTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCResourceCompilerTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCPreLinkEventTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCLinkerTool"
>> +                               AdditionalDependencies="wininet.lib
>> ws2_32.lib "
>> +                               LinkIncremental="2"
>> +                               GenerateDebugInformation="true"
>> +                               SubSystem="1"
>> +                               TargetMachine="1"
>> +                       />
>> +                       <Tool
>> +                               Name="VCALinkTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCManifestTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCXDCMakeTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCBscMakeTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCFxCopTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCAppVerifierTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCPostBuildEventTool"
>> +                       />
>> +               </Configuration>
>> +               <Configuration
>> +                       Name="Release|Win32"
>> +
>> OutputDirectory="$(SolutionDir)$(ConfigurationName)\bin"
>> +                       IntermediateDirectory="$(ConfigurationName)"
>> +                       ConfigurationType="1"
>> +                       CharacterSet="0"
>> +                       WholeProgramOptimization="1"
>> +                       >
>> +                       <Tool
>> +                               Name="VCPreBuildEventTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCCustomBuildTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCXMLDataGeneratorTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCWebServiceProxyGeneratorTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCMIDLTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCCLCompilerTool"
>> +                               Optimization="2"
>> +                               EnableIntrinsicFunctions="true"
>> +
>> AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
>> +
>> PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
>> +                               RuntimeLibrary="2"
>> +                               EnableFunctionLevelLinking="true"
>> +                               UsePrecompiledHeader="0"
>> +                               WarningLevel="3"
>> +                               DebugInformationFormat="3"
>> +                       />
>> +                       <Tool
>> +                               Name="VCManagedResourceCompilerTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCResourceCompilerTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCPreLinkEventTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCLinkerTool"
>> +                               AdditionalDependencies="wininet.lib
>> ws2_32.lib "
>> +                               LinkIncremental="1"
>> +                               GenerateDebugInformation="true"
>> +                               SubSystem="1"
>> +                               OptimizeReferences="2"
>> +                               EnableCOMDATFolding="2"
>> +                               TargetMachine="1"
>> +                       />
>> +                       <Tool
>> +                               Name="VCALinkTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCManifestTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCXDCMakeTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCBscMakeTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCFxCopTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCAppVerifierTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCPostBuildEventTool"
>> +                       />
>> +               </Configuration>
>> +       </Configurations>
>> +       <References>
>> +       </References>
>> +       <Files>
>> +               <Filter
>> +                       Name="Source Files"
>> +                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
>> +
>> UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>> +                       >
>> +                       <File
>> +                               RelativePath="..\..\..\git.c"
>> +                               >
>> +                       </File>
>> +               </Filter>
>> +               <Filter
>> +                       Name="Header Files"
>> +                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
>> +
>> UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>> +                       >
>> +               </Filter>
>> +               <Filter
>> +                       Name="Resource Files"
>> +
>> Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
>> +
>> UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>> +                       >
>> +               </Filter>
>> +       </Files>
>> +       <Globals>
>> +       </Globals>
>> +</VisualStudioProject>
>> diff --git a/compat/vcbuild/libgit/libgit.vcproj
>> b/compat/vcbuild/libgit/libgit.vcproj
>> new file mode 100644
>> index 0000000..bbc3aed
>> --- /dev/null
>> +++ b/compat/vcbuild/libgit/libgit.vcproj
>> @@ -0,0 +1,1347 @@
>> +<?xml version="1.0" encoding="gb2312"?>
>> +<VisualStudioProject
>> +       ProjectType="Visual C++"
>> +       Version="9.00"
>> +       Name="libgit"
>> +       ProjectGUID="{F6DEC8C3-B803-4A86-8848-430F08B499E3}"
>> +       RootNamespace="libgit"
>> +       Keyword="Win32Proj"
>> +       TargetFrameworkVersion="196613"
>> +       >
>> +       <Platforms>
>> +               <Platform
>> +                       Name="Win32"
>> +               />
>> +       </Platforms>
>> +       <ToolFiles>
>> +       </ToolFiles>
>> +       <Configurations>
>> +               <Configuration
>> +                       Name="Debug|Win32"
>> +
>> OutputDirectory="$(SolutionDir)$(ConfigurationName)"
>> +                       IntermediateDirectory="$(ConfigurationName)"
>> +                       ConfigurationType="4"
>> +                       CharacterSet="0"
>> +                       >
>> +                       <Tool
>> +                               Name="VCPreBuildEventTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCCustomBuildTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCXMLDataGeneratorTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCWebServiceProxyGeneratorTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCMIDLTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCCLCompilerTool"
>> +                               Optimization="0"
>> +                               InlineFunctionExpansion="1"
>> +
>> AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
>> +
>> PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
>> +                               MinimalRebuild="true"
>> +                               BasicRuntimeChecks="3"
>> +                               RuntimeLibrary="3"
>> +                               UsePrecompiledHeader="0"
>> +                               WarningLevel="3"
>> +                               DebugInformationFormat="3"
>> +                       />
>> +                       <Tool
>> +                               Name="VCManagedResourceCompilerTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCResourceCompilerTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCPreLinkEventTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCLibrarianTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCALinkTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCXDCMakeTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCBscMakeTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCFxCopTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCPostBuildEventTool"
>> +                       />
>> +               </Configuration>
>> +               <Configuration
>> +                       Name="Release|Win32"
>> +
>> OutputDirectory="$(SolutionDir)$(ConfigurationName)"
>> +                       IntermediateDirectory="$(ConfigurationName)"
>> +                       ConfigurationType="4"
>> +                       CharacterSet="0"
>> +                       WholeProgramOptimization="1"
>> +                       >
>> +                       <Tool
>> +                               Name="VCPreBuildEventTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCCustomBuildTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCXMLDataGeneratorTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCWebServiceProxyGeneratorTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCMIDLTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCCLCompilerTool"
>> +                               Optimization="2"
>> +                               InlineFunctionExpansion="1"
>> +                               EnableIntrinsicFunctions="true"
>> +
>> AdditionalIncludeDirectories="..\..\..;..\..\..\..\zlib;..\..;..\;..\include;..\..\..\compat;..\..\..\compat\fnmatch;..\..\..\compat\regex;.\"
>> +
>> PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
>> +                               RuntimeLibrary="2"
>> +                               EnableFunctionLevelLinking="true"
>> +                               UsePrecompiledHeader="0"
>> +                               WarningLevel="3"
>> +                               DebugInformationFormat="3"
>> +                       />
>> +                       <Tool
>> +                               Name="VCManagedResourceCompilerTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCResourceCompilerTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCPreLinkEventTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCLibrarianTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCALinkTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCXDCMakeTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCBscMakeTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCFxCopTool"
>> +                       />
>> +                       <Tool
>> +                               Name="VCPostBuildEventTool"
>> +                       />
>> +               </Configuration>
>> +       </Configurations>
>> +       <References>
>> +       </References>
>> +       <Files>
>> +               <Filter
>> +                       Name="Source Files"
>> +                       Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
>> +
>> UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>> +                       >
>> +                       <File
>> +                               RelativePath="..\..\msvc.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\mozilla-sha1\sha1.c"
>> +                               >
>> +                       </File>
>> +               </Filter>
>> +               <Filter
>> +                       Name="Header Files"
>> +                       Filter="h;hpp;hxx;hm;inl;inc;xsd"
>> +
>> UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>> +                       >
>> +                       <File
>> +                               RelativePath="..\..\..\archive.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\attr.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\blob.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\branch.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\bundle.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\cache-tree.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\cache.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\color.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\commit.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\csum-file.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\decorate.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\delta.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diff.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diffcore.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\dir.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\exec_cmd.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\fetch-pack.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\fsck.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\git-compat-util.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\graph.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\grep.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\hash.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\help.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\http.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\levenshtein.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\list-objects.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\ll-merge.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\log-tree.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\mailmap.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\merge-recursive.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\notes.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\object.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pack-refs.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pack-revindex.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pack.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\parse-options.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\patch-ids.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pkt-line.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\progress.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\quote.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\reachable.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\reflog-walk.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\refs.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\remote.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\rerere.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\revision.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\run-command.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\send-pack.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\sha1-lookup.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\shortlog.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\sideband.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\sigchain.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\strbuf.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\string-list.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\tag.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\tar.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\thread-utils.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\transport.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\tree-walk.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\tree.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\unpack-trees.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\userdiff.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\utf8.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\walker.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\wt-status.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff-interface.h"
>> +                               >
>> +                       </File>
>> +               </Filter>
>> +               <Filter
>> +                       Name="Resource Files"
>> +
>> Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
>> +
>> UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>> +                       >
>> +               </Filter>
>> +               <Filter
>> +                       Name="compat"
>> +                       >
>> +                       <File
>> +                               RelativePath="..\..\..\compat\basename.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\cygwin.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\compat\fnmatch\fnmatch.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\compat\fnmatch\fnmatch.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\fopen.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\memmem.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\mingw.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\mingw.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\mkdtemp.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\mkstemps.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\pread.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\qsort.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\compat\regex\regex.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\compat\regex\regex.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\setenv.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\snprintf.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\compat\strcasestr.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\strlcpy.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\strtoumax.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\unsetenv.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\win32.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\win32mmap.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\compat\winansi.c"
>> +                               >
>> +                       </File>
>> +               </Filter>
>> +               <Filter
>> +                       Name="git"
>> +                       >
>> +                       <File
>> +                               RelativePath="..\..\..\abspath.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\alias.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\alloc.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\archive-tar.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\archive-zip.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\archive.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\attr.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\base85.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\bisect.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\blob.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\branch.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-add.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-annotate.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-apply.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-archive.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-bisect--helper.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-blame.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-branch.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-bundle.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-cat-file.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-check-attr.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-check-ref-format.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-checkout-index.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-checkout.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-clean.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-clone.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-commit-tree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-commit.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-config.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-count-objects.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-describe.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-diff-files.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-diff-index.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-diff-tree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-diff.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-fast-export.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-fetch--tool.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-fetch-pack.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-fetch.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-fmt-merge-msg.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-for-each-ref.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-fsck.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-gc.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-grep.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-help.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-init-db.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-log.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-ls-files.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-ls-remote.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-ls-tree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-mailinfo.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-mailsplit.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-merge-base.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-merge-file.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-merge-ours.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-merge-recursive.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-merge.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-mktree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-mv.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-name-rev.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-pack-objects.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-pack-refs.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-prune-packed.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-prune.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-push.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-read-tree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-receive-pack.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-reflog.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-remote.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-rerere.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-reset.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-rev-list.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-rev-parse.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-revert.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-rm.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-send-pack.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-shortlog.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-show-branch.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-show-ref.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-stripspace.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-symbolic-ref.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-tag.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\builtin-tar-tree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-unpack-objects.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-update-index.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-update-ref.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-upload-archive.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-verify-pack.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-verify-tag.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +
>> RelativePath="..\..\..\builtin-write-tree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\bundle.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\cache-tree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\color.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\combine-diff.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\commit.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\config.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\connect.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\convert.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\copy.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\csum-file.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\ctype.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\date.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\decorate.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diff-delta.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diff-lib.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diff-no-index.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diff.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diffcore-break.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diffcore-delta.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diffcore-order.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diffcore-pickaxe.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\diffcore-rename.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\dir.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\editor.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\entry.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\environment.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\exec_cmd.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\fsck.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\graph.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\grep.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\hash.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\help.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\ident.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\levenshtein.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\list-objects.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\ll-merge.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\lockfile.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\log-tree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\mailmap.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\match-trees.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\merge-file.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\merge-recursive.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\merge-tree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\name-hash.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\object.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pack-check.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pack-refs.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pack-revindex.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pack-write.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pager.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\parse-options.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\patch-delta.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\patch-ids.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\path.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pkt-line.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\preload-index.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\pretty.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\progress.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\quote.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\reachable.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\read-cache.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\reflog-walk.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\refs.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\remote.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\rerere.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\revision.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\run-command.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\server-info.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\setup.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\sha1-lookup.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\sha1_file.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\sha1_name.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\shallow.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\sideband.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\sigchain.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\strbuf.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\string-list.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\symlinks.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\tag.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\thread-utils.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\trace.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\transport.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\tree-diff.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\tree-walk.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\tree.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\unpack-trees.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\usage.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\userdiff.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\utf8.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\walker.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\wrapper.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\write_or_die.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\ws.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\wt-status.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff-interface.c"
>> +                               >
>> +                       </File>
>> +               </Filter>
>> +               <Filter
>> +                       Name="xdiff"
>> +                       >
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xdiff.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xdiffi.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xdiffi.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xemit.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xemit.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xinclude.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xmacros.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xmerge.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xpatience.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xprepare.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xprepare.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xtypes.h"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xutils.c"
>> +                               >
>> +                       </File>
>> +                       <File
>> +                               RelativePath="..\..\..\xdiff\xutils.h"
>> +                               >
>> +                       </File>
>> +               </Filter>
>> +       </Files>
>> +       <Globals>
>> +       </Globals>
>> +</VisualStudioProject>
>> --
>> 1.6.4.msysgit.0
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe git" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>
>

[-- Attachment #2: Type: text/html, Size: 81711 bytes --]

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 22:21                             ` Paolo Bonzini
@ 2009-08-17 22:32                               ` Thiago Farina
  2009-08-17 22:33                               ` Thiago Farina
  1 sibling, 0 replies; 91+ messages in thread
From: Thiago Farina @ 2009-08-17 22:32 UTC (permalink / raw)
  To: Frank Li
  Cc: Pau Garcia i Quiles, Johannes Schindelin, Reece Dunn,
	Erik Faye-Lund, git, msysgit

[-- Attachment #1: Type: text/plain, Size: 178 bytes --]

What about the common-cmds.h that is in the builtin-help.c? How it will be
generated?I followed the instruction in ReadMe, but I couldn't compile
because of this "missing" file.

[-- Attachment #2: Type: text/html, Size: 203 bytes --]

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 22:21                             ` Paolo Bonzini
  2009-08-17 22:32                               ` Thiago Farina
@ 2009-08-17 22:33                               ` Thiago Farina
  1 sibling, 0 replies; 91+ messages in thread
From: Thiago Farina @ 2009-08-17 22:33 UTC (permalink / raw)
  To: Frank Li
  Cc: Pau Garcia i Quiles, Johannes Schindelin, Reece Dunn,
	Erik Faye-Lund, git, msysgit

What about the common-cmds.h that is in the builtin-help.c? How it will be
generated? I followed the instruction in ReadMe, but I couldn't compile
because of this "missing" file.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 22:27         ` [PATCH 10/11] Add MSVC Project file Thiago Farina
  2009-08-17 22:29           ` Thiago Farina
@ 2009-08-17 22:39           ` Johannes Schindelin
  2009-08-17 22:50             ` Thiago Farina
  1 sibling, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 22:39 UTC (permalink / raw)
  To: Thiago Farina; +Cc: Frank Li, git, msysgit


Hi,

On Mon, 17 Aug 2009, Thiago Farina wrote:

> What about the common-cmds.h that is included in builtin-help.c? How it will
> be generated?
> I followed the instructions in ReadMe, then I can't compile because of this
> "missing" file.

Thiago, you do not want to top-post in both of the mailing-lists you sent 
to.  And you certainly do _not_ want to send 200K of unanswered, quoted 
text:

> On Mon, Aug 17, 2009 at 1:05 PM, Frank Li <lznuaa@gmail.com> wrote:
>
> [200K that were not needed for Thiago's question]

Sorry, but I do not feel inclined to respond to your question if you do 
not want to adher to netiquette that you must have seen when you first 
posted to the msysGit mailing list.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 21:11                     ` Johannes Schindelin
  2009-08-17 22:26                       ` Johan 't Hart
@ 2009-08-17 22:44                       ` Pau Garcia i Quiles
  1 sibling, 0 replies; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 22:44 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Erik Faye-Lund, Paolo Bonzini, Frank Li, git, msysgit

(Sorry for answering some parts now, I didn't realize this text was
there before)

> But here's a clue: you will probably _never_ succeed in getting a
> replacement of the make-based build in git.git by the maintainer.  Make is
> just too ubiquitous and well-established for that.

CMake does not replace Make, it runs a step before CMake


CMakeLists.txt
     |
     |
     |
     v
  Makefile/.vcproj/Eclipse/XCode project/NMakefile
     |
     |
     |
     v
 gcc/VC++/SunCC/whatever
     |
     |
     v
   ld/link.exe/whatever

(see page 10 in my slides for a nicer version :-) )

> If you succeed, I will ask you to do the same for Python, as you clearly
> proved by that point that you are a magician.

I can't do any Python whatsoever, sorry :-)

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 22:39           ` Johannes Schindelin
@ 2009-08-17 22:50             ` Thiago Farina
  0 siblings, 0 replies; 91+ messages in thread
From: Thiago Farina @ 2009-08-17 22:50 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Frank Li, git, msysgit

On Mon, Aug 17, 2009 at 7:39 PM, Johannes
Schindelin<Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Mon, 17 Aug 2009, Thiago Farina wrote:
>
>> What about the common-cmds.h that is included in builtin-help.c? How it will
>> be generated?
>> I followed the instructions in ReadMe, then I can't compile because of this
>> "missing" file.
>
> Thiago, you do not want to top-post in both of the mailing-lists you sent
> to.  And you certainly do _not_ want to send 200K of unanswered, quoted
> text:
>
I tried to don't do this(top-post), but things goes bad again .
>> On Mon, Aug 17, 2009 at 1:05 PM, Frank Li <lznuaa@gmail.com> wrote:
>>
>> [200K that were not needed for Thiago's question]
>
> Sorry, but I do not feel inclined to respond to your question if you do
> not want to adher to netiquette that you must have seen when you first
> posted to the msysGit mailing list.
>
> Ciao,
> Dscho
>
>

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 22:26                       ` Johan 't Hart
@ 2009-08-17 23:00                         ` Pau Garcia i Quiles
  2009-08-17 23:40                           ` Johannes Schindelin
  0 siblings, 1 reply; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-17 23:00 UTC (permalink / raw)
  To: Johan 't Hart
  Cc: Johannes Schindelin, Erik Faye-Lund, Paolo Bonzini, Frank Li,
	git, msysgit

On Tue, Aug 18, 2009 at 12:26 AM, Johan 't Hart<johanthart@gmail.com> wrote:
> Johannes Schindelin schreef:
>
>> Having said that, a CMake-based system _in addition_ to what is
>> tried-and-tested to be able to support all those different kinds of
>> Microsoft Visual Studio (took me 3 attempts to write that without a
>> Freudian) would be welcome, _if_ you succeed in making it compile out of the
>> box on msysGit.
>
> That would require (I think) that CMake is build by the msysgit gcc tools
> available in msysgit, since CMake can't be build by VS right? Pau do you
> think that is possible?

CMake can certainly be built by VC++ but you need CMake to do that,
VC++-CMake cannot be bootstrapped.

Would it be OK to download a binary version of CMake instead of / in
addition to the source? (I'm not familiar with the 'release.sh' stuff
yet)

> It would be fun. Download the msysgit netinstaller, set it up, install it,
> and after that, CMake is bootstrapped, and the visual studio .vcproj files
> are generated and everyone (VS developers and msys developers) are ready to
> go!

That'd be right, if I have understood what the netinstaller does (I've
never used it yet).

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 10/11] Add MSVC Project file
  2009-08-17 23:00                         ` Pau Garcia i Quiles
@ 2009-08-17 23:40                           ` Johannes Schindelin
  0 siblings, 0 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-17 23:40 UTC (permalink / raw)
  To: Pau Garcia i Quiles
  Cc: Johan 't Hart, Erik Faye-Lund, Paolo Bonzini, Frank Li, git, msysgit


Hi,

On Tue, 18 Aug 2009, Pau Garcia i Quiles wrote:

> On Tue, Aug 18, 2009 at 12:26 AM, Johan 't Hart<johanthart@gmail.com> wrote:
> > Johannes Schindelin schreef:
> >
> >> Having said that, a CMake-based system _in addition_ to what is 
> >> tried-and-tested to be able to support all those different kinds of 
> >> Microsoft Visual Studio (took me 3 attempts to write that without a 
> >> Freudian) would be welcome, _if_ you succeed in making it compile out 
> >> of the box on msysGit.
> >
> > That would require (I think) that CMake is build by the msysgit gcc 
> > tools available in msysgit, since CMake can't be build by VS right? 
> > Pau do you think that is possible?
> 
> CMake can certainly be built by VC++ but you need CMake to do that, 
> VC++-CMake cannot be bootstrapped.
> 
> Would it be OK to download a binary version of CMake instead of / in
> addition to the source? (I'm not familiar with the 'release.sh' stuff
> yet)

Well, as I tried to establish msysGit as _the_ Git for Windows, I would be 
willing to created download bundles for Microsoft Visual C++ users, but 
only if the hassle is not big enough.

Read: if the procedure is a script that does not need to be supervised 
until it created a .zip or .7z file, I'm all for it.

> > It would be fun. Download the msysgit netinstaller, set it up, install 
> > it, and after that, CMake is bootstrapped, and the visual studio 
> > .vcproj files are generated and everyone (VS developers and msys 
> > developers) are ready to go!
> 
> That'd be right, if I have understood what the netinstaller does (I've
> never used it yet).

Or that.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 08/11] Place __stdcall to correct position.
  2009-08-17 17:01     ` [PATCH 08/11] Place __stdcall to correct position Johannes Schindelin
@ 2009-08-18  1:51       ` Frank Li
  2009-08-18  9:36         ` Johannes Schindelin
  0 siblings, 1 reply; 91+ messages in thread
From: Frank Li @ 2009-08-18  1:51 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git, msysgit

> How about "... to the correct ..." and "MSVC requires _stdcall to be
> between return value..." and "All Win32 API functions are declared with
> the WINAPI attribute."?

WINAPI always like

BOOL WINAPI function_name(xxx);
It compile fail if WINAPI BOOL function_name(xxx);

>>  #if defined(__MINGW32__) || defined(_MSC_VER)
>> -static __stdcall unsigned run_thread(void *data)
>> +static unsigned __stdcall run_thread(void *data)
>>  {
>>       struct async *async = data;
>>       return async->proc(async->fd_for_proc, async->data);
>>  }
>> -#endif
>> +#endif /* __MINGW32__ || _MSC_VER */
>
> I do not think this is necessary.  There are only 5 lines wrapped into
> those #ifdef guards, the developer should be able to see that far.
>
Do you means remove /* __MINGW32__ || _MSC_VER */?

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c
  2009-08-17 16:58   ` [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c Johannes Schindelin
@ 2009-08-18  2:02     ` Frank Li
  2009-08-18  9:40       ` Johannes Schindelin
  0 siblings, 1 reply; 91+ messages in thread
From: Frank Li @ 2009-08-18  2:02 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git, msysgit


> How about this instead?
>
>        mingw.c: Use the O_BINARY flag to open files
>
>        On Windows, non-text files must be opened using the O_BINARY flag.
>        MinGW does this for us automatically, but Microsoft Visual C++
>        does not.
>
>        Also, Johannes said that this would be a nice cleanup.
>

Okay, Do you need me change commit comments to resubmit patch?

> BTW what about fopen()?

I never found problem at fopen, I will double check it.

>
> Patch is obviously good.
>
> Ciao,
> Dscho
>

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-17 17:09       ` [PATCH 09/11] Add MSVC porting header files Johannes Schindelin
  2009-08-17 19:31         ` Pau Garcia i Quiles
@ 2009-08-18  2:15         ` Frank Li
  2009-08-18  9:47           ` Johannes Schindelin
  1 sibling, 1 reply; 91+ messages in thread
From: Frank Li @ 2009-08-18  2:15 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: git, msysgit


>> Add unix head file, dirent.h, unistd.h  and time.h
>
> These are copied from somewhere.  From where?  What is the license?

It comes from msys,  which used to build msysgit.

>> Add MSVC special porting head file msvc.h and msvc.c.
>
> This is added by you.  Logically, that should be a separate patch.

Okay I will split.

>> +#define NO_MEMMEM
>> +#define NO_C99_FORMAT
>> +#define NO_STRTOUMAX
>> +#define NO_MKDTEMP
>> +#define NO_MKSTEMPS
>> +
>> +#define RUNTIME_PREFIX
>> +#define NO_ST_BLOCKS_IN_STRUCT_STAT
>> +#define NO_NSEC
>> +#define USE_WIN32_MMAP
>> +#define USE_NED_ALLOCATOR
>> +
>> +#define NO_REGEX
>> +
>> +#define NO_SYS_SELECT_H
>> +#define NO_PTHEADS
>> +#define HAVE_STRING_H 1
>> +#define STDC_HEADERS
>> +#define NO_ICONV
>
> These would normally be defined in the Makefile.  You might want to state
> that in a comment.
>
> Or maybe move the definitions (along with vsnprintf) to the .vcproj file,
> which is the logical pendant of the Makefile?

I really want to in .vcproj.  but the same context needs to copy
DEBUG\RELEASE 32\64bit, libgit.vcproj and git.vcproj. 8 place needs
copy.  To avoid copy in vcproj file, I move it hear.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 08/11] Place __stdcall to correct position.
  2009-08-18  1:51       ` Frank Li
@ 2009-08-18  9:36         ` Johannes Schindelin
  0 siblings, 0 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-18  9:36 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1172 bytes --]

Hi,

On Tue, 18 Aug 2009, Frank Li wrote:

> > How about "... to the correct ..." and "MSVC requires _stdcall to be
> > between return value..." and "All Win32 API functions are declared with
> > the WINAPI attribute."?
> 
> WINAPI always like
> 
> BOOL WINAPI function_name(xxx);
> It compile fail if WINAPI BOOL function_name(xxx);

Oh, okay, so let's say

	Furthermore, Microsoft Visual C++ requires the order

		BOOL WINAPI function();

	instead of

		WINAPI BOOL function();

> >>  #if defined(__MINGW32__) || defined(_MSC_VER)
> >> -static __stdcall unsigned run_thread(void *data)
> >> +static unsigned __stdcall run_thread(void *data)
> >>  {
> >>       struct async *async = data;
> >>       return async->proc(async->fd_for_proc, async->data);
> >>  }
> >> -#endif
> >> +#endif /* __MINGW32__ || _MSC_VER */
> >
> > I do not think this is necessary.  There are only 5 lines wrapped into
> > those #ifdef guards, the developer should be able to see that far.
> >
> Do you means remove /* __MINGW32__ || _MSC_VER */?

I was talking about this change:

> -#endif
> +#endif /* __MINGW32__ || _MSC_VER */

which is IMHO distracting rather than helpful.

Ciao,
Dscho


^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c
  2009-08-18  2:02     ` Frank Li
@ 2009-08-18  9:40       ` Johannes Schindelin
  0 siblings, 0 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-18  9:40 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1263 bytes --]

Hi,

On Tue, 18 Aug 2009, Frank Li wrote:

> > How about this instead?
> >
> >        mingw.c: Use the O_BINARY flag to open files
> >
> >        On Windows, non-text files must be opened using the O_BINARY flag.
> >        MinGW does this for us automatically, but Microsoft Visual C++
> >        does not.
> >
> >        Also, Johannes said that this would be a nice cleanup.
> >
> 
> Okay, Do you need me change commit comments to resubmit patch?

How about updating your branch at tgit.git with the new commit 
messages first?  (Use rebase -i...)

> > BTW what about fopen()?
> 
> I never found problem at fopen, I will double check it.

Well, it is better to be sure, not by testing it, but rather by inspecting 
the code paths.  Is there any way Git wants to open a binary file with 
fopen()?  If so, it cannot use the modes "r" and "w" there, but must use 
"rb" and "wb".

It gets doubly complicated if there are code paths that _want_ to open 
text files (such as .git/config), which are user-writable, so they could 
(in theory) contain CR/LF line endings.

Ciao,
Dscho

>
> >
> > Patch is obviously good.
> >
> > Ciao,
> > Dscho
> >
>

P.S.: please remove such quoted text, it is totally uninteresting in this 
context (you do not reply to it, either). 

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-18  2:15         ` Frank Li
@ 2009-08-18  9:47           ` Johannes Schindelin
  2009-08-18 10:42             ` Junio C Hamano
  0 siblings, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-18  9:47 UTC (permalink / raw)
  To: Frank Li; +Cc: git, msysgit

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1353 bytes --]

Hi,

On Tue, 18 Aug 2009, Frank Li wrote:

> >> Add unix head file, dirent.h, unistd.h  and time.h
> >
> > These are copied from somewhere.  From where?  What is the license?
> 
> It comes from msys,  which used to build msysgit.

I know.  After reading the patch.  But it would be better if everybody 
knew after reading the commit message...  _Especially_ in this 
increasingly lawsuit-defined business, it is very nice to see early that 
the files you are including here are in the public domain, and come from 
MSys.

> I really want to in .vcproj.  but the same context needs to copy
> DEBUG\RELEASE 32\64bit, libgit.vcproj and git.vcproj. 8 place needs
> copy.  To avoid copy in vcproj file, I move it hear.

As I said earlier, there are common flags, but as I also said, it is 
probably better to keep the #define's in a header file for better 
visibility and editability, albeit in logically clustered blocks (i.e. all 
the NO_* and other #define's that affect what source code is 
compiled, all default paths in another cluster, #define's to bow before 
Microsoft's C runtime's decision to deprecate the C99 standard function 
names, etc)

BTW it is funny that your typos seem to be influenced by the _sound_ of 
the word ("hear" instead of "here"), rather than just simple transposed 
letters... most of my typos are the same ;-)

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-18  9:47           ` Johannes Schindelin
@ 2009-08-18 10:42             ` Junio C Hamano
  2009-08-18 13:01               ` Johannes Schindelin
  0 siblings, 1 reply; 91+ messages in thread
From: Junio C Hamano @ 2009-08-18 10:42 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: Frank Li, git, msysgit

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> Hi,
>
> On Tue, 18 Aug 2009, Frank Li wrote:
>
>> >> Add unix head file, dirent.h, unistd.h  and time.h
>> >
>> > These are copied from somewhere.  From where?  What is the license?
>> 
>> It comes from msys,  which used to build msysgit.
>
> I know.  After reading the patch.  But it would be better if everybody 
> knew after reading the commit message...  _Especially_ in this 
> increasingly lawsuit-defined business, it is very nice to see early that 
> the files you are including here are in the public domain, and come from 
> MSys.

And there was this line in the snarfed file:

    * No warranty is given; refer to the file DISCLAIMER within the package.

but there no DISCLAIMER file (perhaps a separate patch added it, but I
somehow doubt it).

> As I said earlier, there are common flags, but as I also said, it is 
> probably better to keep the #define's in a header file for better 
> visibility and editability, albeit in logically clustered blocks (i.e. all 
> the NO_* and other #define's that affect what source code is 
> compiled, all default paths in another cluster, #define's to bow before 
> Microsoft's C runtime's decision to deprecate the C99 standard function 
> names, etc)

... and that can live in a separate header file to reduce clutter and
shield people who do not need to look at MSC related code, no?

^ permalink raw reply	[flat|nested] 91+ messages in thread

* [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-17 19:53             ` Johannes Schindelin
  2009-08-17 20:02               ` Paolo Bonzini
  2009-08-17 20:17               ` Pau Garcia i Quiles
@ 2009-08-18 12:58               ` Marius Storm-Olsen
  2009-08-18 13:01                 ` Marius Storm-Olsen
                                   ` (5 more replies)
  2 siblings, 6 replies; 91+ messages in thread
From: Marius Storm-Olsen @ 2009-08-18 12:58 UTC (permalink / raw)
  To: Johannes.Schindelin
  Cc: msysgit, git, lznuaa, bonzini, kusmabite, Marius Storm-Olsen

From: Marius Storm-Olsen <mstormo@gmail.com>

By using GNU Make we can also compile with the MSVC toolchain.
This is a rudementary patch, only meant as an RFC for now!!

!! DO NOT COMMIT THIS UPSTREAM !!
---
 So, instead of rely on these vcproj files which *will* go stale, we can
 simply use the same Makefile system which everyone else is using. :)
 After all, we're just compiling with a different compiler. The end result
 will still rely on the *msysGit environment* to function, so we already
 require it. Thus, GNU Make is present, and we can use it.

 This implementation is a quick hack to make it compile (hence the RFC
 subject), so please don't even consider basing anything ontop of it ;)

 But, do point out all the do's and don'ts, and I'll try to polish it up
 to something which we can add to Frank's series..
 

 Makefile      |   97 +++++++++++++++++++++++++++++++++++++++++++++++---------
 compat/msvc.h |   77 +++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 158 insertions(+), 16 deletions(-)

diff --git a/Makefile b/Makefile
index daf4296..2e14976 100644
--- a/Makefile
+++ b/Makefile
@@ -214,9 +214,13 @@ uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')
 
 CFLAGS = -g -O2 -Wall
 LDFLAGS =
+ARFLAGS = rcs\ # whitespace intentional
 ALL_CFLAGS = $(CFLAGS)
 ALL_LDFLAGS = $(LDFLAGS)
 STRIP ?= strip
+COMPFLAG = -c
+COBJFLAG = -o\ # whitespace intended
+LOBJFLAG = -o\ # whitespace intended
 
 # Among the variables below, these:
 #   gitexecdir
@@ -874,6 +878,58 @@ ifneq (,$(findstring CYGWIN,$(uname_S)))
 	COMPAT_OBJS += compat/cygwin.o
 	UNRELIABLE_FSTAT = UnfortunatelyYes
 endif
+ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))
+	pathsep = ;
+	MOZILLA_SHA1 = 1
+	NO_PREAD = YesPlease
+	NO_OPENSSL = YesPlease
+	NO_LIBGEN_H = YesPlease
+	NO_SYMLINK_HEAD = YesPlease
+	NO_IPV6 = YesPlease
+	NO_SETENV = YesPlease
+	NO_UNSETENV = YesPlease
+	NO_STRCASESTR = YesPlease
+	NO_STRLCPY = YesPlease
+	NO_MEMMEM = YesPlease
+	NEEDS_LIBICONV = YesPlease
+	OLD_ICONV = YesPlease
+	NO_C99_FORMAT = YesPlease
+	NO_STRTOUMAX = YesPlease
+	NO_MKDTEMP = YesPlease
+	NO_MKSTEMPS = YesPlease
+	SNPRINTF_RETURNS_BOGUS = YesPlease
+	NO_SVN_TESTS = YesPlease
+	NO_PERL_MAKEMAKER = YesPlease
+	RUNTIME_PREFIX = YesPlease
+	NO_POSIX_ONLY_PROGRAMS = YesPlease
+	NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
+	NO_NSEC = YesPlease
+	USE_WIN32_MMAP = YesPlease
+	UNRELIABLE_FSTAT = UnfortunatelyYes
+	OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
+	NO_REGEX = YesPlease
+
+	NO_CURL = YesPlease
+	NO_PTHREADS = YesPlease
+        
+	CC = cl 
+	COBJFLAG = -Fo
+	LOBJFLAG = -OUT:
+	CFLAGS =
+	BASIC_CFLAGS += -nologo -MT -I. -I../zlib -Icompat/vcbuild -Icompat/vcbuild/include -DWIN32 -D_CONSOLE
+	COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/fnmatch -Icompat/regex -Icompat/fnmatch
+	COMPAT_OBJS += compat/mingw.o compat/msvc.o compat/fnmatch/fnmatch.o compat/winansi.o
+	COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
+
+	LINK = link
+	BASIC_LDFLAGS += -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib ../zlib/projects/vc9/Win32_LIB_Release/zlib.lib
+	NO_CFLAGS_TO_LINKER = YesPlease
+	EXTLIBS = 
+	AR = lib
+	ARFLAGS = -OUT:
+
+	X = .exe
+else
 ifneq (,$(findstring MINGW,$(uname_S)))
 	pathsep = ;
 	NO_PREAD = YesPlease
@@ -922,6 +978,7 @@ else
 	NO_PTHREADS = YesPlease
 endif
 endif
+endif
 ifneq (,$(findstring arm,$(uname_M)))
 	ARM_SHA1 = YesPlease
 	NO_MKSTEMPS = YesPlease
@@ -1298,6 +1355,14 @@ LIB_OBJS += $(COMPAT_OBJS)
 ALL_CFLAGS += $(BASIC_CFLAGS)
 ALL_LDFLAGS += $(BASIC_LDFLAGS)
 
+ifndef LINK
+LINK = $(CC)
+endif
+
+ifndef NO_CFLAGS_TO_LINKER
+LINKER_CFLAGS += $(ALL_CFLAGS)
+endif
+
 export TAR INSTALL DESTDIR SHELL_PATH
 
 
@@ -1331,14 +1396,14 @@ strip: $(PROGRAMS) git$X
 git.o: git.c common-cmds.h GIT-CFLAGS
 	$(QUIET_CC)$(CC) -DGIT_VERSION='"$(GIT_VERSION)"' \
 		'-DGIT_HTML_PATH="$(htmldir_SQ)"' \
-		$(ALL_CFLAGS) -c $(filter %.c,$^)
+		$(ALL_CFLAGS) $(COMPFLAG) $(COBJFLAG)git.o $(filter %.c,$^)
 
 git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)
-	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \
+	$(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ git.o \
 		$(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)
 
 builtin-help.o: builtin-help.c common-cmds.h GIT-CFLAGS
-	$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \
+	$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) \
 		'-DGIT_HTML_PATH="$(htmldir_SQ)"' \
 		'-DGIT_MAN_PATH="$(mandir_SQ)"' \
 		'-DGIT_INFO_PATH="$(infodir_SQ)"' $<
@@ -1450,44 +1515,44 @@ git.o git.spec \
 	: GIT-VERSION-FILE
 
 %.o: %.c GIT-CFLAGS
-	$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<
+	$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) $<
 %.s: %.c GIT-CFLAGS
 	$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<
 %.o: %.S
-	$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<
+	$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) $<
 
 exec_cmd.o: exec_cmd.c GIT-CFLAGS
-	$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \
+	$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) \
 		'-DGIT_EXEC_PATH="$(gitexecdir_SQ)"' \
 		'-DBINDIR="$(bindir_relative_SQ)"' \
 		'-DPREFIX="$(prefix_SQ)"' \
 		$<
 
 builtin-init-db.o: builtin-init-db.c GIT-CFLAGS
-	$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DDEFAULT_GIT_TEMPLATE_DIR='"$(template_dir_SQ)"' $<
+	$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) -DDEFAULT_GIT_TEMPLATE_DIR='"$(template_dir_SQ)"' $<
 
 config.o: config.c GIT-CFLAGS
-	$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' $<
+	$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) -DETC_GITCONFIG='"$(ETC_GITCONFIG_SQ)"' $<
 
 http.o: http.c GIT-CFLAGS
-	$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DGIT_USER_AGENT='"git/$(GIT_VERSION)"' $<
+	$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) -DGIT_USER_AGENT='"git/$(GIT_VERSION)"' $<
 
 ifdef NO_EXPAT
 http-walker.o: http-walker.c http.h GIT-CFLAGS
-	$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DNO_EXPAT $<
+	$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) -DNO_EXPAT $<
 endif
 
 git-%$X: %.o $(GITLIBS)
-	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
+	$(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
 
 git-imap-send$X: imap-send.o $(GITLIBS)
-	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
+	$(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ $(ALL_LDFLAGS) $(filter %.o,$^) \
 		$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL)
 
 http.o http-walker.o http-push.o transport.o: http.h
 
 git-http-push$X: revision.o http.o http-push.o $(GITLIBS)
-	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \
+	$(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ $(ALL_LDFLAGS) $(filter %.o,$^) \
 		$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)
 
 $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)
@@ -1495,7 +1560,7 @@ $(patsubst git-%$X,%.o,$(PROGRAMS)) git.o: $(LIB_H) $(wildcard */*.h)
 builtin-revert.o wt-status.o: wt-status.h
 
 $(LIB_FILE): $(LIB_OBJS)
-	$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS)
+	$(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS)$@ $(LIB_OBJS)
 
 XDIFF_OBJS=xdiff/xdiffi.o xdiff/xprepare.o xdiff/xutils.o xdiff/xemit.o \
 	xdiff/xmerge.o xdiff/xpatience.o
@@ -1503,7 +1568,7 @@ $(XDIFF_OBJS): xdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \
 	xdiff/xutils.h xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h
 
 $(XDIFF_LIB): $(XDIFF_OBJS)
-	$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(XDIFF_OBJS)
+	$(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS)$@ $(XDIFF_OBJS)
 
 
 doc:
@@ -1605,7 +1670,7 @@ test-parse-options.o: parse-options.h
 .PRECIOUS: $(patsubst test-%$X,test-%.o,$(TEST_PROGRAMS))
 
 test-%$X: test-%.o $(GITLIBS)
-	$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
+	$(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)
 
 check-sha1:: test-sha1$X
 	./test-sha1.sh
diff --git a/compat/msvc.h b/compat/msvc.h
index 6071565..a9d5f7f 100644
--- a/compat/msvc.h
+++ b/compat/msvc.h
@@ -10,50 +10,120 @@
 
 /*Configuration*/
 
+#ifndef NO_PREAD
 #define NO_PREAD
+#endif
+#ifndef NO_OPENSSL
 #define NO_OPENSSL
+#endif
+#ifndef NO_LIBGEN_H
 #define NO_LIBGEN_H
+#endif
+#ifndef NO_SYMLINK_HEAD
 #define NO_SYMLINK_HEAD
+#endif
+#ifndef NO_IPV6
 #define NO_IPV6
+#endif
+#ifndef NO_SETENV
 #define NO_SETENV
+#endif
+#ifndef NO_UNSETENV
 #define NO_UNSETENV
+#endif
+#ifndef NO_STRCASESTR
 #define NO_STRCASESTR
+#endif
+#ifndef NO_STRLCPY
 #define NO_STRLCPY
+#endif
+#ifndef NO_MEMMEM
 #define NO_MEMMEM
+#endif
+#ifndef NO_C99_FORMAT
 #define NO_C99_FORMAT
+#endif
+#ifndef NO_STRTOUMAX
 #define NO_STRTOUMAX
+#endif
+#ifndef NO_MKDTEMP
 #define NO_MKDTEMP
+#endif
+#ifndef NO_MKSTEMPS
 #define NO_MKSTEMPS
+#endif
 
+
+#ifndef RUNTIME_PREFIX
 #define RUNTIME_PREFIX
+#endif
+#ifndef NO_ST_BLOCKS_IN_STRUCT_STAT
 #define NO_ST_BLOCKS_IN_STRUCT_STAT
+#endif
+#ifndef NO_NSEC
 #define NO_NSEC
+#endif
+#ifndef USE_WIN32_MMAP
 #define USE_WIN32_MMAP
+#endif
+#ifndef USE_NED_ALLOCATOR
 #define USE_NED_ALLOCATOR
+#endif
+
 
+#ifndef NO_REGEX
 #define NO_REGEX
+#endif
 
+
+#ifndef NO_SYS_SELECT_H
 #define NO_SYS_SELECT_H
+#endif
+#ifndef NO_PTHEADS
 #define NO_PTHEADS
+#endif
+#ifndef HAVE_STRING_H
 #define HAVE_STRING_H 1
+#endif
+#ifndef STDC_HEADERS
 #define STDC_HEADERS
+#endif
+#ifndef NO_ICONV
 #define NO_ICONV
+#endif
+
 
 #define inline __inline
 #define __inline__ __inline
 
+#ifndef SNPRINTF_RETURNS_BOGUS
 #define SNPRINTF_RETURNS_BOGUS
+#endif
 
+
+#ifndef SHA1_HEADER
 #define SHA1_HEADER "mozilla-sha1\\sha1.h"
+#endif
 
+#ifndef ETC_GITCONFIG
 #define ETC_GITCONFIG "%HOME%"
+#endif
+
 
+#ifndef NO_PTHREADS
 #define NO_PTHREADS
+#endif
+#ifndef NO_CURL
 #define NO_CURL
+#endif
 
 
+#ifndef NO_STRTOUMAX
 #define NO_STRTOUMAX
+#endif
+#ifndef REGEX_MALLOC
 #define REGEX_MALLOC
+#endif
 
 
 #define GIT_EXEC_PATH "bin"
@@ -65,9 +135,16 @@
 #define GIT_HTML_PATH "html"
 #define DEFAULT_GIT_TEMPLATE_DIR "templates"
 
+#ifndef NO_STRLCPY
 #define NO_STRLCPY
+#endif
+#ifndef NO_UNSETENV
 #define NO_UNSETENV
+#endif
+#ifndef NO_SETENV
 #define NO_SETENV
+#endif
+
 
 #define strdup _strdup
 #define read _read
-- 
1.6

^ permalink raw reply related	[flat|nested] 91+ messages in thread

* Re: [PATCH 09/11] Add MSVC porting header files.
  2009-08-18 10:42             ` Junio C Hamano
@ 2009-08-18 13:01               ` Johannes Schindelin
  0 siblings, 0 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-18 13:01 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Frank Li, git, msysgit


Hi,

On Tue, 18 Aug 2009, Junio C Hamano wrote:

> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> 
> > As I said earlier, there are common flags, but as I also said, it is 
> > probably better to keep the #define's in a header file for better 
> > visibility and editability, albeit in logically clustered blocks (i.e. 
> > all the NO_* and other #define's that affect what source code is 
> > compiled, all default paths in another cluster, #define's to bow 
> > before Microsoft's C runtime's decision to deprecate the C99 standard 
> > function names, etc)
> 
> ... and that can live in a separate header file to reduce clutter and 
> shield people who do not need to look at MSC related code, no?

Maybe we could call it compat/msvc.h? ;-)

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 12:58               ` [RFC] Enable compilation by Makefile for the MSVC toolchain Marius Storm-Olsen
@ 2009-08-18 13:01                 ` Marius Storm-Olsen
  2009-08-18 13:09                 ` Erik Faye-Lund
                                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 91+ messages in thread
From: Marius Storm-Olsen @ 2009-08-18 13:01 UTC (permalink / raw)
  To: Johannes.Schindelin; +Cc: msysgit, git, lznuaa, bonzini, kusmabite

Marius Storm-Olsen said the following on 18.08.2009 14:58:
> This is a rudementary patch, only meant as an RFC for now!!
> 
> !! DO NOT COMMIT THIS UPSTREAM !!

..meaning in this case Frank Li's repo, and obviously not git.git. :p

--
.marius

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 12:58               ` [RFC] Enable compilation by Makefile for the MSVC toolchain Marius Storm-Olsen
  2009-08-18 13:01                 ` Marius Storm-Olsen
@ 2009-08-18 13:09                 ` Erik Faye-Lund
  2009-08-18 14:11                 ` Johannes Schindelin
                                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 91+ messages in thread
From: Erik Faye-Lund @ 2009-08-18 13:09 UTC (permalink / raw)
  To: Marius Storm-Olsen; +Cc: Johannes.Schindelin, msysgit, git, lznuaa, bonzini

On Tue, Aug 18, 2009 at 2:58 PM, Marius Storm-Olsen<mstormo@gmail.com> wrote:
> @@ -1331,14 +1396,14 @@ strip: $(PROGRAMS) git$X
>  git.o: git.c common-cmds.h GIT-CFLAGS
>        $(QUIET_CC)$(CC) -DGIT_VERSION='"$(GIT_VERSION)"' \
>                '-DGIT_HTML_PATH="$(htmldir_SQ)"' \
> -               $(ALL_CFLAGS) -c $(filter %.c,$^)
> +               $(ALL_CFLAGS) $(COMPFLAG) $(COBJFLAG)git.o $(filter %.c,$^)
>
>  git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)
> -       $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \
> +       $(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ git.o \
>                $(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)
<snip>
>  ifdef NO_EXPAT
>  http-walker.o: http-walker.c http.h GIT-CFLAGS
> -       $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DNO_EXPAT $<
> +       $(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) -DNO_EXPAT $<
>  endif

Perhaps this is the right time to change the make-system to using the
somewhat standard $(COMPLIE.c), $(OUTPUT_OPTION) etc macros?

-- 
Erik "kusma" Faye-Lund
kusmabite@gmail.com
(+47) 986 59 656

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 12:58               ` [RFC] Enable compilation by Makefile for the MSVC toolchain Marius Storm-Olsen
  2009-08-18 13:01                 ` Marius Storm-Olsen
  2009-08-18 13:09                 ` Erik Faye-Lund
@ 2009-08-18 14:11                 ` Johannes Schindelin
  2009-08-18 17:07                   ` Pau Garcia i Quiles
  2009-08-18 17:55                   ` Marius Storm-Olsen
  2009-08-18 16:22                 ` Johan 't Hart
                                   ` (2 subsequent siblings)
  5 siblings, 2 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-18 14:11 UTC (permalink / raw)
  To: Marius Storm-Olsen; +Cc: msysgit, git, lznuaa, bonzini, kusmabite

Hi,

On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:

>  So, instead of rely on these vcproj files which *will* go stale, we can 
>  simply use the same Makefile system which everyone else is using. :) 
>  After all, we're just compiling with a different compiler. The end 
>  result will still rely on the *msysGit environment* to function, so we 
>  already require it. Thus, GNU Make is present, and we can use it.

We can also use sed or perl to generate/modify the .vcproj files, or run 
CMake (once Pau got it to build), and package the stuff using zip (once I 
got that to build).

> diff --git a/Makefile b/Makefile
> index daf4296..2e14976 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -214,9 +214,13 @@ uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')
>  
>  CFLAGS = -g -O2 -Wall
>  LDFLAGS =
> +ARFLAGS = rcs\ # whitespace intentional
>  ALL_CFLAGS = $(CFLAGS)
>  ALL_LDFLAGS = $(LDFLAGS)
>  STRIP ?= strip
> +COMPFLAG = -c
> +COBJFLAG = -o\ # whitespace intended
> +LOBJFLAG = -o\ # whitespace intended

These probably want to go into the Microsoft Visual C++ specific section.

> @@ -874,6 +878,58 @@ ifneq (,$(findstring CYGWIN,$(uname_S)))
>  	COMPAT_OBJS += compat/cygwin.o
>  	UNRELIABLE_FSTAT = UnfortunatelyYes
>  endif
> +ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))
> +	pathsep = ;
> +	MOZILLA_SHA1 = 1
> +	NO_PREAD = YesPlease
> +	NO_OPENSSL = YesPlease
> +	NO_LIBGEN_H = YesPlease
> +	NO_SYMLINK_HEAD = YesPlease
> +	NO_IPV6 = YesPlease
> +	NO_SETENV = YesPlease
> +	NO_UNSETENV = YesPlease
> +	NO_STRCASESTR = YesPlease
> +	NO_STRLCPY = YesPlease
> +	NO_MEMMEM = YesPlease
> +	NEEDS_LIBICONV = YesPlease
> +	OLD_ICONV = YesPlease
> +	NO_C99_FORMAT = YesPlease
> +	NO_STRTOUMAX = YesPlease
> +	NO_MKDTEMP = YesPlease
> +	NO_MKSTEMPS = YesPlease
> +	SNPRINTF_RETURNS_BOGUS = YesPlease
> +	NO_SVN_TESTS = YesPlease
> +	NO_PERL_MAKEMAKER = YesPlease
> +	RUNTIME_PREFIX = YesPlease
> +	NO_POSIX_ONLY_PROGRAMS = YesPlease
> +	NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease
> +	NO_NSEC = YesPlease
> +	USE_WIN32_MMAP = YesPlease
> +	UNRELIABLE_FSTAT = UnfortunatelyYes
> +	OBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo
> +	NO_REGEX = YesPlease
> +
> +	NO_CURL = YesPlease
> +	NO_PTHREADS = YesPlease
> +        
> +	CC = cl 
> +	COBJFLAG = -Fo
> +	LOBJFLAG = -OUT:
> +	CFLAGS =
> +	BASIC_CFLAGS += -nologo -MT -I. -I../zlib -Icompat/vcbuild -Icompat/vcbuild/include -DWIN32 -D_CONSOLE
> +	COMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/fnmatch -Icompat/regex -Icompat/fnmatch
> +	COMPAT_OBJS += compat/mingw.o compat/msvc.o compat/fnmatch/fnmatch.o compat/winansi.o
> +	COMPAT_CFLAGS += -DSTRIP_EXTENSION=\".exe\"
> +
> +	LINK = link
> +	BASIC_LDFLAGS += -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib ../zlib/projects/vc9/Win32_LIB_Release/zlib.lib
> +	NO_CFLAGS_TO_LINKER = YesPlease
> +	EXTLIBS = 
> +	AR = lib
> +	ARFLAGS = -OUT:
> +
> +	X = .exe
> +else
>  ifneq (,$(findstring MINGW,$(uname_S)))
>  	pathsep = ;
>  	NO_PREAD = YesPlease

This means that gcc is never used when Visual C++ is available?  Hmm.

> diff --git a/compat/msvc.h b/compat/msvc.h
> index 6071565..a9d5f7f 100644
> --- a/compat/msvc.h
> +++ b/compat/msvc.h
> @@ -10,50 +10,120 @@
>  
>  /*Configuration*/
>  
> +#ifndef NO_PREAD
>  #define NO_PREAD
> +#endif

Why?  You now have the stuff in two places.  If you want to keep them in 
compat/msvc.h to be able to generate .vcproj files, I'd rather not have 
them duplicated in the Makefile.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 12:58               ` [RFC] Enable compilation by Makefile for the MSVC toolchain Marius Storm-Olsen
                                   ` (2 preceding siblings ...)
  2009-08-18 14:11                 ` Johannes Schindelin
@ 2009-08-18 16:22                 ` Johan 't Hart
  2009-08-18 16:28                   ` Reece Dunn
  2009-08-18 17:06                   ` Pau Garcia i Quiles
  2009-08-18 16:51                 ` Junio C Hamano
  2009-08-18 16:51                 ` Daniel Barkalow
  5 siblings, 2 replies; 91+ messages in thread
From: Johan 't Hart @ 2009-08-18 16:22 UTC (permalink / raw)
  To: Marius Storm-Olsen
  Cc: Johannes.Schindelin, msysgit, git, lznuaa, bonzini, kusmabite


Marius Storm-Olsen schreef:
> From: Marius Storm-Olsen <mstormo@gmail.com>
> 
> By using GNU Make we can also compile with the MSVC toolchain.
> This is a rudementary patch, only meant as an RFC for now!!
> 

Would this mean that only the MSVC toolchain is used to build git in 
batch? Or does GNU Make create a .vcproj file like CMake? Because that 
ofcource is the whole purpose of using CMake. One can use the Visual 
Studio IDE to hack on git.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 16:22                 ` Johan 't Hart
@ 2009-08-18 16:28                   ` Reece Dunn
  2009-08-18 17:06                   ` Pau Garcia i Quiles
  1 sibling, 0 replies; 91+ messages in thread
From: Reece Dunn @ 2009-08-18 16:28 UTC (permalink / raw)
  To: Johan 't Hart
  Cc: Marius Storm-Olsen, Johannes.Schindelin, msysgit, git, lznuaa,
	bonzini, kusmabite

2009/8/18 Johan 't Hart <johanthart@gmail.com>:
> Marius Storm-Olsen schreef:
>>
>> From: Marius Storm-Olsen <mstormo@gmail.com>
>>
>> By using GNU Make we can also compile with the MSVC toolchain.
>> This is a rudementary patch, only meant as an RFC for now!!
>>
>
> Would this mean that only the MSVC toolchain is used to build git in batch?
> Or does GNU Make create a .vcproj file like CMake? Because that ofcource is
> the whole purpose of using CMake. One can use the Visual Studio IDE to hack
> on git.

... unless you add a file to the vcproj, or change the project
settings: you'll need to update the CMake file and the Make file (for
the POSIX builds), otherwise you're going to break things.

- Reece

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 12:58               ` [RFC] Enable compilation by Makefile for the MSVC toolchain Marius Storm-Olsen
                                   ` (3 preceding siblings ...)
  2009-08-18 16:22                 ` Johan 't Hart
@ 2009-08-18 16:51                 ` Junio C Hamano
  2009-08-18 17:36                   ` Marius Storm-Olsen
  2009-08-18 17:41                   ` Johan 't Hart
  2009-08-18 16:51                 ` Daniel Barkalow
  5 siblings, 2 replies; 91+ messages in thread
From: Junio C Hamano @ 2009-08-18 16:51 UTC (permalink / raw)
  To: Marius Storm-Olsen
  Cc: Johannes.Schindelin, msysgit, git, lznuaa, bonzini, kusmabite

Marius Storm-Olsen <mstormo@gmail.com> writes:

Marius Storm-Olsen <mstormo@gmail.com> writes:

> +ARFLAGS = rcs\ # whitespace intentional
> +COMPFLAG = -c
> +COBJFLAG = -o\ # whitespace intended
> +LOBJFLAG = -o\ # whitespace intended
> ...
> +ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))
> +	CC = cl 
> +	COBJFLAG = -Fo
> +	LOBJFLAG = -OUT:
> +	CFLAGS =
>  git.o: git.c common-cmds.h GIT-CFLAGS
> ...
> -		$(ALL_CFLAGS) -c $(filter %.c,$^)
> +		$(ALL_CFLAGS) $(COMPFLAG) $(COBJFLAG)git.o $(filter %.c,$^)

Since use of make implies use of shell, this makes me wonder if it would
make sense to go one step further by giving msvc users a thin shell
wrapper mcvc-cc that turns bog-standard cc command line into whatever cl
uses.

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 12:58               ` [RFC] Enable compilation by Makefile for the MSVC toolchain Marius Storm-Olsen
                                   ` (4 preceding siblings ...)
  2009-08-18 16:51                 ` Junio C Hamano
@ 2009-08-18 16:51                 ` Daniel Barkalow
  2009-08-18 17:38                   ` Marius Storm-Olsen
  5 siblings, 1 reply; 91+ messages in thread
From: Daniel Barkalow @ 2009-08-18 16:51 UTC (permalink / raw)
  To: Marius Storm-Olsen
  Cc: Johannes.Schindelin, msysgit, git, lznuaa, bonzini, kusmabite

On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:

> From: Marius Storm-Olsen <mstormo@gmail.com>
> 
> By using GNU Make we can also compile with the MSVC toolchain.
> This is a rudementary patch, only meant as an RFC for now!!
> 
> !! DO NOT COMMIT THIS UPSTREAM !!
> ---
>  So, instead of rely on these vcproj files which *will* go stale, we can
>  simply use the same Makefile system which everyone else is using. :)
>  After all, we're just compiling with a different compiler. The end result
>  will still rely on the *msysGit environment* to function, so we already
>  require it. Thus, GNU Make is present, and we can use it.
> 
>  This implementation is a quick hack to make it compile (hence the RFC
>  subject), so please don't even consider basing anything ontop of it ;)
> 
>  But, do point out all the do's and don'ts, and I'll try to polish it up
>  to something which we can add to Frank's series..
>  
> 
>  Makefile      |   97 +++++++++++++++++++++++++++++++++++++++++++++++---------
>  compat/msvc.h |   77 +++++++++++++++++++++++++++++++++++++++++++++
>  2 files changed, 158 insertions(+), 16 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index daf4296..2e14976 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -214,9 +214,13 @@ uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')
>  
>  CFLAGS = -g -O2 -Wall
>  LDFLAGS =
> +ARFLAGS = rcs\ # whitespace intentional
>  ALL_CFLAGS = $(CFLAGS)
>  ALL_LDFLAGS = $(LDFLAGS)
>  STRIP ?= strip
> +COMPFLAG = -c
> +COBJFLAG = -o\ # whitespace intended
> +LOBJFLAG = -o\ # whitespace intended

I think it's nicer to write the significant whitespace with non-whitespace 
text using something like:

empty=
space=$(empty) $(empty)

(...)

ARFLAGS = rcs$(space)

COBJFLAG = -o$(space)

On the other hand, I think it would be clearer to put the "rcs" in the 
default version of $(AR), and have a $(AROBJFLAG) set to nothing there, 
since the "rcs" isn't actually at all like the "-OUT:" with respect to 
what it's doing there.

Possibly also to have two variables for the output of the toolchain 
wrapper, one that is before the name of the file and one that's attached 
to the name of the file.

	-Daniel
*This .sig left intentionally blank*

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 16:22                 ` Johan 't Hart
  2009-08-18 16:28                   ` Reece Dunn
@ 2009-08-18 17:06                   ` Pau Garcia i Quiles
  2009-08-18 17:44                     ` Paolo Bonzini
  1 sibling, 1 reply; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-18 17:06 UTC (permalink / raw)
  To: Johan 't Hart
  Cc: Marius Storm-Olsen, Johannes.Schindelin, msysgit, git, lznuaa,
	bonzini, kusmabite

On Tue, Aug 18, 2009 at 6:22 PM, Johan 't Hart<johanthart@gmail.com> wrote:
> Marius Storm-Olsen schreef:
>>
>> From: Marius Storm-Olsen <mstormo@gmail.com>
>>
>> By using GNU Make we can also compile with the MSVC toolchain.
>> This is a rudementary patch, only meant as an RFC for now!!
>>
>
> Would this mean that only the MSVC toolchain is used to build git in batch?
> Or does GNU Make create a .vcproj file like CMake?

That patch uses GNU Make but invoking the MSVC compiler, linker, etc
instead of the GNU compiler, linker, etc. It'd be the same if you
wanted to use the Intel compiler, the Sun compiler, etc.

> Because that ofcource is
> the whole purpose of using CMake. One can use the Visual Studio IDE to hack
> on git.

CMake is also useful to create installers/tarballs (see CPack), run
tests (see CTest; it's NOT a unit test library but a tests launcher on
steroids) and submit the results of compilation, tests and
installation to a dashboard where you can easily see what (if
anything) went wrong (see CDash, formerly Dart).

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 14:11                 ` Johannes Schindelin
@ 2009-08-18 17:07                   ` Pau Garcia i Quiles
  2009-08-18 21:35                     ` Johannes Schindelin
  2009-08-18 17:55                   ` Marius Storm-Olsen
  1 sibling, 1 reply; 91+ messages in thread
From: Pau Garcia i Quiles @ 2009-08-18 17:07 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Marius Storm-Olsen, msysgit, git, lznuaa, bonzini, kusmabite

On Tue, Aug 18, 2009 at 4:11 PM, Johannes
Schindelin<Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:
>
>>  So, instead of rely on these vcproj files which *will* go stale, we can
>>  simply use the same Makefile system which everyone else is using. :)
>>  After all, we're just compiling with a different compiler. The end
>>  result will still rely on the *msysGit environment* to function, so we
>>  already require it. Thus, GNU Make is present, and we can use it.
>
> We can also use sed or perl to generate/modify the .vcproj files, or run
> CMake (once Pau got it to build), and package the stuff using zip (once I
> got that to build).

Re: package the stuff using ZIP, it's trivial to do with CPack (part
of the CMake chain). Just tell me what you want to get and I'll
implement it.

-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 16:51                 ` Junio C Hamano
@ 2009-08-18 17:36                   ` Marius Storm-Olsen
  2009-08-18 17:41                   ` Johan 't Hart
  1 sibling, 0 replies; 91+ messages in thread
From: Marius Storm-Olsen @ 2009-08-18 17:36 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Johannes.Schindelin, msysgit, git, lznuaa, bonzini, kusmabite

Junio C Hamano said the following on 18.08.2009 18:51:
> Marius Storm-Olsen <mstormo@gmail.com> writes:
> 
> Marius Storm-Olsen <mstormo@gmail.com> writes:
> 
>> +ARFLAGS = rcs\ # whitespace intentional
>> +COMPFLAG = -c
>> +COBJFLAG = -o\ # whitespace intended
>> +LOBJFLAG = -o\ # whitespace intended
>> ...
>> +ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))
>> +	CC = cl 
>> +	COBJFLAG = -Fo
>> +	LOBJFLAG = -OUT:
>> +	CFLAGS =
>>  git.o: git.c common-cmds.h GIT-CFLAGS
>> ...
>> -		$(ALL_CFLAGS) -c $(filter %.c,$^)
>> +		$(ALL_CFLAGS) $(COMPFLAG) $(COBJFLAG)git.o $(filter %.c,$^)
> 
> Since use of make implies use of shell, this makes me wonder if it would
> make sense to go one step further by giving msvc users a thin shell
> wrapper mcvc-cc that turns bog-standard cc command line into whatever cl
> uses.

That, of course, is also a feasible option :)
However, there are still things you wouldn't want to pass on to this 
script, for example, we don't pass on all the CFLAGS to the linker on 
Windows.

The "whitespace intended" in the patch are quite nasty though..

--
.marius

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 16:51                 ` Daniel Barkalow
@ 2009-08-18 17:38                   ` Marius Storm-Olsen
  0 siblings, 0 replies; 91+ messages in thread
From: Marius Storm-Olsen @ 2009-08-18 17:38 UTC (permalink / raw)
  To: Daniel Barkalow
  Cc: Johannes.Schindelin, msysgit, git, lznuaa, bonzini, kusmabite

Daniel Barkalow said the following on 18.08.2009 18:51:
> On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:
> 
>> From: Marius Storm-Olsen <mstormo@gmail.com>
>>
>> By using GNU Make we can also compile with the MSVC toolchain.
>> This is a rudementary patch, only meant as an RFC for now!!
>>
>> !! DO NOT COMMIT THIS UPSTREAM !!
>> ---
>>  So, instead of rely on these vcproj files which *will* go stale, we can
>>  simply use the same Makefile system which everyone else is using. :)
>>  After all, we're just compiling with a different compiler. The end result
>>  will still rely on the *msysGit environment* to function, so we already
>>  require it. Thus, GNU Make is present, and we can use it.
>>
>>  This implementation is a quick hack to make it compile (hence the RFC
>>  subject), so please don't even consider basing anything ontop of it ;)
>>
>>  But, do point out all the do's and don'ts, and I'll try to polish it up
>>  to something which we can add to Frank's series..
>>  
>>
>>  Makefile      |   97 +++++++++++++++++++++++++++++++++++++++++++++++---------
>>  compat/msvc.h |   77 +++++++++++++++++++++++++++++++++++++++++++++
>>  2 files changed, 158 insertions(+), 16 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index daf4296..2e14976 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -214,9 +214,13 @@ uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')
>>  
>>  CFLAGS = -g -O2 -Wall
>>  LDFLAGS =
>> +ARFLAGS = rcs\ # whitespace intentional
>>  ALL_CFLAGS = $(CFLAGS)
>>  ALL_LDFLAGS = $(LDFLAGS)
>>  STRIP ?= strip
>> +COMPFLAG = -c
>> +COBJFLAG = -o\ # whitespace intended
>> +LOBJFLAG = -o\ # whitespace intended
> 
> I think it's nicer to write the significant whitespace with non-whitespace 
> text using something like:
> 
> empty=
> space=$(empty) $(empty)
> 
> (...)
> 
> ARFLAGS = rcs$(space)
> 
> COBJFLAG = -o$(space)
> 
> On the other hand, I think it would be clearer to put the "rcs" in the 
> default version of $(AR), and have a $(AROBJFLAG) set to nothing there, 
> since the "rcs" isn't actually at all like the "-OUT:" with respect to 
> what it's doing there.
> 
> Possibly also to have two variables for the output of the toolchain 
> wrapper, one that is before the name of the file and one that's attached 
> to the name of the file.

I agree on all accounts. If we don't go for a wrapper script, as Junio 
suggested, then I'll definitely do it like you suggested.

--
.marius

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 16:51                 ` Junio C Hamano
  2009-08-18 17:36                   ` Marius Storm-Olsen
@ 2009-08-18 17:41                   ` Johan 't Hart
  2009-08-18 18:06                     ` Marius Storm-Olsen
  1 sibling, 1 reply; 91+ messages in thread
From: Johan 't Hart @ 2009-08-18 17:41 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Marius Storm-Olsen, Johannes.Schindelin, msysgit, git, lznuaa,
	bonzini, kusmabite

Junio C Hamano schreef:
> Since use of make implies use of shell, this makes me wonder if it would
> make sense to go one step further by giving msvc users a thin shell
> wrapper mcvc-cc that turns bog-standard cc command line into whatever cl
> uses.

Just using the msvc toolchain for building git misses the whole purpose 
of what VC is used for. MSVC would be used because of the IDE, not for 
the compiler IMO. msysgit already has a nice toolchain, using gcc, to 
build git. I think there is no reason to use MSVC for that purpose.

The purpose of CMake was to build an .vcproj file to be used by the IDE, 
not for a batch process that builds git with the VC toolchain. Users 
could than hack git with the IDE from MSVC. And ofcource git should then 
also be compilable by MSVC's cl.exe, because the IDE is not capable of 
using another toolchain then its own...

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 17:06                   ` Pau Garcia i Quiles
@ 2009-08-18 17:44                     ` Paolo Bonzini
  0 siblings, 0 replies; 91+ messages in thread
From: Paolo Bonzini @ 2009-08-18 17:44 UTC (permalink / raw)
  To: Pau Garcia i Quiles
  Cc: Johan 't Hart, Marius Storm-Olsen, Johannes.Schindelin,
	msysgit, git, lznuaa, kusmabite


> CMake is also useful to create installers/tarballs (see CPack), run
> tests (see CTest; it's NOT a unit test library but a tests launcher on
> steroids) and submit the results of compilation, tests and
> installation to a dashboard where you can easily see what (if
> anything) went wrong (see CDash, formerly Dart).

If I know the git hackers, CMake will _never_ be used except _possibly_ 
for generating a .vcproj file.

Paolo

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 14:11                 ` Johannes Schindelin
  2009-08-18 17:07                   ` Pau Garcia i Quiles
@ 2009-08-18 17:55                   ` Marius Storm-Olsen
  2009-08-18 18:42                     ` Daniel Barkalow
  2009-08-19  9:58                     ` Johannes Schindelin
  1 sibling, 2 replies; 91+ messages in thread
From: Marius Storm-Olsen @ 2009-08-18 17:55 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: msysgit, git, lznuaa, bonzini, kusmabite

Johannes Schindelin said the following on 18.08.2009 16:11:
> On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:
>> So, instead of rely on these vcproj files which *will* go stale, we
>> can simply use the same Makefile system which everyone else is
>> using. :) After all, we're just compiling with a different
>> compiler. The end result will still rely on the *msysGit
>> environment* to function, so we already require it. Thus, GNU Make
>> is present, and we can use it.
> 
> We can also use sed or perl to generate/modify the .vcproj files, or
> run CMake (once Pau got it to build), and package the stuff using zip
> (once I got that to build).

Really? That would be some script being able to parse the Makefile, and 
create something reasonable as a vcproj script :) Keeping all the 
options in sync, conditional files/libs, all the various end executables 
(a separate .vcproj for each of them, and a solution file (.sln)to tie 
them all together into a .. "solution", a complete product blah blah 
blah) etc.

Just using the (GNU) Makefile as the 'default' way of compiling with 
MSVC seems to be the most reasonable to me. Then we could just have a 
contrib/vc/msvc2008.vcproj which someone can update when they feel like 
it. The default way should be hard to get out-of-sync, IMO.


>> diff --git a/Makefile b/Makefile
>> +ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))
...
>> +else
>>  ifneq (,$(findstring MINGW,$(uname_S)))
>>  	pathsep = ;
>>  	NO_PREAD = YesPlease
> 
> This means that gcc is never used when Visual C++ is available?  Hmm.

Yes it does :)
First, "This implementation is a quick hack to make it compile", so it 
was all about just making it compile, not being 100% correct. There are 
still some warnings and options which shouldn't be passed on to cl, so 
it's by no means complete. Second, having MSVC include paths in INCLUDE 
when you're compiling with MinGW would be plain wrong. I could use LIB 
instead, which would be even wronger ;)
I was actually going to replace it with a USE_MSVC variable check 
instead though, so you'd rather do 'make USE_MSVC=1'


>> diff --git a/compat/msvc.h b/compat/msvc.h
>> index 6071565..a9d5f7f 100644
>> --- a/compat/msvc.h
>> +++ b/compat/msvc.h
>> @@ -10,50 +10,120 @@
>>  
>>  /*Configuration*/
>>  
>> +#ifndef NO_PREAD
>>  #define NO_PREAD
>> +#endif
> 
> Why?  You now have the stuff in two places.  If you want to keep them in 
> compat/msvc.h to be able to generate .vcproj files, I'd rather not have 
> them duplicated in the Makefile.

The changes to the msvc.h where added just keep Frank's vcproj project 
working. I would have just nuked all that stuff in the msvc.h since the 
Makefile would just provide it for me anyways..

--
.marius

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 17:41                   ` Johan 't Hart
@ 2009-08-18 18:06                     ` Marius Storm-Olsen
  2009-08-18 21:53                       ` Johannes Schindelin
  0 siblings, 1 reply; 91+ messages in thread
From: Marius Storm-Olsen @ 2009-08-18 18:06 UTC (permalink / raw)
  To: Johan 't Hart
  Cc: Junio C Hamano, Johannes.Schindelin, msysgit, git, lznuaa,
	bonzini, kusmabite

Johan 't Hart said the following on 18.08.2009 19:41:
> Junio C Hamano schreef:
>> Since use of make implies use of shell, this makes me wonder if it
>> would make sense to go one step further by giving msvc users a thin
>> shell wrapper mcvc-cc that turns bog-standard cc command line into
>> whatever cl uses.
> 
> Just using the msvc toolchain for building git misses the whole
> purpose of what VC is used for. MSVC would be used because of the
> IDE, not for the compiler IMO.

Bull. MSVC produces superior code on Windows compared to MinGW, I'm 
afraid. Add the /LTGC (Link Time Code Generation), and MSVC generates 
very good cross compile-unit optimized code. (I know gcc has the option, 
but it's not as good, by far)
Coupled now with built-in static code analysis, these are only two 
reasons why *I* would want to build it directly from the command line 
without worrying that my .vcproj is out-of-sync with the main development.
You can still debug with the MSVC debugger if you'd like, and the MSVC 
IDE allows you to wrap Makefile project too, so you can *still* use the 
IDE..

--
.marius

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 17:55                   ` Marius Storm-Olsen
@ 2009-08-18 18:42                     ` Daniel Barkalow
  2009-08-18 21:57                       ` Johannes Schindelin
  2009-08-19  9:58                     ` Johannes Schindelin
  1 sibling, 1 reply; 91+ messages in thread
From: Daniel Barkalow @ 2009-08-18 18:42 UTC (permalink / raw)
  To: Marius Storm-Olsen
  Cc: Johannes Schindelin, msysgit, git, lznuaa, bonzini, kusmabite

On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:

> Johannes Schindelin said the following on 18.08.2009 16:11:
> > On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:
> > > So, instead of rely on these vcproj files which *will* go stale, we
> > > can simply use the same Makefile system which everyone else is
> > > using. :) After all, we're just compiling with a different
> > > compiler. The end result will still rely on the *msysGit
> > > environment* to function, so we already require it. Thus, GNU Make
> > > is present, and we can use it.
> > 
> > We can also use sed or perl to generate/modify the .vcproj files, or
> > run CMake (once Pau got it to build), and package the stuff using zip
> > (once I got that to build).
> 
> Really? That would be some script being able to parse the Makefile, and create
> something reasonable as a vcproj script :) Keeping all the options in sync,
> conditional files/libs, all the various end executables (a separate .vcproj
> for each of them, and a solution file (.sln)to tie them all together into a ..
> "solution", a complete product blah blah blah) etc.

I think it wouldn't be impossible to split the Makefile into an 
easy-to-parse part and an irrelevant-to-vcproj part. Certainly you don't 
need GNU Make to read a file:

SCRIPT_SH += git-am.sh
SCRIPT_SH += git-bisect.sh

SCRIPT_PERL += git-add--interactive.perl

PROGRAM_NAMES += git-fast-import

BUILTINS_IN_OBJS += add

(etc)

That is, we can probably describe the project sufficiently with a lot of

VAR += value

lines, using only constant values and variables we specify, and then the 
Makefile declares them empty and does an

include UserServicableParts

and puts together the variables it needs. And things that aren't GNU Make 
could also process this file without enormous difficulty, since it's 
essentially a .ini file or java resource file with a stray + on each line. 
Of course, people interested in the vcproj thing would have to update 
whatever makes VC do the right thing when new *rules* are introduced, but 
that's a lot less common than new *files* being introduced, and also more 
obvious (in the sense that the included file is setting variables that the 
builder doesn't know what to do with).

	-Daniel
*This .sig left intentionally blank*

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 17:07                   ` Pau Garcia i Quiles
@ 2009-08-18 21:35                     ` Johannes Schindelin
  0 siblings, 0 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-18 21:35 UTC (permalink / raw)
  To: Pau Garcia i Quiles
  Cc: Marius Storm-Olsen, msysgit, git, lznuaa, bonzini, kusmabite

[-- Attachment #1: Type: TEXT/PLAIN, Size: 1081 bytes --]

Hi,

On Tue, 18 Aug 2009, Pau Garcia i Quiles wrote:

> On Tue, Aug 18, 2009 at 4:11 PM, Johannes
> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>
> > On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:
> >
> >>  So, instead of rely on these vcproj files which *will* go stale, we 
> >> can  simply use the same Makefile system which everyone else is 
> >> using. :)  After all, we're just compiling with a different compiler. 
> >> The end  result will still rely on the *msysGit environment* to 
> >> function, so we  already require it. Thus, GNU Make is present, and 
> >> we can use it.
> >
> > We can also use sed or perl to generate/modify the .vcproj files, or 
> > run CMake (once Pau got it to build), and package the stuff using zip 
> > (once I got that to build).
> 
> Re: package the stuff using ZIP, it's trivial to do with CPack (part of 
> the CMake chain). Just tell me what you want to get and I'll implement 
> it.

Well, I tried to tell you already what I want.  A simple and unsupervised 
script that downloads, compiles, installs and commits CMake.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 18:06                     ` Marius Storm-Olsen
@ 2009-08-18 21:53                       ` Johannes Schindelin
  2009-08-18 22:02                         ` Erik Faye-Lund
  0 siblings, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-18 21:53 UTC (permalink / raw)
  To: Marius Storm-Olsen
  Cc: Johan 't Hart, Junio C Hamano, msysgit, git, lznuaa, bonzini,
	kusmabite

Hi,

On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:

> Johan 't Hart said the following on 18.08.2009 19:41:
> > Junio C Hamano schreef:
> > > Since use of make implies use of shell, this makes me wonder if it
> > > would make sense to go one step further by giving msvc users a thin
> > > shell wrapper mcvc-cc that turns bog-standard cc command line into
> > > whatever cl uses.
> > 
> > Just using the msvc toolchain for building git misses the whole
> > purpose of what VC is used for. MSVC would be used because of the
> > IDE, not for the compiler IMO.
> 
> Bull. MSVC produces superior code on Windows compared to MinGW, I'm afraid.
> Add the /LTGC (Link Time Code Generation), and MSVC generates very good cross
> compile-unit optimized code. (I know gcc has the option, but it's not as good,
> by far)
> Coupled now with built-in static code analysis, these are only two reasons why
> *I* would want to build it directly from the command line without worrying
> that my .vcproj is out-of-sync with the main development.
> You can still debug with the MSVC debugger if you'd like, and the MSVC IDE
> allows you to wrap Makefile project too, so you can *still* use the IDE..

Well, "you can *still* use the IDE" is a bit exaggerated, no?  At least 
unless you misunderstand "IDE" to mean "Integrated Debugging environment".

You'll lose not only the ability to follow definitions/declarations in the 
code, you'll also lose the ability to compile incrementally _while_ 
debuggin, and Visual Studio's feature to move to the next/previous compile 
error.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 18:42                     ` Daniel Barkalow
@ 2009-08-18 21:57                       ` Johannes Schindelin
  0 siblings, 0 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-18 21:57 UTC (permalink / raw)
  To: Daniel Barkalow
  Cc: Marius Storm-Olsen, msysgit, git, lznuaa, bonzini, kusmabite

Hi,

On Tue, 18 Aug 2009, Daniel Barkalow wrote:

> On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:
> 
> > Johannes Schindelin said the following on 18.08.2009 16:11:
> > > On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:
> > > > So, instead of rely on these vcproj files which *will* go stale, 
> > > > we can simply use the same Makefile system which everyone else is 
> > > > using. :) After all, we're just compiling with a different 
> > > > compiler. The end result will still rely on the *msysGit 
> > > > environment* to function, so we already require it. Thus, GNU Make 
> > > > is present, and we can use it.
> > > 
> > > We can also use sed or perl to generate/modify the .vcproj files, or 
> > > run CMake (once Pau got it to build), and package the stuff using 
> > > zip (once I got that to build).
> > 
> > Really? That would be some script being able to parse the Makefile, 
> > and create something reasonable as a vcproj script :) Keeping all the 
> > options in sync, conditional files/libs, all the various end 
> > executables (a separate .vcproj for each of them, and a solution file 
> > (.sln)to tie them all together into a .. "solution", a complete 
> > product blah blah blah) etc.
> 
> I think it wouldn't be impossible to split the Makefile into an 
> easy-to-parse part and an irrelevant-to-vcproj part.

What?  That is pretty fragile.

It would be _much_ better to just add another Makefile target that outputs 
the files needed for the targets.

We do not need to keep the Makefile as-is!  If the change is not 
intrusive, I am sure our friendly maintainer will not see a problem 
either.

No need for fragile parsing at all.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 21:53                       ` Johannes Schindelin
@ 2009-08-18 22:02                         ` Erik Faye-Lund
  2009-08-18 22:38                           ` Johannes Schindelin
  0 siblings, 1 reply; 91+ messages in thread
From: Erik Faye-Lund @ 2009-08-18 22:02 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Marius Storm-Olsen, Johan 't Hart, Junio C Hamano, msysgit,
	git, lznuaa, bonzini


On Tue, Aug 18, 2009 at 11:53 PM, Johannes
Schindelin<Johannes.Schindelin@gmx.de> wrote:
> debuggin, and Visual Studio's feature to move to the next/previous compile
> error.

Nope, you're still able to skip through the erros (with F4) as ususal.
I've been using a sed-script to translate gcc-style errors to
msvc-style errors for makefile projects before with great success. In
this case, the errors are already in msvc-style, so that part should
really not be any issue.

-- 
Erik "kusma" Faye-Lund
kusmabite@gmail.com
(+47) 986 59 656

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 22:02                         ` Erik Faye-Lund
@ 2009-08-18 22:38                           ` Johannes Schindelin
  2009-08-18 22:48                             ` Erik Faye-Lund
  0 siblings, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-18 22:38 UTC (permalink / raw)
  To: Erik Faye-Lund
  Cc: Marius Storm-Olsen, Johan 't Hart, Junio C Hamano, msysgit,
	git, lznuaa, bonzini

Hi,

On Wed, 19 Aug 2009, Erik Faye-Lund wrote:

> On Tue, Aug 18, 2009 at 11:53 PM, Johannes
> Schindelin<Johannes.Schindelin@gmx.de> wrote:
> > debuggin, and Visual Studio's feature to move to the next/previous 
> > compile error.
> 
> Nope, you're still able to skip through the erros (with F4) as ususal. 
> I've been using a sed-script to translate gcc-style errors to msvc-style 
> errors for makefile projects before with great success. In this case, 
> the errors are already in msvc-style, so that part should really not be 
> any issue.

At this point you are just piling work-around on work-around.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 22:38                           ` Johannes Schindelin
@ 2009-08-18 22:48                             ` Erik Faye-Lund
  2009-08-19  7:16                               ` Johannes Schindelin
  0 siblings, 1 reply; 91+ messages in thread
From: Erik Faye-Lund @ 2009-08-18 22:48 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Marius Storm-Olsen, Johan 't Hart, Junio C Hamano, msysgit,
	git, lznuaa, bonzini

On Wed, Aug 19, 2009 at 12:38 AM, Johannes
Schindelin<Johannes.Schindelin@gmx.de> wrote:
>> Nope, you're still able to skip through the erros (with F4) as ususal.
>> I've been using a sed-script to translate gcc-style errors to msvc-style
>> errors for makefile projects before with great success. In this case,
>> the errors are already in msvc-style, so that part should really not be
>> any issue.
>
> At this point you are just piling work-around on work-around.

At what point? This works out of the box for makefile projects that
use msvc for compilation. Sure, for my gcc-setup, yeah. But how is
that being a stack of work-arounds relevant in this context?

I'm not arguing either way here - I'm perfectly happy to stick with MinGW.

I'm just saying that one of the problems you pointed out is not really
a problem. The rest of them sounds like very much like real problems
to me - not particularly big issues, you're the one who just said that
perfect is the enemy of the good, no? ;)

-- 
Erik "kusma" Faye-Lund
kusmabite@gmail.com
(+47) 986 59 656

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 22:48                             ` Erik Faye-Lund
@ 2009-08-19  7:16                               ` Johannes Schindelin
  2009-08-19  7:29                                 ` Marius Storm-Olsen
  2009-08-19 13:04                                 ` Joshua Jensen
  0 siblings, 2 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-19  7:16 UTC (permalink / raw)
  To: Erik Faye-Lund
  Cc: Marius Storm-Olsen, Johan 't Hart, Junio C Hamano, msysgit,
	git, lznuaa, bonzini

Hi,

On Wed, 19 Aug 2009, Erik Faye-Lund wrote:

> On Wed, Aug 19, 2009 at 12:38 AM, Johannes
> Schindelin<Johannes.Schindelin@gmx.de> wrote:
> >> Nope, you're still able to skip through the erros (with F4) as ususal.
> >> I've been using a sed-script to translate gcc-style errors to msvc-style
> >> errors for makefile projects before with great success. In this case,
> >> the errors are already in msvc-style, so that part should really not be
> >> any issue.
> >
> > At this point you are just piling work-around on work-around.
> 
> At what point?

At the point where you bolt on a sed script on top of a bolted-on build 
procedure.

Using a Makefile from within Visual Studio is just not the intended way to 
do things, so you will hit the limitations sooner or later.

For example when the sed script encounters a situation which was not 
anticipated by the script author.

So I think if we support Microsoft Visual C++, it should be either through 
.vcproj files, or through a procedure that creates them.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-19  7:16                               ` Johannes Schindelin
@ 2009-08-19  7:29                                 ` Marius Storm-Olsen
  2009-08-19  8:29                                   ` Johannes Schindelin
  2009-08-19 13:04                                 ` Joshua Jensen
  1 sibling, 1 reply; 91+ messages in thread
From: Marius Storm-Olsen @ 2009-08-19  7:29 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Erik Faye-Lund, Johan 't Hart, Junio C Hamano, msysgit, git,
	lznuaa, bonzini

[-- Attachment #1: Type: text/plain, Size: 2359 bytes --]

Johannes Schindelin said the following on 19.08.2009 09:16:
> On Wed, 19 Aug 2009, Erik Faye-Lund wrote:
>> On Wed, Aug 19, 2009 at 12:38 AM, Johannes 
>> Schindelin<Johannes.Schindelin@gmx.de> wrote:
>>>> Nope, you're still able to skip through the erros (with F4)
>>>> as ususal. I've been using a sed-script to translate
>>>> gcc-style errors to msvc-style errors for makefile projects
>>>> before with great success. In this case, the errors are
>>>> already in msvc-style, so that part should really not be any
>>>> issue.
>>> At this point you are just piling work-around on work-around.
>> At what point?
> 
> At the point where you bolt on a sed script on top of a bolted-on
> build procedure.
> 
> Using a Makefile from within Visual Studio is just not the intended
> way to do things, so you will hit the limitations sooner or later.
> 
> For example when the sed script encounters a situation which was
> not anticipated by the script author.
> 
> So I think if we support Microsoft Visual C++, it should be either
> through .vcproj files, or through a procedure that creates them.

IMO, and I'm primarily a Windows developer mind you and spend a lot of 
time in Visual Studio, the primary is to support *compiling* git with 
VC, which is easily done with a few changes to the current Makefile.

The full IDE support is secondary, first because you *can* use the IDE 
already, and second because it'll be harder to whip something up which 
guarantees that the vcproj support stays in-sync at all times and 
won't lag behind.

If you want, you can even use Qt Creator's Makefile support on any 
platform to build and debug git, and get tab completion, code 
refactoring support, 'quick open' navigation etc. So, I still think 
the primary focus should be to simply add the VC support in the 
current setup, and ensure that the patch series is up to scratch; and 
when that's all done, *then* add the effort of properly supporting the 
various IDEs.

Of course, if someone has a huge itch to restructure the current 
Makefile; factoring out the files into a file which can simply be 
included in the current Makefile, and easily parsed by a script, or 
included by CMake, then that can be done in parallel and possible 
added to git mainline before the MSVC support patches from Frank.

--
.marius


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 187 bytes --]

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-19  7:29                                 ` Marius Storm-Olsen
@ 2009-08-19  8:29                                   ` Johannes Schindelin
  2009-08-19  8:56                                     ` Thomas Berg
  2009-08-19 10:59                                     ` [msysGit] " Marius Storm-Olsen
  0 siblings, 2 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-19  8:29 UTC (permalink / raw)
  To: Marius Storm-Olsen
  Cc: Erik Faye-Lund, Johan 't Hart, Junio C Hamano, msysgit, git,
	lznuaa, bonzini

Hi,

On Wed, 19 Aug 2009, Marius Storm-Olsen wrote:

> The full IDE support is secondary, first because you *can* use the IDE 
> already, and second because it'll be harder to whip something up which 
> guarantees that the vcproj support stays in-sync at all times and won't 
> lag behind.

I think the point of Frank's patches is to make Visual Studio users 
comfortable with Git.  You cannot ask those to use a build process or an 
IDE they are not used to.

> Of course, if someone has a huge itch to restructure the current 
> Makefile; factoring out the files into a file which can simply be 
> included in the current Makefile, and easily parsed by a script, or 
> included by CMake, then that can be done in parallel and possible added 
> to git mainline before the MSVC support patches from Frank.

I still think it would be possible to use a combination of a 
Makefile rule and GNU make features to spit out a list of targets and 
their dependet .h and .c files.

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-19  8:29                                   ` Johannes Schindelin
@ 2009-08-19  8:56                                     ` Thomas Berg
  2009-08-19 10:59                                     ` [msysGit] " Marius Storm-Olsen
  1 sibling, 0 replies; 91+ messages in thread
From: Thomas Berg @ 2009-08-19  8:56 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Marius Storm-Olsen, Erik Faye-Lund, Johan 't Hart,
	Junio C Hamano, msysgit, git, lznuaa, bonzini

Hi,

On Wed, Aug 19, 2009 at 10:29 AM, Johannes
Schindelin<Johannes.Schindelin@gmx.de> wrote:
> Hi,
>
> On Wed, 19 Aug 2009, Marius Storm-Olsen wrote:
>
>> The full IDE support is secondary, first because you *can* use the IDE
>> already, and second because it'll be harder to whip something up which
>> guarantees that the vcproj support stays in-sync at all times and won't
>> lag behind.
>
> I think the point of Frank's patches is to make Visual Studio users
> comfortable with Git.  You cannot ask those to use a build process or an
> IDE they are not used to.
>

I don't know Frank's intentions behind adding the .vcproj files. Maybe
it was just easier for him to create them, rather than hacking the
Makefile?

As a Windows / Visual Studio user, I have to agree with Marius' points
here. Most importantly, get the git code itself to compile with Visual
Studio. Did anyone do any benchmarking yet? I wouldn't be surprised if
we got some speed improvements from this. Also, it will no longer
impossible to use the Visual Studio debugger.

Supporting the Visual Studio compiler in the Makefile seems like an
excellent and maintainable way of getting the build up and running.

I can't speek for all Visual Studio users, of course, but personally I
couldn't care less about the .vcproj files. I use other IDE's for
developing on Windows (qt-creator, eclipse-cdt), so for me .vcproj
files would be useless. The Makefile should work from any IDE. In my
experience, all of qt-creator, eclipse _and_ Visual Studio support
running any make-like program, and parse the compiler errors correctly
without using sed or other kinds of magic.

>
> I still think it would be possible to use a combination of a
> Makefile rule and GNU make features to spit out a list of targets and
> their dependet .h and .c files.

I wouldn't mind if someone was willing to add and maintain this, of
course, but at least for me it wouldn't be particularely useful.

Cheers,
Thomas Berg

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-18 17:55                   ` Marius Storm-Olsen
  2009-08-18 18:42                     ` Daniel Barkalow
@ 2009-08-19  9:58                     ` Johannes Schindelin
  1 sibling, 0 replies; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-19  9:58 UTC (permalink / raw)
  To: Marius Storm-Olsen; +Cc: msysgit, git, lznuaa, bonzini, kusmabite

Hi,

On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:

> Johannes Schindelin said the following on 18.08.2009 16:11:
>
> > On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:
> > 
> > > diff --git a/Makefile b/Makefile
> > > +ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))
> ...
> > > +else
> > >  ifneq (,$(findstring MINGW,$(uname_S)))
> > >   pathsep = ;
> > >   NO_PREAD = YesPlease
> > 
> > This means that gcc is never used when Visual C++ is available?  Hmm.
> 
> Yes it does :)

As you know, I do not own a Windows computer.  On the Windows computer I 
am allowed to use sometimes to test Git and my day-time project, the 
Express edition was installed, but it was never registered, so it is not 
usable, and I would not want to use it anyway.

So this change would break my setup.

> I was actually going to replace it with a USE_MSVC variable check 
> instead though, so you'd rather do 'make USE_MSVC=1'

That's much nicer, especially since you can put that into config.mak.

> > > diff --git a/compat/msvc.h b/compat/msvc.h
> > > index 6071565..a9d5f7f 100644
> > > --- a/compat/msvc.h
> > > +++ b/compat/msvc.h
> > > @@ -10,50 +10,120 @@
> > >  
> > >  /*Configuration*/
> > >  
> > > +#ifndef NO_PREAD
> > > #define NO_PREAD
> > > +#endif
> > 
> > Why?  You now have the stuff in two places.  If you want to keep them 
> > in compat/msvc.h to be able to generate .vcproj files, I'd rather not 
> > have them duplicated in the Makefile.
>
> The changes to the msvc.h where added just keep Frank's vcproj project 
> working. I would have just nuked all that stuff in the msvc.h since the 
> Makefile would just provide it for me anyways..

So maybe you and Frank (and Pau) hash out what you want?

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [msysGit] Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-19  8:29                                   ` Johannes Schindelin
  2009-08-19  8:56                                     ` Thomas Berg
@ 2009-08-19 10:59                                     ` Marius Storm-Olsen
  2009-08-19 12:56                                       ` Johannes Schindelin
  1 sibling, 1 reply; 91+ messages in thread
From: Marius Storm-Olsen @ 2009-08-19 10:59 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Marius Storm-Olsen, Erik Faye-Lund, Johan 't Hart,
	Junio C Hamano, msysgit, git, lznuaa, bonzini

Johannes Schindelin said the following on 19.08.2009 10:29:
> Hi,
> 
> On Wed, 19 Aug 2009, Marius Storm-Olsen wrote:
> 
>> The full IDE support is secondary, first because you *can* use the IDE 
>> already, and second because it'll be harder to whip something up which 
>> guarantees that the vcproj support stays in-sync at all times and won't 
>> lag behind.
> 
> I think the point of Frank's patches is to make Visual Studio users 
> comfortable with Git.  You cannot ask those to use a build process or an 
> IDE they are not used to.
> 
>> Of course, if someone has a huge itch to restructure the current 
>> Makefile; factoring out the files into a file which can simply be 
>> included in the current Makefile, and easily parsed by a script, or 
>> included by CMake, then that can be done in parallel and possible added 
>> to git mainline before the MSVC support patches from Frank.
> 
> I still think it would be possible to use a combination of a 
> Makefile rule and GNU make features to spit out a list of targets and 
> their dependet .h and .c files.

Ok, but you would still have to rely on GNU Make in this setup, and it 
would have to generate the common_cmds.h before you can even compile 
with the MSVC IDE.

--
.marius

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [msysGit] Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-19 10:59                                     ` [msysGit] " Marius Storm-Olsen
@ 2009-08-19 12:56                                       ` Johannes Schindelin
  2009-08-19 13:26                                         ` Marius Storm-Olsen
  0 siblings, 1 reply; 91+ messages in thread
From: Johannes Schindelin @ 2009-08-19 12:56 UTC (permalink / raw)
  To: Marius Storm-Olsen
  Cc: Marius Storm-Olsen, Erik Faye-Lund, Johan 't Hart,
	Junio C Hamano, msysgit, git, lznuaa, bonzini

Hi,

On Wed, 19 Aug 2009, Marius Storm-Olsen wrote:

> Johannes Schindelin said the following on 19.08.2009 10:29:
> > Hi,
> > 
> > On Wed, 19 Aug 2009, Marius Storm-Olsen wrote:
> > 
> > > The full IDE support is secondary, first because you *can* use the 
> > > IDE already, and second because it'll be harder to whip something up 
> > > which guarantees that the vcproj support stays in-sync at all times 
> > > and won't lag behind.
> > 
> > I think the point of Frank's patches is to make Visual Studio users 
> > comfortable with Git.  You cannot ask those to use a build process or 
> > an IDE they are not used to.
> > 
> > > Of course, if someone has a huge itch to restructure the current 
> > > Makefile; factoring out the files into a file which can simply be 
> > > included in the current Makefile, and easily parsed by a script, or 
> > > included by CMake, then that can be done in parallel and possible 
> > > added to git mainline before the MSVC support patches from Frank.
> > 
> > I still think it would be possible to use a combination of a Makefile 
> > rule and GNU make features to spit out a list of targets and their 
> > dependet .h and .c files.
> 
> Ok, but you would still have to rely on GNU Make in this setup, and it 
> would have to generate the common_cmds.h before you can even compile 
> with the MSVC IDE.

But then I could bundle it up and give it to a Visual Studio user and they 
do not need msysGit.

But maybe we should require them to have msysGit?  After all, if the 
package is too small, no Windows developer will take it seriously, right? 
;-)

Ciao,
Dscho

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-19  7:16                               ` Johannes Schindelin
  2009-08-19  7:29                                 ` Marius Storm-Olsen
@ 2009-08-19 13:04                                 ` Joshua Jensen
  1 sibling, 0 replies; 91+ messages in thread
From: Joshua Jensen @ 2009-08-19 13:04 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Erik Faye-Lund, Marius Storm-Olsen, Johan 't Hart,
	Junio C Hamano, msysgit, git, lznuaa, bonzini

----- Original Message -----
From: Johannes Schindelin
Date: 8/19/2009 1:16 AM
> Using a Makefile from within Visual Studio is just not the intended way to 
> do things, so you will hit the limitations sooner or later.
>   
I use Visual Studio makefile projects daily and have for years.  In my 
case, an additional script takes the Jam build scripts and creates the 
.vcproj files with the proper file lists and project source folders.  
These Makefile .vcproj files have full support for Intellisense, 
debugging, and nearly everything else.  The only thing a Makefile 
project doesn't seem to expose is single file compilation.

Josh

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [msysGit] Re: [RFC] Enable compilation by Makefile for the MSVC toolchain
  2009-08-19 12:56                                       ` Johannes Schindelin
@ 2009-08-19 13:26                                         ` Marius Storm-Olsen
  2009-08-19 14:51                                           ` Erik Faye-Lund
  0 siblings, 1 reply; 91+ messages in thread
From: Marius Storm-Olsen @ 2009-08-19 13:26 UTC (permalink / raw)
  To: Johannes Schindelin
  Cc: Marius Storm-Olsen, Erik Faye-Lund, Johan 't Hart,
	Junio C Hamano, msysgit, git, lznuaa, bonzini

[-- Attachment #1: Type: text/plain, Size: 839 bytes --]

Johannes Schindelin said the following on 19.08.2009 14:56:
> On Wed, 19 Aug 2009, Marius Storm-Olsen wrote:
>> Ok, but you would still have to rely on GNU Make in this setup,
>> and it would have to generate the common_cmds.h before you can
>> even compile with the MSVC IDE.
> 
> But then I could bundle it up and give it to a Visual Studio user
> and they do not need msysGit.
> 
> But maybe we should require them to have msysGit?  After all, if
> the package is too small, no Windows developer will take it
> seriously, right? ;-)

They would still require the rest of the msysgit environment to be 
able to use the result. Not until we have zero scripts left as git 
commands can we ditch the msysgit environment. So yes, even for 
msvc-built git is msysgit required. Its just not build with MinGW.

--
.marius


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 187 bytes --]

^ permalink raw reply	[flat|nested] 91+ messages in thread

* Re: [RFC] Enable compilation by Makefile for the MSVC  toolchain
  2009-08-19 13:26                                         ` Marius Storm-Olsen
@ 2009-08-19 14:51                                           ` Erik Faye-Lund
  0 siblings, 0 replies; 91+ messages in thread
From: Erik Faye-Lund @ 2009-08-19 14:51 UTC (permalink / raw)
  To: Marius Storm-Olsen
  Cc: Johannes Schindelin, Marius Storm-Olsen, Johan 't Hart,
	Junio C Hamano, msysgit, git, lznuaa, bonzini


On Wed, Aug 19, 2009 at 3:26 PM, Marius
Storm-Olsen<marius@storm-olsen.com> wrote:
> They would still require the rest of the msysgit environment to be able to
> use the result. Not until we have zero scripts left as git commands can we
> ditch the msysgit environment. So yes, even for msvc-built git is msysgit
> required. Its just not build with MinGW.

...perhaps support for msvc for a subset of git-core (without all
shell scripts, that is) is just the incentive some windows-developers
need to start developing c-versions of the lacking functionality? A
pure C git-core would IMO be the ideal case. Utilities could still be
scripted on top of this through bindings given that the developer have
perl installed, no?

-- 
Erik "kusma" Faye-Lund
kusmabite@gmail.com
(+47) 986 59 656

^ permalink raw reply	[flat|nested] 91+ messages in thread

end of thread, other threads:[~2009-08-19 14:52 UTC | newest]

Thread overview: 91+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-08-17 16:04 [PATCH 06/11] Add miss git-compat-util.h at regex.c and fnmatch.c Add git-compat-util.h to enable build at MSVC environment Frank Li
2009-08-17 16:04 ` [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c Frank Li
2009-08-17 16:04   ` [PATCH 08/11] Place __stdcall to correct position Frank Li
2009-08-17 16:05     ` [PATCH 09/11] Add MSVC porting header files Frank Li
2009-08-17 16:05       ` [PATCH 10/11] Add MSVC Project file Frank Li
2009-08-17 17:11         ` Johannes Schindelin
2009-08-17 17:34         ` Paolo Bonzini
2009-08-17 17:40           ` Erik Faye-Lund
2009-08-17 18:16             ` Paolo Bonzini
2009-08-17 19:53             ` Johannes Schindelin
2009-08-17 20:02               ` Paolo Bonzini
2009-08-17 20:54                 ` Johannes Schindelin
2009-08-17 20:17               ` Pau Garcia i Quiles
2009-08-17 20:43                 ` Reece Dunn
2009-08-17 20:54                   ` Pau Garcia i Quiles
2009-08-17 21:05                     ` Reece Dunn
2009-08-17 22:17                       ` Johan 't Hart
2009-08-17 21:05                     ` Johannes Schindelin
2009-08-17 21:23                       ` Pau Garcia i Quiles
2009-08-17 22:10                         ` Johannes Schindelin
2009-08-17 22:19                           ` Pau Garcia i Quiles
2009-08-17 22:21                             ` Paolo Bonzini
2009-08-17 22:32                               ` Thiago Farina
2009-08-17 22:33                               ` Thiago Farina
2009-08-17 20:56                 ` Johannes Schindelin
2009-08-17 20:59                   ` Pau Garcia i Quiles
2009-08-17 21:11                     ` Johannes Schindelin
2009-08-17 22:26                       ` Johan 't Hart
2009-08-17 23:00                         ` Pau Garcia i Quiles
2009-08-17 23:40                           ` Johannes Schindelin
2009-08-17 22:44                       ` Pau Garcia i Quiles
2009-08-18 12:58               ` [RFC] Enable compilation by Makefile for the MSVC toolchain Marius Storm-Olsen
2009-08-18 13:01                 ` Marius Storm-Olsen
2009-08-18 13:09                 ` Erik Faye-Lund
2009-08-18 14:11                 ` Johannes Schindelin
2009-08-18 17:07                   ` Pau Garcia i Quiles
2009-08-18 21:35                     ` Johannes Schindelin
2009-08-18 17:55                   ` Marius Storm-Olsen
2009-08-18 18:42                     ` Daniel Barkalow
2009-08-18 21:57                       ` Johannes Schindelin
2009-08-19  9:58                     ` Johannes Schindelin
2009-08-18 16:22                 ` Johan 't Hart
2009-08-18 16:28                   ` Reece Dunn
2009-08-18 17:06                   ` Pau Garcia i Quiles
2009-08-18 17:44                     ` Paolo Bonzini
2009-08-18 16:51                 ` Junio C Hamano
2009-08-18 17:36                   ` Marius Storm-Olsen
2009-08-18 17:41                   ` Johan 't Hart
2009-08-18 18:06                     ` Marius Storm-Olsen
2009-08-18 21:53                       ` Johannes Schindelin
2009-08-18 22:02                         ` Erik Faye-Lund
2009-08-18 22:38                           ` Johannes Schindelin
2009-08-18 22:48                             ` Erik Faye-Lund
2009-08-19  7:16                               ` Johannes Schindelin
2009-08-19  7:29                                 ` Marius Storm-Olsen
2009-08-19  8:29                                   ` Johannes Schindelin
2009-08-19  8:56                                     ` Thomas Berg
2009-08-19 10:59                                     ` [msysGit] " Marius Storm-Olsen
2009-08-19 12:56                                       ` Johannes Schindelin
2009-08-19 13:26                                         ` Marius Storm-Olsen
2009-08-19 14:51                                           ` Erik Faye-Lund
2009-08-19 13:04                                 ` Joshua Jensen
2009-08-18 16:51                 ` Daniel Barkalow
2009-08-18 17:38                   ` Marius Storm-Olsen
2009-08-17 22:27         ` [PATCH 10/11] Add MSVC Project file Thiago Farina
2009-08-17 22:29           ` Thiago Farina
2009-08-17 22:39           ` Johannes Schindelin
2009-08-17 22:50             ` Thiago Farina
2009-08-17 17:09       ` [PATCH 09/11] Add MSVC porting header files Johannes Schindelin
2009-08-17 19:31         ` Pau Garcia i Quiles
2009-08-17 19:48           ` CMake, was " Johannes Schindelin
2009-08-17 19:51             ` Pau Garcia i Quiles
2009-08-17 19:54               ` Pau Garcia i Quiles
2009-08-17 20:58               ` Johannes Schindelin
2009-08-17 21:03                 ` Pau Garcia i Quiles
2009-08-17 21:20               ` Reece Dunn
2009-08-17 21:29                 ` Pau Garcia i Quiles
2009-08-17 20:07           ` [msysGit] " Johannes Sixt
2009-08-18  2:15         ` Frank Li
2009-08-18  9:47           ` Johannes Schindelin
2009-08-18 10:42             ` Junio C Hamano
2009-08-18 13:01               ` Johannes Schindelin
2009-08-17 19:21       ` [msysGit] " Johannes Sixt
2009-08-17 17:01     ` [PATCH 08/11] Place __stdcall to correct position Johannes Schindelin
2009-08-18  1:51       ` Frank Li
2009-08-18  9:36         ` Johannes Schindelin
2009-08-17 16:58   ` [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c Johannes Schindelin
2009-08-18  2:02     ` Frank Li
2009-08-18  9:40       ` Johannes Schindelin
2009-08-17 16:51 ` [PATCH 06/11] Add miss git-compat-util.h at regex.c and fnmatch.c Add git-compat-util.h to enable build at MSVC environment Johannes Schindelin
2009-08-17 19:23 ` Johannes Sixt

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.