# Maintainer: Johannes Schindelin <johannes.schindelin@gmx.de>

_realname=git
pkgbase="mingw-w64-${_realname}"
pkgname=("${MINGW_PACKAGE_PREFIX}-${_realname}"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-doc-html"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-doc-man"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-subtree"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-credential-wincred"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-perl"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-send-email"
	 "${MINGW_PACKAGE_PREFIX}-gitweb"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-svn"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-archimport"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-cvs"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-p4"
	 "${MINGW_PACKAGE_PREFIX}-gitk"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-gui"
	 "${MINGW_PACKAGE_PREFIX}-${_realname}-for-windows-addons")
tag=2.53.0.windows.1
pkgver=2.53.0.1
pkgrel=1
pkgdesc="The fast distributed version control system (mingw-w64)"
arch=('any')
mingw_arch=('mingw32' 'mingw64' 'ucrt64' 'clang64' 'clangarm64')
url="https://gitforwindows.org/"
license=('GPL2')

options=()
makedepends=('git' 'openssh' 'ca-certificates' 'xmlto' 'docbook-xsl' 'docbook-xsl-ns'
	"${MINGW_PACKAGE_PREFIX}-cc"
	"${MINGW_PACKAGE_PREFIX}-curl"
	"${MINGW_PACKAGE_PREFIX}-expat>=2.0"
	"${MINGW_PACKAGE_PREFIX}-openssl"
	"${MINGW_PACKAGE_PREFIX}-pcre2"
	"${MINGW_PACKAGE_PREFIX}-asciidoctor")

source=("${_realname}"::"git+https://github.com/git-for-windows/git.git#tag=v$tag"
	'git-for-windows.ico'
	'start-ssh-agent.cmd'
	'start-ssh-pageant.cmd'
	'git-wrapper.c'
	'git-bash.rc'
	'git-bash.adoc'
	'git-cmd.rc'
	'git-wrapper.rc'
	'gitk.rc'
	'compat-bash.rc'
	'tig.rc'
	'mingw-w64-git.mak'
	'cv2pdb-strip'
	'edit-git-bash.c')

# Need to disable autoCRLF to ensure a stable checksum; `git archive` (which
# is used by `calc_checksum_git()` in `/usr/share/makepkg/source/git.sh`) would
# otherwise produce different line endings depending on the autoCRLF setting,
# resulting in different sha256sums.
export GIT_CONFIG_PARAMETERS="${GIT_CONFIG_PARAMETERS:+$GIT_CONFIG_PARAMETERS }'core.autocrlf=false' 'core.eol=lf'"

sha256sums=('5f624e2511c445b832d9bbd65a74c27630be79994bf38dde4a4f8013d89e60e0'
            'a9dcba5aebc93ae7aacdee03275780fc6c0f15e88fda30c93041e75851e75090'
            'f16b345aba17acd124ab5940635dfa2d87445df73eedbeb80e0285f29c85415a'
            '80b0b11efe5a2f9b4cd92f28c260d0b3aad8b809c34ed95237c59b73e08ade0b'
            'c8e964f8602fd01fa694cfdead760013442fab3b104a9889e2eef18c18220901'
            'dab3e41e935a33f443a4ff4ef4ce92c191b6d952d9eb37e14885540ad5af99ed'
            'c975292adae1f2666f07f8ee9b7d50576da249d9151c6bd211602adc8d37b6ab'
            '53e630f581bee400100d074189754413afb6670ba1c09a5a3a09c5b575e41e60'
            'db754d6fe6722ad54d43df15ee93b1d9cead406158ed84dcbf35e5b4225469ed'
            'db754d6fe6722ad54d43df15ee93b1d9cead406158ed84dcbf35e5b4225469ed'
            'cbed8b133eb9eec9972f146be5c3ff49db29b2fff8ab9c87a6d0c646c08a5128'
            '027155aa6ca5f11ad7bcb89550a470935a9f22a9d5b3ab80a9eb209983258c1f'
            '0fdd361fbdfc299515a976383e2268f69db0b95bc2d2f43b3ab7930e2341d789'
            '7413506c59d25621e475aa45447993748332c72cfbb4cf94cce6bee6f1218a09'
            '6d83e1cb1acdb6eb1f2d5cb9299298e57680f5ca43d43c3e67c9da17f21b9b01')

COMPAT_CFLAGS=
STRIP=
STRIP_OPTS=
LDFLAGS=

if test -z "$WITH_PDBS"
then
  options+=('strip')
