From 35f59d8ec0025647f75563c0bedecfc8e082a971 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Sat, 20 Jan 2024 09:35:50 +0000 Subject: 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. --- Config.in | 12 ++++++++++++ Makefile | 26 ++++++++++++++++++++++++-- configs/mingw32_defconfig | 4 +++- configs/mingw64_defconfig | 4 +++- configs/mingw64a_defconfig | 4 +++- configs/mingw64u_defconfig | 4 +++- 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 Native builds leave this empty. +config HOST_COMPILER + string "Host compiler" + default "gcc" + help + Name of the compiler to use for host binaries. + +config CROSS_COMPILER + string "Cross compiler" + default "gcc" + help + Name of the compiler to use for cross compilation. + config SYSROOT string "Path to sysroot" default "" diff --git a/Makefile b/Makefile index f1d6b20b4..51f460583 100644 --- a/Makefile +++ b/Makefile @@ -196,6 +196,28 @@ ARCH ?= $(SUBARCH) # Architecture as present in compile.h UTS_MACHINE := $(ARCH) +HOST_COMPILER ?= +ifeq ($(HOST_COMPILER),) +HOST_COMPILER := $(shell grep ^CONFIG_HOST_COMPILER= .config 2>/dev/null) +HOST_COMPILER := $(subst CONFIG_HOST_COMPILER=,,$(HOST_COMPILER)) +HOST_COMPILER := $(subst ",,$(HOST_COMPILER)) +#") +endif +ifeq ($(HOST_COMPILER),) +HOST_COMPILER := gcc +endif + +CROSS_COMPILER ?= +ifeq ($(CROSS_COMPILER),) +CROSS_COMPILER := $(shell grep ^CONFIG_CROSS_COMPILER= .config 2>/dev/null) +CROSS_COMPILER := $(subst CONFIG_CROSS_COMPILER=,,$(CROSS_COMPILER)) +CROSS_COMPILER := $(subst ",,$(CROSS_COMPILER)) +#") +endif +ifeq ($(CROSS_COMPILER),) +CROSS_COMPILER := gcc +endif + # SHELL used by kbuild CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ else if [ -x /bin/bash ]; then echo /bin/bash; \ @@ -275,7 +297,7 @@ export quiet Q KBUILD_VERBOSE # Look for make include files relative to root of kernel src MAKEFLAGS += --include-dir=$(srctree) -HOSTCC = gcc +HOSTCC = $(HOST_COMPILER) HOSTCXX = g++ HOSTCFLAGS := HOSTCXXFLAGS := @@ -293,7 +315,7 @@ MAKEFLAGS += -rR # Make variables (CC, etc...) AS = $(CROSS_COMPILE)as -CC = $(CROSS_COMPILE)gcc +CC = $(CROSS_COMPILE)$(CROSS_COMPILER) LD = $(CC) -nostdlib CPP = $(CC) -E AR = $(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 @@ # # Automatically generated make config: don't edit # Busybox version: 1.37.0.git -# Wed Dec 20 13:23:38 2023 +# Sat Jan 20 09:32:45 2024 # CONFIG_HAVE_DOT_CONFIG=y # CONFIG_PLATFORM_POSIX is not set @@ -74,6 +74,8 @@ CONFIG_OVERRIDE_APPLETS="" # CONFIG_FEATURE_INDIVIDUAL is not set # CONFIG_FEATURE_SHARED_BUSYBOX is not set CONFIG_CROSS_COMPILER_PREFIX="i686-w64-mingw32-" +CONFIG_HOST_COMPILER="gcc" +CONFIG_CROSS_COMPILER="gcc" CONFIG_SYSROOT="" CONFIG_EXTRA_CFLAGS="" CONFIG_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 @@ # # Automatically generated make config: don't edit # Busybox version: 1.37.0.git -# Wed Dec 20 13:23:38 2023 +# Sat Jan 20 09:32:45 2024 # CONFIG_HAVE_DOT_CONFIG=y # CONFIG_PLATFORM_POSIX is not set @@ -74,6 +74,8 @@ CONFIG_OVERRIDE_APPLETS="" # CONFIG_FEATURE_INDIVIDUAL is not set # CONFIG_FEATURE_SHARED_BUSYBOX is not set CONFIG_CROSS_COMPILER_PREFIX="x86_64-w64-mingw32-" +CONFIG_HOST_COMPILER="gcc" +CONFIG_CROSS_COMPILER="gcc" CONFIG_SYSROOT="" CONFIG_EXTRA_CFLAGS="" CONFIG_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 @@ # # Automatically generated make config: don't edit # Busybox version: 1.37.0.git -# Wed Dec 20 13:23:38 2023 +# Sat Jan 20 09:32:45 2024 # CONFIG_HAVE_DOT_CONFIG=y # CONFIG_PLATFORM_POSIX is not set @@ -74,6 +74,8 @@ CONFIG_OVERRIDE_APPLETS="" # CONFIG_FEATURE_INDIVIDUAL is not set # CONFIG_FEATURE_SHARED_BUSYBOX is not set CONFIG_CROSS_COMPILER_PREFIX="aarch64-w64-mingw32-" +CONFIG_HOST_COMPILER="clang" +CONFIG_CROSS_COMPILER="clang" CONFIG_SYSROOT="" CONFIG_EXTRA_CFLAGS="" CONFIG_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 @@ # # Automatically generated make config: don't edit # Busybox version: 1.37.0.git -# Wed Dec 20 13:23:38 2023 +# Sat Jan 20 09:32:45 2024 # CONFIG_HAVE_DOT_CONFIG=y # CONFIG_PLATFORM_POSIX is not set @@ -74,6 +74,8 @@ CONFIG_OVERRIDE_APPLETS="" # CONFIG_FEATURE_INDIVIDUAL is not set # CONFIG_FEATURE_SHARED_BUSYBOX is not set CONFIG_CROSS_COMPILER_PREFIX="x86_64-w64-mingw32-" +CONFIG_HOST_COMPILER="gcc" +CONFIG_CROSS_COMPILER="gcc" CONFIG_SYSROOT="" CONFIG_EXTRA_CFLAGS="" CONFIG_EXTRA_LDFLAGS="" -- cgit v1.2.3-55-g6feb