<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/contrib/buildsystems/Generators, branch master</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=master</id>
<link rel='self' href='https://git.shady.money/git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2025-05-05T21:15:19Z</updated>
<entry>
<title>contrib/buildsystems: drop support for building . vcproj/.vcxproj files</title>
<updated>2025-05-05T21:15:19Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2025-05-05T07:39:49Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=dc5e178f608fff68addb749081c72049e90e6995'/>
<id>urn:sha1:dc5e178f608fff68addb749081c72049e90e6995</id>
<content type='text'>
Before we had CMake support, the only way to build Git in Visual Studio
was via this hacky `generate` script.

For a while I tried to fix whenever things got broken, in particular to
allow building confidence in embargoed releases by running the CI builds
in Azure Pipelines in a private Azure DevOps project. I even carried the
patches in Git for Windows with the intention of upstreaming them,
eventually.

However, it is a lot of work with too little benefit. CMake is much
better supported by Visual Studio. So let's drop this hacky script (plus
support code).

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>win32: add a helper to run `git.exe` without a foreground window</title>
<updated>2023-08-09T20:58:13Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2023-08-09T16:54:46Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=4b8a2717bb5ea6b787e0037174dcbf53ccf4985c'/>
<id>urn:sha1:4b8a2717bb5ea6b787e0037174dcbf53ccf4985c</id>
<content type='text'>
On Windows, there are two kinds of executables, console ones and
non-console ones. Git's executables are all console ones.

When launching the former e.g. in a scheduled task, a CMD window pops
up. This is not what we want for the tasks installed via the `git
maintenance` command.

To work around this, let's introduce `headless-git.exe`, which is a
non-console program that does _not_ pop up any window. All it does is to
re-launch `git.exe`, suppressing that console window, passing through
all command-line arguments as-are.

Helped-by: Carlo Marcelo Arenas Belón &lt;carenas@gmail.com&gt;
Helped-by: Yuyi Wang &lt;Strawberry_Str@hotmail.com&gt;
Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Derrick Stolee &lt;dstolee@microsoft.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>reftable: utility functions</title>
<updated>2021-10-08T17:45:48Z</updated>
<author>
<name>Han-Wen Nienhuys</name>
<email>hanwen@google.com</email>
</author>
<published>2021-10-07T20:25:00Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=ef8a6c62687984f2562463286e60ec1c66242b5c'/>
<id>urn:sha1:ef8a6c62687984f2562463286e60ec1c66242b5c</id>
<content type='text'>
This commit provides basic utility classes for the reftable library.

Signed-off-by: Han-Wen Nienhuys &lt;hanwen@google.com&gt;
Helped-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>contrib/buildsystems: fix expat library name for generated vcxproj</title>
<updated>2020-09-08T21:50:00Z</updated>
<author>
<name>Orgad Shaneh</name>
<email>orgads@gmail.com</email>
</author>
<published>2020-09-07T06:00:05Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=e58e40556fc40cc39c018d98f7fcc09bdf3c398e'/>
<id>urn:sha1:e58e40556fc40cc39c018d98f7fcc09bdf3c398e</id>
<content type='text'>
expat.lib -&gt; libexpat.lib (libexpatd.lib for debug build).

Signed-off-by: Orgad Shaneh &lt;orgads@gmail.com&gt;
Acked-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'js/azure-pipelines-msvc'</title>
<updated>2019-10-15T04:48:00Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2019-10-15T04:48:00Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6d5291be450594d453759650f466174f39953c4f'/>
<id>urn:sha1:6d5291be450594d453759650f466174f39953c4f</id>
<content type='text'>
CI updates.

* js/azure-pipelines-msvc:
  ci: also build and test with MS Visual Studio on Azure Pipelines
  ci: really use shallow clones on Azure Pipelines
  tests: let --immediate and --write-junit-xml play well together
  test-tool run-command: learn to run (parts of) the testsuite
  vcxproj: include more generated files
  vcxproj: only copy `git-remote-http.exe` once it was built
  msvc: work around a bug in GetEnvironmentVariable()
  msvc: handle DEVELOPER=1
  msvc: ignore some libraries when linking
  compat/win32/path-utils.h: add #include guards
  winansi: use FLEX_ARRAY to avoid compiler warning
  msvc: avoid using minus operator on unsigned types
  push: do not pretend to return `int` from `die_push_simple()`
