Merge branch 'en/merge-options-ff-and-friends'
[gitweb.git] / config.mak.uname
index 48a6723222dfb7c4cedb49d4523faa6c3003a803..db7f06b95fda4ea8de9f409e11f594c163220463 100644 (file)
@@ -25,10 +25,12 @@ include compat/vcbuild/MSVC-DEFS-GEN
        # See if vcpkg and the vcpkg-build versions of the third-party
        # libraries that we use are installed.  We include the result
        # to get $(vcpkg_*) variables defined for the Makefile.
+ifeq (,$(SKIP_VCPKG))
 compat/vcbuild/VCPKG-DEFS: compat/vcbuild/vcpkg_install.bat
        @"$<"
 include compat/vcbuild/VCPKG-DEFS
 endif
+endif
 
 # We choose to avoid "if .. else if .. else .. endif endif"
 # because maintaining the nesting to match is a pain.  If
@@ -689,3 +691,77 @@ ifeq ($(uname_S),QNX)
        NO_STRCASESTR = YesPlease
        NO_STRLCPY = YesPlease
 endif
+
+vcxproj:
+       # Require clean work tree
+       git update-index -q --refresh && \
+       git diff-files --quiet && \
+       git diff-index --cached --quiet HEAD --
+
+       # Make .vcxproj files and add them
+       unset QUIET_GEN QUIET_BUILT_IN; \
+       perl contrib/buildsystems/generate -g Vcxproj
+       git add -f git.sln {*,*/lib,t/helper/*}/*.vcxproj
+
+       # Generate the LinkOrCopyBuiltins.targets file
+       (echo '<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">' && \
+        echo '  <Target Name="CopyBuiltins_AfterBuild" AfterTargets="AfterBuild">' && \
+        for name in $(BUILT_INS);\
+        do \
+          echo '    <Copy SourceFiles="$$(OutDir)\git.exe" DestinationFiles="$$(OutDir)\'"$$name"'" SkipUnchangedFiles="true" UseHardlinksIfPossible="true" />'; \
+        done && \
+        for name in $(REMOTE_CURL_ALIASES); \
+        do \
+          echo '    <Copy SourceFiles="$$(OutDir)\'"$(REMOTE_CURL_PRIMARY)"'" DestinationFiles="$$(OutDir)\'"$$name"'" SkipUnchangedFiles="true" UseHardlinksIfPossible="true" />'; \
+        done && \
+        echo '  </Target>' && \
+        echo '</Project>') >git/LinkOrCopyBuiltins.targets
+       git add -f git/LinkOrCopyBuiltins.targets
+
+       # Add command-list.h
+       $(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 command-list.h
+       git add -f command-list.h
+
+       # Add scripts
+       rm -f perl/perl.mak
+       $(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 \
+               $(SCRIPT_LIB) $(SCRIPT_SH_GEN) $(SCRIPT_PERL_GEN)
+       # Strip out the sane tool path, needed only for building
+       sed -i '/^git_broken_path_fix ".*/d' git-sh-setup
+       git add -f $(SCRIPT_LIB) $(SCRIPT_SH_GEN) $(SCRIPT_PERL_GEN)
+
+       # Add Perl module
+       $(MAKE) $(LIB_PERL_GEN)
+       git add -f perl/build
+
+       # Add bin-wrappers, for testing
+       rm -rf bin-wrappers/
+       $(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 $(test_bindir_programs)
+       # Ensure that the GIT_EXEC_PATH is a Unix-y one, and that the absolute
+       # path of the repository is not hard-coded (GIT_EXEC_PATH will be set
+       # by test-lib.sh according to the current setup)
+       sed -i -e 's/^\(GIT_EXEC_PATH\)=.*/test -n "$${\1##*:*}" ||\
+                       \1="$$(cygpath -u "$$\1")"/' \
+               -e "s|'$$(pwd)|\"\$$GIT_EXEC_PATH\"'|g" bin-wrappers/*
+       # Ensure that test-* helpers find the .dll files copied to top-level
+       sed -i 's|^PATH=.*|&:"$$GIT_EXEC_PATH"|' bin-wrappers/test-*
+       # We do not want to force hard-linking builtins
+       sed -i 's|\(git\)-\([-a-z]*\)\.exe"|\1.exe" \2|g' \
+               bin-wrappers/git-{receive-pack,upload-archive}
+       git add -f $(test_bindir_programs)
+       # remote-ext is a builtin, but invoked as if it were external
+       sed 's|receive-pack|remote-ext|g' \
+               <bin-wrappers/git-receive-pack >bin-wrappers/git-remote-ext
+       git add -f bin-wrappers/git-remote-ext
+
+       # Add templates
+       $(MAKE) -C templates
+       git add -f templates/boilerplates.made templates/blt/
+
+       # Add build options
+       $(MAKE) MSVC=1 SKIP_VCPKG=1 prefix=/mingw64 GIT-BUILD-OPTIONS
+       git add -f GIT-BUILD-OPTIONS
+
+       # Commit the whole shebang
+       git commit -m "Generate Visual Studio solution" \
+               -m "Auto-generated by \`$(MAKE)$(MAKEFLAGS) $@\`"