mbox series

[v2,00/23] Reinstate support for Visual Studio

Message ID pull.287.v2.git.gitgitgadget@gmail.com (mailing list archive)
Headers show
Series Reinstate support for Visual Studio | expand

Message

Linus Arver via GitGitGadget July 29, 2019, 8:08 p.m. UTC
A long time ago, we added support to build .sln and .vcproj files for use
within Visual Studio, so that Git could be built in that popular IDE.

This support languished for years and was finally brought back into Git for
Windows partially through the jh/msvc branch that was just merged into 
master. With the tremendous help by Philip Oakley and Jeff Hostetler, this
re-adds support for Visual Studio, focusing on VS 2015 and later (older
versions are currently unsupported, even if we worked a bit on that front,
too; If there are volunteers to add support for older versions, I would be
delighted to review PRs to that end on 
https://github.com/git-for-windows/git).

Note: the currently preferred way to contribute using Visual Studio is by
using Git for Windows' vs/master branch (which is automatically generated
using the make vcxproj build target that this patch series adds, updated
every time Git for Windows' master advances). My plan is to provide a
similar branch in GitGitGadget, based on top of git.git's master, once this
patch series is integrated.

Changes since v1:

 * The empty directory templates/blt/branches/ is now created as part of the
   build.

Johannes Schindelin (14):
  Vcproj.pm: auto-generate GUIDs
  Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
  Vcproj.pm: urlencode '<' and '>' when generating VC projects
  contrib/buildsystems: ignore irrelevant files in Generators/
  contrib/buildsystems: error out on unknown option
  contrib/buildsystems: handle libiconv, too
  contrib/buildsystems: also handle -lexpat
  contrib/buildsystems: handle options starting with a slash
  contrib/buildsystems: add a backend for modern Visual Studio versions
  msvc: add a Makefile target to pre-generate the Visual Studio solution
  vcxproj: also link-or-copy builtins
  .gitignore: ignore Visual Studio's temporary/generated files
  bin-wrappers: append `.exe` to target paths if necessary
  git: avoid calling aliased builtins via their dashed form

Philip Oakley (9):
  Vcproj.pm: list git.exe first to be startup project
  contrib/buildsystems: ignore invalidcontinue.obj
  contrib/buildsystems: fix misleading error message
  contrib/buildsystems: handle quoted spaces in filenames
  contrib/buildsystems: ignore gettext stuff
  contrib/buildsystems: redirect errors of the dry run into a log file
  contrib/buildsystems: optionally capture the dry-run in a file
  contrib/buildsystems: handle the curl library option
  .gitignore: touch up the entries regarding Visual Studio

 .gitignore                                 |   8 +-
 Makefile                                   |   2 +-
 compat/vcbuild/README                      |  23 ++
 config.mak.uname                           |  76 ++++
 contrib/buildsystems/Generators.pm         |   2 +-
 contrib/buildsystems/Generators/Vcproj.pm  | 119 ++-----
 contrib/buildsystems/Generators/Vcxproj.pm | 388 +++++++++++++++++++++
 contrib/buildsystems/engine.pl             |  55 ++-
 git.c                                      |   3 -
 9 files changed, 576 insertions(+), 100 deletions(-)
 create mode 100644 contrib/buildsystems/Generators/Vcxproj.pm


base-commit: 9d418600f4d10dcbbfb0b5fdbc71d509e03ba719
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-287%2Fdscho%2Fvisual-studio-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-287/dscho/visual-studio-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/287

Range-diff vs v1:

  1:  240ff42517 =  1:  240ff42517 Vcproj.pm: auto-generate GUIDs
  2:  a7898b0025 =  2:  a7898b0025 Vcproj.pm: list git.exe first to be startup project
  3:  d42fd0fe2e =  3:  d42fd0fe2e Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
  4:  f4d41c65e9 =  4:  f4d41c65e9 Vcproj.pm: urlencode '<' and '>' when generating VC projects
  5:  82e820017b =  5:  82e820017b contrib/buildsystems: ignore invalidcontinue.obj
  6:  60a45f2694 =  6:  60a45f2694 contrib/buildsystems: ignore irrelevant files in Generators/
  7:  b8eb868316 =  7:  b8eb868316 contrib/buildsystems: fix misleading error message
  8:  c10fd668ef =  8:  c10fd668ef contrib/buildsystems: handle quoted spaces in filenames
  9:  e908d01f07 =  9:  e908d01f07 contrib/buildsystems: ignore gettext stuff
 10:  3cfbb7843a = 10:  3cfbb7843a contrib/buildsystems: redirect errors of the dry run into a log file
 11:  eaf1dd449d = 11:  eaf1dd449d contrib/buildsystems: optionally capture the dry-run in a file
 12:  c696152c7f = 12:  c696152c7f contrib/buildsystems: error out on unknown option
 13:  b07e83440d = 13:  b07e83440d contrib/buildsystems: handle the curl library option
 14:  052a98b8bb = 14:  052a98b8bb contrib/buildsystems: handle libiconv, too
 15:  5c9702ea50 = 15:  5c9702ea50 contrib/buildsystems: also handle -lexpat
 16:  1d4c5539ef = 16:  1d4c5539ef contrib/buildsystems: handle options starting with a slash
 17:  59c50989ea ! 17:  bc6a10ba47 contrib/buildsystems: add a backend for modern Visual Studio versions
     @@ -296,6 +296,7 @@
      +      <DLLsAndPDBs Include="\$(VCPKGBinDirectory)\\*.dll;\$(VCPKGBinDirectory)\\*.pdb" />
      +    </ItemGroup>
      +    <Copy SourceFiles="@(DLLsAndPDBs)" DestinationFolder="\$(OutDir)" SkipUnchangedFiles="true" UseHardlinksIfPossible="true" />
     ++    <MakeDir Directories="..\\templates\\blt\\branches" />
      +  </Target>
      +EOM
      +    }
 18:  23615bc8cf = 18:  2a3379d721 msvc: add a Makefile target to pre-generate the Visual Studio solution
 19:  33bed9a7a6 = 19:  4dbbe3f4a2 vcxproj: also link-or-copy builtins
 20:  44f0f3235e = 20:  dc4a9cc620 .gitignore: touch up the entries regarding Visual Studio
 21:  8f19bb5a8c = 21:  3f862bf878 .gitignore: ignore Visual Studio's temporary/generated files
 22:  971247e320 = 22:  a81cc2ccce bin-wrappers: append `.exe` to target paths if necessary
 23:  db69b33ff4 <  -:  ---------- t5505,t5516: create .git/branches/ when needed
 24:  151b9921d0 = 23:  6452dc11bc git: avoid calling aliased builtins via their dashed form

Comments

Junio C Hamano July 29, 2019, 9:56 p.m. UTC | #1
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:

> A long time ago, we added support to build .sln and .vcproj files for use
> within Visual Studio, so that Git could be built in that popular IDE.
> ...
> Changes since v1:
>
>  * The empty directory templates/blt/branches/ is now created as part of the
>    build.

This did not cut today's pushout, but replacing the topic branch and
rebuilding 'pu' was quite straight-forward with just a single liner
change ;-)

It will appear in 'next' sometime tomorrow.

Thanks.