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

[PATCH 09/12] Makefile: introduce CROSS_COMPILE variable

From
Marat Radchenko <marat@slonopotamus.org>
Date
Apr 29, 2014, 09:12 UTC
Message-ID
<1398762726-22825-10-git-send-email-marat@slonopotamus.org>
In-Reply-To
<1398762726-22825-1-git-send-email-marat@slonopotamus.org>

To ease cross-compilation process, introduce a single variable with the prefix to all compiler-related executables.

Define CROSS_COMPILE=foo- if your compiler and binary utilities are foo-cc, foo-ar, foo-strip, etc. More specific variables override this, so if you set CC=gcc CROSS_COMPILE=ia64-linux-gnu- then the compiler will be 'gcc', not 'ia64-linux-gnu-gcc'.

Signed-off-by: Marat Radchenko <marat@slonopotamus.org>
---
 Makefile         | 19 +++++++++++++------
 config.mak.uname |  2 +-
 2 files changed, 14 insertions(+), 7 deletions(-)
diff --git a/Makefile b/Makefile
index 74a929b..8406b94 100644
--- a/Makefile
+++ b/Makefile
@@ -350,6 +350,11 @@ all::
 #
 # Define GMTIME_UNRELIABLE_ERRORS if your gmtime() function does not
 # return NULL when it receives a bogus time_t.
+#
+# Define CROSS_COMPILE=foo- if your compiler and binary utilities
+# are foo-cc, foo-ar, foo-strip, etc.  More specific variables
+# override this, so if you set CC=gcc CROSS_COMPILE=ia64-linux-gnu-
+# then the compiler will be 'gcc', not 'ia64-linux-gnu-gcc'.
 
 GIT-VERSION-FILE: FORCE
 	@$(SHELL_PATH) ./GIT-VERSION-GEN
@@ -361,7 +366,6 @@ CFLAGS = -g -O2 -Wall
 LDFLAGS =
 ALL_CFLAGS = $(CPPFLAGS) $(CFLAGS)
 ALL_LDFLAGS = $(LDFLAGS)
-STRIP ?= strip
 
 # Among the variables below, these:
 #   gitexecdir
@@ -401,8 +405,12 @@ htmldir_relative = $(patsubst $(prefix)/%,%,$(htmldir))
 
 export prefix bindir sharedir sysconfdir gitwebdir localedir
 
-CC = cc
-AR = ar
+AR = $(CROSS_COMPILE)ar
+CC = $(CROSS_COMPILE)cc
+GCOV = $(CROSS_COMPILE)gcov
+RC = $(CROSS_COMPILE)windres
+STRIP = $(CROSS_COMPILE)strip
+
 RM = rm -f
 DIFF = diff
 TAR = tar
@@ -415,13 +423,12 @@ XGETTEXT = xgettext
 MSGFMT = msgfmt
 PTHREAD_LIBS = -lpthread
 PTHREAD_CFLAGS =
-GCOV = gcov
 
 export TCL_PATH TCLTK_PATH
 
 SPARSE_FLAGS =
 
-
+RCFLAGS =
 
 ### --- END CONFIGURATION SECTION ---
 
@@ -1796,7 +1803,7 @@ $(SCRIPT_LIB) : % : %.sh GIT-SCRIPT-DEFINES
 	mv $@+ $@
 
 git.res: git.rc GIT-VERSION-FILE
-	$(QUIET_RC)$(RC) \
+	$(QUIET_RC)$(RC) $(RCFLAGS) \
 	  $(join -DMAJOR= -DMINOR=, $(wordlist 1,2,$(subst -, ,$(subst ., ,$(GIT_VERSION))))) \
 	  -DGIT_VERSION="\\\"$(GIT_VERSION)\\\"" $< -o $@
 
diff --git a/config.mak.uname b/config.mak.uname
index b68a7d1..d5f7953 100644
--- a/config.mak.uname
+++ b/config.mak.uname
@@ -507,7 +507,7 @@ ifneq (,$(findstring MINGW,$(uname_S)))
 	EXTLIBS += -lws2_32
 	GITLIBS += git.res
 	PTHREAD_LIBS =
-	RC = windres -O coff
+	RCFLAGS += -O coff
 	NATIVE_CRLF = YesPlease
 	X = .exe
 	SPARSE_FLAGS = -Wno-one-bit-signed-bitfield
-- 
1.9.1
Previous: Marat RadchenkoNext: Marat Radchenko
Message 17 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.