elif [[ "$MSYSTEM" == CLANG* ]]
then
  pkgname+=("${MINGW_PACKAGE_PREFIX}-${_realname}-pdb")
  options+=('!strip')
  STRIP=llvm-strip
  STRIP_OPTS=--strip-debug
  LDFLAGS="-Wl,-pdb=" # Ensures that Clang generates PDB files
else
  pkgname+=("${MINGW_PACKAGE_PREFIX}-${_realname}-pdb")
  makedepends+=("${MINGW_PACKAGE_PREFIX}-cv2pdb")
  options+=('!strip')
  COMPAT_CFLAGS="-gdwarf-4 -gstrict-dwarf" # cv2pdb cannot really handle DWARF5 yet
  STRIP="${BASH_SOURCE%/*}/src/cv2pdb-strip"
fi

SHAREDIR=$MINGW_PREFIX/share/git

prepare () {
  cd "$srcdir/git" &&

  cat >config.mak <<-EOF
	CC = $CC
	USE_ASCIIDOCTOR = YesPlease
	COMPAT_CFLAGS += $COMPAT_CFLAGS
	LDFLAGS = $LDFLAGS
	EOF

  cp ../git-bash.adoc Documentation/
}

build() {
  cd "$srcdir/git"

  # Git wants to decide itself whether to use ANSI stdio emulation or not
  CPPFLAGS="$(echo "$CPPFLAGS" |
	sed 's/-D__USE_MINGW_ANSI_STDIO\(=[0-9]*\)\?//')"

  # Guarantee that `GIT-VERSION-GEN` determines the version
  unset GIT_VERSION

  # Make git-bash.exe first, to avoid triggering `* new link flags`
  rm -f *.res &&
  make -f ../mingw-w64-git.mak git-wrapper.exe \
	git-bash.exe git-cmd.exe compat-bash.exe \
	cmd/git.exe cmd/gitk.exe cmd/git-gui.exe \
	cmd/git-receive-pack.exe cmd/git-upload-pack.exe \
	cmd/tig.exe edit-git-bash.exe &&
  rm -f *.res &&

  # Also build git-credential-wincred.exe before the rest, so that those
  # LDFLAGS *really* do not cause `git.exe` to be re-linked after it was
  # stripped.
  export PATH="$MINGW_PREFIX/bin:$PATH"
  make -C contrib/credential/wincred clean &&
  make -C contrib/credential/wincred &&

  targets= &&
  case "${pkgname[@]}" in ''|*-git|*-git\ *) targets="$targets all";; esac &&
  case "${pkgname[@]}" in ''|*html*) targets="$targets html";; esac &&
  case "${pkgname[@]}" in ''|*man*) targets="$targets man";; esac &&

  make $targets &&

  case "${pkgname[@]}" in *pdb*)
    make -f ../mingw-w64-git.mak STRIP="$STRIP" STRIP_OPTS=$STRIP_OPTS strip-all &&
    if [[ "$MSYSTEM" == CLANG* ]]; then
      # Clang doesn't generate PDBs for the files below, because they're hard linked to git-remote-http.
      for i in git-remote-https.pdb git-remote-ftp.pdb git-remote-ftps.pdb
      do
        ln git-remote-http.pdb $i ||
        return 1
      done
    fi
    ;;
  esac &&
  case " $targets " in
  *" all "*)
    make -f ../mingw-w64-git.mak sign-executables &&
    make -f ../mingw-w64-git.mak print-builtins | tr ' ' '\n' > builtins.txt
    ;;
  esac
}

