OK, problem solved. The issue was that preprocesor directive in c: #elseif doesn't work. I don't know why but I replaced this with #ifdef ... #endif and #ifdef ... #endif instead of using #elseif in the middle and everything works. On Fri, Aug 21, 2020 at 10:01 AM Tomek The Messenger < tomekthemessenger@gmail.com> wrote: > Hi > I have problem with passing flag from makefile to .c file. > During building external kernel module my macro isn't seen by compiler. I > used plenty of ways. > > First way: > ccflags-y += -DMY_FLAG > $(MAKE) -C $(KERNEL_SRC) M=$(SRC) > Second: > $(MAKE) -C $(KERNEL_SRC) M=$(SRC) CFLAGS_my-kernel-module.o="-DMY_FLAG" > Third: > $(MAKE) -C $(KERNEL_SRC) M=$(SRC) CFLAGS="-DMY_FLAG" > Forth: > $(MAKE) -C $(KERNEL_SRC) M=$(SRC) ccflags-y="-DMY_FLAG" > > In general I use bitbake to build external kernel modules. And I wonder > if bitbake doesn't introduce issue as some of above solution really should > work. And additionally I had to use absolute paths in headers because > relative didn't work so -I append also doesn't work: > SRC := $(shell pwd) > ccflags-y := -I$(SRC) > > BR > Tomek > >