{"thread":{"id":"20640","subject":"[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","startedAt":"2009-08-17T16:04:57Z","lastAt":"2009-08-19T14:51:22Z","messageCount":91,"participants":["Frank Li","Johannes Schindelin","Paolo Bonzini","Erik Faye-Lund","Johannes Sixt","Pau Garcia i Quiles","Reece Dunn","Johan 't Hart","Thiago Farina","Junio C Hamano","Marius Storm-Olsen","Daniel Barkalow","Thomas Berg","Joshua Jensen"],"isPatch":true,"patchVersion":1,"patchTotal":11},"messages":[{"id":"120912","messageId":"1250525103-5184-1-git-send-email-lznuaa@gmail.com","threadId":"20640","inReplyTo":null,"subject":"[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","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-17T16:04:57Z","receivedAt":"2009-08-17T16:04:57Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"Signed-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/fnmatch/fnmatch.c |    4 ++++\n compat/regex/regex.c     |    4 ++++\n 2 files changed, 8 insertions(+), 0 deletions(-)\n\ndiff --git a/compat/fnmatch/fnmatch.c b/compat/fnmatch/fnmatch.c\nindex 14feac7..5cbd49c 100644\n--- a/compat/fnmatch/fnmatch.c\n+++ b/compat/fnmatch/fnmatch.c\n@@ -16,6 +16,10 @@\n    write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n    Boston, MA 02111-1307, USA.  */\n \n+#ifdef _MSC_VER\n+#include \"git-compat-util.h\"\n+#endif\n+\n #if HAVE_CONFIG_H\n # include <config.h>\n #endif\ndiff --git a/compat/regex/regex.c b/compat/regex/regex.c\nindex 5728de1..2298a3a 100644\n--- a/compat/regex/regex.c\n+++ b/compat/regex/regex.c\n@@ -20,6 +20,10 @@\n    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */\n \n /* AIX requires this to be the first thing in the file. */\n+#ifdef _MSC_VER\n+#include \"git-compat-util.h\"\n+#endif\n+\n #if defined (_AIX) && !defined (REGEX_MALLOC)\n   #pragma alloca\n #endif\n-- \n1.6.4.msysgit.0\n"},{"id":"120913","messageId":"1250525103-5184-2-git-send-email-lznuaa@gmail.com","threadId":"20640","inReplyTo":"1250525103-5184-1-git-send-email-lznuaa@gmail.com","subject":"[PATCH 07/11] Add O_BINARY flag to open flag at mingw.c","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-17T16:04:58Z","receivedAt":"2009-08-17T16:04:58Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"Windows will convert CR\\LF and union code at text mode.\nGit doesn't like this. Add O_BINARY flag to open function\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/mingw.c |    4 ++--\n 1 files changed, 2 insertions(+), 2 deletions(-)\n\ndiff --git a/compat/mingw.c b/compat/mingw.c\nindex 75c74b1..d5fa0ed 100644\n--- a/compat/mingw.c\n+++ b/compat/mingw.c\n@@ -132,7 +132,7 @@ int mingw_open (const char *filename, int oflags, ...)\n \tif (!strcmp(filename, \"/dev/null\"))\n \t\tfilename = \"nul\";\n \n-\tfd = open(filename, oflags, mode);\n+\tfd = open(filename, oflags | O_BINARY, mode);\n \n \tif (fd < 0 && (oflags & O_CREAT) && errno == EACCES) {\n \t\tDWORD attrs = GetFileAttributes(filename);\n@@ -278,7 +278,7 @@ int mkstemp(char *template)\n \tchar *filename = mktemp(template);\n \tif (filename == NULL)\n \t\treturn -1;\n-\treturn open(filename, O_RDWR | O_CREAT, 0600);\n+\treturn open(filename, O_RDWR | O_CREAT | O_BINARY, 0600);\n }\n \n int gettimeofday(struct timeval *tv, void *tz)\n-- \n1.6.4.msysgit.0\n"},{"id":"120915","messageId":"1250525103-5184-3-git-send-email-lznuaa@gmail.com","threadId":"20640","inReplyTo":"1250525103-5184-2-git-send-email-lznuaa@gmail.com","subject":"[PATCH 08/11] Place __stdcall to correct position.","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-17T16:04:59Z","receivedAt":"2009-08-17T16:04:59Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"MSVC require __stdcall is between return value and function name.\nALL Win32 API definition is as TYPE WINAPI function name\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/mingw.c |    4 ++--\n run-command.c  |    4 ++--\n 2 files changed, 4 insertions(+), 4 deletions(-)\n\ndiff --git a/compat/mingw.c b/compat/mingw.c\nindex d5fa0ed..0c9c793 100644\n--- a/compat/mingw.c\n+++ b/compat/mingw.c\n@@ -1017,7 +1017,7 @@ static sig_handler_t timer_fn = SIG_DFL;\n  * length to call the signal handler.\n  */\n \n-static __stdcall unsigned ticktack(void *dummy)\n+static unsigned __stdcall ticktack(void *dummy)\n {\n \twhile (WaitForSingleObject(timer_event, timer_interval) == WAIT_TIMEOUT) {\n \t\tif (timer_fn == SIG_DFL)\n@@ -1146,7 +1146,7 @@ void mingw_open_html(const char *unixpath)\n \n int link(const char *oldpath, const char *newpath)\n {\n-\ttypedef BOOL WINAPI (*T)(const char*, const char*, LPSECURITY_ATTRIBUTES);\n+\ttypedef  BOOL (WINAPI *T)(const char*, const char*, LPSECURITY_ATTRIBUTES);\n \tstatic T create_hard_link = NULL;\n \tif (!create_hard_link) {\n \t\tcreate_hard_link = (T) GetProcAddress(\ndiff --git a/run-command.c b/run-command.c\nindex df139da..423b506 100644\n--- a/run-command.c\n+++ b/run-command.c\n@@ -295,12 +295,12 @@ int run_command_v_opt_cd_env(const char **argv, int opt, const char *dir, const\n }\n \n #if defined(__MINGW32__) || defined(_MSC_VER)\n-static __stdcall unsigned run_thread(void *data)\n+static unsigned __stdcall run_thread(void *data)\n {\n \tstruct async *async = data;\n \treturn async->proc(async->fd_for_proc, async->data);\n }\n-#endif\n+#endif /* __MINGW32__ || _MSC_VER */\n \n int start_async(struct async *async)\n {\n-- \n1.6.4.msysgit.0\n"},{"id":"120917","messageId":"1250525103-5184-4-git-send-email-lznuaa@gmail.com","threadId":"20640","inReplyTo":"1250525103-5184-3-git-send-email-lznuaa@gmail.com","subject":"[PATCH 09/11] Add MSVC porting header files.","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-17T16:05:00Z","receivedAt":"2009-08-17T16:05:00Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"Add unix head file, dirent.h, unistd.h  and time.h\nAdd MSVC special porting head file msvc.h and msvc.c.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/msvc.c                   |   33 ++++++++++\n compat/msvc.h                   |   95 +++++++++++++++++++++++++++++\n compat/vcbuild/include/dirent.h |  127 +++++++++++++++++++++++++++++++++++++++\n compat/vcbuild/include/unistd.h |   92 ++++++++++++++++++++++++++++\n compat/vcbuild/sys/time.h       |   21 +++++++\n git-compat-util.h               |   12 ++++-\n 6 files changed, 379 insertions(+), 1 deletions(-)\n create mode 100644 compat/msvc.c\n create mode 100644 compat/msvc.h\n create mode 100644 compat/vcbuild/include/dirent.h\n create mode 100644 compat/vcbuild/include/unistd.h\n create mode 100644 compat/vcbuild/sys/time.h\n\ndiff --git a/compat/msvc.c b/compat/msvc.c\nnew file mode 100644\nindex 0000000..80afd4d\n--- /dev/null\n+++ b/compat/msvc.c\n@@ -0,0 +1,33 @@\n+#include \"../git-compat-util.h\"\n+#include \"win32.h\"\n+#include <conio.h>\n+#include \"../strbuf.h\"\n+\n+DIR *opendir(const char *name)\n+{\n+\tint len;\n+\tDIR *p;\n+\tp = (DIR*)malloc(sizeof(DIR));\n+\tmemset(p, 0, sizeof(DIR));\n+\tstrncpy(p->dd_name, name, PATH_MAX);\n+\tlen = strlen(p->dd_name);\n+\tp->dd_name[len] = '/';\n+\tp->dd_name[len+1] = '*';\n+\n+\tif (p == NULL)\n+\t\treturn NULL;\n+\n+\tp->dd_handle = _findfirst(p->dd_name, &p->dd_dta);\n+\n+\tif (p->dd_handle == -1) {\n+\t\tfree(p);\n+\t\treturn NULL;\n+\t}\n+\treturn p;\n+}\n+int closedir(DIR *dir)\n+{\n+\t_findclose(dir->dd_handle);\n+\tfree(dir);\n+\treturn 0;\n+}\ndiff --git a/compat/msvc.h b/compat/msvc.h\nnew file mode 100644\nindex 0000000..6071565\n--- /dev/null\n+++ b/compat/msvc.h\n@@ -0,0 +1,95 @@\n+#ifndef __MSVC__HEAD\n+#define __MSVC__HEAD\n+\n+#define WINVER 0x0500\n+#define _WIN32_WINNT 0x0500\n+#define _WIN32_WINDOWS 0x0410\n+#define _WIN32_IE 0x0700\n+#define NTDDI_VERSION NTDDI_WIN2KSP1\n+#include <winsock2.h>\n+\n+/*Configuration*/\n+\n+#define NO_PREAD\n+#define NO_OPENSSL\n+#define NO_LIBGEN_H\n+#define NO_SYMLINK_HEAD\n+#define NO_IPV6\n+#define NO_SETENV\n+#define NO_UNSETENV\n+#define NO_STRCASESTR\n+#define NO_STRLCPY\n+#define NO_MEMMEM\n+#define NO_C99_FORMAT\n+#define NO_STRTOUMAX\n+#define NO_MKDTEMP\n+#define NO_MKSTEMPS\n+\n+#define RUNTIME_PREFIX\n+#define NO_ST_BLOCKS_IN_STRUCT_STAT\n+#define NO_NSEC\n+#define USE_WIN32_MMAP\n+#define USE_NED_ALLOCATOR\n+\n+#define NO_REGEX\n+\n+#define NO_SYS_SELECT_H\n+#define NO_PTHEADS\n+#define HAVE_STRING_H 1\n+#define STDC_HEADERS\n+#define NO_ICONV\n+\n+#define inline __inline\n+#define __inline__ __inline\n+\n+#define SNPRINTF_RETURNS_BOGUS\n+\n+#define SHA1_HEADER \"mozilla-sha1\\\\sha1.h\"\n+\n+#define ETC_GITCONFIG \"%HOME%\"\n+\n+#define NO_PTHREADS\n+#define NO_CURL\n+\n+\n+#define NO_STRTOUMAX\n+#define REGEX_MALLOC\n+\n+\n+#define GIT_EXEC_PATH \"bin\"\n+#define GIT_VERSION \"1.6\"\n+#define BINDIR \"bin\"\n+#define PREFIX \".\"\n+#define GIT_MAN_PATH \"man\"\n+#define GIT_INFO_PATH \"info\"\n+#define GIT_HTML_PATH \"html\"\n+#define DEFAULT_GIT_TEMPLATE_DIR \"templates\"\n+\n+#define NO_STRLCPY\n+#define NO_UNSETENV\n+#define NO_SETENV\n+\n+#define strdup _strdup\n+#define read _read\n+#define close _close\n+#define dup _dup\n+#define dup2 _dup2\n+#define strncasecmp _strnicmp\n+#define strtoull _strtoui64\n+\n+#define __attribute__(x)\n+\n+static __inline int strcasecmp (const char *s1, const char *s2)\n+{\n+\tint size1=strlen(s1);\n+\tint sisz2=strlen(s2);\n+\n+\treturn _strnicmp(s1,s2,sisz2>size1?sisz2:size1);\n+}\n+\n+#include \"compat/mingw.h\"\n+#undef ERROR\n+#undef stat\n+#define stat(x,y) mingw_lstat\n+#define stat      _stat64\n+#endif\n\\ No newline at end of file\ndiff --git a/compat/vcbuild/include/dirent.h b/compat/vcbuild/include/dirent.h\nnew file mode 100644\nindex 0000000..a6b6f4c\n--- /dev/null\n+++ b/compat/vcbuild/include/dirent.h\n@@ -0,0 +1,127 @@\n+/*\n+ * DIRENT.H (formerly DIRLIB.H)\n+ * This file has no copyright assigned and is placed in the Public Domain.\n+ * This file is a part of the mingw-runtime package.\n+ * No warranty is given; refer to the file DISCLAIMER within the package.\n+ *\n+ */\n+#ifndef _DIRENT_H_\n+#define _DIRENT_H_\n+\n+/* All the headers include this file. */\n+//#include <_mingw.h>\n+\n+#include <io.h>\n+\n+#define PATH_MAX 512\n+\n+#define __MINGW_NOTHROW\n+\n+#ifndef RC_INVOKED\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+struct dirent\n+{\n+\tlong\t\td_ino;\t\t/* Always zero. */\n+\tunsigned short\td_reclen;\t/* Always zero. */\n+\tunsigned short\td_namlen;\t/* Length of name in d_name. */\n+\tchar\t\td_name[FILENAME_MAX]; /* File name. */\n+};\n+\n+/*\n+ * This is an internal data structure. Good programmers will not use it\n+ * except as an argument to one of the functions below.\n+ * dd_stat field is now int (was short in older versions).\n+ */\n+typedef struct\n+{\n+\t/* disk transfer area for this dir */\n+\tstruct _finddata_t\tdd_dta;\n+\n+\t/* dirent struct to return from dir (NOTE: this makes this thread\n+\t * safe as long as only one thread uses a particular DIR struct at\n+\t * a time) */\n+\tstruct dirent\t\tdd_dir;\n+\n+\t/* _findnext handle */\n+\tlong\t\t\tdd_handle;\n+\n+\t/*\n+         * Status of search:\n+\t *   0 = not started yet (next entry to read is first entry)\n+\t *  -1 = off the end\n+\t *   positive = 0 based index of next entry\n+\t */\n+\tint\t\t\tdd_stat;\n+\n+\t/* given path for dir with search pattern (struct is extended) */\n+\tchar\t\t\tdd_name[PATH_MAX+3];\n+} DIR;\n+\n+DIR* __cdecl __MINGW_NOTHROW opendir (const char*);\n+struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);\n+int __cdecl __MINGW_NOTHROW closedir (DIR*);\n+void __cdecl __MINGW_NOTHROW rewinddir (DIR*);\n+long __cdecl __MINGW_NOTHROW telldir (DIR*);\n+void __cdecl __MINGW_NOTHROW seekdir (DIR*, long);\n+\n+\n+/* wide char versions */\n+\n+struct _wdirent\n+{\n+\tlong\t\td_ino;\t\t/* Always zero. */\n+\tunsigned short\td_reclen;\t/* Always zero. */\n+\tunsigned short\td_namlen;\t/* Length of name in d_name. */\n+\twchar_t\t\td_name[FILENAME_MAX]; /* File name. */\n+};\n+\n+/*\n+ * This is an internal data structure. Good programmers will not use it\n+ * except as an argument to one of the functions below.\n+ */\n+typedef struct\n+{\n+\t/* disk transfer area for this dir */\n+\t//struct _wfinddata_t\tdd_dta;\n+\n+\t/* dirent struct to return from dir (NOTE: this makes this thread\n+\t * safe as long as only one thread uses a particular DIR struct at\n+\t * a time) */\n+\tstruct _wdirent\t\tdd_dir;\n+\n+\t/* _findnext handle */\n+\tlong\t\t\tdd_handle;\n+\n+\t/*\n+         * Status of search:\n+\t *   0 = not started yet (next entry to read is first entry)\n+\t *  -1 = off the end\n+\t *   positive = 0 based index of next entry\n+\t */\n+\tint\t\t\tdd_stat;\n+\n+\t/* given path for dir with search pattern (struct is extended) */\n+\twchar_t\t\t\tdd_name[1];\n+} _WDIR;\n+\n+\n+\n+_WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);\n+struct _wdirent*  __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);\n+int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);\n+void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);\n+long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);\n+void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);\n+\n+\n+#ifdef\t__cplusplus\n+}\n+#endif\n+\n+#endif\t/* Not RC_INVOKED */\n+\n+#endif\t/* Not _DIRENT_H_ */\ndiff --git a/compat/vcbuild/include/unistd.h b/compat/vcbuild/include/unistd.h\nnew file mode 100644\nindex 0000000..a0f59e6\n--- /dev/null\n+++ b/compat/vcbuild/include/unistd.h\n@@ -0,0 +1,92 @@\n+#ifndef _UNISTD_\n+#define _UNISTD_\n+\n+/* Win32 define for porting git*/\n+\n+#ifndef _MODE_T_\n+#define\t_MODE_T_\n+typedef unsigned short _mode_t;\n+\n+#ifndef\t_NO_OLDNAMES\n+typedef _mode_t\tmode_t;\n+#endif\n+#endif\t/* Not _MODE_T_ */\n+\n+#ifndef _SSIZE_T_\n+#define _SSIZE_T_\n+typedef long _ssize_t;\n+\n+#ifndef\t_OFF_T_\n+#define\t_OFF_T_\n+typedef long _off_t;\n+\n+#ifndef\t_NO_OLDNAMES\n+typedef _off_t\toff_t;\n+#endif\n+#endif\t/* Not _OFF_T_ */\n+\n+\n+#ifndef\t_NO_OLDNAMES\n+typedef _ssize_t ssize_t;\n+#endif\n+#endif /* Not _SSIZE_T_ */\n+\n+typedef signed char int8_t;\n+typedef unsigned char   uint8_t;\n+typedef short  int16_t;\n+typedef unsigned short  uint16_t;\n+typedef int  int32_t;\n+typedef unsigned   uint32_t;\n+typedef long long  int64_t;\n+typedef unsigned long long   uint64_t;\n+\n+typedef long long  intmax_t;\n+typedef unsigned long long uintmax_t;\n+\n+typedef int64_t off64_t;\n+\n+#define STDOUT_FILENO 1\n+#define STDERR_FILENO 2\n+\n+/* Some defines for _access nAccessMode (MS doesn't define them, but\n+ * it doesn't seem to hurt to add them). */\n+#define\tF_OK\t0\t/* Check for file existence */\n+/* Well maybe it does hurt.  On newer versions of MSVCRT, an access mode\n+   of 1 causes invalid parameter error. */ \n+#define\tX_OK\t0\t/* MS access() doesn't check for execute permission. */\n+#define\tW_OK\t2\t/* Check for write permission */\n+#define\tR_OK\t4\t/* Check for read permission */\n+\n+#define\t_S_IFIFO\t0x1000\t/* FIFO */\n+#define\t_S_IFCHR\t0x2000\t/* Character */\n+#define\t_S_IFBLK\t0x3000\t/* Block: Is this ever set under w32? */\n+#define\t_S_IFDIR\t0x4000\t/* Directory */\n+#define\t_S_IFREG\t0x8000\t/* Regular */\n+\n+#define\t_S_IFMT\t\t0xF000\t/* File type mask */\n+\n+#define\t_S_IXUSR\t_S_IEXEC\n+#define\t_S_IWUSR\t_S_IWRITE\n+#define\t_S_IRUSR\t_S_IREAD\n+#define\t_S_ISDIR(m)\t(((m) & _S_IFMT) == _S_IFDIR)\n+\n+#define\tS_IFIFO\t\t_S_IFIFO\n+#define\tS_IFCHR\t\t_S_IFCHR\n+#define\tS_IFBLK\t\t_S_IFBLK\n+#define\tS_IFDIR\t\t_S_IFDIR\n+#define\tS_IFREG\t\t_S_IFREG\n+#define\tS_IFMT\t\t_S_IFMT\n+#define\tS_IEXEC\t\t_S_IEXEC\n+#define\tS_IWRITE\t_S_IWRITE\n+#define\tS_IREAD\t\t_S_IREAD\n+#define\tS_IRWXU\t\t_S_IRWXU\n+#define\tS_IXUSR\t\t_S_IXUSR\n+#define\tS_IWUSR\t\t_S_IWUSR\n+#define\tS_IRUSR\t\t_S_IRUSR\n+\n+\n+#define\tS_ISDIR(m)\t(((m) & S_IFMT) == S_IFDIR)\n+#define\tS_ISREG(m)\t(((m) & S_IFMT) == S_IFREG)\n+#define\tS_ISFIFO(m)\t(((m) & S_IFMT) == S_IFIFO)\n+\n+#endif\n\\ No newline at end of file\ndiff --git a/compat/vcbuild/sys/time.h b/compat/vcbuild/sys/time.h\nnew file mode 100644\nindex 0000000..6ed82c0\n--- /dev/null\n+++ b/compat/vcbuild/sys/time.h\n@@ -0,0 +1,21 @@\n+#ifndef\t_UTIME_H_\n+#define\t_UTIME_H_\n+/*\n+ * Structure used by _utime function.\n+ */\n+struct _utimbuf\n+{\n+\ttime_t\tactime;\t\t/* Access time */\n+\ttime_t\tmodtime;\t/* Modification time */\n+};\n+\n+#ifndef\t_NO_OLDNAMES\n+/* NOTE: Must be the same as _utimbuf above. */\n+struct utimbuf\n+{\n+\ttime_t\tactime;\n+\ttime_t\tmodtime;\n+};\n+#endif\t/* Not _NO_OLDNAMES */\n+\n+#endif\ndiff --git a/git-compat-util.h b/git-compat-util.h\nindex 9f941e4..cb89294 100644\n--- a/git-compat-util.h\n+++ b/git-compat-util.h\n@@ -77,8 +77,10 @@\n #include <string.h>\n #include <errno.h>\n #include <limits.h>\n+#ifndef _MSC_VER\n #include <sys/param.h>\n #include <sys/types.h>\n+#endif\n #include <dirent.h>\n #include <sys/time.h>\n #include <time.h>\n@@ -86,7 +88,12 @@\n #include <fnmatch.h>\n #include <assert.h>\n #include <regex.h>\n+\n+#ifndef _MSC_VER\n #include <utime.h>\n+#endif\n+\n+#ifndef _MSC_VER\n #ifndef __MINGW32__\n #include <sys/wait.h>\n #include <sys/poll.h>\n@@ -114,7 +121,10 @@\n #else \t/* __MINGW32__ */\n /* pull in Windows compatibility stuff */\n #include \"compat/mingw.h\"\n-#endif\t/* __MINGW32__ */\n+#endif  /* __MINGW32__ */\n+#else   /* _MSC_VER */\n+#include \"compat/msvc.h\"\n+#endif\t/* _MSC_VER */\n \n #ifndef NO_LIBGEN_H\n #include <libgen.h>\n-- \n1.6.4.msysgit.0\n"},{"id":"120918","messageId":"1250525103-5184-5-git-send-email-lznuaa@gmail.com","threadId":"20640","inReplyTo":"1250525103-5184-4-git-send-email-lznuaa@gmail.com","subject":"[PATCH 10/11] Add MSVC Project file","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-17T16:05:01Z","receivedAt":"2009-08-17T16:05:01Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"Add libgit.vcproj to build common library.\nAdd git.vcproj to build git program.\n\nSigned-off-by: Frank Li <lznuaa@gmail.com>\n---\n compat/vcbuild/git/git.vcproj       |  197 +++++\n compat/vcbuild/libgit/libgit.vcproj | 1347 +++++++++++++++++++++++++++++++++++\n 2 files changed, 1544 insertions(+), 0 deletions(-)\n create mode 100644 compat/vcbuild/git/git.vcproj\n create mode 100644 compat/vcbuild/libgit/libgit.vcproj\n\ndiff --git a/compat/vcbuild/git/git.vcproj b/compat/vcbuild/git/git.vcproj\nnew file mode 100644\nindex 0000000..6f85de3\n--- /dev/null\n+++ b/compat/vcbuild/git/git.vcproj\n@@ -0,0 +1,197 @@\n+<?xml version=\"1.0\" encoding=\"gb2312\"?>\n+<VisualStudioProject\n+\tProjectType=\"Visual C++\"\n+\tVersion=\"9.00\"\n+\tName=\"git\"\n+\tProjectGUID=\"{E3E30E51-C5AD-407B-AB43-985E4111474A}\"\n+\tRootNamespace=\"git\"\n+\tKeyword=\"Win32Proj\"\n+\tTargetFrameworkVersion=\"196613\"\n+\t>\n+\t<Platforms>\n+\t\t<Platform\n+\t\t\tName=\"Win32\"\n+\t\t/>\n+\t</Platforms>\n+\t<ToolFiles>\n+\t</ToolFiles>\n+\t<Configurations>\n+\t\t<Configuration\n+\t\t\tName=\"Debug|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\\bin\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"1\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"0\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;_DEBUG;_CONSOLE\"\n+\t\t\t\tMinimalRebuild=\"true\"\n+\t\t\t\tBasicRuntimeChecks=\"3\"\n+\t\t\t\tRuntimeLibrary=\"3\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"4\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLinkerTool\"\n+\t\t\t\tAdditionalDependencies=\"wininet.lib ws2_32.lib \"\n+\t\t\t\tLinkIncremental=\"2\"\n+\t\t\t\tGenerateDebugInformation=\"true\"\n+\t\t\t\tSubSystem=\"1\"\n+\t\t\t\tTargetMachine=\"1\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManifestTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCAppVerifierTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t\t<Configuration\n+\t\t\tName=\"Release|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\\bin\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"1\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\tWholeProgramOptimization=\"1\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"2\"\n+\t\t\t\tEnableIntrinsicFunctions=\"true\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;NDEBUG;_CONSOLE\"\n+\t\t\t\tRuntimeLibrary=\"2\"\n+\t\t\t\tEnableFunctionLevelLinking=\"true\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"3\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLinkerTool\"\n+\t\t\t\tAdditionalDependencies=\"wininet.lib ws2_32.lib \"\n+\t\t\t\tLinkIncremental=\"1\"\n+\t\t\t\tGenerateDebugInformation=\"true\"\n+\t\t\t\tSubSystem=\"1\"\n+\t\t\t\tOptimizeReferences=\"2\"\n+\t\t\t\tEnableCOMDATFolding=\"2\"\n+\t\t\t\tTargetMachine=\"1\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManifestTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCAppVerifierTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t</Configurations>\n+\t<References>\n+\t</References>\n+\t<Files>\n+\t\t<Filter\n+\t\t\tName=\"Source Files\"\n+\t\t\tFilter=\"cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx\"\n+\t\t\tUniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\git.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Header Files\"\n+\t\t\tFilter=\"h;hpp;hxx;hm;inl;inc;xsd\"\n+\t\t\tUniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\"\n+\t\t\t>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Resource Files\"\n+\t\t\tFilter=\"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav\"\n+\t\t\tUniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\"\n+\t\t\t>\n+\t\t</Filter>\n+\t</Files>\n+\t<Globals>\n+\t</Globals>\n+</VisualStudioProject>\ndiff --git a/compat/vcbuild/libgit/libgit.vcproj b/compat/vcbuild/libgit/libgit.vcproj\nnew file mode 100644\nindex 0000000..bbc3aed\n--- /dev/null\n+++ b/compat/vcbuild/libgit/libgit.vcproj\n@@ -0,0 +1,1347 @@\n+<?xml version=\"1.0\" encoding=\"gb2312\"?>\n+<VisualStudioProject\n+\tProjectType=\"Visual C++\"\n+\tVersion=\"9.00\"\n+\tName=\"libgit\"\n+\tProjectGUID=\"{F6DEC8C3-B803-4A86-8848-430F08B499E3}\"\n+\tRootNamespace=\"libgit\"\n+\tKeyword=\"Win32Proj\"\n+\tTargetFrameworkVersion=\"196613\"\n+\t>\n+\t<Platforms>\n+\t\t<Platform\n+\t\t\tName=\"Win32\"\n+\t\t/>\n+\t</Platforms>\n+\t<ToolFiles>\n+\t</ToolFiles>\n+\t<Configurations>\n+\t\t<Configuration\n+\t\t\tName=\"Debug|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"4\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"0\"\n+\t\t\t\tInlineFunctionExpansion=\"1\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;_DEBUG;_LIB\"\n+\t\t\t\tMinimalRebuild=\"true\"\n+\t\t\t\tBasicRuntimeChecks=\"3\"\n+\t\t\t\tRuntimeLibrary=\"3\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"3\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLibrarianTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t\t<Configuration\n+\t\t\tName=\"Release|Win32\"\n+\t\t\tOutputDirectory=\"$(SolutionDir)$(ConfigurationName)\"\n+\t\t\tIntermediateDirectory=\"$(ConfigurationName)\"\n+\t\t\tConfigurationType=\"4\"\n+\t\t\tCharacterSet=\"0\"\n+\t\t\tWholeProgramOptimization=\"1\"\n+\t\t\t>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreBuildEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCustomBuildTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXMLDataGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCWebServiceProxyGeneratorTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCCLCompilerTool\"\n+\t\t\t\tOptimization=\"2\"\n+\t\t\t\tInlineFunctionExpansion=\"1\"\n+\t\t\t\tEnableIntrinsicFunctions=\"true\"\n+\t\t\t\tAdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n+\t\t\t\tPreprocessorDefinitions=\"WIN32;NDEBUG;_LIB\"\n+\t\t\t\tRuntimeLibrary=\"2\"\n+\t\t\t\tEnableFunctionLevelLinking=\"true\"\n+\t\t\t\tUsePrecompiledHeader=\"0\"\n+\t\t\t\tWarningLevel=\"3\"\n+\t\t\t\tDebugInformationFormat=\"3\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCManagedResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCResourceCompilerTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPreLinkEventTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCLibrarianTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCALinkTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCXDCMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCBscMakeTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCFxCopTool\"\n+\t\t\t/>\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCPostBuildEventTool\"\n+\t\t\t/>\n+\t\t</Configuration>\n+\t</Configurations>\n+\t<References>\n+\t</References>\n+\t<Files>\n+\t\t<Filter\n+\t\t\tName=\"Source Files\"\n+\t\t\tFilter=\"cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx\"\n+\t\t\tUniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\msvc.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\mozilla-sha1\\sha1.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Header Files\"\n+\t\t\tFilter=\"h;hpp;hxx;hm;inl;inc;xsd\"\n+\t\t\tUniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\attr.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\blob.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\branch.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\bundle.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\cache-tree.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\cache.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\color.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\commit.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\csum-file.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\decorate.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\delta.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\dir.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\exec_cmd.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\fetch-pack.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\fsck.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\git-compat-util.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\graph.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\grep.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\hash.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\help.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\http.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\levenshtein.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\list-objects.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ll-merge.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\log-tree.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\mailmap.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-recursive.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\notes.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\object.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-refs.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-revindex.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\parse-options.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\patch-ids.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pkt-line.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\progress.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\quote.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reachable.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reflog-walk.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\refs.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\remote.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\rerere.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\revision.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\run-command.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\send-pack.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1-lookup.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\shortlog.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sideband.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sigchain.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\strbuf.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\string-list.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tag.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tar.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\thread-utils.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\transport.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree-walk.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\unpack-trees.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\userdiff.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\utf8.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\walker.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\wt-status.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff-interface.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"Resource Files\"\n+\t\t\tFilter=\"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav\"\n+\t\t\tUniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\"\n+\t\t\t>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"compat\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\basename.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\cygwin.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\fnmatch\\fnmatch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\fnmatch\\fnmatch.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\fopen.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\memmem.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mingw.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mingw.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mkdtemp.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\mkstemps.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\pread.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\qsort.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\regex\\regex.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\regex\\regex.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\setenv.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\snprintf.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\strcasestr.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\strlcpy.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\strtoumax.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\unsetenv.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\win32.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\win32mmap.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\compat\\winansi.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"git\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\abspath.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\alias.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\alloc.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive-tar.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive-zip.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\archive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\attr.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\base85.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\bisect.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\blob.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\branch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-add.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-annotate.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-apply.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-archive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-bisect--helper.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-blame.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-branch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-bundle.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-cat-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-check-attr.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-check-ref-format.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-checkout-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-checkout.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-clean.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-clone.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-commit-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-commit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-config.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-count-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-describe.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff-files.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fast-export.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fetch--tool.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fetch-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fetch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fmt-merge-msg.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-for-each-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-fsck.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-gc.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-grep.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-help.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-init-db.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-log.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-ls-files.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-ls-remote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-ls-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mailinfo.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mailsplit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-base.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-ours.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge-recursive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-merge.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mktree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-mv.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-name-rev.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-pack-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-pack-refs.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-prune-packed.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-prune.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-push.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-read-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-receive-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-reflog.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-remote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rerere.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-reset.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rev-list.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rev-parse.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-revert.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-rm.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-send-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-shortlog.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-show-branch.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-show-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-stripspace.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-symbolic-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-tag.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-tar-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-unpack-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-update-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-update-ref.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-upload-archive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-verify-pack.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-verify-tag.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\builtin-write-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\bundle.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\cache-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\color.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\combine-diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\commit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\config.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\connect.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\convert.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\copy.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\csum-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ctype.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\date.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\decorate.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff-delta.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff-lib.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff-no-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-break.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-delta.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-order.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-pickaxe.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\diffcore-rename.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\dir.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\editor.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\entry.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\environment.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\exec_cmd.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\fsck.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\graph.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\grep.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\hash.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\help.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ident.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\levenshtein.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\list-objects.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ll-merge.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\lockfile.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\log-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\mailmap.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\match-trees.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-recursive.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\merge-tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\name-hash.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\object.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-check.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-refs.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-revindex.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pack-write.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pager.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\parse-options.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\patch-delta.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\patch-ids.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\path.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pkt-line.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\preload-index.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\pretty.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\progress.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\quote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reachable.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\read-cache.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\reflog-walk.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\refs.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\remote.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\rerere.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\revision.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\run-command.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\server-info.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\setup.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1-lookup.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1_file.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sha1_name.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\shallow.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sideband.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\sigchain.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\strbuf.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\string-list.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\symlinks.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tag.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\thread-utils.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\trace.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\transport.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree-diff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree-walk.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\tree.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\unpack-trees.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\usage.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\userdiff.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\utf8.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\walker.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\wrapper.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\write_or_die.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\ws.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\wt-status.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff-interface.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t\t<Filter\n+\t\t\tName=\"xdiff\"\n+\t\t\t>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xdiff.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xdiffi.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xdiffi.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xemit.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xemit.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xinclude.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xmacros.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xmerge.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xpatience.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xprepare.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xprepare.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xtypes.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xutils.c\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t\t<File\n+\t\t\t\tRelativePath=\"..\\..\\..\\xdiff\\xutils.h\"\n+\t\t\t\t>\n+\t\t\t</File>\n+\t\t</Filter>\n+\t</Files>\n+\t<Globals>\n+\t</Globals>\n+</VisualStudioProject>\n-- \n1.6.4.msysgit.0\n"},{"id":"120934","messageId":"alpine.DEB.1.00.0908171850370.4991@intel-tinevez-2-302","threadId":"20640","inReplyTo":"1250525103-5184-1-git-send-email-lznuaa@gmail.com","subject":"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","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T16:51:44Z","receivedAt":"2009-08-17T16:51:44Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Frank Li wrote:\n\n> Signed-off-by: Frank Li <lznuaa@gmail.com>\n\nHow about this instead?\n\n\tAdd missing git-compat-util.h to regex.c and fnmatch.c\n\n\tThis will be needed to compile with Microsoft Visual C++.\n\n> diff --git a/compat/fnmatch/fnmatch.c b/compat/fnmatch/fnmatch.c\n> index 14feac7..5cbd49c 100644\n> --- a/compat/fnmatch/fnmatch.c\n> +++ b/compat/fnmatch/fnmatch.c\n> @@ -16,6 +16,10 @@\n>     write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n>     Boston, MA 02111-1307, USA.  */\n>  \n> +#ifdef _MSC_VER\n> +#include \"git-compat-util.h\"\n> +#endif\n> +\n\nWhy not leave those #ifdef guards?  Either they don't hurt, or they will \nhurt Microsoft Visual C++, too.\n\nCiao,\nDscho\n"},{"id":"120937","messageId":"alpine.DEB.1.00.0908171856290.4991@intel-tinevez-2-302","threadId":"20640","inReplyTo":"1250525103-5184-2-git-send-email-lznuaa@gmail.com","subject":"Re: [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T16:58:33Z","receivedAt":"2009-08-17T16:58:33Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Frank Li wrote:\n\n> Windows will convert CR\\LF and union code at text mode.\n> Git doesn't like this. Add O_BINARY flag to open function\n> \n> Signed-off-by: Frank Li <lznuaa@gmail.com>\n\nHow about this instead?\n\n\tmingw.c: Use the O_BINARY flag to open files\n\n\tOn Windows, non-text files must be opened using the O_BINARY flag. \n\tMinGW does this for us automatically, but Microsoft Visual C++\n\tdoes not.\n\n\tAlso, Johannes said that this would be a nice cleanup.\n\nBTW what about fopen()?\n\nPatch is obviously good.\n\nCiao,\nDscho\n"},{"id":"120938","messageId":"alpine.DEB.1.00.0908171859060.4991@intel-tinevez-2-302","threadId":"20640","inReplyTo":"1250525103-5184-3-git-send-email-lznuaa@gmail.com","subject":"Re: [PATCH 08/11] Place __stdcall to correct position.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T17:01:37Z","receivedAt":"2009-08-17T17:01:37Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Frank Li wrote:\n\n> MSVC require __stdcall is between return value and function name.\n> ALL Win32 API definition is as TYPE WINAPI function name\n> \n> Signed-off-by: Frank Li <lznuaa@gmail.com>\n\nHow about \"... to the correct ...\" and \"MSVC requires _stdcall to be \nbetween return value...\" and \"All Win32 API functions are declared with \nthe WINAPI attribute.\"?\n\n> diff --git a/compat/mingw.c b/compat/mingw.c\n> index d5fa0ed..0c9c793 100644\n> --- a/compat/mingw.c\n> +++ b/compat/mingw.c\n> @@ -1146,7 +1146,7 @@ void mingw_open_html(const char *unixpath)\n>  \n>  int link(const char *oldpath, const char *newpath)\n>  {\n> -\ttypedef BOOL WINAPI (*T)(const char*, const char*, LPSECURITY_ATTRIBUTES);\n> +\ttypedef  BOOL (WINAPI *T)(const char*, const char*, LPSECURITY_ATTRIBUTES);\n\nAn extra space slipped in, there.\n\n> diff --git a/run-command.c b/run-command.c\n> index df139da..423b506 100644\n> --- a/run-command.c\n> +++ b/run-command.c\n> @@ -295,12 +295,12 @@ int run_command_v_opt_cd_env(const char **argv, int opt, const char *dir, const\n>  }\n>  \n>  #if defined(__MINGW32__) || defined(_MSC_VER)\n> -static __stdcall unsigned run_thread(void *data)\n> +static unsigned __stdcall run_thread(void *data)\n>  {\n>  \tstruct async *async = data;\n>  \treturn async->proc(async->fd_for_proc, async->data);\n>  }\n> -#endif\n> +#endif /* __MINGW32__ || _MSC_VER */\n\nI do not think this is necessary.  There are only 5 lines wrapped into \nthose #ifdef guards, the developer should be able to see that far.\n\nCiao,\nDscho\n"},{"id":"120942","messageId":"alpine.DEB.1.00.0908171902300.4991@intel-tinevez-2-302","threadId":"20640","inReplyTo":"1250525103-5184-4-git-send-email-lznuaa@gmail.com","subject":"Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T17:09:57Z","receivedAt":"2009-08-17T17:09:57Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Frank Li wrote:\n\n> Add unix head file, dirent.h, unistd.h  and time.h\n\nThese are copied from somewhere.  From where?  What is the license?\n\n> Add MSVC special porting head file msvc.h and msvc.c.\n\nThis is added by you.  Logically, that should be a separate patch.\n\n> diff --git a/compat/msvc.h b/compat/msvc.h\n> new file mode 100644\n> index 0000000..6071565\n> --- /dev/null\n> +++ b/compat/msvc.h\n> @@ -0,0 +1,95 @@\n> +#ifndef __MSVC__HEAD\n> +#define __MSVC__HEAD\n> +\n> +#define WINVER 0x0500\n> +#define _WIN32_WINNT 0x0500\n> +#define _WIN32_WINDOWS 0x0410\n> +#define _WIN32_IE 0x0700\n> +#define NTDDI_VERSION NTDDI_WIN2KSP1\n> +#include <winsock2.h>\n> +\n> +/*Configuration*/\n> +\n> +#define NO_PREAD\n> +#define NO_OPENSSL\n> +#define NO_LIBGEN_H\n> +#define NO_SYMLINK_HEAD\n> +#define NO_IPV6\n> +#define NO_SETENV\n> +#define NO_UNSETENV\n> +#define NO_STRCASESTR\n> +#define NO_STRLCPY\n> +#define NO_MEMMEM\n> +#define NO_C99_FORMAT\n> +#define NO_STRTOUMAX\n> +#define NO_MKDTEMP\n> +#define NO_MKSTEMPS\n> +\n> +#define RUNTIME_PREFIX\n> +#define NO_ST_BLOCKS_IN_STRUCT_STAT\n> +#define NO_NSEC\n> +#define USE_WIN32_MMAP\n> +#define USE_NED_ALLOCATOR\n> +\n> +#define NO_REGEX\n> +\n> +#define NO_SYS_SELECT_H\n> +#define NO_PTHEADS\n> +#define HAVE_STRING_H 1\n> +#define STDC_HEADERS\n> +#define NO_ICONV\n\nThese would normally be defined in the Makefile.  You might want to state \nthat in a comment.\n\nOr maybe move the definitions (along with vsnprintf) to the .vcproj file, \nwhich is the logical pendant of the Makefile?\n\n> +#define inline __inline\n> +#define __inline__ __inline\n\nThese definitions are unrelated to the surrounding ones; please move them \nelsewhere.\n\n> +\n> +#define SNPRINTF_RETURNS_BOGUS\n> +\n> +#define SHA1_HEADER \"mozilla-sha1\\\\sha1.h\"\n> +\n> +#define ETC_GITCONFIG \"%HOME%\"\n> +\n> +#define NO_PTHREADS\n> +#define NO_CURL\n> +\n> +\n> +#define NO_STRTOUMAX\n> +#define REGEX_MALLOC\n> +\n> +\n> +#define GIT_EXEC_PATH \"bin\"\n> +#define GIT_VERSION \"1.6\"\n> +#define BINDIR \"bin\"\n> +#define PREFIX \".\"\n> +#define GIT_MAN_PATH \"man\"\n> +#define GIT_INFO_PATH \"info\"\n> +#define GIT_HTML_PATH \"html\"\n> +#define DEFAULT_GIT_TEMPLATE_DIR \"templates\"\n> +\n> +#define NO_STRLCPY\n> +#define NO_UNSETENV\n> +#define NO_SETENV\n\nWould these NO_ definitions not _love_ to be close to their siblings?\n\nWhat is the reason for those empty lines?  Their placement and amount look \nrather arbitrary to me.\n\n> +#define strdup _strdup\n> +#define read _read\n> +#define close _close\n> +#define dup _dup\n> +#define dup2 _dup2\n> +#define strncasecmp _strnicmp\n> +#define strtoull _strtoui64\n\nvsnprintf could go right here.\n\n> +#define __attribute__(x)\n\nThe two inline definitions could go right here.\n\n> +static __inline int strcasecmp (const char *s1, const char *s2)\n> +{\n> +\tint size1=strlen(s1);\n> +\tint sisz2=strlen(s2);\n> +\n> +\treturn _strnicmp(s1,s2,sisz2>size1?sisz2:size1);\n> +}\n> +\n> +#include \"compat/mingw.h\"\n> +#undef ERROR\n> +#undef stat\n> +#define stat(x,y) mingw_lstat\n> +#define stat      _stat64\n> +#endif\n\nLooks much nicer now, thanks!\n\nCiao,\nDscho\n"},{"id":"120943","messageId":"alpine.DEB.1.00.0908171910390.4991@intel-tinevez-2-302","threadId":"20640","inReplyTo":"1250525103-5184-5-git-send-email-lznuaa@gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T17:11:51Z","receivedAt":"2009-08-17T17:11:51Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Frank Li wrote:\n\n> Add libgit.vcproj to build common library.\n> Add git.vcproj to build git program.\n> \n> Signed-off-by: Frank Li <lznuaa@gmail.com>\n\nThe commit subject should read \"... files\", as you add two files, not one.\n\nI hope that somebody else is going to review this patch...\n\nAnd don't you lack .vcproj files for the non-builtins?\n\nCiao,\nDscho\n"},{"id":"120950","messageId":"4A899495.8050902@gnu.org","threadId":"20640","inReplyTo":"1250525103-5184-5-git-send-email-lznuaa@gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Paolo Bonzini","fromEmail":"bonzini@gnu.org","sentAt":"2009-08-17T17:34:13Z","receivedAt":"2009-08-17T17:34:13Z","isPatch":true,"sender":{"key":"bonzini@gnu.org","avatar":"https://avatars.githubusercontent.com/u/42082?v=4"},"body":"I don't know if this is in any way feasible (does not seem to hard \nactually), but I think these files should be automatically generated.\n\nOtherwise, bitrot is going to happen in zero time.\n\nAlso, a cleaner XML without verbosities like\n\n+\t\t\t<Tool\n+\t\t\t\tName=\"VCMIDLTool\"\n+\t\t\t/>\n\nwould make the patch easier to review.\n\nI agree with dscho on the non-builtins.\n\nPaolo\n"},{"id":"120951","messageId":"40aa078e0908171040g5718a809o88b093fe5a4a0e28@mail.gmail.com","threadId":"20640","inReplyTo":"4A899495.8050902@gnu.org","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@googlemail.com","sentAt":"2009-08-17T17:40:44Z","receivedAt":"2009-08-17T17:40:44Z","isPatch":true,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"On Mon, Aug 17, 2009 at 7:34 PM, Paolo Bonzini<bonzini@gnu.org> wrote:\n> Also, a cleaner XML without verbosities like\n>\n> +                       <Tool\n> +                               Name=\"VCMIDLTool\"\n> +                       />\n>\n> would make the patch easier to review.\n\n...but will it make it more annoying to maintain in the long run? It\nmight be painful to work with a mixture of hand-written and\nmsdev-written XML. Of course, if we get some scripts in place to\ngenerate the vcproj-files this might not be a problem...\n\n\n-- \nErik \"kusma\" Faye-Lund\nkusmabite@gmail.com\n(+47) 986 59 656\n"},{"id":"120953","messageId":"4A899E9B.7080803@gnu.org","threadId":"20640","inReplyTo":"40aa078e0908171040g5718a809o88b093fe5a4a0e28@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Paolo Bonzini","fromEmail":"bonzini@gnu.org","sentAt":"2009-08-17T18:16:59Z","receivedAt":"2009-08-17T18:16:59Z","isPatch":true,"sender":{"key":"bonzini@gnu.org","avatar":"https://avatars.githubusercontent.com/u/42082?v=4"},"body":"On 08/17/2009 07:40 PM, Erik Faye-Lund wrote:\n> On Mon, Aug 17, 2009 at 7:34 PM, Paolo Bonzini<bonzini@gnu.org>  wrote:\n>> Also, a cleaner XML without verbosities like\n>>\n>> +<Tool\n>> +                               Name=\"VCMIDLTool\"\n>> +                       />\n>>\n>> would make the patch easier to review.\n>\n> ...but will it make it more annoying to maintain in the long run? It\n> might be painful to work with a mixture of hand-written and\n> msdev-written XML. Of course, if we get some scripts in place to\n> generate the vcproj-files this might not be a problem...\n\nYes, my remark applied only if the generation was scripted.  Otherwise, \nit would be an annoyance in addition to being subject to bitrot.\n\nPaolo\n"},{"id":"120961","messageId":"200908172121.43430.j6t@kdbg.org","threadId":"20640","inReplyTo":"1250525103-5184-4-git-send-email-lznuaa@gmail.com","subject":"Re: [msysGit] [PATCH 09/11] Add MSVC porting header files.","fromName":"Johannes Sixt","fromEmail":"j6t@kdbg.org","sentAt":"2009-08-17T19:21:43Z","receivedAt":"2009-08-17T19:21:43Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"On Montag, 17. August 2009, Frank Li wrote:\n> diff --git a/compat/msvc.h b/compat/msvc.h\n> new file mode 100644\n> index 0000000..6071565\n> --- /dev/null\n> +++ b/compat/msvc.h\n> @@ -0,0 +1,95 @@\n> +#ifndef __MSVC__HEAD\n...\n> +#endif\n> \\ No newline at end of file\n\nPlease fix these \"No newline at end of file\" an all cases (I quoted only one \ninstance where I saw this).\n\n-- Hannes\n"},{"id":"120962","messageId":"200908172123.26699.j6t@kdbg.org","threadId":"20640","inReplyTo":"1250525103-5184-1-git-send-email-lznuaa@gmail.com","subject":"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","fromName":"Johannes Sixt","fromEmail":"j6t@kdbg.org","sentAt":"2009-08-17T19:23:26Z","receivedAt":"2009-08-17T19:23:26Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"\nOn Montag, 17. August 2009, Frank Li wrote:\n> Signed-off-by: Frank Li <lznuaa@gmail.com>\n> ---\n>  compat/fnmatch/fnmatch.c |    4 ++++\n>  compat/regex/regex.c     |    4 ++++\n>  2 files changed, 8 insertions(+), 0 deletions(-)\n>\n> diff --git a/compat/fnmatch/fnmatch.c b/compat/fnmatch/fnmatch.c\n> index 14feac7..5cbd49c 100644\n> --- a/compat/fnmatch/fnmatch.c\n> +++ b/compat/fnmatch/fnmatch.c\n> @@ -16,6 +16,10 @@\n>     write to the Free Software Foundation, Inc., 59 Temple Place - Suite\n> 330, Boston, MA 02111-1307, USA.  */\n>\n> +#ifdef _MSC_VER\n> +#include \"git-compat-util.h\"\n> +#endif\n\nThere is a *lot* to explain: Why the *heck* is this needed?\n\n> diff --git a/compat/regex/regex.c b/compat/regex/regex.c\n> index 5728de1..2298a3a 100644\n> --- a/compat/regex/regex.c\n> +++ b/compat/regex/regex.c\n> @@ -20,6 +20,10 @@\n>     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */\n>\n>  /* AIX requires this to be the first thing in the file. */\n> +#ifdef _MSC_VER\n> +#include \"git-compat-util.h\"\n> +#endif\n\nSame here.\n\n-- Hannes\n"},{"id":"120964","messageId":"3af572ac0908171231n30864c85ud67454a03ca08fbe@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908171902300.4991@intel-tinevez-2-302","subject":"Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T19:31:42Z","receivedAt":"2009-08-17T19:31:42Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":">> diff --git a/compat/msvc.h b/compat/msvc.h\n>> new file mode 100644\n>> index 0000000..6071565\n>> --- /dev/null\n>> +++ b/compat/msvc.h\n>> @@ -0,0 +1,95 @@\n>> +#ifndef __MSVC__HEAD\n>> +#define __MSVC__HEAD\n>> +\n>> +#define WINVER 0x0500\n>> +#define _WIN32_WINNT 0x0500\n>> +#define _WIN32_WINDOWS 0x0410\n>> +#define _WIN32_IE 0x0700\n>> +#define NTDDI_VERSION NTDDI_WIN2KSP1\n>> +#include <winsock2.h>\n>> +\n>> +/*Configuration*/\n>> +\n>> +#define NO_PREAD\n>> +#define NO_OPENSSL\n>> +#define NO_LIBGEN_H\n>> +#define NO_SYMLINK_HEAD\n>> +#define NO_IPV6\n>> +#define NO_SETENV\n>> +#define NO_UNSETENV\n>> +#define NO_STRCASESTR\n>> +#define NO_STRLCPY\n>> +#define NO_MEMMEM\n>> +#define NO_C99_FORMAT\n>> +#define NO_STRTOUMAX\n>> +#define NO_MKDTEMP\n>> +#define NO_MKSTEMPS\n>> +\n>> +#define RUNTIME_PREFIX\n>> +#define NO_ST_BLOCKS_IN_STRUCT_STAT\n>> +#define NO_NSEC\n>> +#define USE_WIN32_MMAP\n>> +#define USE_NED_ALLOCATOR\n>> +\n>> +#define NO_REGEX\n>> +\n>> +#define NO_SYS_SELECT_H\n>> +#define NO_PTHEADS\n>> +#define HAVE_STRING_H 1\n>> +#define STDC_HEADERS\n>> +#define NO_ICONV\n>\n> These would normally be defined in the Makefile.  You might want to state\n> that in a comment.\n>\n> Or maybe move the definitions (along with vsnprintf) to the .vcproj file,\n> which is the logical pendant of the Makefile?\n\nWhat about having a CMake build system, which would work on every\nplatform (including cross-compiling), and would produce an appropriate\nconfig.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever\nis fit for each platform? If it's OK to include such a build system\nupstream, I'm volunteering to implement it.\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"120968","messageId":"alpine.DEB.1.00.0908172147240.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"3af572ac0908171231n30864c85ud67454a03ca08fbe@mail.gmail.com","subject":"CMake, was Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T19:48:46Z","receivedAt":"2009-08-17T19:48:46Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nHi,\n\nOn Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n\n> What about having a CMake build system, which would work on every\n> platform (including cross-compiling), and would produce an appropriate\n> config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever\n> is fit for each platform? If it's OK to include such a build system\n> upstream, I'm volunteering to implement it.\n\nAnd reap in another dependency?\n\nFirst Python, then CMake, what tomorrow?  Is it the month of adding \ndependencies?\n\nCiao,\nDscho\n"},{"id":"120971","messageId":"3af572ac0908171251y355a1e2bjf2d10192bc3eca2e@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908172147240.8306@pacific.mpi-cbg.de","subject":"Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T19:51:48Z","receivedAt":"2009-08-17T19:51:48Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Mon, Aug 17, 2009 at 9:48 PM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n\n> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n>\n>> What about having a CMake build system, which would work on every\n>> platform (including cross-compiling), and would produce an appropriate\n>> config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever\n>> is fit for each platform? If it's OK to include such a build system\n>> upstream, I'm volunteering to implement it.\n>\n> And reap in another dependency?\n>\n> First Python, then CMake, what tomorrow?  Is it the month of adding\n> dependencies?\n\nI'd say it's the month of getting problems solved.\n\nCMake would make git a lot easier to build on Windows, particularly\nwith Visual C++. Replace autotools with CMake and suddenly you need to\nmaintain a single build system for every platform and compiler git\nsupports/will support. That's a sound advantage to me.\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"120972","messageId":"alpine.DEB.1.00.0908172149480.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"40aa078e0908171040g5718a809o88b093fe5a4a0e28@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T19:53:54Z","receivedAt":"2009-08-17T19:53:54Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, Erik Faye-Lund wrote:\n\n> On Mon, Aug 17, 2009 at 7:34 PM, Paolo Bonzini<bonzini@gnu.org> wrote:\n> > Also, a cleaner XML without verbosities like\n> >\n> > +                       <Tool\n> > +                               Name=\"VCMIDLTool\"\n> > +                       />\n> >\n> > would make the patch easier to review.\n> \n> ...but will it make it more annoying to maintain in the long run? It \n> might be painful to work with a mixture of hand-written and \n> msdev-written XML. Of course, if we get some scripts in place to \n> generate the vcproj-files this might not be a problem...\n\nI think the killer argument against such a script (I actually though of \nthat myself, but decided against it for that very reason) is that the \nresult is to be used by Microsoft Visual Studio users, who do not \ntypically have a scripting language, and who would not want to use it \nanyway.\n\nOf course, we could have a script that verifies that the .vcproj files \ncontain reference the appropriate files (which it would know about by \nbeing called from the Makefile and being passed the file names), maybe \neven be able to edit the .vcproj file if it is missing some.  Should not \nbe too hard in Perl.\n\nCiao,\nDscho\n"},{"id":"120973","messageId":"3af572ac0908171254i539318d0p555a1c622e4d513f@mail.gmail.com","threadId":"20640","inReplyTo":"3af572ac0908171251y355a1e2bjf2d10192bc3eca2e@mail.gmail.com","subject":"Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T19:54:23Z","receivedAt":"2009-08-17T19:54:23Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Mon, Aug 17, 2009 at 9:51 PM, Pau Garcia i\nQuiles<pgquiles@elpauer.org> wrote:\n> On Mon, Aug 17, 2009 at 9:48 PM, Johannes\n> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>\n>> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n>>\n>>> What about having a CMake build system, which would work on every\n>>> platform (including cross-compiling), and would produce an appropriate\n>>> config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever\n>>> is fit for each platform? If it's OK to include such a build system\n>>> upstream, I'm volunteering to implement it.\n>>\n>> And reap in another dependency?\n>>\n>> First Python, then CMake, what tomorrow?  Is it the month of adding\n>> dependencies?\n>\n> I'd say it's the month of getting problems solved.\n>\n> CMake would make git a lot easier to build on Windows, particularly\n> with Visual C++. Replace autotools with CMake and suddenly you need to\n> maintain a single build system for every platform and compiler git\n> supports/will support. That's a sound advantage to me.\n\nI forgot to say CMake would be a build-dependency, not a runtime\ndependency, in case anyone is wondering.\n\nMore info about CMake:\nhttp://www.cmake.org\n\nTutorial:\nhttp://www.elpauer.org/stuff/learning_cmake.pdf\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"120974","messageId":"4A89B772.8060307@gnu.org","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908172149480.8306@pacific.mpi-cbg.de","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Paolo Bonzini","fromEmail":"bonzini@gnu.org","sentAt":"2009-08-17T20:02:58Z","receivedAt":"2009-08-17T20:02:58Z","isPatch":true,"sender":{"key":"bonzini@gnu.org","avatar":"https://avatars.githubusercontent.com/u/42082?v=4"},"body":"\n> I think the killer argument against such a script (I actually though of \n> that myself, but decided against it for that very reason) is that the \n> result is to be used by Microsoft Visual Studio users, who do not \n> typically have a scripting language, and who would not want to use it \n> anyway.\n\nBut the script could run whenever the Makefile is updated, even under\nUnix.  Of course, there are chances of bitrotting, but it cannot be\nworse than having failures every time a builtin is added or otherwise a\nfile is added.\n\nThe main problem I see with the script is that the output would\nnaturally be a .gitignore-d file, but it will not be for the reason you\nmention.\n\n> Of course, we could have a script that verifies that the .vcproj files \n> contain reference the appropriate files (which it would know about by \n> being called from the Makefile and being passed the file names), maybe \n> even be able to edit the .vcproj file if it is missing some.  Should not \n> be too hard in Perl.\n\nYes, it's not very far from what I had in mind.\n\nPaolo\n"},{"id":"120975","messageId":"200908172207.03446.j6t@kdbg.org","threadId":"20640","inReplyTo":"3af572ac0908171231n30864c85ud67454a03ca08fbe@mail.gmail.com","subject":"Re: [msysGit] Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Johannes Sixt","fromEmail":"j6t@kdbg.org","sentAt":"2009-08-17T20:07:03Z","receivedAt":"2009-08-17T20:07:03Z","isPatch":true,"sender":{"key":"j6t@kdbg.org","avatar":"https://avatars.githubusercontent.com/u/14810926?v=4"},"body":"On Montag, 17. August 2009, Pau Garcia i Quiles wrote:\n> What about having a CMake build system, ...\n\nNo, thank you. I have to use it for the little bit of KDE development that I \ndo, and it is a horror. With autotools I at least was able to reuse my shell \nprogramming skills, but cmake is an entirely new language, and an absolutely \nhorrible one (IMHO, of course).\n\n-- Hannes\n"},{"id":"120977","messageId":"3af572ac0908171317s3ef1506fpb3df11916f8a6ee9@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908172149480.8306@pacific.mpi-cbg.de","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T20:17:42Z","receivedAt":"2009-08-17T20:17:42Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Mon, Aug 17, 2009 at 9:53 PM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n\n> Of course, we could have a script that verifies that the .vcproj files\n> contain reference the appropriate files (which it would know about by\n> being called from the Makefile and being passed the file names), maybe\n> even be able to edit the .vcproj file if it is missing some.  Should not\n> be too hard in Perl.\n\nYou'll need to special-case for Visual C++ 2010, which is different\nand incompatible with previous versions. Hence my suggestion for\nCMake: appropriate project files would be generated for the tool the\nuser chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything\nelse.\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"120981","messageId":"3f4fd2640908171343s6e2796a8le0455e02fd8386d9@mail.gmail.com","threadId":"20640","inReplyTo":"3af572ac0908171317s3ef1506fpb3df11916f8a6ee9@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Reece Dunn","fromEmail":"msclrhd@googlemail.com","sentAt":"2009-08-17T20:43:24Z","receivedAt":"2009-08-17T20:43:24Z","isPatch":true,"sender":{"key":"msclrhd@googlemail.com","avatar":null},"body":"2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:\n> On Mon, Aug 17, 2009 at 9:53 PM, Johannes\n> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>\n>> Of course, we could have a script that verifies that the .vcproj files\n>> contain reference the appropriate files (which it would know about by\n>> being called from the Makefile and being passed the file names), maybe\n>> even be able to edit the .vcproj file if it is missing some.  Should not\n>> be too hard in Perl.\n>\n> You'll need to special-case for Visual C++ 2010, which is different\n> and incompatible with previous versions. Hence my suggestion for\n> CMake: appropriate project files would be generated for the tool the\n> user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything\n> else.\n\nThe problem is that you'd still need the Visual Studio projects (one\neach for 6, 7 (2002), 7.1 (2003), 8 (2005), 9 (2008) and 10 (2010) --\nyes, there'll need to be one for each version of Visual Studio) as\npeople who use Visual Studio tend to primarily use the IDE. CMake\n(which Windows users will need to download & install from somewhere)\nwill sit outside this -- unless you mean making the project files be\nthe \"Makefile project\" type and simply use it to invoke CMake and host\nthe source files to ease access to them from the IDE?\n\nAlso, not every posix system will have CMake installed (e.g. Linux\nFrom Scratch systems) and that's not including \"exotic\" systems like\nSolaris and the *BSDs.\n\n- Reece\n"},{"id":"120984","messageId":"3af572ac0908171354i6dd231etb576859ab8941214@mail.gmail.com","threadId":"20640","inReplyTo":"3f4fd2640908171343s6e2796a8le0455e02fd8386d9@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T20:54:26Z","receivedAt":"2009-08-17T20:54:26Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Mon, Aug 17, 2009 at 10:43 PM, Reece Dunn<msclrhd@googlemail.com> wrote:\n> 2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:\n>> On Mon, Aug 17, 2009 at 9:53 PM, Johannes\n>> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>>\n>>> Of course, we could have a script that verifies that the .vcproj files\n>>> contain reference the appropriate files (which it would know about by\n>>> being called from the Makefile and being passed the file names), maybe\n>>> even be able to edit the .vcproj file if it is missing some.  Should not\n>>> be too hard in Perl.\n>>\n>> You'll need to special-case for Visual C++ 2010, which is different\n>> and incompatible with previous versions. Hence my suggestion for\n>> CMake: appropriate project files would be generated for the tool the\n>> user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything\n>> else.\n>\n> The problem is that you'd still need the Visual Studio projects (one\n> each for 6, 7 (2002), 7.1 (2003), 8 (2005), 9 (2008) and 10 (2010) --\n> yes, there'll need to be one for each version of Visual Studio) as\n> people who use Visual Studio tend to primarily use the IDE. CMake\n> (which Windows users will need to download & install from somewhere)\n> will sit outside this -- unless you mean making the project files be\n> the \"Makefile project\" type and simply use it to invoke CMake and host\n> the source files to ease access to them from the IDE?\n\nIf a CMake build system is provided, you will not need a single Visual\nStudio project, or the autotools build system, or anything else. Just\nCMake and the CMake build system (which are a bunch of CMakeLists.txt\nplain text files).\n\nCMake takes the CMakeLists.txt file(s) as the input and generates\nmakefiles for gcc, vcproj files for Visual C++, makefiles for NMake,\nEclipse projects for Eclipse, XCode projects for XCode, etc.\n\n> Also, not every posix system will have CMake installed (e.g. Linux\n> From Scratch systems) and that's not including \"exotic\" systems like\n> Solaris and the *BSDs.\n\nCMake is available for many platforms (Linux x86-32 and x86-64, PPC,\nSolaris Sparc, HP-UX, Irix, AIX PPC) as a binary from the CMake site (\nhttp://cmake.org/cmake/resources/software.html ) and as source for the\nrest.\n\n*BSD? It is available in the ports section (and maybe as a binary,\ntoo) in FreeBSD(\nhttp://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/cmake/ ), NetBSD and\nOpenBSD.\n\nLinux from scratch? If people are brave enough to build and use LFS,\nthey are brave enough to build CMake (CMake is autocontained and\nbootstraps itself, it only depends on a C++ compiler to build itself).\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"120983","messageId":"alpine.DEB.1.00.0908172252370.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"4A89B772.8060307@gnu.org","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T20:54:59Z","receivedAt":"2009-08-17T20:54:59Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nHi,\n\nOn Mon, 17 Aug 2009, Paolo Bonzini wrote:\n\n> > I think the killer argument against such a script (I actually though \n> > of that myself, but decided against it for that very reason) is that \n> > the result is to be used by Microsoft Visual Studio users, who do not \n> > typically have a scripting language, and who would not want to use it \n> > anyway.\n> \n> But the script could run whenever the Makefile is updated, even under \n> Unix.\n\nBut that would have to be kept in mind by the maintainer, and he could not \ntest it.\n\nBesides, IIUC you were proposing a generator, while I suggested a \nrewriter.  My idea would require much less work, as the changes to the \noriginal, known good, .vcproj are minimal.\n\nSo let's have a script (if anybody feels compelled enough) that we can run \nfrom time to time and when it updates at least one of the .vcproj file, we \nthrow the result at Frank Li for testing.\n\nCiao,\nDscho\n"},{"id":"120985","messageId":"alpine.DEB.1.00.0908172255140.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"3af572ac0908171317s3ef1506fpb3df11916f8a6ee9@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T20:56:20Z","receivedAt":"2009-08-17T20:56:20Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n\n> On Mon, Aug 17, 2009 at 9:53 PM, Johannes\n> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n> \n> > Of course, we could have a script that verifies that the .vcproj files \n> > contain reference the appropriate files (which it would know about by \n> > being called from the Makefile and being passed the file names), maybe \n> > even be able to edit the .vcproj file if it is missing some.  Should \n> > not be too hard in Perl.\n> \n> You'll need to special-case for Visual C++ 2010, which is different\n> and incompatible with previous versions.\n\nAh, my beloved Microsoft time tax!\n\n> Hence my suggestion for CMake: appropriate project files would be \n> generated for the tool the user chooses, be it VC++ 2005, VC++2010, gcc, \n> Borland C++ or anything else.\n\nThe problem is that this will bitrot even more, as nobody will use it for \ngcc, Borland C++, XCode, Eclipse or anything else, except for Microsoft \nVisual C++.\n\nCiao,\nDscho\n"},{"id":"120986","messageId":"alpine.DEB.1.00.0908172256560.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"3af572ac0908171251y355a1e2bjf2d10192bc3eca2e@mail.gmail.com","subject":"Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T20:58:10Z","receivedAt":"2009-08-17T20:58:10Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n\n> On Mon, Aug 17, 2009 at 9:48 PM, Johannes\n> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n> \n> > On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n> >\n> >> What about having a CMake build system, which would work on every\n> >> platform (including cross-compiling), and would produce an appropriate\n> >> config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever\n> >> is fit for each platform? If it's OK to include such a build system\n> >> upstream, I'm volunteering to implement it.\n> >\n> > And reap in another dependency?\n> >\n> > First Python, then CMake, what tomorrow?  Is it the month of adding\n> > dependencies?\n> \n> I'd say it's the month of getting problems solved.\n\nWhat?  I beg your _pardon_?\n\n> CMake would make git a lot easier to build on Windows, particularly with \n> Visual C++. Replace autotools with CMake and suddenly you need to \n> maintain a single build system for every platform and compiler git \n> supports/will support. That's a sound advantage to me.\n\nWell, I heard some pretty different opinions, and they are from quite \nrecently.\n\nIn any case, before you get CMake to compile in msysGit, I think we do not \nneed to talk about getting problems solved.\n\nCiao,\nDscho"},{"id":"120987","messageId":"3af572ac0908171359o33f6ca70n599bdc27be74784a@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908172255140.8306@pacific.mpi-cbg.de","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T20:59:25Z","receivedAt":"2009-08-17T20:59:25Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Mon, Aug 17, 2009 at 10:56 PM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n> Hi,\n>\n> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n>\n>> On Mon, Aug 17, 2009 at 9:53 PM, Johannes\n>> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>>\n>> > Of course, we could have a script that verifies that the .vcproj files\n>> > contain reference the appropriate files (which it would know about by\n>> > being called from the Makefile and being passed the file names), maybe\n>> > even be able to edit the .vcproj file if it is missing some.  Should\n>> > not be too hard in Perl.\n>>\n>> You'll need to special-case for Visual C++ 2010, which is different\n>> and incompatible with previous versions.\n>\n> Ah, my beloved Microsoft time tax!\n\nSorry, but I make a living developing cross-platform software and\nporting stuff among any funny combination of Linux, Windows, gcc,\nmingw, Intel C++ and Visual C++ you can think of. CMake makes my life\neasier (possible!). Given that the patches we are talking about happen\nto add support for Visual C++, I'd say it stepped in at the right\nmoment.\n\n>> Hence my suggestion for CMake: appropriate project files would be\n>> generated for the tool the user chooses, be it VC++ 2005, VC++2010, gcc,\n>> Borland C++ or anything else.\n>\n> The problem is that this will bitrot even more, as nobody will use it for\n> gcc, Borland C++, XCode, Eclipse or anything else, except for Microsoft\n> Visual C++.\n\nHow do you know? Also, please note I'm not talking about *adding* a\nCMake build system, I'm talking about *replacing* the existing\nautotools build system with a CMake build system, even if they coexist\nfor some time.\n\nWhat would be the point of having two build-systems, one (autotools)\nuseless for Visual C++, the other one (CMake) apt for every platform ?\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"120989","messageId":"3af572ac0908171403k32788058pa99a88030701aef8@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908172256560.8306@pacific.mpi-cbg.de","subject":"Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T21:03:04Z","receivedAt":"2009-08-17T21:03:04Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"> In any case, before you get CMake to compile in msysGit, I think we do not\n> need to talk about getting problems solved.\n\nAt this moment I feel like developing a CMake build system for git\nwould be a waste of time, it would never be accepted upstream. I'm not\nsure I want to spend my time in such an effort (it would easily take\n2-3 days full time) and see it trashed. Sorry for being so clear, but\nI tend to contribute only to projects where my help and time are\nappreciated.\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"120993","messageId":"3f4fd2640908171405g46aa1d09t5169a3c8bcb1c49c@mail.gmail.com","threadId":"20640","inReplyTo":"3af572ac0908171354i6dd231etb576859ab8941214@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Reece Dunn","fromEmail":"msclrhd@googlemail.com","sentAt":"2009-08-17T21:05:11Z","receivedAt":"2009-08-17T21:05:11Z","isPatch":true,"sender":{"key":"msclrhd@googlemail.com","avatar":null},"body":"\n2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:\n> On Mon, Aug 17, 2009 at 10:43 PM, Reece Dunn<msclrhd@googlemail.com> wrote:\n>> 2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:\n>>> On Mon, Aug 17, 2009 at 9:53 PM, Johannes\n>>> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>>>\n>>>> Of course, we could have a script that verifies that the .vcproj files\n>>>> contain reference the appropriate files (which it would know about by\n>>>> being called from the Makefile and being passed the file names), maybe\n>>>> even be able to edit the .vcproj file if it is missing some.  Should not\n>>>> be too hard in Perl.\n>>>\n>>> You'll need to special-case for Visual C++ 2010, which is different\n>>> and incompatible with previous versions. Hence my suggestion for\n>>> CMake: appropriate project files would be generated for the tool the\n>>> user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything\n>>> else.\n>>\n>> The problem is that you'd still need the Visual Studio projects (one\n>> each for 6, 7 (2002), 7.1 (2003), 8 (2005), 9 (2008) and 10 (2010) --\n>> yes, there'll need to be one for each version of Visual Studio) as\n>> people who use Visual Studio tend to primarily use the IDE. CMake\n>> (which Windows users will need to download & install from somewhere)\n>> will sit outside this -- unless you mean making the project files be\n>> the \"Makefile project\" type and simply use it to invoke CMake and host\n>> the source files to ease access to them from the IDE?\n>\n> If a CMake build system is provided, you will not need a single Visual\n> Studio project, or the autotools build system, or anything else. Just\n> CMake and the CMake build system (which are a bunch of CMakeLists.txt\n> plain text files).\n\nNote that I said that people who use Visual Studio are more likely to\nbuild and develop things through the Visual Studio IDE. Unless there\nis IDE integration for it, they are not likely to use it.\n\nFor an automated build, CMake would probably work.\n\nLooking around, it seems that CMake on Windows assumes that Microsoft\nVisual C is used; that is, you have to explicitly specify CC for MinGW\nor cygwin to build.\n\n> CMake takes the CMakeLists.txt file(s) as the input and generates\n> makefiles for gcc, vcproj files for Visual C++, makefiles for NMake,\n> Eclipse projects for Eclipse, XCode projects for XCode, etc.\n>\n>> Also, not every posix system will have CMake installed (e.g. Linux\n>> From Scratch systems) and that's not including \"exotic\" systems like\n>> Solaris and the *BSDs.\n>\n> CMake is available for many platforms (Linux x86-32 and x86-64, PPC,\n> Solaris Sparc, HP-UX, Irix, AIX PPC) as a binary from the CMake site (\n> http://cmake.org/cmake/resources/software.html ) and as source for the\n> rest.\n>\n> *BSD? It is available in the ports section (and maybe as a binary,\n> too) in FreeBSD(\n> http://www.freebsd.org/cgi/cvsweb.cgi/ports/devel/cmake/ ), NetBSD and\n> OpenBSD.\n\nOk, I stand corrected there.\n\n> Linux from scratch? If people are brave enough to build and use LFS,\n> they are brave enough to build CMake (CMake is autocontained and\n> bootstraps itself, it only depends on a C++ compiler to build itself).\n\nAt what about at the bootstrap stage? A C compiler will be available,\nbut a C++ one may not.\n\n- Reece\n"},{"id":"120990","messageId":"alpine.DEB.1.00.0908172304200.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"3af572ac0908171354i6dd231etb576859ab8941214@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T21:05:37Z","receivedAt":"2009-08-17T21:05:37Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n\n> On Mon, Aug 17, 2009 at 10:43 PM, Reece Dunn<msclrhd@googlemail.com> wrote:\n> > 2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:\n> >> On Mon, Aug 17, 2009 at 9:53 PM, Johannes\n> >> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n> >>\n> >>> Of course, we could have a script that verifies that the .vcproj \n> >>> files contain reference the appropriate files (which it would know \n> >>> about by being called from the Makefile and being passed the file \n> >>> names), maybe even be able to edit the .vcproj file if it is missing \n> >>> some.  Should not be too hard in Perl.\n> >>\n> >> You'll need to special-case for Visual C++ 2010, which is different \n> >> and incompatible with previous versions. Hence my suggestion for \n> >> CMake: appropriate project files would be generated for the tool the \n> >> user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything \n> >> else.\n> >\n> > The problem is that you'd still need the Visual Studio projects (one \n> > each for 6, 7 (2002), 7.1 (2003), 8 (2005), 9 (2008) and 10 (2010) -- \n> > yes, there'll need to be one for each version of Visual Studio) as \n> > people who use Visual Studio tend to primarily use the IDE. CMake \n> > (which Windows users will need to download & install from somewhere) \n> > will sit outside this -- unless you mean making the project files be \n> > the \"Makefile project\" type and simply use it to invoke CMake and host \n> > the source files to ease access to them from the IDE?\n> \n> If a CMake build system is provided, you will not need a single Visual \n> Studio project, or the autotools build system, or anything else. Just \n> CMake and the CMake build system (which are a bunch of CMakeLists.txt \n> plain text files).\n\nYou are putting an undue burden on the already overloaded maintainer.\n\nWell, let's see if you can provide a /src/cmake/release.sh that compiles \nCMake from scratch, and _then_ I'll look into CMake again.\n\nCiao,\nDscho\n"},{"id":"120992","messageId":"alpine.DEB.1.00.0908172306080.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"3af572ac0908171359o33f6ca70n599bdc27be74784a@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T21:11:16Z","receivedAt":"2009-08-17T21:11:16Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n\n> On Mon, Aug 17, 2009 at 10:56 PM, Johannes\n> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>\n> > The problem is that this will bitrot even more, as nobody will use it \n> > for gcc, Borland C++, XCode, Eclipse or anything else, except for \n> > Microsoft Visual C++.\n> \n> How do you know? Also, please note I'm not talking about *adding* a \n> CMake build system, I'm talking about *replacing* the existing autotools \n> build system with a CMake build system, even if they coexist for some \n> time.\n\nYou are mistaken.  We do not require using the autotools.  I _never_ call \n\"./configure\" yet the Makefile magically works.  Cool, huh?\n\nBut here's a clue: you will probably _never_ succeed in getting a \nreplacement of the make-based build in git.git by the maintainer.  Make is \njust too ubiquitous and well-established for that.\n\nHaving said that, a CMake-based system _in addition_ to what is \ntried-and-tested to be able to support all those different kinds of \nMicrosoft Visual Studio (took me 3 attempts to write that without a \nFreudian) would be welcome, _if_ you succeed in making it compile out of \nthe box on msysGit.\n\nBy out-of-the-box I mean: you send a patch that adds \n/src/cmake/release.sh, I apply the patch (after briefly scanning that it \ndoes not install a backdoor on a machine that is not even mine, and \ntherefore will never see even a single of my passwords typed in), run it, \nit compiles installs and commits cmake and cmake works.\n\nIf that's not possible, I refuse to add another problem rather than \nsolving one.\n\nIf you succeed, I will ask you to do the same for Python, as you clearly \nproved by that point that you are a magician.\n\nCiao,\nDscho\n"},{"id":"120994","messageId":"3f4fd2640908171420j2a359e99ga3d6fc3109547af6@mail.gmail.com","threadId":"20640","inReplyTo":"3af572ac0908171251y355a1e2bjf2d10192bc3eca2e@mail.gmail.com","subject":"Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Reece Dunn","fromEmail":"msclrhd@googlemail.com","sentAt":"2009-08-17T21:20:12Z","receivedAt":"2009-08-17T21:20:12Z","isPatch":true,"sender":{"key":"msclrhd@googlemail.com","avatar":null},"body":"2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:\n> On Mon, Aug 17, 2009 at 9:48 PM, Johannes\n> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>\n>> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n>>\n>>> What about having a CMake build system, which would work on every\n>>> platform (including cross-compiling), and would produce an appropriate\n>>> config.h and makefiles/vcproj/Eclipse projects/XCode projects/whatever\n>>> is fit for each platform? If it's OK to include such a build system\n>>> upstream, I'm volunteering to implement it.\n>>\n>> And reap in another dependency?\n>>\n>> First Python, then CMake, what tomorrow?  Is it the month of adding\n>> dependencies?\n>\n> I'd say it's the month of getting problems solved.\n>\n> CMake would make git a lot easier to build on Windows, particularly\n> with Visual C++. Replace autotools with CMake and suddenly you need to\n> maintain a single build system for every platform and compiler git\n> supports/will support. That's a sound advantage to me.\n\nRealistically, you'd need CMake for Windows/msvc and autotools for\nPOSIX systems. I know that CMake is supported on POSIX, but not\neveryone has access to it. Poppler, for example, has this dual build\nsystem to support Windows as well as other systems (that, and it has\nKDE4 bindings, so CMake is pretty much a given).\n\nFor CMake to work, it would need to support building all of git\n(including the man, html and pdf documents from the asciidoc sources),\nthe localisation support and the optional packages (OpenSSL, CURL). I\nknow that KDE uses CMake, so this should all be possible.\n\n- Reece\n"},{"id":"120995","messageId":"3af572ac0908171423ye08efa8m6666ddb922d5ee92@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908172304200.8306@pacific.mpi-cbg.de","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T21:23:02Z","receivedAt":"2009-08-17T21:23:02Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Mon, Aug 17, 2009 at 11:05 PM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n> Hi,\n>\n> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n>\n>> On Mon, Aug 17, 2009 at 10:43 PM, Reece Dunn<msclrhd@googlemail.com> wrote:\n>> > 2009/8/17 Pau Garcia i Quiles <pgquiles@elpauer.org>:\n>> >> On Mon, Aug 17, 2009 at 9:53 PM, Johannes\n>> >> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>> >>\n>> >>> Of course, we could have a script that verifies that the .vcproj\n>> >>> files contain reference the appropriate files (which it would know\n>> >>> about by being called from the Makefile and being passed the file\n>> >>> names), maybe even be able to edit the .vcproj file if it is missing\n>> >>> some.  Should not be too hard in Perl.\n>> >>\n>> >> You'll need to special-case for Visual C++ 2010, which is different\n>> >> and incompatible with previous versions. Hence my suggestion for\n>> >> CMake: appropriate project files would be generated for the tool the\n>> >> user chooses, be it VC++ 2005, VC++2010, gcc, Borland C++ or anything\n>> >> else.\n>> >\n>> > The problem is that you'd still need the Visual Studio projects (one\n>> > each for 6, 7 (2002), 7.1 (2003), 8 (2005), 9 (2008) and 10 (2010) --\n>> > yes, there'll need to be one for each version of Visual Studio) as\n>> > people who use Visual Studio tend to primarily use the IDE. CMake\n>> > (which Windows users will need to download & install from somewhere)\n>> > will sit outside this -- unless you mean making the project files be\n>> > the \"Makefile project\" type and simply use it to invoke CMake and host\n>> > the source files to ease access to them from the IDE?\n>>\n>> If a CMake build system is provided, you will not need a single Visual\n>> Studio project, or the autotools build system, or anything else. Just\n>> CMake and the CMake build system (which are a bunch of CMakeLists.txt\n>> plain text files).\n>\n> You are putting an undue burden on the already overloaded maintainer.\n\nSorry, but I'm a bit lost now. What maintainer are we talking about now? Junio?\n\nAs I would be providing a turn-key CMake build system, the only burden\nI would be putting on the maintainer would be learning CMake.\n\nGiven that I'm providing a comprehensive (100+ slides) CMake tutorial\n( http://www.elpauer.org/stuff/learning_cmake.pdf ) , which I use in\nmy CMake workshops, I think I'm making that burden a bit lighter.\n\nIf the next git conference is somewhere in Europe, I could also fly\nthere and we'd have a CMake tutorial, if people would feel more\ncomfortable that way.\n\n> Well, let's see if you can provide a /src/cmake/release.sh that compiles\n> CMake from scratch, and _then_ I'll look into CMake again.\n\nAgain, I'm a bit lost. What '/src/cmake/release.sh' are we talking\nabout now? Would that be part of CMake or git ?\n\nIf you want to build CMake from scratch, you only need to download the\nsource from http://cmake.org/cmake/resources/software.html , then run\n\"./bootstrap\" in the source directory. That's true for every platform\nbut Visual C++, which requires you to download a pre-built CMake\nbinary to build CMake.\n\nIf you mean you want to bootstrap git (i. e. download the git tarball,\nwhich would include the CMake sources, then bootstrap CMake, then\nbuild git using the CMake build system), I'd say that makes no sense\nat all. That would be like saying you want to include the autotools\nsources, the OpenSSL sources, the curl sources, the Subversion\nsources, etc in the git tarball. Insane.\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"120996","messageId":"3af572ac0908171429k62db72c1jd43ae814be569e4a@mail.gmail.com","threadId":"20640","inReplyTo":"3f4fd2640908171420j2a359e99ga3d6fc3109547af6@mail.gmail.com","subject":"Re: CMake, was Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T21:29:59Z","receivedAt":"2009-08-17T21:29:59Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Mon, Aug 17, 2009 at 11:20 PM, Reece Dunn<msclrhd@googlemail.com> wrote:\n\n> Realistically, you'd need CMake for Windows/msvc and autotools for\n> POSIX systems. I know that CMake is supported on POSIX, but not\n> everyone has access to it. Poppler, for example, has this dual build\n> system to support Windows as well as other systems (that, and it has\n> KDE4 bindings, so CMake is pretty much a given).\n\nIt's not exactly like that. It would be more accurate to say \"if you\nhave POSIX, CMake will work; if you don't have POSIX, it may or may\nnot work\".\n\nI'd say 99% of git users run git on a platform which supports enough\nPOSIX to build CMake.\n\nPlease note if you are cross-compiling git, you need CMake (hence\nPOSIX) on the platform you are cross-compiling on (the \"host\nplatform\"), not on the platform you are cross-compiling for (the\n\"target platform\").\n\n> For CMake to work, it would need to support building all of git\n> (including the man, html and pdf documents from the asciidoc sources),\n> the localisation support and the optional packages (OpenSSL, CURL). I\n> know that KDE uses CMake, so this should all be possible.\n\nAll possible. Plus using CMake would make easier to build installers\n(NSIS, WiX, .deb, .rpm, etc), submit the results of the tests to a\ndashboard ( http://my.cdash.org/ ), and more.\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"121004","messageId":"alpine.DEB.1.00.0908180005250.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"3af572ac0908171423ye08efa8m6666ddb922d5ee92@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T22:10:33Z","receivedAt":"2009-08-17T22:10:33Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n\n> On Mon, Aug 17, 2009 at 11:05 PM, Johannes\n> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>\n> > You are putting an undue burden on the already overloaded maintainer.\n> \n> Sorry, but I'm a bit lost now. What maintainer are we talking about now? \n> Junio?\n\nI was talking about me, as maintainer of msysGit.\n\n> As I would be providing a turn-key CMake build system, the only burden I \n> would be putting on the maintainer would be learning CMake.\n> \n> Given that I'm providing a comprehensive (100+ slides) CMake tutorial\n> ( http://www.elpauer.org/stuff/learning_cmake.pdf ) , which I use in\n> my CMake workshops, I think I'm making that burden a bit lighter.\n> \n> If the next git conference is somewhere in Europe, I could also fly\n> there and we'd have a CMake tutorial, if people would feel more\n> comfortable that way.\n\nThis is exactly what I mean by burden.  Why do I have to learn a new \nsystem, and suffer the hassle of integrating it into the current build \nsystem, which works quite well thankyouverymuch?\n\nNever run a changing system.\n\n> > Well, let's see if you can provide a /src/cmake/release.sh that \n> > compiles CMake from scratch, and _then_ I'll look into CMake again.\n> \n> Again, I'm a bit lost. What '/src/cmake/release.sh' are we talking about \n> now? Would that be part of CMake or git ?\n\nMaybe this:\n\nhttp://article.gmane.org/gmane.comp.version-control.git/126286\n\nand this:\n\nhttp://repo.or.cz/w/msysgit.git?a=blob;f=src/curl/release.sh;h=d7516cbf6e92af4de138ce405d88561fbe1e92a8;hb=968336eddac1874c56cd934d10783566af5a3e26\n\nhelps.\n\nTo quote myself (as you appear to have missed that):\n\n\tHaving said that, a CMake-based system _in addition_ to what is \n\ttried-and-tested to be able to support all those different kinds of \n\tMicrosoft Visual Studio (took me 3 attempts to write that without a \n\tFreudian) would be welcome, _if_ you succeed in making it compile out\n\tof the box on msysGit.\n\n\tBy out-of-the-box I mean: you send a patch that adds \n\t/src/cmake/release.sh, I apply the patch (after briefly scanning \n\tthat it\tdoes not install a backdoor on a machine that is not even\n\tmine, and therefore will never see even a single of my passwords\n\ttyped in), run it, it compiles installs and commits cmake and cmake\n\tworks.\n\nShort form: if you make it easy for me, I will look at it again, if you \nmake it hard on me, you will just have done to me what you now try \nto avoid yourself: wasted time.\n\nCiao,\nDscho\n"},{"id":"121005","messageId":"4A89D6E0.3010300@gmail.com","threadId":"20640","inReplyTo":"3f4fd2640908171405g46aa1d09t5169a3c8bcb1c49c@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johan 't Hart","fromEmail":"johanthart@gmail.com","sentAt":"2009-08-17T22:17:04Z","receivedAt":"2009-08-17T22:17:04Z","isPatch":true,"sender":{"key":"johanthart@gmail.com","avatar":"https://gravatar.com/avatar/f7bd2928a1a23e971f4ab68a6c7b35d7ff0efb1c225c570430badf90e404e50b?d=mp&s=160"},"body":"Reece Dunn schreef:\n\n> Note that I said that people who use Visual Studio are more likely to\n> build and develop things through the Visual Studio IDE. Unless there\n> is IDE integration for it, they are not likely to use it.\n\nCMake generates a .vcproj file for visual studio, so users who want to \nuse the IDE let CMake generate the .vcproj file and then use the IDE to \ndebug git.\nThere could be a batchfile like /vc_build/make_vs_files.bat or something \nto make it easy for VS users using the IDE.\n"},{"id":"121007","messageId":"3af572ac0908171519h7b72427lba7536506d44460e@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908180005250.8306@pacific.mpi-cbg.de","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T22:19:38Z","receivedAt":"2009-08-17T22:19:38Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Tue, Aug 18, 2009 at 12:10 AM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n> Hi,\n>\n> On Mon, 17 Aug 2009, Pau Garcia i Quiles wrote:\n>\n>> On Mon, Aug 17, 2009 at 11:05 PM, Johannes\n>> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>>\n>> > You are putting an undue burden on the already overloaded maintainer.\n>>\n>> Sorry, but I'm a bit lost now. What maintainer are we talking about now?\n>> Junio?\n>\n> I was talking about me, as maintainer of msysGit.\n>\n>> As I would be providing a turn-key CMake build system, the only burden I\n>> would be putting on the maintainer would be learning CMake.\n>>\n>> Given that I'm providing a comprehensive (100+ slides) CMake tutorial\n>> ( http://www.elpauer.org/stuff/learning_cmake.pdf ) , which I use in\n>> my CMake workshops, I think I'm making that burden a bit lighter.\n>>\n>> If the next git conference is somewhere in Europe, I could also fly\n>> there and we'd have a CMake tutorial, if people would feel more\n>> comfortable that way.\n>\n> This is exactly what I mean by burden.  Why do I have to learn a new\n> system, and suffer the hassle of integrating it into the current build\n> system, which works quite well thankyouverymuch?\n\nBecause it works for every platform, including Visual C++, where a\nBourne shell is not available and where you currently need to maintain\na different built system.\n\n> Never run a changing system.\n>\n>> > Well, let's see if you can provide a /src/cmake/release.sh that\n>> > compiles CMake from scratch, and _then_ I'll look into CMake again.\n>>\n>> Again, I'm a bit lost. What '/src/cmake/release.sh' are we talking about\n>> now? Would that be part of CMake or git ?\n>\n> Maybe this:\n>\n> http://article.gmane.org/gmane.comp.version-control.git/126286\n>\n> and this:\n>\n> http://repo.or.cz/w/msysgit.git?a=blob;f=src/curl/release.sh;h=d7516cbf6e92af4de138ce405d88561fbe1e92a8;hb=968336eddac1874c56cd934d10783566af5a3e26\n>\n> helps.\n>\n> To quote myself (as you appear to have missed that):\n>\n>        Having said that, a CMake-based system _in addition_ to what is\n>        tried-and-tested to be able to support all those different kinds of\n>        Microsoft Visual Studio (took me 3 attempts to write that without a\n>        Freudian) would be welcome, _if_ you succeed in making it compile out\n>        of the box on msysGit.\n>\n>        By out-of-the-box I mean: you send a patch that adds\n>        /src/cmake/release.sh, I apply the patch (after briefly scanning\n>        that it does not install a backdoor on a machine that is not even\n>        mine, and therefore will never see even a single of my passwords\n>        typed in), run it, it compiles installs and commits cmake and cmake\n>        works.\n\nHmmm indeed I have missed a lot, thanks. A lot of what you had written\nin other e-mails was being hidden by GMail as \"quoted\" text :-/\n\nIt seems we are talking about two different things here. I'm talking\nabout getting the CMake-based build system in git.git, you are talking\nabout msysgit. If getting into msysgit is the first step to getting\ninto git.git, I'll start from msysgit. Are the differences between\nboth branches so big they cannot be merged into a single branch yet ?\n\n> Short form: if you make it easy for me, I will look at it again, if you\n> make it hard on me, you will just have done to me what you now try\n> to avoid yourself: wasted time.\n\nLet's see what I can do.\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"121008","messageId":"4A89D807.1080202@gnu.org","threadId":"20640","inReplyTo":"3af572ac0908171519h7b72427lba7536506d44460e@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Paolo Bonzini","fromEmail":"bonzini@gnu.org","sentAt":"2009-08-17T22:21:59Z","receivedAt":"2009-08-17T22:21:59Z","isPatch":true,"sender":{"key":"bonzini@gnu.org","avatar":"https://avatars.githubusercontent.com/u/42082?v=4"},"body":"\n>> This is exactly what I mean by burden.  Why do I have to learn a new\n>> system, and suffer the hassle of integrating it into the current build\n>> system, which works quite well thankyouverymuch?\n>\n> Because it works for every platform, including Visual C++, where a\n> Bourne shell is not available and where you currently need to maintain\n> a different built system.\n\nBut it comes with its own share of idiosyncracies.  There are as many \nCMake haters as there are autotools haters.\n\nI don't see CMake being used by git.git before hell freezes over.  For \nmsysgit, however, it may be an interesting approach.\n\n> Let's see what I can do.\n\nI'm also curious.\n\nPaolo\n"},{"id":"121009","messageId":"4A89D909.9050700@gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908172306080.8306@pacific.mpi-cbg.de","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johan 't Hart","fromEmail":"johanthart@gmail.com","sentAt":"2009-08-17T22:26:17Z","receivedAt":"2009-08-17T22:26:17Z","isPatch":true,"sender":{"key":"johanthart@gmail.com","avatar":"https://gravatar.com/avatar/f7bd2928a1a23e971f4ab68a6c7b35d7ff0efb1c225c570430badf90e404e50b?d=mp&s=160"},"body":"\nJohannes Schindelin schreef:\n\n> Having said that, a CMake-based system _in addition_ to what is \n> tried-and-tested to be able to support all those different kinds of \n> Microsoft Visual Studio (took me 3 attempts to write that without a \n> Freudian) would be welcome, _if_ you succeed in making it compile out of \n> the box on msysGit.\n\nThat would require (I think) that CMake is build by the msysgit gcc \ntools available in msysgit, since CMake can't be build by VS right? Pau \ndo you think that is possible?\n\nIt would be fun. Download the msysgit netinstaller, set it up, install \nit, and after that, CMake is bootstrapped, and the visual studio .vcproj \nfiles are generated and everyone (VS developers and msys developers) are \nready to go!\n"},{"id":"121012","messageId":"a4c8a6d00908171527m778c12fq30d672d3c75cea77@mail.gmail.com","threadId":"20640","inReplyTo":"1250525103-5184-5-git-send-email-lznuaa@gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2009-08-17T22:27:29Z","receivedAt":"2009-08-17T22:27:29Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"What about the common-cmds.h that is included in builtin-help.c? How it will\nbe generated?\nI followed the instructions in ReadMe, then I can't compile because of this\n\"missing\" file.\nOn Mon, Aug 17, 2009 at 1:05 PM, Frank Li <lznuaa@gmail.com> wrote:\n\n> Add libgit.vcproj to build common library.\n> Add git.vcproj to build git program.\n>\n> Signed-off-by: Frank Li <lznuaa@gmail.com>\n> ---\n>  compat/vcbuild/git/git.vcproj       |  197 +++++\n>  compat/vcbuild/libgit/libgit.vcproj | 1347\n> +++++++++++++++++++++++++++++++++++\n>  2 files changed, 1544 insertions(+), 0 deletions(-)\n>  create mode 100644 compat/vcbuild/git/git.vcproj\n>  create mode 100644 compat/vcbuild/libgit/libgit.vcproj\n>\n> diff --git a/compat/vcbuild/git/git.vcproj b/compat/vcbuild/git/git.vcproj\n> new file mode 100644\n> index 0000000..6f85de3\n> --- /dev/null\n> +++ b/compat/vcbuild/git/git.vcproj\n> @@ -0,0 +1,197 @@\n> +<?xml version=\"1.0\" encoding=\"gb2312\"?>\n> +<VisualStudioProject\n> +       ProjectType=\"Visual C++\"\n> +       Version=\"9.00\"\n> +       Name=\"git\"\n> +       ProjectGUID=\"{E3E30E51-C5AD-407B-AB43-985E4111474A}\"\n> +       RootNamespace=\"git\"\n> +       Keyword=\"Win32Proj\"\n> +       TargetFrameworkVersion=\"196613\"\n> +       >\n> +       <Platforms>\n> +               <Platform\n> +                       Name=\"Win32\"\n> +               />\n> +       </Platforms>\n> +       <ToolFiles>\n> +       </ToolFiles>\n> +       <Configurations>\n> +               <Configuration\n> +                       Name=\"Debug|Win32\"\n> +\n> OutputDirectory=\"$(SolutionDir)$(ConfigurationName)\\bin\"\n> +                       IntermediateDirectory=\"$(ConfigurationName)\"\n> +                       ConfigurationType=\"1\"\n> +                       CharacterSet=\"0\"\n> +                       >\n> +                       <Tool\n> +                               Name=\"VCPreBuildEventTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCCustomBuildTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCXMLDataGeneratorTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCWebServiceProxyGeneratorTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCMIDLTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCCLCompilerTool\"\n> +                               Optimization=\"0\"\n> +\n> AdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n> +\n> PreprocessorDefinitions=\"WIN32;_DEBUG;_CONSOLE\"\n> +                               MinimalRebuild=\"true\"\n> +                               BasicRuntimeChecks=\"3\"\n> +                               RuntimeLibrary=\"3\"\n> +                               UsePrecompiledHeader=\"0\"\n> +                               WarningLevel=\"3\"\n> +                               DebugInformationFormat=\"4\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCManagedResourceCompilerTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCResourceCompilerTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCPreLinkEventTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCLinkerTool\"\n> +                               AdditionalDependencies=\"wininet.lib\n> ws2_32.lib \"\n> +                               LinkIncremental=\"2\"\n> +                               GenerateDebugInformation=\"true\"\n> +                               SubSystem=\"1\"\n> +                               TargetMachine=\"1\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCALinkTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCManifestTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCXDCMakeTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCBscMakeTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCFxCopTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCAppVerifierTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCPostBuildEventTool\"\n> +                       />\n> +               </Configuration>\n> +               <Configuration\n> +                       Name=\"Release|Win32\"\n> +\n> OutputDirectory=\"$(SolutionDir)$(ConfigurationName)\\bin\"\n> +                       IntermediateDirectory=\"$(ConfigurationName)\"\n> +                       ConfigurationType=\"1\"\n> +                       CharacterSet=\"0\"\n> +                       WholeProgramOptimization=\"1\"\n> +                       >\n> +                       <Tool\n> +                               Name=\"VCPreBuildEventTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCCustomBuildTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCXMLDataGeneratorTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCWebServiceProxyGeneratorTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCMIDLTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCCLCompilerTool\"\n> +                               Optimization=\"2\"\n> +                               EnableIntrinsicFunctions=\"true\"\n> +\n> AdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n> +\n> PreprocessorDefinitions=\"WIN32;NDEBUG;_CONSOLE\"\n> +                               RuntimeLibrary=\"2\"\n> +                               EnableFunctionLevelLinking=\"true\"\n> +                               UsePrecompiledHeader=\"0\"\n> +                               WarningLevel=\"3\"\n> +                               DebugInformationFormat=\"3\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCManagedResourceCompilerTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCResourceCompilerTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCPreLinkEventTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCLinkerTool\"\n> +                               AdditionalDependencies=\"wininet.lib\n> ws2_32.lib \"\n> +                               LinkIncremental=\"1\"\n> +                               GenerateDebugInformation=\"true\"\n> +                               SubSystem=\"1\"\n> +                               OptimizeReferences=\"2\"\n> +                               EnableCOMDATFolding=\"2\"\n> +                               TargetMachine=\"1\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCALinkTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCManifestTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCXDCMakeTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCBscMakeTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCFxCopTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCAppVerifierTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCPostBuildEventTool\"\n> +                       />\n> +               </Configuration>\n> +       </Configurations>\n> +       <References>\n> +       </References>\n> +       <Files>\n> +               <Filter\n> +                       Name=\"Source Files\"\n> +                       Filter=\"cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx\"\n> +\n> UniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\"\n> +                       >\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\git.c\"\n> +                               >\n> +                       </File>\n> +               </Filter>\n> +               <Filter\n> +                       Name=\"Header Files\"\n> +                       Filter=\"h;hpp;hxx;hm;inl;inc;xsd\"\n> +\n> UniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\"\n> +                       >\n> +               </Filter>\n> +               <Filter\n> +                       Name=\"Resource Files\"\n> +\n> Filter=\"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav\"\n> +\n> UniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\"\n> +                       >\n> +               </Filter>\n> +       </Files>\n> +       <Globals>\n> +       </Globals>\n> +</VisualStudioProject>\n> diff --git a/compat/vcbuild/libgit/libgit.vcproj\n> b/compat/vcbuild/libgit/libgit.vcproj\n> new file mode 100644\n> index 0000000..bbc3aed\n> --- /dev/null\n> +++ b/compat/vcbuild/libgit/libgit.vcproj\n> @@ -0,0 +1,1347 @@\n> +<?xml version=\"1.0\" encoding=\"gb2312\"?>\n> +<VisualStudioProject\n> +       ProjectType=\"Visual C++\"\n> +       Version=\"9.00\"\n> +       Name=\"libgit\"\n> +       ProjectGUID=\"{F6DEC8C3-B803-4A86-8848-430F08B499E3}\"\n> +       RootNamespace=\"libgit\"\n> +       Keyword=\"Win32Proj\"\n> +       TargetFrameworkVersion=\"196613\"\n> +       >\n> +       <Platforms>\n> +               <Platform\n> +                       Name=\"Win32\"\n> +               />\n> +       </Platforms>\n> +       <ToolFiles>\n> +       </ToolFiles>\n> +       <Configurations>\n> +               <Configuration\n> +                       Name=\"Debug|Win32\"\n> +\n> OutputDirectory=\"$(SolutionDir)$(ConfigurationName)\"\n> +                       IntermediateDirectory=\"$(ConfigurationName)\"\n> +                       ConfigurationType=\"4\"\n> +                       CharacterSet=\"0\"\n> +                       >\n> +                       <Tool\n> +                               Name=\"VCPreBuildEventTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCCustomBuildTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCXMLDataGeneratorTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCWebServiceProxyGeneratorTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCMIDLTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCCLCompilerTool\"\n> +                               Optimization=\"0\"\n> +                               InlineFunctionExpansion=\"1\"\n> +\n> AdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n> +                               PreprocessorDefinitions=\"WIN32;_DEBUG;_LIB\"\n> +                               MinimalRebuild=\"true\"\n> +                               BasicRuntimeChecks=\"3\"\n> +                               RuntimeLibrary=\"3\"\n> +                               UsePrecompiledHeader=\"0\"\n> +                               WarningLevel=\"3\"\n> +                               DebugInformationFormat=\"3\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCManagedResourceCompilerTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCResourceCompilerTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCPreLinkEventTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCLibrarianTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCALinkTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCXDCMakeTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCBscMakeTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCFxCopTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCPostBuildEventTool\"\n> +                       />\n> +               </Configuration>\n> +               <Configuration\n> +                       Name=\"Release|Win32\"\n> +\n> OutputDirectory=\"$(SolutionDir)$(ConfigurationName)\"\n> +                       IntermediateDirectory=\"$(ConfigurationName)\"\n> +                       ConfigurationType=\"4\"\n> +                       CharacterSet=\"0\"\n> +                       WholeProgramOptimization=\"1\"\n> +                       >\n> +                       <Tool\n> +                               Name=\"VCPreBuildEventTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCCustomBuildTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCXMLDataGeneratorTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCWebServiceProxyGeneratorTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCMIDLTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCCLCompilerTool\"\n> +                               Optimization=\"2\"\n> +                               InlineFunctionExpansion=\"1\"\n> +                               EnableIntrinsicFunctions=\"true\"\n> +\n> AdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n> +                               PreprocessorDefinitions=\"WIN32;NDEBUG;_LIB\"\n> +                               RuntimeLibrary=\"2\"\n> +                               EnableFunctionLevelLinking=\"true\"\n> +                               UsePrecompiledHeader=\"0\"\n> +                               WarningLevel=\"3\"\n> +                               DebugInformationFormat=\"3\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCManagedResourceCompilerTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCResourceCompilerTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCPreLinkEventTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCLibrarianTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCALinkTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCXDCMakeTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCBscMakeTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCFxCopTool\"\n> +                       />\n> +                       <Tool\n> +                               Name=\"VCPostBuildEventTool\"\n> +                       />\n> +               </Configuration>\n> +       </Configurations>\n> +       <References>\n> +       </References>\n> +       <Files>\n> +               <Filter\n> +                       Name=\"Source Files\"\n> +                       Filter=\"cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx\"\n> +\n> UniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\"\n> +                       >\n> +                       <File\n> +                               RelativePath=\"..\\..\\msvc.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\mozilla-sha1\\sha1.c\"\n> +                               >\n> +                       </File>\n> +               </Filter>\n> +               <Filter\n> +                       Name=\"Header Files\"\n> +                       Filter=\"h;hpp;hxx;hm;inl;inc;xsd\"\n> +\n> UniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\"\n> +                       >\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\archive.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\attr.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\blob.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\branch.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\bundle.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\cache-tree.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\cache.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\color.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\commit.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\csum-file.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\decorate.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\delta.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diff.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diffcore.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\dir.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\exec_cmd.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\fetch-pack.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\fsck.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\git-compat-util.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\graph.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\grep.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\hash.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\help.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\http.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\levenshtein.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\list-objects.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\ll-merge.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\log-tree.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\mailmap.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\merge-recursive.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\notes.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\object.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pack-refs.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pack-revindex.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pack.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\parse-options.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\patch-ids.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pkt-line.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\progress.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\quote.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\reachable.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\reflog-walk.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\refs.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\remote.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\rerere.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\revision.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\run-command.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\send-pack.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\sha1-lookup.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\shortlog.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\sideband.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\sigchain.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\strbuf.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\string-list.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\tag.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\tar.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\thread-utils.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\transport.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\tree-walk.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\tree.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\unpack-trees.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\userdiff.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\utf8.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\walker.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\wt-status.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff-interface.h\"\n> +                               >\n> +                       </File>\n> +               </Filter>\n> +               <Filter\n> +                       Name=\"Resource Files\"\n> +\n> Filter=\"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav\"\n> +\n> UniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\"\n> +                       >\n> +               </Filter>\n> +               <Filter\n> +                       Name=\"compat\"\n> +                       >\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\basename.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\cygwin.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\compat\\fnmatch\\fnmatch.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\compat\\fnmatch\\fnmatch.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\fopen.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\memmem.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\mingw.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\mingw.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\mkdtemp.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\mkstemps.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\pread.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\qsort.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\compat\\regex\\regex.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\compat\\regex\\regex.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\setenv.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\snprintf.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\strcasestr.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\strlcpy.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\strtoumax.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\unsetenv.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\win32.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\win32mmap.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\compat\\winansi.c\"\n> +                               >\n> +                       </File>\n> +               </Filter>\n> +               <Filter\n> +                       Name=\"git\"\n> +                       >\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\abspath.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\alias.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\alloc.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\archive-tar.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\archive-zip.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\archive.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\attr.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\base85.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\bisect.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\blob.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\branch.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-add.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-annotate.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-apply.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-archive.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-bisect--helper.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-blame.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-branch.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-bundle.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-cat-file.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-check-attr.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-check-ref-format.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-checkout-index.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-checkout.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-clean.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-clone.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-commit-tree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-commit.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-config.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-count-objects.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-describe.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-diff-files.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-diff-index.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-diff-tree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-diff.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-fast-export.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-fetch--tool.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-fetch-pack.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-fetch.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-fmt-merge-msg.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-for-each-ref.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-fsck.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-gc.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-grep.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-help.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-init-db.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-log.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-ls-files.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-ls-remote.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-ls-tree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-mailinfo.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-mailsplit.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-merge-base.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-merge-file.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-merge-ours.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-merge-recursive.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-merge.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-mktree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-mv.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-name-rev.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-pack-objects.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-pack-refs.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-prune-packed.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-prune.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-push.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-read-tree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-receive-pack.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-reflog.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-remote.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-rerere.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-reset.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-rev-list.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-rev-parse.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-revert.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-rm.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-send-pack.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-shortlog.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-show-branch.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-show-ref.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-stripspace.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-symbolic-ref.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-tag.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\builtin-tar-tree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-unpack-objects.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-update-index.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-update-ref.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-upload-archive.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-verify-pack.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-verify-tag.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +\n> RelativePath=\"..\\..\\..\\builtin-write-tree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\bundle.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\cache-tree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\color.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\combine-diff.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\commit.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\config.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\connect.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\convert.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\copy.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\csum-file.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\ctype.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\date.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\decorate.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diff-delta.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diff-lib.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diff-no-index.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diff.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diffcore-break.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diffcore-delta.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diffcore-order.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diffcore-pickaxe.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\diffcore-rename.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\dir.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\editor.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\entry.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\environment.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\exec_cmd.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\fsck.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\graph.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\grep.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\hash.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\help.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\ident.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\levenshtein.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\list-objects.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\ll-merge.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\lockfile.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\log-tree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\mailmap.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\match-trees.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\merge-file.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\merge-recursive.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\merge-tree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\name-hash.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\object.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pack-check.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pack-refs.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pack-revindex.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pack-write.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pager.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\parse-options.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\patch-delta.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\patch-ids.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\path.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pkt-line.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\preload-index.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\pretty.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\progress.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\quote.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\reachable.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\read-cache.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\reflog-walk.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\refs.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\remote.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\rerere.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\revision.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\run-command.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\server-info.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\setup.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\sha1-lookup.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\sha1_file.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\sha1_name.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\shallow.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\sideband.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\sigchain.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\strbuf.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\string-list.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\symlinks.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\tag.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\thread-utils.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\trace.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\transport.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\tree-diff.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\tree-walk.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\tree.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\unpack-trees.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\usage.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\userdiff.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\utf8.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\walker.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\wrapper.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\write_or_die.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\ws.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\wt-status.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff-interface.c\"\n> +                               >\n> +                       </File>\n> +               </Filter>\n> +               <Filter\n> +                       Name=\"xdiff\"\n> +                       >\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xdiff.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xdiffi.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xdiffi.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xemit.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xemit.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xinclude.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xmacros.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xmerge.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xpatience.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xprepare.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xprepare.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xtypes.h\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xutils.c\"\n> +                               >\n> +                       </File>\n> +                       <File\n> +                               RelativePath=\"..\\..\\..\\xdiff\\xutils.h\"\n> +                               >\n> +                       </File>\n> +               </Filter>\n> +       </Files>\n> +       <Globals>\n> +       </Globals>\n> +</VisualStudioProject>\n> --\n> 1.6.4.msysgit.0\n>\n> --\n> To unsubscribe from this list: send the line \"unsubscribe git\" in\n> the body of a message to majordomo@vger.kernel.org\n> More majordomo info at  http://vger.kernel.org/majordomo-info.html\n>\n"},{"id":"121013","messageId":"a4c8a6d00908171529g45221813v7712b61da60bc192@mail.gmail.com","threadId":"20640","inReplyTo":"a4c8a6d00908171527m778c12fq30d672d3c75cea77@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2009-08-17T22:29:03Z","receivedAt":"2009-08-17T22:29:03Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"What about the common-cmds.h that is included in builtin-help.c? How it will\nbe generated?\nI followed the instructions in ReadMe, then I can't compile because of this\n\"missing\" file.\n\nOn Mon, Aug 17, 2009 at 7:27 PM, Thiago Farina <tfransosi@gmail.com> wrote:\n\n> What about the common-cmds.h that is included in builtin-help.c? How it\n> will be generated?\n> I followed the instructions in ReadMe, then I can't compile because of this\n> \"missing\" file.\n>\n> On Mon, Aug 17, 2009 at 1:05 PM, Frank Li <lznuaa@gmail.com> wrote:\n>\n>> Add libgit.vcproj to build common library.\n>> Add git.vcproj to build git program.\n>>\n>> Signed-off-by: Frank Li <lznuaa@gmail.com>\n>> ---\n>>  compat/vcbuild/git/git.vcproj       |  197 +++++\n>>  compat/vcbuild/libgit/libgit.vcproj | 1347\n>> +++++++++++++++++++++++++++++++++++\n>>  2 files changed, 1544 insertions(+), 0 deletions(-)\n>>  create mode 100644 compat/vcbuild/git/git.vcproj\n>>  create mode 100644 compat/vcbuild/libgit/libgit.vcproj\n>>\n>> diff --git a/compat/vcbuild/git/git.vcproj b/compat/vcbuild/git/git.vcproj\n>> new file mode 100644\n>> index 0000000..6f85de3\n>> --- /dev/null\n>> +++ b/compat/vcbuild/git/git.vcproj\n>> @@ -0,0 +1,197 @@\n>> +<?xml version=\"1.0\" encoding=\"gb2312\"?>\n>> +<VisualStudioProject\n>> +       ProjectType=\"Visual C++\"\n>> +       Version=\"9.00\"\n>> +       Name=\"git\"\n>> +       ProjectGUID=\"{E3E30E51-C5AD-407B-AB43-985E4111474A}\"\n>> +       RootNamespace=\"git\"\n>> +       Keyword=\"Win32Proj\"\n>> +       TargetFrameworkVersion=\"196613\"\n>> +       >\n>> +       <Platforms>\n>> +               <Platform\n>> +                       Name=\"Win32\"\n>> +               />\n>> +       </Platforms>\n>> +       <ToolFiles>\n>> +       </ToolFiles>\n>> +       <Configurations>\n>> +               <Configuration\n>> +                       Name=\"Debug|Win32\"\n>> +\n>> OutputDirectory=\"$(SolutionDir)$(ConfigurationName)\\bin\"\n>> +                       IntermediateDirectory=\"$(ConfigurationName)\"\n>> +                       ConfigurationType=\"1\"\n>> +                       CharacterSet=\"0\"\n>> +                       >\n>> +                       <Tool\n>> +                               Name=\"VCPreBuildEventTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCCustomBuildTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCXMLDataGeneratorTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCWebServiceProxyGeneratorTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCMIDLTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCCLCompilerTool\"\n>> +                               Optimization=\"0\"\n>> +\n>> AdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n>> +\n>> PreprocessorDefinitions=\"WIN32;_DEBUG;_CONSOLE\"\n>> +                               MinimalRebuild=\"true\"\n>> +                               BasicRuntimeChecks=\"3\"\n>> +                               RuntimeLibrary=\"3\"\n>> +                               UsePrecompiledHeader=\"0\"\n>> +                               WarningLevel=\"3\"\n>> +                               DebugInformationFormat=\"4\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCManagedResourceCompilerTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCResourceCompilerTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCPreLinkEventTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCLinkerTool\"\n>> +                               AdditionalDependencies=\"wininet.lib\n>> ws2_32.lib \"\n>> +                               LinkIncremental=\"2\"\n>> +                               GenerateDebugInformation=\"true\"\n>> +                               SubSystem=\"1\"\n>> +                               TargetMachine=\"1\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCALinkTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCManifestTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCXDCMakeTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCBscMakeTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCFxCopTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCAppVerifierTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCPostBuildEventTool\"\n>> +                       />\n>> +               </Configuration>\n>> +               <Configuration\n>> +                       Name=\"Release|Win32\"\n>> +\n>> OutputDirectory=\"$(SolutionDir)$(ConfigurationName)\\bin\"\n>> +                       IntermediateDirectory=\"$(ConfigurationName)\"\n>> +                       ConfigurationType=\"1\"\n>> +                       CharacterSet=\"0\"\n>> +                       WholeProgramOptimization=\"1\"\n>> +                       >\n>> +                       <Tool\n>> +                               Name=\"VCPreBuildEventTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCCustomBuildTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCXMLDataGeneratorTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCWebServiceProxyGeneratorTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCMIDLTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCCLCompilerTool\"\n>> +                               Optimization=\"2\"\n>> +                               EnableIntrinsicFunctions=\"true\"\n>> +\n>> AdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n>> +\n>> PreprocessorDefinitions=\"WIN32;NDEBUG;_CONSOLE\"\n>> +                               RuntimeLibrary=\"2\"\n>> +                               EnableFunctionLevelLinking=\"true\"\n>> +                               UsePrecompiledHeader=\"0\"\n>> +                               WarningLevel=\"3\"\n>> +                               DebugInformationFormat=\"3\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCManagedResourceCompilerTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCResourceCompilerTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCPreLinkEventTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCLinkerTool\"\n>> +                               AdditionalDependencies=\"wininet.lib\n>> ws2_32.lib \"\n>> +                               LinkIncremental=\"1\"\n>> +                               GenerateDebugInformation=\"true\"\n>> +                               SubSystem=\"1\"\n>> +                               OptimizeReferences=\"2\"\n>> +                               EnableCOMDATFolding=\"2\"\n>> +                               TargetMachine=\"1\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCALinkTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCManifestTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCXDCMakeTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCBscMakeTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCFxCopTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCAppVerifierTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCPostBuildEventTool\"\n>> +                       />\n>> +               </Configuration>\n>> +       </Configurations>\n>> +       <References>\n>> +       </References>\n>> +       <Files>\n>> +               <Filter\n>> +                       Name=\"Source Files\"\n>> +                       Filter=\"cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx\"\n>> +\n>> UniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\"\n>> +                       >\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\git.c\"\n>> +                               >\n>> +                       </File>\n>> +               </Filter>\n>> +               <Filter\n>> +                       Name=\"Header Files\"\n>> +                       Filter=\"h;hpp;hxx;hm;inl;inc;xsd\"\n>> +\n>> UniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\"\n>> +                       >\n>> +               </Filter>\n>> +               <Filter\n>> +                       Name=\"Resource Files\"\n>> +\n>> Filter=\"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav\"\n>> +\n>> UniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\"\n>> +                       >\n>> +               </Filter>\n>> +       </Files>\n>> +       <Globals>\n>> +       </Globals>\n>> +</VisualStudioProject>\n>> diff --git a/compat/vcbuild/libgit/libgit.vcproj\n>> b/compat/vcbuild/libgit/libgit.vcproj\n>> new file mode 100644\n>> index 0000000..bbc3aed\n>> --- /dev/null\n>> +++ b/compat/vcbuild/libgit/libgit.vcproj\n>> @@ -0,0 +1,1347 @@\n>> +<?xml version=\"1.0\" encoding=\"gb2312\"?>\n>> +<VisualStudioProject\n>> +       ProjectType=\"Visual C++\"\n>> +       Version=\"9.00\"\n>> +       Name=\"libgit\"\n>> +       ProjectGUID=\"{F6DEC8C3-B803-4A86-8848-430F08B499E3}\"\n>> +       RootNamespace=\"libgit\"\n>> +       Keyword=\"Win32Proj\"\n>> +       TargetFrameworkVersion=\"196613\"\n>> +       >\n>> +       <Platforms>\n>> +               <Platform\n>> +                       Name=\"Win32\"\n>> +               />\n>> +       </Platforms>\n>> +       <ToolFiles>\n>> +       </ToolFiles>\n>> +       <Configurations>\n>> +               <Configuration\n>> +                       Name=\"Debug|Win32\"\n>> +\n>> OutputDirectory=\"$(SolutionDir)$(ConfigurationName)\"\n>> +                       IntermediateDirectory=\"$(ConfigurationName)\"\n>> +                       ConfigurationType=\"4\"\n>> +                       CharacterSet=\"0\"\n>> +                       >\n>> +                       <Tool\n>> +                               Name=\"VCPreBuildEventTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCCustomBuildTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCXMLDataGeneratorTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCWebServiceProxyGeneratorTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCMIDLTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCCLCompilerTool\"\n>> +                               Optimization=\"0\"\n>> +                               InlineFunctionExpansion=\"1\"\n>> +\n>> AdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n>> +\n>> PreprocessorDefinitions=\"WIN32;_DEBUG;_LIB\"\n>> +                               MinimalRebuild=\"true\"\n>> +                               BasicRuntimeChecks=\"3\"\n>> +                               RuntimeLibrary=\"3\"\n>> +                               UsePrecompiledHeader=\"0\"\n>> +                               WarningLevel=\"3\"\n>> +                               DebugInformationFormat=\"3\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCManagedResourceCompilerTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCResourceCompilerTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCPreLinkEventTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCLibrarianTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCALinkTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCXDCMakeTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCBscMakeTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCFxCopTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCPostBuildEventTool\"\n>> +                       />\n>> +               </Configuration>\n>> +               <Configuration\n>> +                       Name=\"Release|Win32\"\n>> +\n>> OutputDirectory=\"$(SolutionDir)$(ConfigurationName)\"\n>> +                       IntermediateDirectory=\"$(ConfigurationName)\"\n>> +                       ConfigurationType=\"4\"\n>> +                       CharacterSet=\"0\"\n>> +                       WholeProgramOptimization=\"1\"\n>> +                       >\n>> +                       <Tool\n>> +                               Name=\"VCPreBuildEventTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCCustomBuildTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCXMLDataGeneratorTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCWebServiceProxyGeneratorTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCMIDLTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCCLCompilerTool\"\n>> +                               Optimization=\"2\"\n>> +                               InlineFunctionExpansion=\"1\"\n>> +                               EnableIntrinsicFunctions=\"true\"\n>> +\n>> AdditionalIncludeDirectories=\"..\\..\\..;..\\..\\..\\..\\zlib;..\\..;..\\;..\\include;..\\..\\..\\compat;..\\..\\..\\compat\\fnmatch;..\\..\\..\\compat\\regex;.\\\"\n>> +\n>> PreprocessorDefinitions=\"WIN32;NDEBUG;_LIB\"\n>> +                               RuntimeLibrary=\"2\"\n>> +                               EnableFunctionLevelLinking=\"true\"\n>> +                               UsePrecompiledHeader=\"0\"\n>> +                               WarningLevel=\"3\"\n>> +                               DebugInformationFormat=\"3\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCManagedResourceCompilerTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCResourceCompilerTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCPreLinkEventTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCLibrarianTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCALinkTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCXDCMakeTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCBscMakeTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCFxCopTool\"\n>> +                       />\n>> +                       <Tool\n>> +                               Name=\"VCPostBuildEventTool\"\n>> +                       />\n>> +               </Configuration>\n>> +       </Configurations>\n>> +       <References>\n>> +       </References>\n>> +       <Files>\n>> +               <Filter\n>> +                       Name=\"Source Files\"\n>> +                       Filter=\"cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx\"\n>> +\n>> UniqueIdentifier=\"{4FC737F1-C7A5-4376-A066-2A32D752A2FF}\"\n>> +                       >\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\msvc.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\mozilla-sha1\\sha1.c\"\n>> +                               >\n>> +                       </File>\n>> +               </Filter>\n>> +               <Filter\n>> +                       Name=\"Header Files\"\n>> +                       Filter=\"h;hpp;hxx;hm;inl;inc;xsd\"\n>> +\n>> UniqueIdentifier=\"{93995380-89BD-4b04-88EB-625FBE52EBFB}\"\n>> +                       >\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\archive.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\attr.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\blob.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\branch.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\bundle.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\cache-tree.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\cache.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\color.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\commit.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\csum-file.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\decorate.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\delta.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diff.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diffcore.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\dir.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\exec_cmd.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\fetch-pack.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\fsck.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\git-compat-util.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\graph.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\grep.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\hash.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\help.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\http.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\levenshtein.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\list-objects.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\ll-merge.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\log-tree.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\mailmap.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\merge-recursive.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\notes.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\object.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pack-refs.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pack-revindex.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pack.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\parse-options.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\patch-ids.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pkt-line.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\progress.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\quote.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\reachable.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\reflog-walk.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\refs.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\remote.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\rerere.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\revision.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\run-command.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\send-pack.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\sha1-lookup.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\shortlog.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\sideband.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\sigchain.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\strbuf.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\string-list.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\tag.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\tar.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\thread-utils.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\transport.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\tree-walk.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\tree.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\unpack-trees.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\userdiff.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\utf8.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\walker.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\wt-status.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff-interface.h\"\n>> +                               >\n>> +                       </File>\n>> +               </Filter>\n>> +               <Filter\n>> +                       Name=\"Resource Files\"\n>> +\n>> Filter=\"rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav\"\n>> +\n>> UniqueIdentifier=\"{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}\"\n>> +                       >\n>> +               </Filter>\n>> +               <Filter\n>> +                       Name=\"compat\"\n>> +                       >\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\basename.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\cygwin.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\compat\\fnmatch\\fnmatch.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\compat\\fnmatch\\fnmatch.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\fopen.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\memmem.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\mingw.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\mingw.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\mkdtemp.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\mkstemps.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\pread.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\qsort.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\compat\\regex\\regex.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\compat\\regex\\regex.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\setenv.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\snprintf.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\compat\\strcasestr.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\strlcpy.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\strtoumax.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\unsetenv.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\win32.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\win32mmap.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\compat\\winansi.c\"\n>> +                               >\n>> +                       </File>\n>> +               </Filter>\n>> +               <Filter\n>> +                       Name=\"git\"\n>> +                       >\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\abspath.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\alias.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\alloc.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\archive-tar.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\archive-zip.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\archive.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\attr.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\base85.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\bisect.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\blob.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\branch.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-add.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-annotate.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-apply.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-archive.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-bisect--helper.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-blame.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-branch.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-bundle.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-cat-file.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-check-attr.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-check-ref-format.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-checkout-index.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-checkout.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-clean.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-clone.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-commit-tree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-commit.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-config.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-count-objects.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-describe.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-diff-files.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-diff-index.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-diff-tree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-diff.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-fast-export.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-fetch--tool.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-fetch-pack.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-fetch.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-fmt-merge-msg.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-for-each-ref.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-fsck.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-gc.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-grep.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-help.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-init-db.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-log.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-ls-files.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-ls-remote.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-ls-tree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-mailinfo.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-mailsplit.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-merge-base.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-merge-file.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-merge-ours.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-merge-recursive.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-merge.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-mktree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-mv.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-name-rev.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-pack-objects.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-pack-refs.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-prune-packed.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-prune.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-push.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-read-tree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-receive-pack.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-reflog.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-remote.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-rerere.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-reset.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-rev-list.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-rev-parse.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-revert.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-rm.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-send-pack.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-shortlog.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-show-branch.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-show-ref.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-stripspace.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-symbolic-ref.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-tag.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\builtin-tar-tree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-unpack-objects.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-update-index.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-update-ref.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-upload-archive.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-verify-pack.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-verify-tag.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +\n>> RelativePath=\"..\\..\\..\\builtin-write-tree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\bundle.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\cache-tree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\color.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\combine-diff.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\commit.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\config.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\connect.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\convert.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\copy.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\csum-file.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\ctype.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\date.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\decorate.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diff-delta.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diff-lib.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diff-no-index.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diff.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diffcore-break.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diffcore-delta.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diffcore-order.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diffcore-pickaxe.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\diffcore-rename.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\dir.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\editor.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\entry.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\environment.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\exec_cmd.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\fsck.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\graph.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\grep.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\hash.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\help.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\ident.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\levenshtein.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\list-objects.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\ll-merge.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\lockfile.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\log-tree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\mailmap.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\match-trees.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\merge-file.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\merge-recursive.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\merge-tree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\name-hash.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\object.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pack-check.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pack-refs.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pack-revindex.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pack-write.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pager.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\parse-options.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\patch-delta.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\patch-ids.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\path.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pkt-line.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\preload-index.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\pretty.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\progress.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\quote.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\reachable.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\read-cache.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\reflog-walk.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\refs.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\remote.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\rerere.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\revision.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\run-command.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\server-info.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\setup.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\sha1-lookup.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\sha1_file.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\sha1_name.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\shallow.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\sideband.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\sigchain.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\strbuf.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\string-list.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\symlinks.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\tag.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\thread-utils.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\trace.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\transport.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\tree-diff.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\tree-walk.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\tree.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\unpack-trees.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\usage.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\userdiff.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\utf8.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\walker.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\wrapper.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\write_or_die.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\ws.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\wt-status.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff-interface.c\"\n>> +                               >\n>> +                       </File>\n>> +               </Filter>\n>> +               <Filter\n>> +                       Name=\"xdiff\"\n>> +                       >\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xdiff.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xdiffi.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xdiffi.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xemit.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xemit.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xinclude.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xmacros.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xmerge.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xpatience.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xprepare.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xprepare.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xtypes.h\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xutils.c\"\n>> +                               >\n>> +                       </File>\n>> +                       <File\n>> +                               RelativePath=\"..\\..\\..\\xdiff\\xutils.h\"\n>> +                               >\n>> +                       </File>\n>> +               </Filter>\n>> +       </Files>\n>> +       <Globals>\n>> +       </Globals>\n>> +</VisualStudioProject>\n>> --\n>> 1.6.4.msysgit.0\n>>\n>> --\n>> To unsubscribe from this list: send the line \"unsubscribe git\" in\n>> the body of a message to majordomo@vger.kernel.org\n>> More majordomo info at  http://vger.kernel.org/majordomo-info.html\n>>\n>\n>\n"},{"id":"121011","messageId":"a4c8a6d00908171532n4406c7fcv59bce443c3203dbe@mail.gmail.com","threadId":"20640","inReplyTo":"4A89D807.1080202@gnu.org","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2009-08-17T22:32:07Z","receivedAt":"2009-08-17T22:32:07Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"What about the common-cmds.h that is in the builtin-help.c? How it will be\ngenerated?I followed the instruction in ReadMe, but I couldn't compile\nbecause of this \"missing\" file.\n"},{"id":"121010","messageId":"a4c8a6d00908171533n7db1a6d4o60f9a2e38c466f06@mail.gmail.com","threadId":"20640","inReplyTo":"4A89D807.1080202@gnu.org","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2009-08-17T22:33:32Z","receivedAt":"2009-08-17T22:33:32Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"What about the common-cmds.h that is in the builtin-help.c? How it will be\ngenerated? I followed the instruction in ReadMe, but I couldn't compile\nbecause of this \"missing\" file.\n"},{"id":"121015","messageId":"alpine.DEB.1.00.0908180036260.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"a4c8a6d00908171527m778c12fq30d672d3c75cea77@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T22:39:07Z","receivedAt":"2009-08-17T22:39:07Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nHi,\n\nOn Mon, 17 Aug 2009, Thiago Farina wrote:\n\n> What about the common-cmds.h that is included in builtin-help.c? How it will\n> be generated?\n> I followed the instructions in ReadMe, then I can't compile because of this\n> \"missing\" file.\n\nThiago, you do not want to top-post in both of the mailing-lists you sent \nto.  And you certainly do _not_ want to send 200K of unanswered, quoted \ntext:\n\n> On Mon, Aug 17, 2009 at 1:05 PM, Frank Li <lznuaa@gmail.com> wrote:\n>\n> [200K that were not needed for Thiago's question]\n\nSorry, but I do not feel inclined to respond to your question if you do \nnot want to adher to netiquette that you must have seen when you first \nposted to the msysGit mailing list.\n\nCiao,\nDscho\n"},{"id":"121016","messageId":"3af572ac0908171544w36e98bd7g282660d54a37e872@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908172306080.8306@pacific.mpi-cbg.de","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T22:44:33Z","receivedAt":"2009-08-17T22:44:33Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"(Sorry for answering some parts now, I didn't realize this text was\nthere before)\n\n> But here's a clue: you will probably _never_ succeed in getting a\n> replacement of the make-based build in git.git by the maintainer.  Make is\n> just too ubiquitous and well-established for that.\n\nCMake does not replace Make, it runs a step before CMake\n\n\nCMakeLists.txt\n     |\n     |\n     |\n     v\n  Makefile/.vcproj/Eclipse/XCode project/NMakefile\n     |\n     |\n     |\n     v\n gcc/VC++/SunCC/whatever\n     |\n     |\n     v\n   ld/link.exe/whatever\n\n(see page 10 in my slides for a nicer version :-) )\n\n> If you succeed, I will ask you to do the same for Python, as you clearly\n> proved by that point that you are a magician.\n\nI can't do any Python whatsoever, sorry :-)\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"121017","messageId":"a4c8a6d00908171550t357890f2i6f087b1acf135aff@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908180036260.8306@pacific.mpi-cbg.de","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Thiago Farina","fromEmail":"tfransosi@gmail.com","sentAt":"2009-08-17T22:50:43Z","receivedAt":"2009-08-17T22:50:43Z","isPatch":true,"sender":{"key":"tfransosi@gmail.com","avatar":"https://avatars.githubusercontent.com/u/970071?v=4"},"body":"On Mon, Aug 17, 2009 at 7:39 PM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n> Hi,\n>\n> On Mon, 17 Aug 2009, Thiago Farina wrote:\n>\n>> What about the common-cmds.h that is included in builtin-help.c? How it will\n>> be generated?\n>> I followed the instructions in ReadMe, then I can't compile because of this\n>> \"missing\" file.\n>\n> Thiago, you do not want to top-post in both of the mailing-lists you sent\n> to.  And you certainly do _not_ want to send 200K of unanswered, quoted\n> text:\n>\nI tried to don't do this(top-post), but things goes bad again .\n>> On Mon, Aug 17, 2009 at 1:05 PM, Frank Li <lznuaa@gmail.com> wrote:\n>>\n>> [200K that were not needed for Thiago's question]\n>\n> Sorry, but I do not feel inclined to respond to your question if you do\n> not want to adher to netiquette that you must have seen when you first\n> posted to the msysGit mailing list.\n>\n> Ciao,\n> Dscho\n>\n>\n"},{"id":"121018","messageId":"3af572ac0908171600s7aa7b21ftf95fde92246bf75f@mail.gmail.com","threadId":"20640","inReplyTo":"4A89D909.9050700@gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-17T23:00:28Z","receivedAt":"2009-08-17T23:00:28Z","isPatch":true,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Tue, Aug 18, 2009 at 12:26 AM, Johan 't Hart<johanthart@gmail.com> wrote:\n> Johannes Schindelin schreef:\n>\n>> Having said that, a CMake-based system _in addition_ to what is\n>> tried-and-tested to be able to support all those different kinds of\n>> Microsoft Visual Studio (took me 3 attempts to write that without a\n>> Freudian) would be welcome, _if_ you succeed in making it compile out of the\n>> box on msysGit.\n>\n> That would require (I think) that CMake is build by the msysgit gcc tools\n> available in msysgit, since CMake can't be build by VS right? Pau do you\n> think that is possible?\n\nCMake can certainly be built by VC++ but you need CMake to do that,\nVC++-CMake cannot be bootstrapped.\n\nWould it be OK to download a binary version of CMake instead of / in\naddition to the source? (I'm not familiar with the 'release.sh' stuff\nyet)\n\n> It would be fun. Download the msysgit netinstaller, set it up, install it,\n> and after that, CMake is bootstrapped, and the visual studio .vcproj files\n> are generated and everyone (VS developers and msys developers) are ready to\n> go!\n\nThat'd be right, if I have understood what the netinstaller does (I've\nnever used it yet).\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"121026","messageId":"alpine.DEB.1.00.0908180139000.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"3af572ac0908171600s7aa7b21ftf95fde92246bf75f@mail.gmail.com","subject":"Re: [PATCH 10/11] Add MSVC Project file","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-17T23:40:48Z","receivedAt":"2009-08-17T23:40:48Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nHi,\n\nOn Tue, 18 Aug 2009, Pau Garcia i Quiles wrote:\n\n> On Tue, Aug 18, 2009 at 12:26 AM, Johan 't Hart<johanthart@gmail.com> wrote:\n> > Johannes Schindelin schreef:\n> >\n> >> Having said that, a CMake-based system _in addition_ to what is \n> >> tried-and-tested to be able to support all those different kinds of \n> >> Microsoft Visual Studio (took me 3 attempts to write that without a \n> >> Freudian) would be welcome, _if_ you succeed in making it compile out \n> >> of the box on msysGit.\n> >\n> > That would require (I think) that CMake is build by the msysgit gcc \n> > tools available in msysgit, since CMake can't be build by VS right? \n> > Pau do you think that is possible?\n> \n> CMake can certainly be built by VC++ but you need CMake to do that, \n> VC++-CMake cannot be bootstrapped.\n> \n> Would it be OK to download a binary version of CMake instead of / in\n> addition to the source? (I'm not familiar with the 'release.sh' stuff\n> yet)\n\nWell, as I tried to establish msysGit as _the_ Git for Windows, I would be \nwilling to created download bundles for Microsoft Visual C++ users, but \nonly if the hassle is not big enough.\n\nRead: if the procedure is a script that does not need to be supervised \nuntil it created a .zip or .7z file, I'm all for it.\n\n> > It would be fun. Download the msysgit netinstaller, set it up, install \n> > it, and after that, CMake is bootstrapped, and the visual studio \n> > .vcproj files are generated and everyone (VS developers and msys \n> > developers) are ready to go!\n> \n> That'd be right, if I have understood what the netinstaller does (I've\n> never used it yet).\n\nOr that.\n\nCiao,\nDscho\n"},{"id":"121044","messageId":"1976ea660908171851n16b8b56j378ace9ecf0ce272@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908171859060.4991@intel-tinevez-2-302","subject":"Re: [PATCH 08/11] Place __stdcall to correct position.","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-18T01:51:34Z","receivedAt":"2009-08-18T01:51:34Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"> How about \"... to the correct ...\" and \"MSVC requires _stdcall to be\n> between return value...\" and \"All Win32 API functions are declared with\n> the WINAPI attribute.\"?\n\nWINAPI always like\n\nBOOL WINAPI function_name(xxx);\nIt compile fail if WINAPI BOOL function_name(xxx);\n\n>>  #if defined(__MINGW32__) || defined(_MSC_VER)\n>> -static __stdcall unsigned run_thread(void *data)\n>> +static unsigned __stdcall run_thread(void *data)\n>>  {\n>>       struct async *async = data;\n>>       return async->proc(async->fd_for_proc, async->data);\n>>  }\n>> -#endif\n>> +#endif /* __MINGW32__ || _MSC_VER */\n>\n> I do not think this is necessary.  There are only 5 lines wrapped into\n> those #ifdef guards, the developer should be able to see that far.\n>\nDo you means remove /* __MINGW32__ || _MSC_VER */?\n"},{"id":"121045","messageId":"1976ea660908171902ubf04991x7d6890d4d9accd9a@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908171856290.4991@intel-tinevez-2-302","subject":"Re: [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-18T02:02:17Z","receivedAt":"2009-08-18T02:02:17Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"\n> How about this instead?\n>\n>        mingw.c: Use the O_BINARY flag to open files\n>\n>        On Windows, non-text files must be opened using the O_BINARY flag.\n>        MinGW does this for us automatically, but Microsoft Visual C++\n>        does not.\n>\n>        Also, Johannes said that this would be a nice cleanup.\n>\n\nOkay, Do you need me change commit comments to resubmit patch?\n\n> BTW what about fopen()?\n\nI never found problem at fopen, I will double check it.\n\n>\n> Patch is obviously good.\n>\n> Ciao,\n> Dscho\n>\n"},{"id":"121046","messageId":"1976ea660908171915v62fb6c40j17f750cac9836433@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908171902300.4991@intel-tinevez-2-302","subject":"Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Frank Li","fromEmail":"lznuaa@gmail.com","sentAt":"2009-08-18T02:15:51Z","receivedAt":"2009-08-18T02:15:51Z","isPatch":true,"sender":{"key":"lznuaa@gmail.com","avatar":"https://avatars.githubusercontent.com/u/40642?v=4"},"body":"\n>> Add unix head file, dirent.h, unistd.h  and time.h\n>\n> These are copied from somewhere.  From where?  What is the license?\n\nIt comes from msys,  which used to build msysgit.\n\n>> Add MSVC special porting head file msvc.h and msvc.c.\n>\n> This is added by you.  Logically, that should be a separate patch.\n\nOkay I will split.\n\n>> +#define NO_MEMMEM\n>> +#define NO_C99_FORMAT\n>> +#define NO_STRTOUMAX\n>> +#define NO_MKDTEMP\n>> +#define NO_MKSTEMPS\n>> +\n>> +#define RUNTIME_PREFIX\n>> +#define NO_ST_BLOCKS_IN_STRUCT_STAT\n>> +#define NO_NSEC\n>> +#define USE_WIN32_MMAP\n>> +#define USE_NED_ALLOCATOR\n>> +\n>> +#define NO_REGEX\n>> +\n>> +#define NO_SYS_SELECT_H\n>> +#define NO_PTHEADS\n>> +#define HAVE_STRING_H 1\n>> +#define STDC_HEADERS\n>> +#define NO_ICONV\n>\n> These would normally be defined in the Makefile.  You might want to state\n> that in a comment.\n>\n> Or maybe move the definitions (along with vsnprintf) to the .vcproj file,\n> which is the logical pendant of the Makefile?\n\nI really want to in .vcproj.  but the same context needs to copy\nDEBUG\\RELEASE 32\\64bit, libgit.vcproj and git.vcproj. 8 place needs\ncopy.  To avoid copy in vcproj file, I move it hear.\n"},{"id":"121068","messageId":"alpine.DEB.1.00.0908181134500.4680@intel-tinevez-2-302","threadId":"20640","inReplyTo":"1976ea660908171851n16b8b56j378ace9ecf0ce272@mail.gmail.com","subject":"Re: [PATCH 08/11] Place __stdcall to correct position.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-18T09:36:19Z","receivedAt":"2009-08-18T09:36:19Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Frank Li wrote:\n\n> > How about \"... to the correct ...\" and \"MSVC requires _stdcall to be\n> > between return value...\" and \"All Win32 API functions are declared with\n> > the WINAPI attribute.\"?\n> \n> WINAPI always like\n> \n> BOOL WINAPI function_name(xxx);\n> It compile fail if WINAPI BOOL function_name(xxx);\n\nOh, okay, so let's say\n\n\tFurthermore, Microsoft Visual C++ requires the order\n\n\t\tBOOL WINAPI function();\n\n\tinstead of\n\n\t\tWINAPI BOOL function();\n\n> >>  #if defined(__MINGW32__) || defined(_MSC_VER)\n> >> -static __stdcall unsigned run_thread(void *data)\n> >> +static unsigned __stdcall run_thread(void *data)\n> >>  {\n> >>       struct async *async = data;\n> >>       return async->proc(async->fd_for_proc, async->data);\n> >>  }\n> >> -#endif\n> >> +#endif /* __MINGW32__ || _MSC_VER */\n> >\n> > I do not think this is necessary.  There are only 5 lines wrapped into\n> > those #ifdef guards, the developer should be able to see that far.\n> >\n> Do you means remove /* __MINGW32__ || _MSC_VER */?\n\nI was talking about this change:\n\n> -#endif\n> +#endif /* __MINGW32__ || _MSC_VER */\n\nwhich is IMHO distracting rather than helpful.\n\nCiao,\nDscho\n\n"},{"id":"121069","messageId":"alpine.DEB.1.00.0908181136420.4680@intel-tinevez-2-302","threadId":"20640","inReplyTo":"1976ea660908171902ubf04991x7d6890d4d9accd9a@mail.gmail.com","subject":"Re: [PATCH 07/11] Add O_BINARY flag to open flag at mingw.c","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-18T09:40:35Z","receivedAt":"2009-08-18T09:40:35Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Frank Li wrote:\n\n> > How about this instead?\n> >\n> >        mingw.c: Use the O_BINARY flag to open files\n> >\n> >        On Windows, non-text files must be opened using the O_BINARY flag.\n> >        MinGW does this for us automatically, but Microsoft Visual C++\n> >        does not.\n> >\n> >        Also, Johannes said that this would be a nice cleanup.\n> >\n> \n> Okay, Do you need me change commit comments to resubmit patch?\n\nHow about updating your branch at tgit.git with the new commit \nmessages first?  (Use rebase -i...)\n\n> > BTW what about fopen()?\n> \n> I never found problem at fopen, I will double check it.\n\nWell, it is better to be sure, not by testing it, but rather by inspecting \nthe code paths.  Is there any way Git wants to open a binary file with \nfopen()?  If so, it cannot use the modes \"r\" and \"w\" there, but must use \n\"rb\" and \"wb\".\n\nIt gets doubly complicated if there are code paths that _want_ to open \ntext files (such as .git/config), which are user-writable, so they could \n(in theory) contain CR/LF line endings.\n\nCiao,\nDscho\n\n>\n> >\n> > Patch is obviously good.\n> >\n> > Ciao,\n> > Dscho\n> >\n>\n\nP.S.: please remove such quoted text, it is totally uninteresting in this \ncontext (you do not reply to it, either). "},{"id":"121071","messageId":"alpine.DEB.1.00.0908181140460.4680@intel-tinevez-2-302","threadId":"20640","inReplyTo":"1976ea660908171915v62fb6c40j17f750cac9836433@mail.gmail.com","subject":"Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-18T09:47:46Z","receivedAt":"2009-08-18T09:47:46Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Frank Li wrote:\n\n> >> Add unix head file, dirent.h, unistd.h  and time.h\n> >\n> > These are copied from somewhere.  From where?  What is the license?\n> \n> It comes from msys,  which used to build msysgit.\n\nI know.  After reading the patch.  But it would be better if everybody \nknew after reading the commit message...  _Especially_ in this \nincreasingly lawsuit-defined business, it is very nice to see early that \nthe files you are including here are in the public domain, and come from \nMSys.\n\n> I really want to in .vcproj.  but the same context needs to copy\n> DEBUG\\RELEASE 32\\64bit, libgit.vcproj and git.vcproj. 8 place needs\n> copy.  To avoid copy in vcproj file, I move it hear.\n\nAs I said earlier, there are common flags, but as I also said, it is \nprobably better to keep the #define's in a header file for better \nvisibility and editability, albeit in logically clustered blocks (i.e. all \nthe NO_* and other #define's that affect what source code is \ncompiled, all default paths in another cluster, #define's to bow before \nMicrosoft's C runtime's decision to deprecate the C99 standard function \nnames, etc)\n\nBTW it is funny that your typos seem to be influenced by the _sound_ of \nthe word (\"hear\" instead of \"here\"), rather than just simple transposed \nletters... most of my typos are the same ;-)\n\nCiao,\nDscho\n"},{"id":"121077","messageId":"7v4os5jtd9.fsf@alter.siamese.dyndns.org","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908181140460.4680@intel-tinevez-2-302","subject":"Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-08-18T10:42:26Z","receivedAt":"2009-08-18T10:42:26Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n\n> Hi,\n>\n> On Tue, 18 Aug 2009, Frank Li wrote:\n>\n>> >> Add unix head file, dirent.h, unistd.h  and time.h\n>> >\n>> > These are copied from somewhere.  From where?  What is the license?\n>> \n>> It comes from msys,  which used to build msysgit.\n>\n> I know.  After reading the patch.  But it would be better if everybody \n> knew after reading the commit message...  _Especially_ in this \n> increasingly lawsuit-defined business, it is very nice to see early that \n> the files you are including here are in the public domain, and come from \n> MSys.\n\nAnd there was this line in the snarfed file:\n\n    * No warranty is given; refer to the file DISCLAIMER within the package.\n\nbut there no DISCLAIMER file (perhaps a separate patch added it, but I\nsomehow doubt it).\n\n> As I said earlier, there are common flags, but as I also said, it is \n> probably better to keep the #define's in a header file for better \n> visibility and editability, albeit in logically clustered blocks (i.e. all \n> the NO_* and other #define's that affect what source code is \n> compiled, all default paths in another cluster, #define's to bow before \n> Microsoft's C runtime's decision to deprecate the C99 standard function \n> names, etc)\n\n... and that can live in a separate header file to reduce clutter and\nshield people who do not need to look at MSC related code, no?\n"},{"id":"121096","messageId":"1250600335-8642-1-git-send-email-mstormo@gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908172149480.8306@pacific.mpi-cbg.de","subject":"[RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-18T12:58:55Z","receivedAt":"2009-08-18T12:58:55Z","isPatch":false,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"From: Marius Storm-Olsen <mstormo@gmail.com>\n\nBy using GNU Make we can also compile with the MSVC toolchain.\nThis is a rudementary patch, only meant as an RFC for now!!\n\n!! DO NOT COMMIT THIS UPSTREAM !!\n---\n So, instead of rely on these vcproj files which *will* go stale, we can\n simply use the same Makefile system which everyone else is using. :)\n After all, we're just compiling with a different compiler. The end result\n will still rely on the *msysGit environment* to function, so we already\n require it. Thus, GNU Make is present, and we can use it.\n\n This implementation is a quick hack to make it compile (hence the RFC\n subject), so please don't even consider basing anything ontop of it ;)\n\n But, do point out all the do's and don'ts, and I'll try to polish it up\n to something which we can add to Frank's series..\n \n\n Makefile      |   97 +++++++++++++++++++++++++++++++++++++++++++++++---------\n compat/msvc.h |   77 +++++++++++++++++++++++++++++++++++++++++++++\n 2 files changed, 158 insertions(+), 16 deletions(-)\n\ndiff --git a/Makefile b/Makefile\nindex daf4296..2e14976 100644\n--- a/Makefile\n+++ b/Makefile\n@@ -214,9 +214,13 @@ uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')\n \n CFLAGS = -g -O2 -Wall\n LDFLAGS =\n+ARFLAGS = rcs\\ # whitespace intentional\n ALL_CFLAGS = $(CFLAGS)\n ALL_LDFLAGS = $(LDFLAGS)\n STRIP ?= strip\n+COMPFLAG = -c\n+COBJFLAG = -o\\ # whitespace intended\n+LOBJFLAG = -o\\ # whitespace intended\n \n # Among the variables below, these:\n #   gitexecdir\n@@ -874,6 +878,58 @@ ifneq (,$(findstring CYGWIN,$(uname_S)))\n \tCOMPAT_OBJS += compat/cygwin.o\n \tUNRELIABLE_FSTAT = UnfortunatelyYes\n endif\n+ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))\n+\tpathsep = ;\n+\tMOZILLA_SHA1 = 1\n+\tNO_PREAD = YesPlease\n+\tNO_OPENSSL = YesPlease\n+\tNO_LIBGEN_H = YesPlease\n+\tNO_SYMLINK_HEAD = YesPlease\n+\tNO_IPV6 = YesPlease\n+\tNO_SETENV = YesPlease\n+\tNO_UNSETENV = YesPlease\n+\tNO_STRCASESTR = YesPlease\n+\tNO_STRLCPY = YesPlease\n+\tNO_MEMMEM = YesPlease\n+\tNEEDS_LIBICONV = YesPlease\n+\tOLD_ICONV = YesPlease\n+\tNO_C99_FORMAT = YesPlease\n+\tNO_STRTOUMAX = YesPlease\n+\tNO_MKDTEMP = YesPlease\n+\tNO_MKSTEMPS = YesPlease\n+\tSNPRINTF_RETURNS_BOGUS = YesPlease\n+\tNO_SVN_TESTS = YesPlease\n+\tNO_PERL_MAKEMAKER = YesPlease\n+\tRUNTIME_PREFIX = YesPlease\n+\tNO_POSIX_ONLY_PROGRAMS = YesPlease\n+\tNO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease\n+\tNO_NSEC = YesPlease\n+\tUSE_WIN32_MMAP = YesPlease\n+\tUNRELIABLE_FSTAT = UnfortunatelyYes\n+\tOBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo\n+\tNO_REGEX = YesPlease\n+\n+\tNO_CURL = YesPlease\n+\tNO_PTHREADS = YesPlease\n+        \n+\tCC = cl \n+\tCOBJFLAG = -Fo\n+\tLOBJFLAG = -OUT:\n+\tCFLAGS =\n+\tBASIC_CFLAGS += -nologo -MT -I. -I../zlib -Icompat/vcbuild -Icompat/vcbuild/include -DWIN32 -D_CONSOLE\n+\tCOMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/fnmatch -Icompat/regex -Icompat/fnmatch\n+\tCOMPAT_OBJS += compat/mingw.o compat/msvc.o compat/fnmatch/fnmatch.o compat/winansi.o\n+\tCOMPAT_CFLAGS += -DSTRIP_EXTENSION=\\\".exe\\\"\n+\n+\tLINK = link\n+\tBASIC_LDFLAGS += -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib ../zlib/projects/vc9/Win32_LIB_Release/zlib.lib\n+\tNO_CFLAGS_TO_LINKER = YesPlease\n+\tEXTLIBS = \n+\tAR = lib\n+\tARFLAGS = -OUT:\n+\n+\tX = .exe\n+else\n ifneq (,$(findstring MINGW,$(uname_S)))\n \tpathsep = ;\n \tNO_PREAD = YesPlease\n@@ -922,6 +978,7 @@ else\n \tNO_PTHREADS = YesPlease\n endif\n endif\n+endif\n ifneq (,$(findstring arm,$(uname_M)))\n \tARM_SHA1 = YesPlease\n \tNO_MKSTEMPS = YesPlease\n@@ -1298,6 +1355,14 @@ LIB_OBJS += $(COMPAT_OBJS)\n ALL_CFLAGS += $(BASIC_CFLAGS)\n ALL_LDFLAGS += $(BASIC_LDFLAGS)\n \n+ifndef LINK\n+LINK = $(CC)\n+endif\n+\n+ifndef NO_CFLAGS_TO_LINKER\n+LINKER_CFLAGS += $(ALL_CFLAGS)\n+endif\n+\n export TAR INSTALL DESTDIR SHELL_PATH\n \n \n@@ -1331,14 +1396,14 @@ strip: $(PROGRAMS) git$X\n git.o: git.c common-cmds.h GIT-CFLAGS\n \t$(QUIET_CC)$(CC) -DGIT_VERSION='\"$(GIT_VERSION)\"' \\\n \t\t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"' \\\n-\t\t$(ALL_CFLAGS) -c $(filter %.c,$^)\n+\t\t$(ALL_CFLAGS) $(COMPFLAG) $(COBJFLAG)git.o $(filter %.c,$^)\n \n git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)\n-\t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \\\n+\t$(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ git.o \\\n \t\t$(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)\n \n builtin-help.o: builtin-help.c common-cmds.h GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \\\n+\t$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) \\\n \t\t'-DGIT_HTML_PATH=\"$(htmldir_SQ)\"' \\\n \t\t'-DGIT_MAN_PATH=\"$(mandir_SQ)\"' \\\n \t\t'-DGIT_INFO_PATH=\"$(infodir_SQ)\"' $<\n@@ -1450,44 +1515,44 @@ git.o git.spec \\\n \t: GIT-VERSION-FILE\n \n %.o: %.c GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n+\t$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) $<\n %.s: %.c GIT-CFLAGS\n \t$(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $<\n %.o: %.S\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<\n+\t$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) $<\n \n exec_cmd.o: exec_cmd.c GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) \\\n+\t$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) \\\n \t\t'-DGIT_EXEC_PATH=\"$(gitexecdir_SQ)\"' \\\n \t\t'-DBINDIR=\"$(bindir_relative_SQ)\"' \\\n \t\t'-DPREFIX=\"$(prefix_SQ)\"' \\\n \t\t$<\n \n builtin-init-db.o: builtin-init-db.c GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DDEFAULT_GIT_TEMPLATE_DIR='\"$(template_dir_SQ)\"' $<\n+\t$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) -DDEFAULT_GIT_TEMPLATE_DIR='\"$(template_dir_SQ)\"' $<\n \n config.o: config.c GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DETC_GITCONFIG='\"$(ETC_GITCONFIG_SQ)\"' $<\n+\t$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) -DETC_GITCONFIG='\"$(ETC_GITCONFIG_SQ)\"' $<\n \n http.o: http.c GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DGIT_USER_AGENT='\"git/$(GIT_VERSION)\"' $<\n+\t$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) -DGIT_USER_AGENT='\"git/$(GIT_VERSION)\"' $<\n \n ifdef NO_EXPAT\n http-walker.o: http-walker.c http.h GIT-CFLAGS\n-\t$(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DNO_EXPAT $<\n+\t$(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) -DNO_EXPAT $<\n endif\n \n git-%$X: %.o $(GITLIBS)\n-\t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)\n+\t$(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)\n \n git-imap-send$X: imap-send.o $(GITLIBS)\n-\t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n+\t$(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n \t\t$(LIBS) $(OPENSSL_LINK) $(OPENSSL_LIBSSL)\n \n http.o http-walker.o http-push.o transport.o: http.h\n \n git-http-push$X: revision.o http.o http-push.o $(GITLIBS)\n-\t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n+\t$(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ $(ALL_LDFLAGS) $(filter %.o,$^) \\\n \t\t$(LIBS) $(CURL_LIBCURL) $(EXPAT_LIBEXPAT)\n \n $(LIB_OBJS) $(BUILTIN_OBJS): $(LIB_H)\n@@ -1495,7 +1560,7 @@ $(patsubst git-%$X,%.o,$(PROGRAMS)) git.o: $(LIB_H) $(wildcard */*.h)\n builtin-revert.o wt-status.o: wt-status.h\n \n $(LIB_FILE): $(LIB_OBJS)\n-\t$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIB_OBJS)\n+\t$(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS)$@ $(LIB_OBJS)\n \n XDIFF_OBJS=xdiff/xdiffi.o xdiff/xprepare.o xdiff/xutils.o xdiff/xemit.o \\\n \txdiff/xmerge.o xdiff/xpatience.o\n@@ -1503,7 +1568,7 @@ $(XDIFF_OBJS): xdiff/xinclude.h xdiff/xmacros.h xdiff/xdiff.h xdiff/xtypes.h \\\n \txdiff/xutils.h xdiff/xprepare.h xdiff/xdiffi.h xdiff/xemit.h\n \n $(XDIFF_LIB): $(XDIFF_OBJS)\n-\t$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(XDIFF_OBJS)\n+\t$(QUIET_AR)$(RM) $@ && $(AR) $(ARFLAGS)$@ $(XDIFF_OBJS)\n \n \n doc:\n@@ -1605,7 +1670,7 @@ test-parse-options.o: parse-options.h\n .PRECIOUS: $(patsubst test-%$X,test-%.o,$(TEST_PROGRAMS))\n \n test-%$X: test-%.o $(GITLIBS)\n-\t$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)\n+\t$(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ $(ALL_LDFLAGS) $(filter %.o,$^) $(LIBS)\n \n check-sha1:: test-sha1$X\n \t./test-sha1.sh\ndiff --git a/compat/msvc.h b/compat/msvc.h\nindex 6071565..a9d5f7f 100644\n--- a/compat/msvc.h\n+++ b/compat/msvc.h\n@@ -10,50 +10,120 @@\n \n /*Configuration*/\n \n+#ifndef NO_PREAD\n #define NO_PREAD\n+#endif\n+#ifndef NO_OPENSSL\n #define NO_OPENSSL\n+#endif\n+#ifndef NO_LIBGEN_H\n #define NO_LIBGEN_H\n+#endif\n+#ifndef NO_SYMLINK_HEAD\n #define NO_SYMLINK_HEAD\n+#endif\n+#ifndef NO_IPV6\n #define NO_IPV6\n+#endif\n+#ifndef NO_SETENV\n #define NO_SETENV\n+#endif\n+#ifndef NO_UNSETENV\n #define NO_UNSETENV\n+#endif\n+#ifndef NO_STRCASESTR\n #define NO_STRCASESTR\n+#endif\n+#ifndef NO_STRLCPY\n #define NO_STRLCPY\n+#endif\n+#ifndef NO_MEMMEM\n #define NO_MEMMEM\n+#endif\n+#ifndef NO_C99_FORMAT\n #define NO_C99_FORMAT\n+#endif\n+#ifndef NO_STRTOUMAX\n #define NO_STRTOUMAX\n+#endif\n+#ifndef NO_MKDTEMP\n #define NO_MKDTEMP\n+#endif\n+#ifndef NO_MKSTEMPS\n #define NO_MKSTEMPS\n+#endif\n \n+\n+#ifndef RUNTIME_PREFIX\n #define RUNTIME_PREFIX\n+#endif\n+#ifndef NO_ST_BLOCKS_IN_STRUCT_STAT\n #define NO_ST_BLOCKS_IN_STRUCT_STAT\n+#endif\n+#ifndef NO_NSEC\n #define NO_NSEC\n+#endif\n+#ifndef USE_WIN32_MMAP\n #define USE_WIN32_MMAP\n+#endif\n+#ifndef USE_NED_ALLOCATOR\n #define USE_NED_ALLOCATOR\n+#endif\n+\n \n+#ifndef NO_REGEX\n #define NO_REGEX\n+#endif\n \n+\n+#ifndef NO_SYS_SELECT_H\n #define NO_SYS_SELECT_H\n+#endif\n+#ifndef NO_PTHEADS\n #define NO_PTHEADS\n+#endif\n+#ifndef HAVE_STRING_H\n #define HAVE_STRING_H 1\n+#endif\n+#ifndef STDC_HEADERS\n #define STDC_HEADERS\n+#endif\n+#ifndef NO_ICONV\n #define NO_ICONV\n+#endif\n+\n \n #define inline __inline\n #define __inline__ __inline\n \n+#ifndef SNPRINTF_RETURNS_BOGUS\n #define SNPRINTF_RETURNS_BOGUS\n+#endif\n \n+\n+#ifndef SHA1_HEADER\n #define SHA1_HEADER \"mozilla-sha1\\\\sha1.h\"\n+#endif\n \n+#ifndef ETC_GITCONFIG\n #define ETC_GITCONFIG \"%HOME%\"\n+#endif\n+\n \n+#ifndef NO_PTHREADS\n #define NO_PTHREADS\n+#endif\n+#ifndef NO_CURL\n #define NO_CURL\n+#endif\n \n \n+#ifndef NO_STRTOUMAX\n #define NO_STRTOUMAX\n+#endif\n+#ifndef REGEX_MALLOC\n #define REGEX_MALLOC\n+#endif\n \n \n #define GIT_EXEC_PATH \"bin\"\n@@ -65,9 +135,16 @@\n #define GIT_HTML_PATH \"html\"\n #define DEFAULT_GIT_TEMPLATE_DIR \"templates\"\n \n+#ifndef NO_STRLCPY\n #define NO_STRLCPY\n+#endif\n+#ifndef NO_UNSETENV\n #define NO_UNSETENV\n+#endif\n+#ifndef NO_SETENV\n #define NO_SETENV\n+#endif\n+\n \n #define strdup _strdup\n #define read _read\n-- \n1.6\n"},{"id":"121099","messageId":"alpine.DEB.1.00.0908181500450.4680@intel-tinevez-2-302","threadId":"20640","inReplyTo":"7v4os5jtd9.fsf@alter.siamese.dyndns.org","subject":"Re: [PATCH 09/11] Add MSVC porting header files.","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-18T13:01:14Z","receivedAt":"2009-08-18T13:01:14Z","isPatch":true,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"\nHi,\n\nOn Tue, 18 Aug 2009, Junio C Hamano wrote:\n\n> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:\n> \n> > As I said earlier, there are common flags, but as I also said, it is \n> > probably better to keep the #define's in a header file for better \n> > visibility and editability, albeit in logically clustered blocks (i.e. \n> > all the NO_* and other #define's that affect what source code is \n> > compiled, all default paths in another cluster, #define's to bow \n> > before Microsoft's C runtime's decision to deprecate the C99 standard \n> > function names, etc)\n> \n> ... and that can live in a separate header file to reduce clutter and \n> shield people who do not need to look at MSC related code, no?\n\nMaybe we could call it compat/msvc.h? ;-)\n\nCiao,\nDscho\n"},{"id":"121100","messageId":"4A8AA628.8040208@gmail.com","threadId":"20640","inReplyTo":"1250600335-8642-1-git-send-email-mstormo@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-18T13:01:28Z","receivedAt":"2009-08-18T13:01:28Z","isPatch":false,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Marius Storm-Olsen said the following on 18.08.2009 14:58:\n> This is a rudementary patch, only meant as an RFC for now!!\n> \n> !! DO NOT COMMIT THIS UPSTREAM !!\n\n..meaning in this case Frank Li's repo, and obviously not git.git. :p\n\n--\n.marius\n"},{"id":"121102","messageId":"40aa078e0908180609h13968c56m4e0d0fd4dfa07669@mail.gmail.com","threadId":"20640","inReplyTo":"1250600335-8642-1-git-send-email-mstormo@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@googlemail.com","sentAt":"2009-08-18T13:09:47Z","receivedAt":"2009-08-18T13:09:47Z","isPatch":false,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"On Tue, Aug 18, 2009 at 2:58 PM, Marius Storm-Olsen<mstormo@gmail.com> wrote:\n> @@ -1331,14 +1396,14 @@ strip: $(PROGRAMS) git$X\n>  git.o: git.c common-cmds.h GIT-CFLAGS\n>        $(QUIET_CC)$(CC) -DGIT_VERSION='\"$(GIT_VERSION)\"' \\\n>                '-DGIT_HTML_PATH=\"$(htmldir_SQ)\"' \\\n> -               $(ALL_CFLAGS) -c $(filter %.c,$^)\n> +               $(ALL_CFLAGS) $(COMPFLAG) $(COBJFLAG)git.o $(filter %.c,$^)\n>\n>  git$X: git.o $(BUILTIN_OBJS) $(GITLIBS)\n> -       $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ git.o \\\n> +       $(QUIET_LINK)$(LINK) $(LINKER_CFLAGS) $(LOBJFLAG)$@ git.o \\\n>                $(BUILTIN_OBJS) $(ALL_LDFLAGS) $(LIBS)\n<snip>\n>  ifdef NO_EXPAT\n>  http-walker.o: http-walker.c http.h GIT-CFLAGS\n> -       $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) -DNO_EXPAT $<\n> +       $(QUIET_CC)$(CC) $(COBJFLAG)$*.o $(COMPFLAG) $(ALL_CFLAGS) -DNO_EXPAT $<\n>  endif\n\nPerhaps this is the right time to change the make-system to using the\nsomewhat standard $(COMPLIE.c), $(OUTPUT_OPTION) etc macros?\n\n-- \nErik \"kusma\" Faye-Lund\nkusmabite@gmail.com\n(+47) 986 59 656\n"},{"id":"121105","messageId":"alpine.DEB.1.00.0908181605370.4680@intel-tinevez-2-302","threadId":"20640","inReplyTo":"1250600335-8642-1-git-send-email-mstormo@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-18T14:11:10Z","receivedAt":"2009-08-18T14:11:10Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n\n>  So, instead of rely on these vcproj files which *will* go stale, we can \n>  simply use the same Makefile system which everyone else is using. :) \n>  After all, we're just compiling with a different compiler. The end \n>  result will still rely on the *msysGit environment* to function, so we \n>  already require it. Thus, GNU Make is present, and we can use it.\n\nWe can also use sed or perl to generate/modify the .vcproj files, or run \nCMake (once Pau got it to build), and package the stuff using zip (once I \ngot that to build).\n\n> diff --git a/Makefile b/Makefile\n> index daf4296..2e14976 100644\n> --- a/Makefile\n> +++ b/Makefile\n> @@ -214,9 +214,13 @@ uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')\n>  \n>  CFLAGS = -g -O2 -Wall\n>  LDFLAGS =\n> +ARFLAGS = rcs\\ # whitespace intentional\n>  ALL_CFLAGS = $(CFLAGS)\n>  ALL_LDFLAGS = $(LDFLAGS)\n>  STRIP ?= strip\n> +COMPFLAG = -c\n> +COBJFLAG = -o\\ # whitespace intended\n> +LOBJFLAG = -o\\ # whitespace intended\n\nThese probably want to go into the Microsoft Visual C++ specific section.\n\n> @@ -874,6 +878,58 @@ ifneq (,$(findstring CYGWIN,$(uname_S)))\n>  \tCOMPAT_OBJS += compat/cygwin.o\n>  \tUNRELIABLE_FSTAT = UnfortunatelyYes\n>  endif\n> +ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))\n> +\tpathsep = ;\n> +\tMOZILLA_SHA1 = 1\n> +\tNO_PREAD = YesPlease\n> +\tNO_OPENSSL = YesPlease\n> +\tNO_LIBGEN_H = YesPlease\n> +\tNO_SYMLINK_HEAD = YesPlease\n> +\tNO_IPV6 = YesPlease\n> +\tNO_SETENV = YesPlease\n> +\tNO_UNSETENV = YesPlease\n> +\tNO_STRCASESTR = YesPlease\n> +\tNO_STRLCPY = YesPlease\n> +\tNO_MEMMEM = YesPlease\n> +\tNEEDS_LIBICONV = YesPlease\n> +\tOLD_ICONV = YesPlease\n> +\tNO_C99_FORMAT = YesPlease\n> +\tNO_STRTOUMAX = YesPlease\n> +\tNO_MKDTEMP = YesPlease\n> +\tNO_MKSTEMPS = YesPlease\n> +\tSNPRINTF_RETURNS_BOGUS = YesPlease\n> +\tNO_SVN_TESTS = YesPlease\n> +\tNO_PERL_MAKEMAKER = YesPlease\n> +\tRUNTIME_PREFIX = YesPlease\n> +\tNO_POSIX_ONLY_PROGRAMS = YesPlease\n> +\tNO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease\n> +\tNO_NSEC = YesPlease\n> +\tUSE_WIN32_MMAP = YesPlease\n> +\tUNRELIABLE_FSTAT = UnfortunatelyYes\n> +\tOBJECT_CREATION_USES_RENAMES = UnfortunatelyNeedsTo\n> +\tNO_REGEX = YesPlease\n> +\n> +\tNO_CURL = YesPlease\n> +\tNO_PTHREADS = YesPlease\n> +        \n> +\tCC = cl \n> +\tCOBJFLAG = -Fo\n> +\tLOBJFLAG = -OUT:\n> +\tCFLAGS =\n> +\tBASIC_CFLAGS += -nologo -MT -I. -I../zlib -Icompat/vcbuild -Icompat/vcbuild/include -DWIN32 -D_CONSOLE\n> +\tCOMPAT_CFLAGS += -D__USE_MINGW_ACCESS -DNOGDI -Icompat -Icompat/fnmatch -Icompat/regex -Icompat/fnmatch\n> +\tCOMPAT_OBJS += compat/mingw.o compat/msvc.o compat/fnmatch/fnmatch.o compat/winansi.o\n> +\tCOMPAT_CFLAGS += -DSTRIP_EXTENSION=\\\".exe\\\"\n> +\n> +\tLINK = link\n> +\tBASIC_LDFLAGS += -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib ../zlib/projects/vc9/Win32_LIB_Release/zlib.lib\n> +\tNO_CFLAGS_TO_LINKER = YesPlease\n> +\tEXTLIBS = \n> +\tAR = lib\n> +\tARFLAGS = -OUT:\n> +\n> +\tX = .exe\n> +else\n>  ifneq (,$(findstring MINGW,$(uname_S)))\n>  \tpathsep = ;\n>  \tNO_PREAD = YesPlease\n\nThis means that gcc is never used when Visual C++ is available?  Hmm.\n\n> diff --git a/compat/msvc.h b/compat/msvc.h\n> index 6071565..a9d5f7f 100644\n> --- a/compat/msvc.h\n> +++ b/compat/msvc.h\n> @@ -10,50 +10,120 @@\n>  \n>  /*Configuration*/\n>  \n> +#ifndef NO_PREAD\n>  #define NO_PREAD\n> +#endif\n\nWhy?  You now have the stuff in two places.  If you want to keep them in \ncompat/msvc.h to be able to generate .vcproj files, I'd rather not have \nthem duplicated in the Makefile.\n\nCiao,\nDscho\n"},{"id":"121114","messageId":"4A8AD561.1020303@gmail.com","threadId":"20640","inReplyTo":"1250600335-8642-1-git-send-email-mstormo@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johan 't Hart","fromEmail":"johanthart@gmail.com","sentAt":"2009-08-18T16:22:57Z","receivedAt":"2009-08-18T16:22:57Z","isPatch":false,"sender":{"key":"johanthart@gmail.com","avatar":"https://gravatar.com/avatar/f7bd2928a1a23e971f4ab68a6c7b35d7ff0efb1c225c570430badf90e404e50b?d=mp&s=160"},"body":"\nMarius Storm-Olsen schreef:\n> From: Marius Storm-Olsen <mstormo@gmail.com>\n> \n> By using GNU Make we can also compile with the MSVC toolchain.\n> This is a rudementary patch, only meant as an RFC for now!!\n> \n\nWould this mean that only the MSVC toolchain is used to build git in \nbatch? Or does GNU Make create a .vcproj file like CMake? Because that \nofcource is the whole purpose of using CMake. One can use the Visual \nStudio IDE to hack on git.\n"},{"id":"121116","messageId":"3f4fd2640908180928k1be7db20vdc81b5acc482f693@mail.gmail.com","threadId":"20640","inReplyTo":"4A8AD561.1020303@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Reece Dunn","fromEmail":"msclrhd@googlemail.com","sentAt":"2009-08-18T16:28:09Z","receivedAt":"2009-08-18T16:28:09Z","isPatch":false,"sender":{"key":"msclrhd@googlemail.com","avatar":null},"body":"2009/8/18 Johan 't Hart <johanthart@gmail.com>:\n> Marius Storm-Olsen schreef:\n>>\n>> From: Marius Storm-Olsen <mstormo@gmail.com>\n>>\n>> By using GNU Make we can also compile with the MSVC toolchain.\n>> This is a rudementary patch, only meant as an RFC for now!!\n>>\n>\n> Would this mean that only the MSVC toolchain is used to build git in batch?\n> Or does GNU Make create a .vcproj file like CMake? Because that ofcource is\n> the whole purpose of using CMake. One can use the Visual Studio IDE to hack\n> on git.\n\n... unless you add a file to the vcproj, or change the project\nsettings: you'll need to update the CMake file and the Make file (for\nthe POSIX builds), otherwise you're going to break things.\n\n- Reece\n"},{"id":"121123","messageId":"7vtz05dq0p.fsf@alter.siamese.dyndns.org","threadId":"20640","inReplyTo":"1250600335-8642-1-git-send-email-mstormo@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2009-08-18T16:51:18Z","receivedAt":"2009-08-18T16:51:18Z","isPatch":false,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Marius Storm-Olsen <mstormo@gmail.com> writes:\n\nMarius Storm-Olsen <mstormo@gmail.com> writes:\n\n> +ARFLAGS = rcs\\ # whitespace intentional\n> +COMPFLAG = -c\n> +COBJFLAG = -o\\ # whitespace intended\n> +LOBJFLAG = -o\\ # whitespace intended\n> ...\n> +ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))\n> +\tCC = cl \n> +\tCOBJFLAG = -Fo\n> +\tLOBJFLAG = -OUT:\n> +\tCFLAGS =\n>  git.o: git.c common-cmds.h GIT-CFLAGS\n> ...\n> -\t\t$(ALL_CFLAGS) -c $(filter %.c,$^)\n> +\t\t$(ALL_CFLAGS) $(COMPFLAG) $(COBJFLAG)git.o $(filter %.c,$^)\n\nSince use of make implies use of shell, this makes me wonder if it would\nmake sense to go one step further by giving msvc users a thin shell\nwrapper mcvc-cc that turns bog-standard cc command line into whatever cl\nuses.\n"},{"id":"121124","messageId":"alpine.LNX.2.00.0908181226160.7195@iabervon.org","threadId":"20640","inReplyTo":"1250600335-8642-1-git-send-email-mstormo@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2009-08-18T16:51:46Z","receivedAt":"2009-08-18T16:51:46Z","isPatch":false,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n\n> From: Marius Storm-Olsen <mstormo@gmail.com>\n> \n> By using GNU Make we can also compile with the MSVC toolchain.\n> This is a rudementary patch, only meant as an RFC for now!!\n> \n> !! DO NOT COMMIT THIS UPSTREAM !!\n> ---\n>  So, instead of rely on these vcproj files which *will* go stale, we can\n>  simply use the same Makefile system which everyone else is using. :)\n>  After all, we're just compiling with a different compiler. The end result\n>  will still rely on the *msysGit environment* to function, so we already\n>  require it. Thus, GNU Make is present, and we can use it.\n> \n>  This implementation is a quick hack to make it compile (hence the RFC\n>  subject), so please don't even consider basing anything ontop of it ;)\n> \n>  But, do point out all the do's and don'ts, and I'll try to polish it up\n>  to something which we can add to Frank's series..\n>  \n> \n>  Makefile      |   97 +++++++++++++++++++++++++++++++++++++++++++++++---------\n>  compat/msvc.h |   77 +++++++++++++++++++++++++++++++++++++++++++++\n>  2 files changed, 158 insertions(+), 16 deletions(-)\n> \n> diff --git a/Makefile b/Makefile\n> index daf4296..2e14976 100644\n> --- a/Makefile\n> +++ b/Makefile\n> @@ -214,9 +214,13 @@ uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')\n>  \n>  CFLAGS = -g -O2 -Wall\n>  LDFLAGS =\n> +ARFLAGS = rcs\\ # whitespace intentional\n>  ALL_CFLAGS = $(CFLAGS)\n>  ALL_LDFLAGS = $(LDFLAGS)\n>  STRIP ?= strip\n> +COMPFLAG = -c\n> +COBJFLAG = -o\\ # whitespace intended\n> +LOBJFLAG = -o\\ # whitespace intended\n\nI think it's nicer to write the significant whitespace with non-whitespace \ntext using something like:\n\nempty=\nspace=$(empty) $(empty)\n\n(...)\n\nARFLAGS = rcs$(space)\n\nCOBJFLAG = -o$(space)\n\nOn the other hand, I think it would be clearer to put the \"rcs\" in the \ndefault version of $(AR), and have a $(AROBJFLAG) set to nothing there, \nsince the \"rcs\" isn't actually at all like the \"-OUT:\" with respect to \nwhat it's doing there.\n\nPossibly also to have two variables for the output of the toolchain \nwrapper, one that is before the name of the file and one that's attached \nto the name of the file.\n\n\t-Daniel\n*This .sig left intentionally blank*\n"},{"id":"121129","messageId":"3af572ac0908181006n2e00b561x374007bff2e2d31f@mail.gmail.com","threadId":"20640","inReplyTo":"4A8AD561.1020303@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-18T17:06:15Z","receivedAt":"2009-08-18T17:06:15Z","isPatch":false,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Tue, Aug 18, 2009 at 6:22 PM, Johan 't Hart<johanthart@gmail.com> wrote:\n> Marius Storm-Olsen schreef:\n>>\n>> From: Marius Storm-Olsen <mstormo@gmail.com>\n>>\n>> By using GNU Make we can also compile with the MSVC toolchain.\n>> This is a rudementary patch, only meant as an RFC for now!!\n>>\n>\n> Would this mean that only the MSVC toolchain is used to build git in batch?\n> Or does GNU Make create a .vcproj file like CMake?\n\nThat patch uses GNU Make but invoking the MSVC compiler, linker, etc\ninstead of the GNU compiler, linker, etc. It'd be the same if you\nwanted to use the Intel compiler, the Sun compiler, etc.\n\n> Because that ofcource is\n> the whole purpose of using CMake. One can use the Visual Studio IDE to hack\n> on git.\n\nCMake is also useful to create installers/tarballs (see CPack), run\ntests (see CTest; it's NOT a unit test library but a tests launcher on\nsteroids) and submit the results of compilation, tests and\ninstallation to a dashboard where you can easily see what (if\nanything) went wrong (see CDash, formerly Dart).\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"121130","messageId":"3af572ac0908181007q7622091eqc78861e00c3a9e45@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908181605370.4680@intel-tinevez-2-302","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Pau Garcia i Quiles","fromEmail":"pgquiles@elpauer.org","sentAt":"2009-08-18T17:07:45Z","receivedAt":"2009-08-18T17:07:45Z","isPatch":false,"sender":{"key":"pgquiles@elpauer.org","avatar":null},"body":"On Tue, Aug 18, 2009 at 4:11 PM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n> Hi,\n>\n> On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n>\n>>  So, instead of rely on these vcproj files which *will* go stale, we can\n>>  simply use the same Makefile system which everyone else is using. :)\n>>  After all, we're just compiling with a different compiler. The end\n>>  result will still rely on the *msysGit environment* to function, so we\n>>  already require it. Thus, GNU Make is present, and we can use it.\n>\n> We can also use sed or perl to generate/modify the .vcproj files, or run\n> CMake (once Pau got it to build), and package the stuff using zip (once I\n> got that to build).\n\nRe: package the stuff using ZIP, it's trivial to do with CPack (part\nof the CMake chain). Just tell me what you want to get and I'll\nimplement it.\n\n-- \nPau Garcia i Quiles\nhttp://www.elpauer.org\n(Due to my workload, I may need 10 days to answer)\n"},{"id":"121131","messageId":"4A8AE6AC.4090005@gmail.com","threadId":"20640","inReplyTo":"7vtz05dq0p.fsf@alter.siamese.dyndns.org","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Marius Storm-Olsen","fromEmail":"marius@storm-olsen.com","sentAt":"2009-08-18T17:36:44Z","receivedAt":"2009-08-18T17:36:44Z","isPatch":false,"sender":{"key":"marius@storm-olsen.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Junio C Hamano said the following on 18.08.2009 18:51:\n> Marius Storm-Olsen <mstormo@gmail.com> writes:\n> \n> Marius Storm-Olsen <mstormo@gmail.com> writes:\n> \n>> +ARFLAGS = rcs\\ # whitespace intentional\n>> +COMPFLAG = -c\n>> +COBJFLAG = -o\\ # whitespace intended\n>> +LOBJFLAG = -o\\ # whitespace intended\n>> ...\n>> +ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))\n>> +\tCC = cl \n>> +\tCOBJFLAG = -Fo\n>> +\tLOBJFLAG = -OUT:\n>> +\tCFLAGS =\n>>  git.o: git.c common-cmds.h GIT-CFLAGS\n>> ...\n>> -\t\t$(ALL_CFLAGS) -c $(filter %.c,$^)\n>> +\t\t$(ALL_CFLAGS) $(COMPFLAG) $(COBJFLAG)git.o $(filter %.c,$^)\n> \n> Since use of make implies use of shell, this makes me wonder if it would\n> make sense to go one step further by giving msvc users a thin shell\n> wrapper mcvc-cc that turns bog-standard cc command line into whatever cl\n> uses.\n\nThat, of course, is also a feasible option :)\nHowever, there are still things you wouldn't want to pass on to this \nscript, for example, we don't pass on all the CFLAGS to the linker on \nWindows.\n\nThe \"whitespace intended\" in the patch are quite nasty though..\n\n--\n.marius\n"},{"id":"121132","messageId":"4A8AE707.9010202@gmail.com","threadId":"20640","inReplyTo":"alpine.LNX.2.00.0908181226160.7195@iabervon.org","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Marius Storm-Olsen","fromEmail":"marius@storm-olsen.com","sentAt":"2009-08-18T17:38:15Z","receivedAt":"2009-08-18T17:38:15Z","isPatch":false,"sender":{"key":"marius@storm-olsen.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Daniel Barkalow said the following on 18.08.2009 18:51:\n> On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n> \n>> From: Marius Storm-Olsen <mstormo@gmail.com>\n>>\n>> By using GNU Make we can also compile with the MSVC toolchain.\n>> This is a rudementary patch, only meant as an RFC for now!!\n>>\n>> !! DO NOT COMMIT THIS UPSTREAM !!\n>> ---\n>>  So, instead of rely on these vcproj files which *will* go stale, we can\n>>  simply use the same Makefile system which everyone else is using. :)\n>>  After all, we're just compiling with a different compiler. The end result\n>>  will still rely on the *msysGit environment* to function, so we already\n>>  require it. Thus, GNU Make is present, and we can use it.\n>>\n>>  This implementation is a quick hack to make it compile (hence the RFC\n>>  subject), so please don't even consider basing anything ontop of it ;)\n>>\n>>  But, do point out all the do's and don'ts, and I'll try to polish it up\n>>  to something which we can add to Frank's series..\n>>  \n>>\n>>  Makefile      |   97 +++++++++++++++++++++++++++++++++++++++++++++++---------\n>>  compat/msvc.h |   77 +++++++++++++++++++++++++++++++++++++++++++++\n>>  2 files changed, 158 insertions(+), 16 deletions(-)\n>>\n>> diff --git a/Makefile b/Makefile\n>> index daf4296..2e14976 100644\n>> --- a/Makefile\n>> +++ b/Makefile\n>> @@ -214,9 +214,13 @@ uname_V := $(shell sh -c 'uname -v 2>/dev/null || echo not')\n>>  \n>>  CFLAGS = -g -O2 -Wall\n>>  LDFLAGS =\n>> +ARFLAGS = rcs\\ # whitespace intentional\n>>  ALL_CFLAGS = $(CFLAGS)\n>>  ALL_LDFLAGS = $(LDFLAGS)\n>>  STRIP ?= strip\n>> +COMPFLAG = -c\n>> +COBJFLAG = -o\\ # whitespace intended\n>> +LOBJFLAG = -o\\ # whitespace intended\n> \n> I think it's nicer to write the significant whitespace with non-whitespace \n> text using something like:\n> \n> empty=\n> space=$(empty) $(empty)\n> \n> (...)\n> \n> ARFLAGS = rcs$(space)\n> \n> COBJFLAG = -o$(space)\n> \n> On the other hand, I think it would be clearer to put the \"rcs\" in the \n> default version of $(AR), and have a $(AROBJFLAG) set to nothing there, \n> since the \"rcs\" isn't actually at all like the \"-OUT:\" with respect to \n> what it's doing there.\n> \n> Possibly also to have two variables for the output of the toolchain \n> wrapper, one that is before the name of the file and one that's attached \n> to the name of the file.\n\nI agree on all accounts. If we don't go for a wrapper script, as Junio \nsuggested, then I'll definitely do it like you suggested.\n\n--\n.marius\n"},{"id":"121133","messageId":"4A8AE7C5.7050600@gmail.com","threadId":"20640","inReplyTo":"7vtz05dq0p.fsf@alter.siamese.dyndns.org","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johan 't Hart","fromEmail":"johanthart@gmail.com","sentAt":"2009-08-18T17:41:25Z","receivedAt":"2009-08-18T17:41:25Z","isPatch":false,"sender":{"key":"johanthart@gmail.com","avatar":"https://gravatar.com/avatar/f7bd2928a1a23e971f4ab68a6c7b35d7ff0efb1c225c570430badf90e404e50b?d=mp&s=160"},"body":"Junio C Hamano schreef:\n> Since use of make implies use of shell, this makes me wonder if it would\n> make sense to go one step further by giving msvc users a thin shell\n> wrapper mcvc-cc that turns bog-standard cc command line into whatever cl\n> uses.\n\nJust using the msvc toolchain for building git misses the whole purpose \nof what VC is used for. MSVC would be used because of the IDE, not for \nthe compiler IMO. msysgit already has a nice toolchain, using gcc, to \nbuild git. I think there is no reason to use MSVC for that purpose.\n\nThe purpose of CMake was to build an .vcproj file to be used by the IDE, \nnot for a batch process that builds git with the VC toolchain. Users \ncould than hack git with the IDE from MSVC. And ofcource git should then \nalso be compilable by MSVC's cl.exe, because the IDE is not capable of \nusing another toolchain then its own...\n"},{"id":"121135","messageId":"4A8AE886.8090000@gnu.org","threadId":"20640","inReplyTo":"3af572ac0908181006n2e00b561x374007bff2e2d31f@mail.gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Paolo Bonzini","fromEmail":"bonzini@gnu.org","sentAt":"2009-08-18T17:44:38Z","receivedAt":"2009-08-18T17:44:38Z","isPatch":false,"sender":{"key":"bonzini@gnu.org","avatar":"https://avatars.githubusercontent.com/u/42082?v=4"},"body":"\n> CMake is also useful to create installers/tarballs (see CPack), run\n> tests (see CTest; it's NOT a unit test library but a tests launcher on\n> steroids) and submit the results of compilation, tests and\n> installation to a dashboard where you can easily see what (if\n> anything) went wrong (see CDash, formerly Dart).\n\nIf I know the git hackers, CMake will _never_ be used except _possibly_ \nfor generating a .vcproj file.\n\nPaolo\n"},{"id":"121136","messageId":"4A8AEAF5.6070205@gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908181605370.4680@intel-tinevez-2-302","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Marius Storm-Olsen","fromEmail":"marius@storm-olsen.com","sentAt":"2009-08-18T17:55:01Z","receivedAt":"2009-08-18T17:55:01Z","isPatch":false,"sender":{"key":"marius@storm-olsen.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Johannes Schindelin said the following on 18.08.2009 16:11:\n> On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n>> So, instead of rely on these vcproj files which *will* go stale, we\n>> can simply use the same Makefile system which everyone else is\n>> using. :) After all, we're just compiling with a different\n>> compiler. The end result will still rely on the *msysGit\n>> environment* to function, so we already require it. Thus, GNU Make\n>> is present, and we can use it.\n> \n> We can also use sed or perl to generate/modify the .vcproj files, or\n> run CMake (once Pau got it to build), and package the stuff using zip\n> (once I got that to build).\n\nReally? That would be some script being able to parse the Makefile, and \ncreate something reasonable as a vcproj script :) Keeping all the \noptions in sync, conditional files/libs, all the various end executables \n(a separate .vcproj for each of them, and a solution file (.sln)to tie \nthem all together into a .. \"solution\", a complete product blah blah \nblah) etc.\n\nJust using the (GNU) Makefile as the 'default' way of compiling with \nMSVC seems to be the most reasonable to me. Then we could just have a \ncontrib/vc/msvc2008.vcproj which someone can update when they feel like \nit. The default way should be hard to get out-of-sync, IMO.\n\n\n>> diff --git a/Makefile b/Makefile\n>> +ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))\n...\n>> +else\n>>  ifneq (,$(findstring MINGW,$(uname_S)))\n>>  \tpathsep = ;\n>>  \tNO_PREAD = YesPlease\n> \n> This means that gcc is never used when Visual C++ is available?  Hmm.\n\nYes it does :)\nFirst, \"This implementation is a quick hack to make it compile\", so it \nwas all about just making it compile, not being 100% correct. There are \nstill some warnings and options which shouldn't be passed on to cl, so \nit's by no means complete. Second, having MSVC include paths in INCLUDE \nwhen you're compiling with MinGW would be plain wrong. I could use LIB \ninstead, which would be even wronger ;)\nI was actually going to replace it with a USE_MSVC variable check \ninstead though, so you'd rather do 'make USE_MSVC=1'\n\n\n>> diff --git a/compat/msvc.h b/compat/msvc.h\n>> index 6071565..a9d5f7f 100644\n>> --- a/compat/msvc.h\n>> +++ b/compat/msvc.h\n>> @@ -10,50 +10,120 @@\n>>  \n>>  /*Configuration*/\n>>  \n>> +#ifndef NO_PREAD\n>>  #define NO_PREAD\n>> +#endif\n> \n> Why?  You now have the stuff in two places.  If you want to keep them in \n> compat/msvc.h to be able to generate .vcproj files, I'd rather not have \n> them duplicated in the Makefile.\n\nThe changes to the msvc.h where added just keep Frank's vcproj project \nworking. I would have just nuked all that stuff in the msvc.h since the \nMakefile would just provide it for me anyways..\n\n--\n.marius\n"},{"id":"121139","messageId":"4A8AED8B.9080604@gmail.com","threadId":"20640","inReplyTo":"4A8AE7C5.7050600@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Marius Storm-Olsen","fromEmail":"marius@storm-olsen.com","sentAt":"2009-08-18T18:06:03Z","receivedAt":"2009-08-18T18:06:03Z","isPatch":false,"sender":{"key":"marius@storm-olsen.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Johan 't Hart said the following on 18.08.2009 19:41:\n> Junio C Hamano schreef:\n>> Since use of make implies use of shell, this makes me wonder if it\n>> would make sense to go one step further by giving msvc users a thin\n>> shell wrapper mcvc-cc that turns bog-standard cc command line into\n>> whatever cl uses.\n> \n> Just using the msvc toolchain for building git misses the whole\n> purpose of what VC is used for. MSVC would be used because of the\n> IDE, not for the compiler IMO.\n\nBull. MSVC produces superior code on Windows compared to MinGW, I'm \nafraid. Add the /LTGC (Link Time Code Generation), and MSVC generates \nvery good cross compile-unit optimized code. (I know gcc has the option, \nbut it's not as good, by far)\nCoupled now with built-in static code analysis, these are only two \nreasons why *I* would want to build it directly from the command line \nwithout worrying that my .vcproj is out-of-sync with the main development.\nYou can still debug with the MSVC debugger if you'd like, and the MSVC \nIDE allows you to wrap Makefile project too, so you can *still* use the \nIDE..\n\n--\n.marius\n"},{"id":"121142","messageId":"alpine.LNX.2.00.0908181420330.7195@iabervon.org","threadId":"20640","inReplyTo":"4A8AEAF5.6070205@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2009-08-18T18:42:59Z","receivedAt":"2009-08-18T18:42:59Z","isPatch":false,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n\n> Johannes Schindelin said the following on 18.08.2009 16:11:\n> > On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n> > > So, instead of rely on these vcproj files which *will* go stale, we\n> > > can simply use the same Makefile system which everyone else is\n> > > using. :) After all, we're just compiling with a different\n> > > compiler. The end result will still rely on the *msysGit\n> > > environment* to function, so we already require it. Thus, GNU Make\n> > > is present, and we can use it.\n> > \n> > We can also use sed or perl to generate/modify the .vcproj files, or\n> > run CMake (once Pau got it to build), and package the stuff using zip\n> > (once I got that to build).\n> \n> Really? That would be some script being able to parse the Makefile, and create\n> something reasonable as a vcproj script :) Keeping all the options in sync,\n> conditional files/libs, all the various end executables (a separate .vcproj\n> for each of them, and a solution file (.sln)to tie them all together into a ..\n> \"solution\", a complete product blah blah blah) etc.\n\nI think it wouldn't be impossible to split the Makefile into an \neasy-to-parse part and an irrelevant-to-vcproj part. Certainly you don't \nneed GNU Make to read a file:\n\nSCRIPT_SH += git-am.sh\nSCRIPT_SH += git-bisect.sh\n\nSCRIPT_PERL += git-add--interactive.perl\n\nPROGRAM_NAMES += git-fast-import\n\nBUILTINS_IN_OBJS += add\n\n(etc)\n\nThat is, we can probably describe the project sufficiently with a lot of\n\nVAR += value\n\nlines, using only constant values and variables we specify, and then the \nMakefile declares them empty and does an\n\ninclude UserServicableParts\n\nand puts together the variables it needs. And things that aren't GNU Make \ncould also process this file without enormous difficulty, since it's \nessentially a .ini file or java resource file with a stray + on each line. \nOf course, people interested in the vcproj thing would have to update \nwhatever makes VC do the right thing when new *rules* are introduced, but \nthat's a lot less common than new *files* being introduced, and also more \nobvious (in the sense that the included file is setting variables that the \nbuilder doesn't know what to do with).\n\n\t-Daniel\n*This .sig left intentionally blank*\n"},{"id":"121165","messageId":"alpine.DEB.1.00.0908182334460.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"3af572ac0908181007q7622091eqc78861e00c3a9e45@mail.gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-18T21:35:24Z","receivedAt":"2009-08-18T21:35:24Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Pau Garcia i Quiles wrote:\n\n> On Tue, Aug 18, 2009 at 4:11 PM, Johannes\n> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>\n> > On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n> >\n> >>  So, instead of rely on these vcproj files which *will* go stale, we \n> >> can  simply use the same Makefile system which everyone else is \n> >> using. :)  After all, we're just compiling with a different compiler. \n> >> The end  result will still rely on the *msysGit environment* to \n> >> function, so we  already require it. Thus, GNU Make is present, and \n> >> we can use it.\n> >\n> > We can also use sed or perl to generate/modify the .vcproj files, or \n> > run CMake (once Pau got it to build), and package the stuff using zip \n> > (once I got that to build).\n> \n> Re: package the stuff using ZIP, it's trivial to do with CPack (part of \n> the CMake chain). Just tell me what you want to get and I'll implement \n> it.\n\nWell, I tried to tell you already what I want.  A simple and unsupervised \nscript that downloads, compiles, installs and commits CMake.\n\nCiao,\nDscho\n"},{"id":"121176","messageId":"alpine.DEB.1.00.0908182349220.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"4A8AED8B.9080604@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-18T21:53:27Z","receivedAt":"2009-08-18T21:53:27Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n\n> Johan 't Hart said the following on 18.08.2009 19:41:\n> > Junio C Hamano schreef:\n> > > Since use of make implies use of shell, this makes me wonder if it\n> > > would make sense to go one step further by giving msvc users a thin\n> > > shell wrapper mcvc-cc that turns bog-standard cc command line into\n> > > whatever cl uses.\n> > \n> > Just using the msvc toolchain for building git misses the whole\n> > purpose of what VC is used for. MSVC would be used because of the\n> > IDE, not for the compiler IMO.\n> \n> Bull. MSVC produces superior code on Windows compared to MinGW, I'm afraid.\n> Add the /LTGC (Link Time Code Generation), and MSVC generates very good cross\n> compile-unit optimized code. (I know gcc has the option, but it's not as good,\n> by far)\n> Coupled now with built-in static code analysis, these are only two reasons why\n> *I* would want to build it directly from the command line without worrying\n> that my .vcproj is out-of-sync with the main development.\n> You can still debug with the MSVC debugger if you'd like, and the MSVC IDE\n> allows you to wrap Makefile project too, so you can *still* use the IDE..\n\nWell, \"you can *still* use the IDE\" is a bit exaggerated, no?  At least \nunless you misunderstand \"IDE\" to mean \"Integrated Debugging environment\".\n\nYou'll lose not only the ability to follow definitions/declarations in the \ncode, you'll also lose the ability to compile incrementally _while_ \ndebuggin, and Visual Studio's feature to move to the next/previous compile \nerror.\n\nCiao,\nDscho\n"},{"id":"121177","messageId":"alpine.DEB.1.00.0908182355070.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"alpine.LNX.2.00.0908181420330.7195@iabervon.org","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-18T21:57:22Z","receivedAt":"2009-08-18T21:57:22Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Daniel Barkalow wrote:\n\n> On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n> \n> > Johannes Schindelin said the following on 18.08.2009 16:11:\n> > > On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n> > > > So, instead of rely on these vcproj files which *will* go stale, \n> > > > we can simply use the same Makefile system which everyone else is \n> > > > using. :) After all, we're just compiling with a different \n> > > > compiler. The end result will still rely on the *msysGit \n> > > > environment* to function, so we already require it. Thus, GNU Make \n> > > > is present, and we can use it.\n> > > \n> > > We can also use sed or perl to generate/modify the .vcproj files, or \n> > > run CMake (once Pau got it to build), and package the stuff using \n> > > zip (once I got that to build).\n> > \n> > Really? That would be some script being able to parse the Makefile, \n> > and create something reasonable as a vcproj script :) Keeping all the \n> > options in sync, conditional files/libs, all the various end \n> > executables (a separate .vcproj for each of them, and a solution file \n> > (.sln)to tie them all together into a .. \"solution\", a complete \n> > product blah blah blah) etc.\n> \n> I think it wouldn't be impossible to split the Makefile into an \n> easy-to-parse part and an irrelevant-to-vcproj part.\n\nWhat?  That is pretty fragile.\n\nIt would be _much_ better to just add another Makefile target that outputs \nthe files needed for the targets.\n\nWe do not need to keep the Makefile as-is!  If the change is not \nintrusive, I am sure our friendly maintainer will not see a problem \neither.\n\nNo need for fragile parsing at all.\n\nCiao,\nDscho\n"},{"id":"121178","messageId":"40aa078e0908181502v32cbd223xcde1cd363dc76345@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908182349220.8306@pacific.mpi-cbg.de","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@googlemail.com","sentAt":"2009-08-18T22:02:34Z","receivedAt":"2009-08-18T22:02:34Z","isPatch":false,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"\nOn Tue, Aug 18, 2009 at 11:53 PM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n> debuggin, and Visual Studio's feature to move to the next/previous compile\n> error.\n\nNope, you're still able to skip through the erros (with F4) as ususal.\nI've been using a sed-script to translate gcc-style errors to\nmsvc-style errors for makefile projects before with great success. In\nthis case, the errors are already in msvc-style, so that part should\nreally not be any issue.\n\n-- \nErik \"kusma\" Faye-Lund\nkusmabite@gmail.com\n(+47) 986 59 656\n"},{"id":"121182","messageId":"alpine.DEB.1.00.0908190038110.8306@pacific.mpi-cbg.de","threadId":"20640","inReplyTo":"40aa078e0908181502v32cbd223xcde1cd363dc76345@mail.gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-18T22:38:30Z","receivedAt":"2009-08-18T22:38:30Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Wed, 19 Aug 2009, Erik Faye-Lund wrote:\n\n> On Tue, Aug 18, 2009 at 11:53 PM, Johannes\n> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n> > debuggin, and Visual Studio's feature to move to the next/previous \n> > compile error.\n> \n> Nope, you're still able to skip through the erros (with F4) as ususal. \n> I've been using a sed-script to translate gcc-style errors to msvc-style \n> errors for makefile projects before with great success. In this case, \n> the errors are already in msvc-style, so that part should really not be \n> any issue.\n\nAt this point you are just piling work-around on work-around.\n\nCiao,\nDscho\n"},{"id":"121185","messageId":"40aa078e0908181548t5df05b1ct8013b99ea703ebba@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908190038110.8306@pacific.mpi-cbg.de","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@googlemail.com","sentAt":"2009-08-18T22:48:33Z","receivedAt":"2009-08-18T22:48:33Z","isPatch":false,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"On Wed, Aug 19, 2009 at 12:38 AM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n>> Nope, you're still able to skip through the erros (with F4) as ususal.\n>> I've been using a sed-script to translate gcc-style errors to msvc-style\n>> errors for makefile projects before with great success. In this case,\n>> the errors are already in msvc-style, so that part should really not be\n>> any issue.\n>\n> At this point you are just piling work-around on work-around.\n\nAt what point? This works out of the box for makefile projects that\nuse msvc for compilation. Sure, for my gcc-setup, yeah. But how is\nthat being a stack of work-arounds relevant in this context?\n\nI'm not arguing either way here - I'm perfectly happy to stick with MinGW.\n\nI'm just saying that one of the problems you pointed out is not really\na problem. The rest of them sounds like very much like real problems\nto me - not particularly big issues, you're the one who just said that\nperfect is the enemy of the good, no? ;)\n\n-- \nErik \"kusma\" Faye-Lund\nkusmabite@gmail.com\n(+47) 986 59 656\n"},{"id":"121216","messageId":"alpine.DEB.1.00.0908190910270.5594@intel-tinevez-2-302","threadId":"20640","inReplyTo":"40aa078e0908181548t5df05b1ct8013b99ea703ebba@mail.gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-19T07:16:45Z","receivedAt":"2009-08-19T07:16:45Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Wed, 19 Aug 2009, Erik Faye-Lund wrote:\n\n> On Wed, Aug 19, 2009 at 12:38 AM, Johannes\n> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n> >> Nope, you're still able to skip through the erros (with F4) as ususal.\n> >> I've been using a sed-script to translate gcc-style errors to msvc-style\n> >> errors for makefile projects before with great success. In this case,\n> >> the errors are already in msvc-style, so that part should really not be\n> >> any issue.\n> >\n> > At this point you are just piling work-around on work-around.\n> \n> At what point?\n\nAt the point where you bolt on a sed script on top of a bolted-on build \nprocedure.\n\nUsing a Makefile from within Visual Studio is just not the intended way to \ndo things, so you will hit the limitations sooner or later.\n\nFor example when the sed script encounters a situation which was not \nanticipated by the script author.\n\nSo I think if we support Microsoft Visual C++, it should be either through \n.vcproj files, or through a procedure that creates them.\n\nCiao,\nDscho\n"},{"id":"121217","messageId":"4A8BA9EC.9000006@storm-olsen.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908190910270.5594@intel-tinevez-2-302","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Marius Storm-Olsen","fromEmail":"marius@storm-olsen.com","sentAt":"2009-08-19T07:29:48Z","receivedAt":"2009-08-19T07:29:48Z","isPatch":false,"sender":{"key":"marius@storm-olsen.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Johannes Schindelin said the following on 19.08.2009 09:16:\n> On Wed, 19 Aug 2009, Erik Faye-Lund wrote:\n>> On Wed, Aug 19, 2009 at 12:38 AM, Johannes \n>> Schindelin<Johannes.Schindelin@gmx.de> wrote:\n>>>> Nope, you're still able to skip through the erros (with F4)\n>>>> as ususal. I've been using a sed-script to translate\n>>>> gcc-style errors to msvc-style errors for makefile projects\n>>>> before with great success. In this case, the errors are\n>>>> already in msvc-style, so that part should really not be any\n>>>> issue.\n>>> At this point you are just piling work-around on work-around.\n>> At what point?\n> \n> At the point where you bolt on a sed script on top of a bolted-on\n> build procedure.\n> \n> Using a Makefile from within Visual Studio is just not the intended\n> way to do things, so you will hit the limitations sooner or later.\n> \n> For example when the sed script encounters a situation which was\n> not anticipated by the script author.\n> \n> So I think if we support Microsoft Visual C++, it should be either\n> through .vcproj files, or through a procedure that creates them.\n\nIMO, and I'm primarily a Windows developer mind you and spend a lot of \ntime in Visual Studio, the primary is to support *compiling* git with \nVC, which is easily done with a few changes to the current Makefile.\n\nThe full IDE support is secondary, first because you *can* use the IDE \nalready, and second because it'll be harder to whip something up which \nguarantees that the vcproj support stays in-sync at all times and \nwon't lag behind.\n\nIf you want, you can even use Qt Creator's Makefile support on any \nplatform to build and debug git, and get tab completion, code \nrefactoring support, 'quick open' navigation etc. So, I still think \nthe primary focus should be to simply add the VC support in the \ncurrent setup, and ensure that the patch series is up to scratch; and \nwhen that's all done, *then* add the effort of properly supporting the \nvarious IDEs.\n\nOf course, if someone has a huge itch to restructure the current \nMakefile; factoring out the files into a file which can simply be \nincluded in the current Makefile, and easily parsed by a script, or \nincluded by CMake, then that can be done in parallel and possible \nadded to git mainline before the MSVC support patches from Frank.\n\n--\n.marius\n\n"},{"id":"121225","messageId":"alpine.DEB.1.00.0908190951020.5594@intel-tinevez-2-302","threadId":"20640","inReplyTo":"4A8BA9EC.9000006@storm-olsen.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-19T08:29:14Z","receivedAt":"2009-08-19T08:29:14Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Wed, 19 Aug 2009, Marius Storm-Olsen wrote:\n\n> The full IDE support is secondary, first because you *can* use the IDE \n> already, and second because it'll be harder to whip something up which \n> guarantees that the vcproj support stays in-sync at all times and won't \n> lag behind.\n\nI think the point of Frank's patches is to make Visual Studio users \ncomfortable with Git.  You cannot ask those to use a build process or an \nIDE they are not used to.\n\n> Of course, if someone has a huge itch to restructure the current \n> Makefile; factoring out the files into a file which can simply be \n> included in the current Makefile, and easily parsed by a script, or \n> included by CMake, then that can be done in parallel and possible added \n> to git mainline before the MSVC support patches from Frank.\n\nI still think it would be possible to use a combination of a \nMakefile rule and GNU make features to spit out a list of targets and \ntheir dependet .h and .c files.\n\nCiao,\nDscho\n"},{"id":"121227","messageId":"c472dffc0908190156n759231e2l1074432ca0271827@mail.gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908190951020.5594@intel-tinevez-2-302","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Thomas Berg","fromEmail":"merlin66b@gmail.com","sentAt":"2009-08-19T08:56:55Z","receivedAt":"2009-08-19T08:56:55Z","isPatch":false,"sender":{"key":"merlin66b@gmail.com","avatar":null},"body":"Hi,\n\nOn Wed, Aug 19, 2009 at 10:29 AM, Johannes\nSchindelin<Johannes.Schindelin@gmx.de> wrote:\n> Hi,\n>\n> On Wed, 19 Aug 2009, Marius Storm-Olsen wrote:\n>\n>> The full IDE support is secondary, first because you *can* use the IDE\n>> already, and second because it'll be harder to whip something up which\n>> guarantees that the vcproj support stays in-sync at all times and won't\n>> lag behind.\n>\n> I think the point of Frank's patches is to make Visual Studio users\n> comfortable with Git.  You cannot ask those to use a build process or an\n> IDE they are not used to.\n>\n\nI don't know Frank's intentions behind adding the .vcproj files. Maybe\nit was just easier for him to create them, rather than hacking the\nMakefile?\n\nAs a Windows / Visual Studio user, I have to agree with Marius' points\nhere. Most importantly, get the git code itself to compile with Visual\nStudio. Did anyone do any benchmarking yet? I wouldn't be surprised if\nwe got some speed improvements from this. Also, it will no longer\nimpossible to use the Visual Studio debugger.\n\nSupporting the Visual Studio compiler in the Makefile seems like an\nexcellent and maintainable way of getting the build up and running.\n\nI can't speek for all Visual Studio users, of course, but personally I\ncouldn't care less about the .vcproj files. I use other IDE's for\ndeveloping on Windows (qt-creator, eclipse-cdt), so for me .vcproj\nfiles would be useless. The Makefile should work from any IDE. In my\nexperience, all of qt-creator, eclipse _and_ Visual Studio support\nrunning any make-like program, and parse the compiler errors correctly\nwithout using sed or other kinds of magic.\n\n>\n> I still think it would be possible to use a combination of a\n> Makefile rule and GNU make features to spit out a list of targets and\n> their dependet .h and .c files.\n\nI wouldn't mind if someone was willing to add and maintain this, of\ncourse, but at least for me it wouldn't be particularely useful.\n\nCheers,\nThomas Berg\n"},{"id":"121235","messageId":"alpine.DEB.1.00.0908191153550.5594@intel-tinevez-2-302","threadId":"20640","inReplyTo":"4A8AEAF5.6070205@gmail.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-19T09:58:18Z","receivedAt":"2009-08-19T09:58:18Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n\n> Johannes Schindelin said the following on 18.08.2009 16:11:\n>\n> > On Tue, 18 Aug 2009, Marius Storm-Olsen wrote:\n> > \n> > > diff --git a/Makefile b/Makefile\n> > > +ifneq (,$(findstring Microsoft Visual Studio, $(INCLUDE)))\n> ...\n> > > +else\n> > >  ifneq (,$(findstring MINGW,$(uname_S)))\n> > >   pathsep = ;\n> > >   NO_PREAD = YesPlease\n> > \n> > This means that gcc is never used when Visual C++ is available?  Hmm.\n> \n> Yes it does :)\n\nAs you know, I do not own a Windows computer.  On the Windows computer I \nam allowed to use sometimes to test Git and my day-time project, the \nExpress edition was installed, but it was never registered, so it is not \nusable, and I would not want to use it anyway.\n\nSo this change would break my setup.\n\n> I was actually going to replace it with a USE_MSVC variable check \n> instead though, so you'd rather do 'make USE_MSVC=1'\n\nThat's much nicer, especially since you can put that into config.mak.\n\n> > > diff --git a/compat/msvc.h b/compat/msvc.h\n> > > index 6071565..a9d5f7f 100644\n> > > --- a/compat/msvc.h\n> > > +++ b/compat/msvc.h\n> > > @@ -10,50 +10,120 @@\n> > >  \n> > >  /*Configuration*/\n> > >  \n> > > +#ifndef NO_PREAD\n> > > #define NO_PREAD\n> > > +#endif\n> > \n> > Why?  You now have the stuff in two places.  If you want to keep them \n> > in compat/msvc.h to be able to generate .vcproj files, I'd rather not \n> > have them duplicated in the Makefile.\n>\n> The changes to the msvc.h where added just keep Frank's vcproj project \n> working. I would have just nuked all that stuff in the msvc.h since the \n> Makefile would just provide it for me anyways..\n\nSo maybe you and Frank (and Pau) hash out what you want?\n\nCiao,\nDscho\n"},{"id":"121240","messageId":"4A8BDAF6.5060805@gmail.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908190951020.5594@intel-tinevez-2-302","subject":"Re: [msysGit] Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Marius Storm-Olsen","fromEmail":"mstormo@gmail.com","sentAt":"2009-08-19T10:59:02Z","receivedAt":"2009-08-19T10:59:02Z","isPatch":false,"sender":{"key":"mstormo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Johannes Schindelin said the following on 19.08.2009 10:29:\n> Hi,\n> \n> On Wed, 19 Aug 2009, Marius Storm-Olsen wrote:\n> \n>> The full IDE support is secondary, first because you *can* use the IDE \n>> already, and second because it'll be harder to whip something up which \n>> guarantees that the vcproj support stays in-sync at all times and won't \n>> lag behind.\n> \n> I think the point of Frank's patches is to make Visual Studio users \n> comfortable with Git.  You cannot ask those to use a build process or an \n> IDE they are not used to.\n> \n>> Of course, if someone has a huge itch to restructure the current \n>> Makefile; factoring out the files into a file which can simply be \n>> included in the current Makefile, and easily parsed by a script, or \n>> included by CMake, then that can be done in parallel and possible added \n>> to git mainline before the MSVC support patches from Frank.\n> \n> I still think it would be possible to use a combination of a \n> Makefile rule and GNU make features to spit out a list of targets and \n> their dependet .h and .c files.\n\nOk, but you would still have to rely on GNU Make in this setup, and it \nwould have to generate the common_cmds.h before you can even compile \nwith the MSVC IDE.\n\n--\n.marius\n"},{"id":"121247","messageId":"alpine.DEB.1.00.0908191455140.5594@intel-tinevez-2-302","threadId":"20640","inReplyTo":"4A8BDAF6.5060805@gmail.com","subject":"Re: [msysGit] Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2009-08-19T12:56:32Z","receivedAt":"2009-08-19T12:56:32Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi,\n\nOn Wed, 19 Aug 2009, Marius Storm-Olsen wrote:\n\n> Johannes Schindelin said the following on 19.08.2009 10:29:\n> > Hi,\n> > \n> > On Wed, 19 Aug 2009, Marius Storm-Olsen wrote:\n> > \n> > > The full IDE support is secondary, first because you *can* use the \n> > > IDE already, and second because it'll be harder to whip something up \n> > > which guarantees that the vcproj support stays in-sync at all times \n> > > and won't lag behind.\n> > \n> > I think the point of Frank's patches is to make Visual Studio users \n> > comfortable with Git.  You cannot ask those to use a build process or \n> > an IDE they are not used to.\n> > \n> > > Of course, if someone has a huge itch to restructure the current \n> > > Makefile; factoring out the files into a file which can simply be \n> > > included in the current Makefile, and easily parsed by a script, or \n> > > included by CMake, then that can be done in parallel and possible \n> > > added to git mainline before the MSVC support patches from Frank.\n> > \n> > I still think it would be possible to use a combination of a Makefile \n> > rule and GNU make features to spit out a list of targets and their \n> > dependet .h and .c files.\n> \n> Ok, but you would still have to rely on GNU Make in this setup, and it \n> would have to generate the common_cmds.h before you can even compile \n> with the MSVC IDE.\n\nBut then I could bundle it up and give it to a Visual Studio user and they \ndo not need msysGit.\n\nBut maybe we should require them to have msysGit?  After all, if the \npackage is too small, no Windows developer will take it seriously, right? \n;-)\n\nCiao,\nDscho\n"},{"id":"121248","messageId":"4A8BF858.5060002@workspacewhiz.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908190910270.5594@intel-tinevez-2-302","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Joshua Jensen","fromEmail":"jjensen@workspacewhiz.com","sentAt":"2009-08-19T13:04:24Z","receivedAt":"2009-08-19T13:04:24Z","isPatch":false,"sender":{"key":"jjensen@workspacewhiz.com","avatar":"https://avatars.githubusercontent.com/u/111687?v=4"},"body":"----- Original Message -----\nFrom: Johannes Schindelin\nDate: 8/19/2009 1:16 AM\n> Using a Makefile from within Visual Studio is just not the intended way to \n> do things, so you will hit the limitations sooner or later.\n>   \nI use Visual Studio makefile projects daily and have for years.  In my \ncase, an additional script takes the Jam build scripts and creates the \n.vcproj files with the proper file lists and project source folders.  \nThese Makefile .vcproj files have full support for Intellisense, \ndebugging, and nearly everything else.  The only thing a Makefile \nproject doesn't seem to expose is single file compilation.\n\nJosh\n"},{"id":"121252","messageId":"4A8BFD75.8000706@storm-olsen.com","threadId":"20640","inReplyTo":"alpine.DEB.1.00.0908191455140.5594@intel-tinevez-2-302","subject":"Re: [msysGit] Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Marius Storm-Olsen","fromEmail":"marius@storm-olsen.com","sentAt":"2009-08-19T13:26:13Z","receivedAt":"2009-08-19T13:26:13Z","isPatch":false,"sender":{"key":"marius@storm-olsen.com","avatar":"https://avatars.githubusercontent.com/u/1500?v=4"},"body":"Johannes Schindelin said the following on 19.08.2009 14:56:\n> On Wed, 19 Aug 2009, Marius Storm-Olsen wrote:\n>> Ok, but you would still have to rely on GNU Make in this setup,\n>> and it would have to generate the common_cmds.h before you can\n>> even compile with the MSVC IDE.\n> \n> But then I could bundle it up and give it to a Visual Studio user\n> and they do not need msysGit.\n> \n> But maybe we should require them to have msysGit?  After all, if\n> the package is too small, no Windows developer will take it\n> seriously, right? ;-)\n\nThey would still require the rest of the msysgit environment to be \nable to use the result. Not until we have zero scripts left as git \ncommands can we ditch the msysgit environment. So yes, even for \nmsvc-built git is msysgit required. Its just not build with MinGW.\n\n--\n.marius\n\n"},{"id":"121254","messageId":"40aa078e0908190751g2eb7197cp661f256eb7ff568d@mail.gmail.com","threadId":"20640","inReplyTo":"4A8BFD75.8000706@storm-olsen.com","subject":"Re: [RFC] Enable compilation by Makefile for the MSVC toolchain","fromName":"Erik Faye-Lund","fromEmail":"kusmabite@googlemail.com","sentAt":"2009-08-19T14:51:22Z","receivedAt":"2009-08-19T14:51:22Z","isPatch":false,"sender":{"key":"kusmabite@gmail.com","avatar":"https://avatars.githubusercontent.com/u/47073?v=4"},"body":"\nOn Wed, Aug 19, 2009 at 3:26 PM, Marius\nStorm-Olsen<marius@storm-olsen.com> wrote:\n> They would still require the rest of the msysgit environment to be able to\n> use the result. Not until we have zero scripts left as git commands can we\n> ditch the msysgit environment. So yes, even for msvc-built git is msysgit\n> required. Its just not build with MinGW.\n\n...perhaps support for msvc for a subset of git-core (without all\nshell scripts, that is) is just the incentive some windows-developers\nneed to start developing c-versions of the lacking functionality? A\npure C git-core would IMO be the ideal case. Utilities could still be\nscripted on top of this through bindings given that the developer have\nperl installed, no?\n\n-- \nErik \"kusma\" Faye-Lund\nkusmabite@gmail.com\n(+47) 986 59 656\n"}]}