package_git () {
  depends=("${MINGW_PACKAGE_PREFIX}-curl"
           "${MINGW_PACKAGE_PREFIX}-ca-certificates"
           "${MINGW_PACKAGE_PREFIX}-expat>=2.0"
           "${MINGW_PACKAGE_PREFIX}-openssl"
           "${MINGW_PACKAGE_PREFIX}-pcre2")

  cd "$srcdir"/git

  make -j1 DESTDIR="$pkgdir" install

  # Remove git-send-email (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-send-email"

  # Remove gitweb (packaged separately)
  rm -rf "$pkgdir/$MINGW_PREFIX/share/gitweb"

  # Remove git-svn (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-svn"

  # Remove Git.pm and other Perl modules (packaged separately in git-perl & git-svn)
  make -j1 -f ../mingw-w64-git.mak DESTDIR="$pkgdir" uninstall-perl-modules

  # Remove git-archimport (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-archimport"

  # Remove git-cvs* (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/bin/git-cvsserver"
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-cvsexportcommit"
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-cvsimport"
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-cvsserver"

  # Remove gitk (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/bin/gitk"
  rm -rf "$pkgdir/$MINGW_PREFIX/share/gitk"

  # Remove git-gui (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-gui"
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-gui.tcl"
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-gui--askpass"
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-gui--askyesno"
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-citool"
  rm -rf "$pkgdir/$MINGW_PREFIX/share/git-gui"

  # Remove git-p4 (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-p4"

  # completions
  install -d "$pkgdir$SHAREDIR/completion/"
  install contrib/completion/* "$pkgdir$SHAREDIR/completion/"
}

package_git-doc-html () {
  cd "$srcdir"/git

  make DESTDIR="$pkgdir" install-html

  # Remove git-bash documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-bash.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-bash.html

  # Remove git-send-email documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-send-email.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-send-email.html

  # Remove gitweb documentation (packages separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"gitweb.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"gitweb.html
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"gitweb.conf.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"gitweb.conf.html

  # Remove git-svn documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-svn.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-svn.html

  # Remove git-archimport documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-archimport.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-archimport.html

  # Remove git-cvs* documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-cvsexportcommit.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-cvsexportcommit.html
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-cvsimport.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-cvsimport.html
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-cvsserver.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-cvsserver.html
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"gitcvs-migration.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"gitcvs-migration.html

  # Remove git-p4 documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-p4.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-p4.html

  # Remove gitk and git-gui documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"gitk.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"gitk.html
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-gui.adoc
  rm -f "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"git-gui.html
}

package_git-doc-man () {
  cd "$srcdir"/git

  make DESTDIR="$pkgdir" install-man

  # Remove git-bash documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/git-bash.1"

  # Remove git-send-email documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/git-send-email.1"

  # Remove gitweb documentation (packages separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/gitweb.1"
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man5/gitweb.conf.5"

  # Remove git-svn documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/git-svn.1"

  # Remove git-archimport documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/git-archimport.1"

  # Remove git-cvs* documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/git-cvsexportcommit.1"
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/git-cvsimport.1"
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/git-cvsserver.1"
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man7/gitcvs-migration.7"

  # Remove git-p4 documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/git-p4.1"

  # Remove gitk and git-gui documentation (packaged separately)
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/gitk.1"
  rm -f "$pkgdir/$MINGW_PREFIX/share/man/man1/git-gui.1"
}

package_git-subtree () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}")
  pkgdesc="Subtree support for Git (mingw-w64)"

  cd "$srcdir"/git

  make -C contrib/subtree prefix="$pkgdir/$MINGW_PREFIX" install
  make -C contrib/subtree prefix="$pkgdir/$MINGW_PREFIX" install-man
  make -C contrib/subtree prefix="$pkgdir/$MINGW_PREFIX" install-html
}

package_git-credential-wincred () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}")
  pkgdesc="Git credential helper for Windows Credential Manager (mingw-w64)"

  cd "$srcdir"/git

  install -d -m755 "$pkgdir/$MINGW_PREFIX/libexec/git-core"
  make -C contrib/credential/wincred prefix="$pkgdir/$MINGW_PREFIX" install
}

package_git-perl () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}"
           "perl>=5.14.0"
           "perl-Error"
           "perl-libwww"
           "perl-TermReadKey")
  pkgdesc="Perl module for Git (mingw-w64)"

  cd "$srcdir"/git

  # Install Git.pm and related Perl modules (excluding Git::SVN)
  make -j1 -f ../mingw-w64-git.mak DESTDIR="$pkgdir" install-perl-module
}

package_git-send-email () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}"
           "${MINGW_PACKAGE_PREFIX}-${_realname}-perl=${pkgver}"
           "perl-Authen-SASL"
           "perl-MIME-tools"
           "perl-Net-SMTP-SSL")
  pkgdesc="Send patch emails with git (mingw-w64)"

  cd "$srcdir"/git

  install -d -m755 "$pkgdir/$MINGW_PREFIX/libexec/git-core"
  install -m755 git-send-email "$pkgdir/$MINGW_PREFIX/libexec/git-core/"

  # Install documentation
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man1"
  install -m644 Documentation/git-send-email.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/doc/git-doc"
  install -m644 Documentation/git-send-email.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-send-email.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
}

package_gitweb () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}"
           "perl")
  pkgdesc="Git web interface (mingw-w64)"

  cd "$srcdir"/git

  make DESTDIR="$pkgdir" install-gitweb

  # Install documentation
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man1"
  install -m644 Documentation/gitweb.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man5"
  install -m644 Documentation/gitweb.conf.5 "$pkgdir/$MINGW_PREFIX/share/man/man5/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/doc/git-doc"
  install -m644 Documentation/gitweb.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/gitweb.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/gitweb.conf.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/gitweb.conf.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
}

package_git-svn () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}"
           "${MINGW_PACKAGE_PREFIX}-${_realname}-perl=${pkgver}"
           "subversion")
  pkgdesc="Subversion support for Git (mingw-w64)"

  cd "$srcdir"/git

  install -d -m755 "$pkgdir/$MINGW_PREFIX/libexec/git-core"
  install -m755 git-svn "$pkgdir/$MINGW_PREFIX/libexec/git-core/"

  # Install Git::SVN Perl modules only
  make -j1 DESTDIR="$pkgdir" -f ../mingw-w64-git.mak install-perl-svn-module

  # Install documentation
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man1"
  install -m644 Documentation/git-svn.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/doc/git-doc"
  install -m644 Documentation/git-svn.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-svn.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
}

package_git-archimport () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}"
           "${MINGW_PACKAGE_PREFIX}-${_realname}-perl=${pkgver}")
  pkgdesc="Import an Arch repository into Git (mingw-w64)"

  cd "$srcdir"/git

  install -d -m755 "$pkgdir/$MINGW_PREFIX/libexec/git-core"
  install -m755 git-archimport "$pkgdir/$MINGW_PREFIX/libexec/git-core/"

  # Install documentation
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man1"
  install -m644 Documentation/git-archimport.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/doc/git-doc"
  install -m644 Documentation/git-archimport.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-archimport.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
}

package_git-cvs () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}"
           "${MINGW_PACKAGE_PREFIX}-${_realname}-perl=${pkgver}"
           "perl-DBI")
  pkgdesc="CVS support for Git (mingw-w64)"

  cd "$srcdir"/git

  install -d -m755 "$pkgdir/$MINGW_PREFIX/bin"
  install -m755 git-cvsserver "$pkgdir/$MINGW_PREFIX/bin/"

  install -d -m755 "$pkgdir/$MINGW_PREFIX/libexec/git-core"
  install -m755 git-cvsexportcommit "$pkgdir/$MINGW_PREFIX/libexec/git-core/"
  install -m755 git-cvsimport "$pkgdir/$MINGW_PREFIX/libexec/git-core/"
  ln "$pkgdir/$MINGW_PREFIX/bin/git-cvsserver" "$pkgdir/$MINGW_PREFIX/libexec/git-core/git-cvsserver"

  # Install documentation
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man1"
  install -m644 Documentation/git-cvsexportcommit.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -m644 Documentation/git-cvsimport.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -m644 Documentation/git-cvsserver.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man7"
  install -m644 Documentation/gitcvs-migration.7 "$pkgdir/$MINGW_PREFIX/share/man/man7/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/doc/git-doc"
  install -m644 Documentation/git-cvsexportcommit.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-cvsexportcommit.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-cvsimport.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-cvsimport.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-cvsserver.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-cvsserver.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/gitcvs-migration.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/gitcvs-migration.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
}

package_gitk () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}"
           "${MINGW_PACKAGE_PREFIX}-tcl"
           "${MINGW_PACKAGE_PREFIX}-tk")
  pkgdesc="Git repository browser (mingw-w64)"

  cd "$srcdir"/git

  make -C gitk-git prefix="$pkgdir/$MINGW_PREFIX" install

  # Install documentation
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man1"
  install -m644 Documentation/gitk.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/doc/git-doc"
  install -m644 Documentation/gitk.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/gitk.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
}

package_git-gui () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}"
           "${MINGW_PACKAGE_PREFIX}-tcl"
           "${MINGW_PACKAGE_PREFIX}-tk")
  pkgdesc="Git GUI tool (mingw-w64)"

  cd "$srcdir"/git

  make -C git-gui DESTDIR="$pkgdir$MINGW_PREFIX" gitexecdir=/libexec/git-core install

  # Install documentation
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man1"
  install -m644 Documentation/git-gui.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/doc/git-doc"
  install -m644 Documentation/git-gui.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-gui.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
}

package_git-p4 () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}"
           "${MINGW_PACKAGE_PREFIX}-python")
  pkgdesc="Perforce support for Git (mingw-w64)"

  cd "$srcdir"/git

  install -d -m755 "$pkgdir/$MINGW_PREFIX/libexec/git-core"
  install -m755 git-p4 "$pkgdir/$MINGW_PREFIX/libexec/git-core/"

  # Install documentation
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man1"
  install -m644 Documentation/git-p4.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/doc/git-doc"
  install -m644 Documentation/git-p4.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-p4.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
}

echo 'bin_path () {
	echo "$(cygpath -am / | sed "s/^\\([A-Z]\\):/\\/proc\\/cygdrive\\/\\1/")/bin"
}

copy_files () {
	mkdir -p "$2" &&
	cp "$1"/share/git/compat-bash.exe "$2"/bash.exe &&
	cp "$1"/share/git/compat-bash.exe "$2"/sh.exe &&
	cp /cmd/git.exe "$2"/
}

post_install () {
	# Install git, bash and sh redirectors into the bin/ directory
	# This needs to use the absolute path because /bin/ is overlayed by
	# /usr/bin/.
	copy_files '"$MINGW_PREFIX"' "$(bin_path)"
}

post_upgrade () {
	post_install
}

remove_files () {
	rm "$1"/git.exe "$1"/bash.exe "$1"/sh.exe &&
	{ test -n "$(ls -A "$1")" || rm -r "$1"; }
}

post_remove () {
	remove_files "$(bin_path)"
}
' >"${MINGW_PACKAGE_PREFIX}-git-for-windows-addons.install"

package_git-for-windows-addons () {
  depends=("${MINGW_PACKAGE_PREFIX}-${_realname}=${pkgver}"
    "${MINGW_PACKAGE_PREFIX}-${_realname}-subtree"
    "${MINGW_PACKAGE_PREFIX}-${_realname}-credential-wincred"
    "${MINGW_PACKAGE_PREFIX}-${_realname}-send-email"
    "${MINGW_PACKAGE_PREFIX}-${_realname}-svn"
    "${MINGW_PACKAGE_PREFIX}-gitk"
    "${MINGW_PACKAGE_PREFIX}-${_realname}-gui")
  pkgdesc="Git for Windows extra executables and wrappers (mingw-w64)"
  install=${MINGW_PACKAGE_PREFIX}-git-for-windows-addons.install

  cd "$srcdir"/git

  # Git Bash, Git CMD
  install -d -m755 $pkgdir$SHAREDIR
  install -m755 ../git-for-windows.ico $pkgdir$SHAREDIR
  install -m755 git-bash.exe git-cmd.exe $pkgdir
  install -m755 edit-git-bash.exe $pkgdir$SHAREDIR

  # Compatibility Bash, git-wrapper.exe
  install -m755 compat-bash.exe git-wrapper.exe $pkgdir$SHAREDIR

  # Install Git wrapper into /cmd/
  install -d -m755 $pkgdir/cmd
  install -m755 cmd/git.exe cmd/gitk.exe cmd/git-gui.exe \
	cmd/git-receive-pack.exe cmd/git-upload-pack.exe \
	cmd/tig.exe ../start-ssh-agent.cmd ../start-ssh-pageant.cmd \
	$pkgdir/cmd

  # Scalar
  test ! -x ./scalar.exe ||
  install -m755 cmd/git.exe $pkgdir/cmd/scalar.exe

  # Install builtins.txt
  install -m644 builtins.txt $pkgdir$SHAREDIR

  # Install documentation
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/man/man1"
  install -m644 Documentation/git-bash.1 "$pkgdir/$MINGW_PREFIX/share/man/man1/"
  install -d -m755 "$pkgdir/$MINGW_PREFIX/share/doc/git-doc"
  install -m644 Documentation/git-bash.adoc "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
  install -m644 Documentation/git-bash.html "$pkgdir/$MINGW_PREFIX/share/doc/git-doc/"
}

package_git-pdb () {
  cd "$srcdir"/git

  make -f ../mingw-w64-git.mak DESTDIR="$pkgdir" install-pdbs
}

# template start; name=mingw-w64-splitpkg-wrappers; version=1.0;
# vim: set ft=bash :

# generate wrappers
for _name in "${pkgname[@]}"; do
  _short="package_${_name#${MINGW_PACKAGE_PREFIX}-}"
  _func="$(declare -f "${_short}")"
  eval "${_func/#${_short}/package_${_name}}"
done
# template end;