</content>
</entry>
<entry>
<title>vcxproj: only copy `git-remote-http.exe` once it was built</title>
<updated>2019-10-06T00:07:44Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2019-10-04T15:09:31Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=030a628b815f87d29def74bdf9d3635f7e4c0dac'/>
<id>urn:sha1:030a628b815f87d29def74bdf9d3635f7e4c0dac</id>
<content type='text'>
In b18ae14a8f6 (vcxproj: also link-or-copy builtins, 2019-07-29), we
started to copy or hard-link the built-ins as a post-build step of the
`git` project.

At the same time, we tried to copy or hard-link `git-remote-http.exe`,
but it is quite possible that it was not built at that time.

Let's move that latter task into a post-install step of the
`git-remote-http` project instead.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>contrib/buildsystems: fix Visual Studio Debug configuration</title>
<updated>2019-09-28T04:43:36Z</updated>
<author>
<name>Alexandr Miloslavskiy</name>
<email>alexandr.miloslavskiy@syntevo.com</email>
</author>
<published>2019-09-23T08:28:35Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=fe0ed5d5e9d726d195758f7ae9b00e61399d8319'/>
<id>urn:sha1:fe0ed5d5e9d726d195758f7ae9b00e61399d8319</id>
<content type='text'>
Even though Debug configuration builds, the resulting build is incorrect
in a subtle way: it mixes up Debug and Release binaries, which in turn
causes hard-to-predict bugs.

In my case, when git calls iconv library, iconv sets 'errno' and git
then tests it, but in Debug and Release CRT those 'errno' are different
memory locations.

This patch addresses 3 connected bugs:
1) Typo in '\(Configuration)'. As a result, Debug configuration
   condition is always false and Release path is taken instead.
2) Regexp that replaced 'zlib.lib' with 'zlibd.lib' was only affecting
   the first occurrence. However, some projects have it listed twice.
   Previously this bug was hidden, because Debug path was never taken.
   I decided that avoiding double -lz in makefile is fragile and I'd
   better replace all occurrences instead.
3) In Debug, 'libcurl-d.lib' should be used instead of 'libcurl.lib'.
   Previously this bug was hidden, because Debug path was never taken.

Signed-off-by: Alexandr Miloslavskiy &lt;alexandr.miloslavskiy@syntevo.com&gt;
Acked-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>vcxproj: also link-or-copy builtins</title>
<updated>2019-07-29T21:51:43Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2019-07-29T20:08:13Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b18ae14a8f6da9a04d0a6e4698d8ccea4afb546d'/>
<id>urn:sha1:b18ae14a8f6da9a04d0a6e4698d8ccea4afb546d</id>
<content type='text'>
The default location for `.exe` files linked by Visual Studio depends on
the mode (debug vs release) and the architecture. Meaning: after a full
build, there is a `git.exe` in the top-level directory, but none of the
built-ins are linked..

When running a test script in Git Bash, it therefore would pick up the
wrong, say, `git-receive-pack.exe`: the one installed at the same time
as the Git Bash.

Absolutely not what we want. We want to have confidence that our test
covers the MSVC-built Git executables, and not some random stuff.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>contrib/buildsystems: add a backend for modern Visual Studio versions</title>
<updated>2019-07-29T21:51:43Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2019-07-29T20:08:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=384a61bc6a8e6dc241d685acf4fb7b5a15003dbb'/>
<id>urn:sha1:384a61bc6a8e6dc241d685acf4fb7b5a15003dbb</id>
<content type='text'>
Based on the previous patches in this patch series that fixed the
generator for `.vcproj` files (which were used by Visual Studio prior to
2015 to define projects), this patch offers to generate project
definitions for neweer versions of Visual Studio (which use `.vcxproj`
files).

To that end, this patch copy-edits the generator of the `.vcproj`.

In addition, we now use the `vcpkg` system which allows us to build
Git's dependencies (e.g. curl, libexpat) conveniently. The support
scripts were introduced in the `jh/msvc` patch series, and with this
patch we initialize the `vcpkg` conditionally, in the `libgit` project's
`PreBuildEvent`. To allow for parallel building of the projects, we
therefore put `libgit` at the bottom of the project hierarchy.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Vcproj.pm: urlencode '&lt;' and '&gt;' when generating VC projects</title>
<updated>2019-07-29T21:51:42Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2019-07-29T20:08:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=158471d155827e295266e3eb128dac47fca3d1e7'/>
<id>urn:sha1:158471d155827e295266e3eb128dac47fca3d1e7</id>
<content type='text'>
Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
