I applied your patch and everything worked. Completed my project in 30 seconds after I already wasted hours earlier today. Thanks!!!! On Mon, Feb 24, 2020 at 6:57 PM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > On Tue, Feb 25, 2020 at 7:02 AM David F. <df7729@xxxxxxxxx> wrote: > > > > Hi, > > > > I have a private custom module I build via various scripts since I > > setup since I knew I'd have no clue how to do it in the future. It's > > been working great for years, but now it's broken with the move from > > 4.19.xx to 5.4.22 so the future is here and don't remember much about > > how I set it all up. But it does look to me that the failure has to > > do with a support library I have it build. Can the kbuild experts > > tell me what changed with V5 from V4.19 that breaks building my custom > > module. > > > > Thanks!! > > > > Here's the information (I'm writing this in Windows so my dir output > > will be from windows): > > > > The input/source files: > > > > 01/25/2016 06:52 PM 1,501 linuxdriverc.c > > 01/24/2016 06:59 PM 284 linuxdrivercpp.cpp > > 01/22/2016 07:20 PM 1,124 linuxdriverdumpbuf.c > > 09/22/2019 12:17 AM 4,985 linuxdriverfile.c > > 01/22/2016 07:20 PM 2,142 linuxdriverprintk.c > > > > When the 4.x version (this was 4.19.97) finishes the dir contains: > > > > 01/22/2020 12:43 AM 338 .junk.ko.cmd > > 01/22/2020 12:43 AM 29,743 .junk.mod.o.cmd > > 01/22/2020 12:43 AM 220 .junk.o.cmd > > 01/22/2020 12:43 AM 581 .lib.a.cmd > > 01/22/2020 12:43 AM 29,795 .linuxdriverc.o.cmd > > 01/22/2020 12:43 AM 30,248 .linuxdriverdumpbuf.o.cmd > > 01/22/2020 12:43 AM 36,098 .linuxdriverfile.o.cmd > > 01/22/2020 12:43 AM 30,235 .linuxdriverprintk.o.cmd > > 01/22/2020 12:43 AM 1,908 junk.ko > > 01/22/2020 12:43 AM 650 junk.mod.c > > 01/22/2020 12:43 AM 1,792 junk.mod.o > > 01/22/2020 12:43 AM 260 junk.o > > 01/22/2020 12:43 AM 1,084 lib.a > > 01/22/2020 12:43 AM 29 linuxdriverc.c > > 01/22/2020 12:43 AM 1,040 linuxdriverc.o > > 01/22/2020 12:43 AM 33 linuxdrivercpp.cpp > > 01/22/2020 12:43 AM 976 linuxdrivercpp.o > > 01/22/2020 12:43 AM 35 linuxdriverdumpbuf.c > > 01/22/2020 12:43 AM 1,320 linuxdriverdumpbuf.o > > 01/22/2020 12:43 AM 32 linuxdriverfile.c > > 01/22/2020 12:43 AM 1,448 linuxdriverfile.o > > 01/22/2020 12:43 AM 34 linuxdriverprintk.c > > 01/22/2020 12:43 AM 1,564 linuxdriverprintk.o > > 01/22/2020 12:43 AM 1,084 linuxdriversup.a > > 01/26/2016 05:16 PM 2,188 Makefile > > 01/22/2020 12:43 AM 0 Module.symvers > > 01/22/2020 12:43 AM 71 modules.order > > > > For the 5.4.22 the files are: > > > > 02/24/2020 12:04 PM 573 .lib.a.cmd > > 02/24/2020 12:04 PM 30,740 .linuxdriverc.o.cmd > > 02/24/2020 12:04 PM 31,278 .linuxdriverdumpbuf.o.cmd > > 02/24/2020 12:04 PM 37,708 .linuxdriverfile.o.cmd > > 02/24/2020 12:04 PM 31,265 .linuxdriverprintk.o.cmd > > 02/24/2020 12:04 PM 1,080 lib.a > > 01/25/2016 06:52 PM 29 linuxdriverc.c > > 02/24/2020 12:04 PM 1,040 linuxdriverc.o > > 01/24/2016 06:59 PM 33 linuxdrivercpp.cpp > > 02/24/2020 12:04 PM 976 linuxdrivercpp.o > > 01/22/2016 07:20 PM 35 linuxdriverdumpbuf.c > > 02/24/2020 12:04 PM 1,320 linuxdriverdumpbuf.o > > 09/22/2019 12:17 AM 32 linuxdriverfile.c > > 02/24/2020 12:04 PM 1,448 linuxdriverfile.o > > 01/22/2016 07:20 PM 34 linuxdriverprintk.c > > 02/24/2020 12:04 PM 1,564 linuxdriverprintk.o > > 01/26/2016 05:16 PM 2,188 Makefile > > > > There are no error messages other than it can't find junk.o for LD: > > > > Starting KBuild make... > > make[3]: Entering directory '/usr/src/linux-headers-5.4.22-686-iflnet' > > LD [M] /media/sf_SRC_DRIVE/libs/linux_drivers/5.4.22-686-iflnet/junk.o > > ld: no input files > > scripts/Makefile.build:446: recipe for target > > '/media/sf_SRC_DRIVE/libs/linux_drivers/5.4.22-686-iflnet/junk.o' > > failed > > make[4]: *** [/media/sf_SRC_DRIVE/libs/linux_drivers/5.4.22-686-iflnet/junk.o] > > Error 1 > > Makefile:1652: recipe for target > > '/media/sf_SRC_DRIVE/libs/linux_drivers/5.4.22-686-iflnet' failed > > make[3]: *** [/media/sf_SRC_DRIVE/libs/linux_drivers/5.4.22-686-iflnet] Error 2 > > make[3]: Leaving directory '/usr/src/linux-headers-5.4.22-686-iflnet' > > > > > > The makefile used is: > > > > # You should only need to change the items marked ** fill in ** > > # everything else should be automatic. > > > > # the version of the kernel the module is being compiled for > > KVER?=$(shell uname -r) > > # the directory of the kernel build system > > KDIR:=/lib/modules/$(KVER)/build > > # fill in the verbose level you want > > V:=0 > > > > ################################# > > # fill in the name of the module ** fill in ** > > ################################# > > mymodlib_name:=linuxdriversup > > > > ################################# > > # unique cpp build flags ** fill in ** > > ################################# > > # CC_FLAGS+=-I. > > > > # flags file for building CPP versions > > FLAGS:=/media/sf_SRC_DRIVE/libs/linux_drivers/buildopts/$(KVER)/buildopts.cfg > > > > ################################# > > # extra C flags to use ** fill in ** > > ################################# > > EXTRA_CFLAGS+=-I. > > #EXTRA_CFLAGS+=-Werror > > #EXTRA_CFLAGS += -std=gnu99 > > #EXTRA_CFLAGS += -Wno-declaration-after-statement > > > > ############## > > # code start # > > ############## > > ifeq ($(V),1) > > Q= > > else > > Q=@ > > endif > > > > # this was the only way I figured out how to get the > > # kbuild envrionment to build the library for me. the > > # cpp item doesn't really need to be built in this > > # envrionment but we do it since it works. > > > > # Setup module name for kbuild > > obj-m:=junk.o > > junk-objs:=lib.a > > > Perhaps, this line is the cause of the failure. > > Kbuild does not support linking *.a to a module. > > There exists a workaround patch, but it was rejected. > https://patchwork.kernel.org/patch/11318691/#23088533 > > > > Masahiro Yamada > > > > > > # build sources in the target directory > > SOURCES_ALL:=$(filter-out %.mod.c,$(shell find $(M) -maxdepth 1 -name > > "*.cpp" -or -name "*.c")) > > > > # add the sources and to the kbuild > > lib-y+=$(addsuffix .o,$(notdir $(basename $(SOURCES_ALL)))) > > > > > > # pattern for compiling the c++ parts > > %.o: %.cpp $(FLAGS) > > $(info doing [$@]) > > $(Q)g++ `cat $(FLAGS)` $(CC_FLAGS) -fno-exceptions -fno-rtti -Wall > > -c -o $@ $< > > > > .PHONY: all > > all: > > $(Q)echo Run make from main directory > > > > .PHONY: renamelib > > renamelib: > > # the -p is not working to preserve timestamps but touch works > > @cp -p lib.a $(mymodlib_name).a ; \ > > touch -r lib.a $(mymodlib_name).a; \ > > rm -fr .tmp_versions > > # rm -f junk.* .*.cmd ; removing either of these trigger full build > > > > > > .PHONY: clean > > clean: > > # note this deletes .a .o etc files in subdirs too! > > $(Q)$(MAKE) -C $(KDIR) M=$(CURDIR) V=$(V) clean > > > > -- > Best Regards > Masahiro Yamada