aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2024-01-20 09:35:50 +0000
committerRon Yorston <rmy@pobox.com>2024-01-20 09:35:50 +0000
commit35f59d8ec0025647f75563c0bedecfc8e082a971 (patch)
treec532a05eb29cbfe08cee09fc2292c6070b26fc07
parent042520e46621e434c9bd2da6b100b32ccdee55a5 (diff)
downloadbusybox-w32-35f59d8ec0025647f75563c0bedecfc8e082a971.tar.gz
busybox-w32-35f59d8ec0025647f75563c0bedecfc8e082a971.tar.bz2
busybox-w32-35f59d8ec0025647f75563c0bedecfc8e082a971.zip
build system: make compiler names configurable
The top-level Makefile hardcoded the host and cross compiler name to "gcc". Make it possible to set different values either on the command line (make CROSS_COMPILER=clang) or in the configuration file.
-rw-r--r--Config.in12
-rw-r--r--Makefile26
-rw-r--r--configs/mingw32_defconfig4
-rw-r--r--configs/mingw64_defconfig4
-rw-r--r--configs/mingw64a_defconfig4
-rw-r--r--configs/mingw64u_defconfig4
6 files changed, 48 insertions, 6 deletions
diff --git a/Config.in b/Config.in
index 0a6d57327..f6159b30b 100644
--- a/Config.in
+++ b/Config.in
@@ -689,6 +689,18 @@ config CROSS_COMPILER_PREFIX
689 689
690 Native builds leave this empty. 690 Native builds leave this empty.
691 691
692config HOST_COMPILER
693 string "Host compiler"
694 default "gcc"
695 help
696 Name of the compiler to use for host binaries.
697
698config CROSS_COMPILER
699 string "Cross compiler"
700 default "gcc"
701 help
702 Name of the compiler to use for cross compilation.
703
692config SYSROOT 704config SYSROOT
693 string "Path to sysroot" 705 string "Path to sysroot"
694 default "" 706 default ""
diff --git a/Makefile b/Makefile
index f1d6b20b4..51f460583 100644
--- a/Makefile
+++ b/Makefile
@@ -196,6 +196,28 @@ ARCH ?= $(SUBARCH)
196# Architecture as present in compile.h 196# Architecture as present in compile.h
197UTS_MACHINE := $(ARCH) 197UTS_MACHINE := $(ARCH)
198 198
199HOST_COMPILER ?=
200ifeq ($(HOST_COMPILER),)
201HOST_COMPILER := $(shell grep ^CONFIG_HOST_COMPILER= .config 2>/dev/null)
202HOST_COMPILER := $(subst CONFIG_HOST_COMPILER=,,$(HOST_COMPILER))
203HOST_COMPILER := $(subst ",,$(HOST_COMPILER))
204#")
205endif
206ifeq ($(HOST_COMPILER),)
207HOST_COMPILER := gcc
208endif
209
210CROSS_COMPILER ?=
211ifeq ($(CROSS_COMPILER),)
212CROSS_COMPILER := $(shell grep ^CONFIG_CROSS_COMPILER= .config 2>/dev/null)
213CROSS_COMPILER := $(subst CONFIG_CROSS_COMPILER=,,$(CROSS_COMPILER))
214CROSS_COMPILER := $(subst ",,$(CROSS_COMPILER))
215#")
216endif
217ifeq ($(CROSS_COMPILER),)
218CROSS_COMPILER := gcc
219endif
220
199# SHELL used by kbuild 221# SHELL used by kbuild
200CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ 222CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
201 else if [ -x /bin/bash ]; then echo /bin/bash; \ 223 else if [ -x /bin/bash ]; then echo /bin/bash; \
@@ -275,7 +297,7 @@ export quiet Q KBUILD_VERBOSE
275# Look for make include files relative to root of kernel src 297# Look for make include files relative to root of kernel src
276MAKEFLAGS += --include-dir=$(srctree) 298MAKEFLAGS += --include-dir=$(srctree)
277 299
278HOSTCC = gcc 300HOSTCC = $(HOST_COMPILER)
279HOSTCXX = g++ 301HOSTCXX = g++
280HOSTCFLAGS := 302HOSTCFLAGS :=
281HOSTCXXFLAGS := 303HOSTCXXFLAGS :=
@@ -293,7 +315,7 @@ MAKEFLAGS += -rR
293# Make variables (CC, etc...) 315# Make variables (CC, etc...)
294 316
295AS = $(CROSS_COMPILE)as 317AS = $(CROSS_COMPILE)as
296CC = $(CROSS_COMPILE)gcc 318CC = $(CROSS_COMPILE)$(CROSS_COMPILER)
297LD = $(CC) -nostdlib 319LD = $(CC) -nostdlib
298CPP = $(CC) -E 320CPP = $(CC) -E
299AR = $(CROSS_COMPILE)ar 321AR = $(CROSS_COMPILE)ar
diff --git a/configs/mingw32_defconfig b/configs/mingw32_defconfig
index 0f674d45c..c5e108a30 100644
--- a/configs/mingw32_defconfig
+++ b/configs/mingw32_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Busybox version: 1.37.0.git 3# Busybox version: 1.37.0.git
4# Wed Dec 20 13:23:38 2023 4# Sat Jan 20 09:32:45 2024
5# 5#
6CONFIG_HAVE_DOT_CONFIG=y 6CONFIG_HAVE_DOT_CONFIG=y
7# CONFIG_PLATFORM_POSIX is not set 7# CONFIG_PLATFORM_POSIX is not set
@@ -74,6 +74,8 @@ CONFIG_OVERRIDE_APPLETS=""
74# CONFIG_FEATURE_INDIVIDUAL is not set 74# CONFIG_FEATURE_INDIVIDUAL is not set
75# CONFIG_FEATURE_SHARED_BUSYBOX is not set 75# CONFIG_FEATURE_SHARED_BUSYBOX is not set
76CONFIG_CROSS_COMPILER_PREFIX="i686-w64-mingw32-" 76CONFIG_CROSS_COMPILER_PREFIX="i686-w64-mingw32-"
77CONFIG_HOST_COMPILER="gcc"
78CONFIG_CROSS_COMPILER="gcc"
77CONFIG_SYSROOT="" 79CONFIG_SYSROOT=""
78CONFIG_EXTRA_CFLAGS="" 80CONFIG_EXTRA_CFLAGS=""
79CONFIG_EXTRA_LDFLAGS="" 81CONFIG_EXTRA_LDFLAGS=""
diff --git a/configs/mingw64_defconfig b/configs/mingw64_defconfig
index 37f95f4c8..341da22d6 100644
--- a/configs/mingw64_defconfig
+++ b/configs/mingw64_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Busybox version: 1.37.0.git 3# Busybox version: 1.37.0.git
4# Wed Dec 20 13:23:38 2023 4# Sat Jan 20 09:32:45 2024
5# 5#
6CONFIG_HAVE_DOT_CONFIG=y 6CONFIG_HAVE_DOT_CONFIG=y
7# CONFIG_PLATFORM_POSIX is not set 7# CONFIG_PLATFORM_POSIX is not set
@@ -74,6 +74,8 @@ CONFIG_OVERRIDE_APPLETS=""
74# CONFIG_FEATURE_INDIVIDUAL is not set 74# CONFIG_FEATURE_INDIVIDUAL is not set
75# CONFIG_FEATURE_SHARED_BUSYBOX is not set 75# CONFIG_FEATURE_SHARED_BUSYBOX is not set
76CONFIG_CROSS_COMPILER_PREFIX="x86_64-w64-mingw32-" 76CONFIG_CROSS_COMPILER_PREFIX="x86_64-w64-mingw32-"
77CONFIG_HOST_COMPILER="gcc"
78CONFIG_CROSS_COMPILER="gcc"
77CONFIG_SYSROOT="" 79CONFIG_SYSROOT=""
78CONFIG_EXTRA_CFLAGS="" 80CONFIG_EXTRA_CFLAGS=""
79CONFIG_EXTRA_LDFLAGS="" 81CONFIG_EXTRA_LDFLAGS=""
diff --git a/configs/mingw64a_defconfig b/configs/mingw64a_defconfig
index 0ee83fe11..8eb8bbcfa 100644
--- a/configs/mingw64a_defconfig
+++ b/configs/mingw64a_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Busybox version: 1.37.0.git 3# Busybox version: 1.37.0.git
4# Wed Dec 20 13:23:38 2023 4# Sat Jan 20 09:32:45 2024
5# 5#
6CONFIG_HAVE_DOT_CONFIG=y 6CONFIG_HAVE_DOT_CONFIG=y
7# CONFIG_PLATFORM_POSIX is not set 7# CONFIG_PLATFORM_POSIX is not set
@@ -74,6 +74,8 @@ CONFIG_OVERRIDE_APPLETS=""
74# CONFIG_FEATURE_INDIVIDUAL is not set 74# CONFIG_FEATURE_INDIVIDUAL is not set
75# CONFIG_FEATURE_SHARED_BUSYBOX is not set 75# CONFIG_FEATURE_SHARED_BUSYBOX is not set
76CONFIG_CROSS_COMPILER_PREFIX="aarch64-w64-mingw32-" 76CONFIG_CROSS_COMPILER_PREFIX="aarch64-w64-mingw32-"
77CONFIG_HOST_COMPILER="clang"
78CONFIG_CROSS_COMPILER="clang"
77CONFIG_SYSROOT="" 79CONFIG_SYSROOT=""
78CONFIG_EXTRA_CFLAGS="" 80CONFIG_EXTRA_CFLAGS=""
79CONFIG_EXTRA_LDFLAGS="" 81CONFIG_EXTRA_LDFLAGS=""
diff --git a/configs/mingw64u_defconfig b/configs/mingw64u_defconfig
index f26b17ec9..4218c57a5 100644
--- a/configs/mingw64u_defconfig
+++ b/configs/mingw64u_defconfig
@@ -1,7 +1,7 @@
1# 1#
2# Automatically generated make config: don't edit 2# Automatically generated make config: don't edit
3# Busybox version: 1.37.0.git 3# Busybox version: 1.37.0.git
4# Wed Dec 20 13:23:38 2023 4# Sat Jan 20 09:32:45 2024
5# 5#
6CONFIG_HAVE_DOT_CONFIG=y 6CONFIG_HAVE_DOT_CONFIG=y
7# CONFIG_PLATFORM_POSIX is not set 7# CONFIG_PLATFORM_POSIX is not set
@@ -74,6 +74,8 @@ CONFIG_OVERRIDE_APPLETS=""
74# CONFIG_FEATURE_INDIVIDUAL is not set 74# CONFIG_FEATURE_INDIVIDUAL is not set
75# CONFIG_FEATURE_SHARED_BUSYBOX is not set 75# CONFIG_FEATURE_SHARED_BUSYBOX is not set
76CONFIG_CROSS_COMPILER_PREFIX="x86_64-w64-mingw32-" 76CONFIG_CROSS_COMPILER_PREFIX="x86_64-w64-mingw32-"
77CONFIG_HOST_COMPILER="gcc"
78CONFIG_CROSS_COMPILER="gcc"
77CONFIG_SYSROOT="" 79CONFIG_SYSROOT=""
78CONFIG_EXTRA_CFLAGS="" 80CONFIG_EXTRA_CFLAGS=""
79CONFIG_EXTRA_LDFLAGS="" 81CONFIG_EXTRA_LDFLAGS=""