# git rev-parse -q --verify 06513ddaf77b8f49ef8540c92d92c9ef0ad49426^{commit} 06513ddaf77b8f49ef8540c92d92c9ef0ad49426 already have revision, skipping fetch # git checkout -q -f -B kisskb 06513ddaf77b8f49ef8540c92d92c9ef0ad49426 # git clean -qxdf # < git log -1 # commit 06513ddaf77b8f49ef8540c92d92c9ef0ad49426 # Author: Masahiro Yamada # Date: Sun Nov 10 10:34:39 2024 +0900 # # kbuild: allow to start building external modules in any directory # # Unless an explicit O= option is provided, external module builds must # start from the kernel directory. # # This can be achieved by using the -C option: # # $ make -C /path/to/kernel M=/path/to/external/module # # This commit allows starting external module builds from any directory, # so you can also do the following: # # $ make -f /path/to/kernel/Makefile M=/path/to/external/module # # The key difference is that the -C option changes the working directory # and parses the Makefile located there, while the -f option only # specifies the Makefile to use. # # As shown in the examples in Documentation/kbuild/modules.rst, external # modules usually have a wrapper Makefile that allows you to build them # without specifying any make arguments. The Makefile typically contains # a rule as follows: # # KDIR ?= /path/to/kernel # default: # $(MAKE) -C $(KDIR) M=$(CURDIR) $(MAKECMDGOALS) # # The log will appear as follows: # # $ make # make -C /path/to/kernel M=/path/to/external/module # make[1]: Entering directory '/path/to/kernel' # make[2]: Entering directory '/path/to/external/module' # CC [M] helloworld.o # MODPOST Module.symvers # CC [M] helloworld.mod.o # CC [M] .module-common.o # LD [M] helloworld.ko # make[2]: Leaving directory '/path/to/external/module' # make[1]: Leaving directory '/path/to/kernel' # # This changes the working directory twice because the -C option first # switches to the kernel directory, and then Kbuild internally recurses # back to the external module directory. # # With this commit, the wrapper Makefile can directly include the kernel # Makefile: # # KDIR ?= /path/to/kernel # export KBUILD_EXTMOD := $(realpath $(dir $(lastword $(MAKEFILE_LIST)))) # include $(KDIR)/Makefile # # This avoids unnecessary sub-make invocations: # # $ make # CC [M] helloworld.o # MODPOST Module.symvers # CC [M] helloworld.mod.o # CC [M] .module-common.o # LD [M] helloworld.ko # # Signed-off-by: Masahiro Yamada # Reviewed-by: Nicolas Schier # < /opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sparc64-linux/bin/sparc64-linux-gcc --version # < /opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sparc64-linux/bin/sparc64-linux-ld --version # < git log --format=%s --max-count=1 06513ddaf77b8f49ef8540c92d92c9ef0ad49426 # make -s -j 160 ARCH=sparc64 O=/kisskb/build/kbuild_defconfig_sparc64-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sparc64-linux/bin/sparc64-linux- defconfig # < make -s -j 160 ARCH=sparc64 O=/kisskb/build/kbuild_defconfig_sparc64-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sparc64-linux/bin/sparc64-linux- help # make -s -j 160 ARCH=sparc64 O=/kisskb/build/kbuild_defconfig_sparc64-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sparc64-linux/bin/sparc64-linux- olddefconfig # make -s -j 160 ARCH=sparc64 O=/kisskb/build/kbuild_defconfig_sparc64-gcc13 CROSS_COMPILE=/opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sparc64-linux/bin/sparc64-linux- :1519:2: warning: #warning syscall clone3 not implemented [-Wcpp] /kisskb/src/arch/sparc/vdso/vclock_gettime.c:254:1: warning: no previous prototype for '__vdso_clock_gettime' [-Wmissing-prototypes] 254 | __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts) | ^~~~~~~~~~~~~~~~~~~~ /kisskb/src/arch/sparc/vdso/vclock_gettime.c:282:1: warning: no previous prototype for '__vdso_clock_gettime_stick' [-Wmissing-prototypes] 282 | __vdso_clock_gettime_stick(clockid_t clock, struct __kernel_old_timespec *ts) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/arch/sparc/vdso/vclock_gettime.c:307:1: warning: no previous prototype for '__vdso_gettimeofday' [-Wmissing-prototypes] 307 | __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz) | ^~~~~~~~~~~~~~~~~~~ /kisskb/src/arch/sparc/vdso/vclock_gettime.c:343:1: warning: no previous prototype for '__vdso_gettimeofday_stick' [-Wmissing-prototypes] 343 | __vdso_gettimeofday_stick(struct __kernel_old_timeval *tv, struct timezone *tz) | ^~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /kisskb/src/arch/sparc/vdso/vdso32/vclock_gettime.c:22: /kisskb/src/arch/sparc/vdso/vdso32/../vclock_gettime.c:254:1: warning: no previous prototype for '__vdso_clock_gettime' [-Wmissing-prototypes] 254 | __vdso_clock_gettime(clockid_t clock, struct __kernel_old_timespec *ts) | ^~~~~~~~~~~~~~~~~~~~ /kisskb/src/arch/sparc/vdso/vdso32/../vclock_gettime.c:282:1: warning: no previous prototype for '__vdso_clock_gettime_stick' [-Wmissing-prototypes] 282 | __vdso_clock_gettime_stick(clockid_t clock, struct __kernel_old_timespec *ts) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ /kisskb/src/arch/sparc/vdso/vdso32/../vclock_gettime.c:307:1: warning: no previous prototype for '__vdso_gettimeofday' [-Wmissing-prototypes] 307 | __vdso_gettimeofday(struct __kernel_old_timeval *tv, struct timezone *tz) | ^~~~~~~~~~~~~~~~~~~ /kisskb/src/arch/sparc/vdso/vdso32/../vclock_gettime.c:343:1: warning: no previous prototype for '__vdso_gettimeofday_stick' [-Wmissing-prototypes] 343 | __vdso_gettimeofday_stick(struct __kernel_old_timeval *tv, struct timezone *tz) | ^~~~~~~~~~~~~~~~~~~~~~~~~ /opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sparc64-linux/bin/sparc64-linux-ld: warning: arch/sparc/vdso/vdso-note.o: missing .note.GNU-stack section implies executable stack /opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sparc64-linux/bin/sparc64-linux-ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker /opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sparc64-linux/bin/sparc64-linux-ld: warning: arch/sparc/vdso/vdso32/vdso-note.o: missing .note.GNU-stack section implies executable stack /opt/cross/kisskb/korg/gcc-13.1.0-nolibc/sparc64-linux/bin/sparc64-linux-ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker /kisskb/src/kernel/fork.c: In function '__do_sys_clone3': /kisskb/src/kernel/fork.c:3077:2: warning: #warning clone3() entry point is missing, please fix [-Wcpp] 3077 | #warning clone3() entry point is missing, please fix | ^~~~~~~ /kisskb/src/kernel/fork.c:3077:2: warning: #warning clone3() entry point is missing, please fix [-Wcpp] 3077 | #warning clone3() entry point is missing, please fix | ^~~~~~~ WARNING: modpost: EXPORT symbol "_mcount" [vmlinux] version generation failed, symbol will not be versioned. Is "_mcount" prototyped in ? Completed OK # rm -rf /kisskb/build/kbuild_defconfig_sparc64-gcc13 # Build took: 0:00:46.333141