Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

sched_ext: Improve cross-compilation support in Makefile

Modify the tools/sched_ext/Makefile to better handle cross-compilation
environments by:

1. Fix host tools build directory structure by separating obj/ from output
(HOST_BUILD_DIR now points to $(OBJ_DIR)/host/obj)
2. Properly propagate CROSS_COMPILE to libbpf sub-make invocation
3. Add missing $(HOST_BPFOBJ) build rule with proper host toolchain flags
(ARCH=, CROSS_COMPILE=, explicit HOSTCC/HOSTLD)
4. Consistently quote $(HOSTCC) in bpftool build rule
5. Change LDFLAGS assignment to += to allow external extensions

The changes ensure proper cross-compilation behavior while maintaining
backward compatibility with native builds. Host tools are now correctly
built with the host toolchain while target binaries use the cross-toolchain.

Signed-off-by: yangsonghua <yangsonghua@lixiang.com>
Signed-off-by: Tejun Heo <tj@kernel.org>

authored by

yangsonghua and committed by
Tejun Heo
6d65f682 0b304617

+17 -6
+17 -6
tools/sched_ext/Makefile
··· 61 61 BINDIR := $(OUTPUT_DIR)/bin 62 62 BPFOBJ := $(BPFOBJ_DIR)/libbpf.a 63 63 ifneq ($(CROSS_COMPILE),) 64 - HOST_BUILD_DIR := $(OBJ_DIR)/host 65 - HOST_OUTPUT_DIR := host-tools 64 + HOST_BUILD_DIR := $(OBJ_DIR)/host/obj 65 + HOST_OUTPUT_DIR := $(OBJ_DIR)/host 66 66 HOST_INCLUDE_DIR := $(HOST_OUTPUT_DIR)/include 67 67 else 68 68 HOST_BUILD_DIR := $(OBJ_DIR) ··· 98 98 CFLAGS += -Wno-unused-command-line-argument 99 99 endif 100 100 101 - LDFLAGS = -lelf -lz -lpthread 101 + LDFLAGS += -lelf -lz -lpthread 102 102 103 103 IS_LITTLE_ENDIAN = $(shell $(CC) -dM -E - </dev/null | \ 104 104 grep 'define __BYTE_ORDER__ __ORDER_LITTLE_ENDIAN__') ··· 136 136 $(BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile) \ 137 137 $(APIDIR)/linux/bpf.h \ 138 138 | $(OBJ_DIR)/libbpf 139 - $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) OUTPUT=$(OBJ_DIR)/libbpf/ \ 139 + $(Q)$(MAKE) $(submake_extras) CROSS_COMPILE=$(CROSS_COMPILE) \ 140 + -C $(BPFDIR) OUTPUT=$(OBJ_DIR)/libbpf/ \ 140 141 EXTRA_CFLAGS='-g -O0 -fPIC' \ 142 + LDFLAGS="$(LDFLAGS)" \ 141 143 DESTDIR=$(OUTPUT_DIR) prefix= all install_headers 144 + 145 + $(HOST_BPFOBJ): $(wildcard $(BPFDIR)/*.[ch] $(BPFDIR)/Makefile) \ 146 + $(APIDIR)/linux/bpf.h \ 147 + | $(HOST_BUILD_DIR)/libbpf 148 + $(Q)$(MAKE) $(submake_extras) -C $(BPFDIR) \ 149 + OUTPUT=$(HOST_BUILD_DIR)/libbpf/ \ 150 + ARCH= CROSS_COMPILE= CC="$(HOSTCC)" LD=$(HOSTLD) \ 151 + EXTRA_CFLAGS='-g -O0 -fPIC' \ 152 + DESTDIR=$(HOST_OUTPUT_DIR) prefix= all install_headers 142 153 143 154 $(DEFAULT_BPFTOOL): $(wildcard $(BPFTOOLDIR)/*.[ch] $(BPFTOOLDIR)/Makefile) \ 144 155 $(HOST_BPFOBJ) | $(HOST_BUILD_DIR)/bpftool 145 156 $(Q)$(MAKE) $(submake_extras) -C $(BPFTOOLDIR) \ 146 - ARCH= CROSS_COMPILE= CC=$(HOSTCC) LD=$(HOSTLD) \ 157 + ARCH= CROSS_COMPILE= CC="$(HOSTCC)" LD=$(HOSTLD) \ 147 158 EXTRA_CFLAGS='-g -O0' \ 148 159 OUTPUT=$(HOST_BUILD_DIR)/bpftool/ \ 149 160 LIBBPF_OUTPUT=$(HOST_BUILD_DIR)/libbpf/ \ ··· 196 185 $(SCX_COMMON_DEPS) 197 186 $(eval sched=$(notdir $@)) 198 187 $(CC) $(CFLAGS) -c $(sched).c -o $(SCXOBJ_DIR)/$(sched).o 199 - $(CC) -o $@ $(SCXOBJ_DIR)/$(sched).o $(HOST_BPFOBJ) $(LDFLAGS) 188 + $(CC) -o $@ $(SCXOBJ_DIR)/$(sched).o $(BPFOBJ) $(LDFLAGS) 200 189 201 190 $(c-sched-targets): %: $(BINDIR)/% 202 191