git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2] MinGW(-W64) cross-compilation

From
Marat Radchenko <marat@slonopotamus.org>
Date
Apr 29, 2014, 09:11 UTC
Message-ID
<1398762726-22825-1-git-send-email-marat@slonopotamus.org>
Differences with v1:
 - Dropped "MINGW: compat/bswap.h: include stdint.h", it isn't needed after
   "MINGW: git-compat-util.h: use inttypes.h for printf macros"
 - Split "MINGW: config.mak.uname allow using CURL for non-msysGit builds"
   into "MINGW: config.mak.uname: allow using cURL for non-msysGit builds"
   and "MINGW: fix main() signature in http-fetch.c and remote-curl.c"
 - Reworded "MINGW: git-compat-util.h: use inttypes.h for printf macros"
 - Reworded "MINGW: config.mak.uname: reorganize MINGW settings"
 - Rewrote "MINGW: config.mak.uname: drop -DNOGDI" into
   "MINGW: compat/poll/poll.c: undef NOGDI"
 - Rewrote "MINGW: config.mak.uname: drop USE_NED_ALLOCATOR" into
   "compat/nedmalloc/malloc.c.h: fix compilation under MinGW-W64"
 - Reworded "Makefile: introduce CROSS_COMPILE variable"
 - Reordeder commits (1-5 are Acked by: Eric Faye-Lund <kusmabite@gmail.com>)
=====================================
This patch series fixes building on modern MinGW and (32bit only yet) MinGW-W64.
*Compilation* tested on:
 - MSVC (via WinGit environment)
 - msysGit environment
 - Linux cross-toolchain i686-pc-mingw32 (4.8.2) with mingw-runtime-3.20.2
 - Linux cross-toolchain i686-w64-mingw32 (4.8.2) with mingw64-runtime-3.1.0
Stuff still required to make Git build with x86_64 MinGW-W64 toolchain:
1. Drop -D_USE_32BIT_TIME_T that was added in fa93bb to config.mak.uname
because time_t cannot be 32bit on x86_64. I haven't yet figured out what
should break if this define is removed (pointers are welcome) and why it was
added in the first place.
2. Stop passing --large-address-aware to linker. I wonder if it does anything
for 32bit MinGW builds.
3. Fix several places with mismatched pointer size casts.
Building it from Gentoo Linux:
MinGW:
  crossdev -t i686-pc-mingw32
  ARCH=x86 emerge-i686-pc-mingw32 -u dev-libs/libiconv sys-libs/zlib net-misc/curl sys-devel/gettext expat
  cd <git>
  make CROSS_COMPILE=i686-pc-mingw32- NO_OPENSSL=1 MINGW=1 CURLDIR=/usr/i686-pc-mingw32/usr
MinGW-W64 (32 bit):
  crossdev -t i686-w64-mingw32
  ARCH=x86 emerge-i686-w64-mingw32 -u dev-libs/libiconv sys-libs/zlib net-misc/curl sys-devel/gettext expat
  cd <git>
  make CROSS_COMPILE=i686-w64-mingw32- NO_OPENSSL=1 MINGW=1 CURLDIR=/usr/i686-w64-mingw32/usr
Next: Marat Radchenko
Message 1 of 29 in “MinGW(-W64) cross-compilation”
  1. MinGW(-W64) cross-compilationMarat Radchenko, Apr 29, 2014
  2. 01/12 MINGW: compat/mingw.h: do not attempt to redefine lseek on mingw-w64Marat Radchenko, Apr 29, 2014
  3. 02/12 MSVC: config.mak.uname: drop -D__USE_MINGW_ACCESS from CFLAGSMarat Radchenko, Apr 29, 2014
  4. 03/12 MINGW: compat/mingw.h: drop fork() definitionMarat Radchenko, Apr 29, 2014
  5. 04/12 MINGW: do not fail at redefining pid_t on MinGW-W64Marat Radchenko, Apr 29, 2014
  6. 05/12 MINGW: config.mak.uname: allow using cURL for non-msysGit buildsMarat Radchenko, Apr 29, 2014
  7. 06/12 MINGW: git-compat-util.h: use inttypes.h for printf macrosMarat Radchenko, Apr 29, 2014
  8. 07/12 MINGW: config.mak.uname: reorganize MINGW settingsMarat Radchenko, Apr 29, 2014
  9. 08/12 MINGW: fix main() signature in http-fetch.c and remote-curl.cMarat Radchenko, Apr 29, 2014
  10. Karsten BleesApr 30, 2014
  11. Erik Faye-LundApr 30, 2014
  12. Johannes SchindelinApr 30, 2014
  13. Felipe ContrerasApr 30, 2014
  14. Stepan KasalApr 30, 2014
  15. Win32: move main macro to a functionStepan Kasal, Apr 30, 2014
  16. Marat RadchenkoMay 3, 2014
  17. 09/12 Makefile: introduce CROSS_COMPILE variableMarat Radchenko, Apr 29, 2014
  18. 10/12 MINGW: compat/poll/poll.c: undef NOGDIMarat Radchenko, Apr 29, 2014
  19. Stepan KasalApr 30, 2014
  20. Marat RadchenkoMay 3, 2014
  21. Stepan KasalMay 4, 2014
  22. Marat RadchenkoMay 4, 2014
  23. '502304919' via msysGitMay 4, 2014
  24. Stepan KasalMay 5, 2014
  25. Felipe ContrerasMay 5, 2014
  26. Stepan KasalMay 5, 2014
  27. Felipe ContrerasMay 4, 2014
  28. 11/12 compat/nedmalloc/malloc.c.h: fix compilation under MinGW-W64Marat Radchenko, Apr 29, 2014
  29. 12/12 MINGW: config.mak.uname: add explicit way to request MinGW-buildMarat Radchenko, Apr 29, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.