On Wed, Apr 29, 2020 at 12:45 PM Masahiro Yamada <masahiroy@xxxxxxxxxx> wrote: > > > Several Makefiles use 'hostprogs' to build programs for the host > architecture where it is not appropriate to do so. > This is just because Kbuild lacks the support for building programs > for the target architecture. > > This series introduce 'userprogs' syntax and use it from > sample and bpf Makefiles. > > Sam worked on this in 2014. > https://lkml.org/lkml/2014/7/13/154 > > He used 'uapiprogs-y' but I just thought the meaning of > "UAPI programs" is unclear. > > Naming the syntax is one of the most difficult parts. > > I chose 'userprogs'. Anothor choice I had in my mind was 'targetprogs'. > > You can test this series quickly by 'make allmodconfig samples/' > > When building objects for userspace, [U] is displayed. > > masahiro@oscar:~/workspace/linux$ make allmodconfig samples/ All applied to linux-kbuild. > [snip] > AR samples/vfio-mdev/built-in.a > CC [M] samples/vfio-mdev/mtty.o > CC [M] samples/vfio-mdev/mdpy.o > CC [M] samples/vfio-mdev/mdpy-fb.o > CC [M] samples/vfio-mdev/mbochs.o > AR samples/mei/built-in.a > CC [U] samples/mei/mei-amt-version > CC [U] samples/auxdisplay/cfag12864b-example > CC [M] samples/configfs/configfs_sample.o > CC [M] samples/connector/cn_test.o > CC [U] samples/connector/ucon > CC [M] samples/ftrace/ftrace-direct.o > CC [M] samples/ftrace/ftrace-direct-too.o > CC [M] samples/ftrace/ftrace-direct-modify.o > CC [M] samples/ftrace/sample-trace-array.o > CC [U] samples/hidraw/hid-example > CC [M] samples/hw_breakpoint/data_breakpoint.o > CC [M] samples/kdb/kdb_hello.o > CC [M] samples/kfifo/bytestream-example.o > CC [M] samples/kfifo/dma-example.o > CC [M] samples/kfifo/inttype-example.o > CC [M] samples/kfifo/record-example.o > CC [M] samples/kobject/kobject-example.o > CC [M] samples/kobject/kset-example.o > CC [M] samples/kprobes/kprobe_example.o > CC [M] samples/kprobes/kretprobe_example.o > CC [M] samples/livepatch/livepatch-sample.o > CC [M] samples/livepatch/livepatch-shadow-mod.o > CC [M] samples/livepatch/livepatch-shadow-fix1.o > CC [M] samples/livepatch/livepatch-shadow-fix2.o > CC [M] samples/livepatch/livepatch-callbacks-demo.o > CC [M] samples/livepatch/livepatch-callbacks-mod.o > CC [M] samples/livepatch/livepatch-callbacks-busymod.o > CC [M] samples/rpmsg/rpmsg_client_sample.o > CC [U] samples/seccomp/bpf-fancy.o > CC [U] samples/seccomp/bpf-helper.o > LD [U] samples/seccomp/bpf-fancy > CC [U] samples/seccomp/dropper > CC [U] samples/seccomp/bpf-direct > CC [U] samples/seccomp/user-trap > CC [U] samples/timers/hpet_example > CC [M] samples/trace_events/trace-events-sample.o > CC [M] samples/trace_printk/trace-printk.o > CC [U] samples/uhid/uhid-example > CC [M] samples/v4l/v4l2-pci-skeleton.o > CC [U] samples/vfs/test-fsmount > CC [U] samples/vfs/test-statx > samples/vfs/test-statx.c:24:15: warning: ‘struct foo’ declared inside parameter list will not be visible outside of this definition or declaration > 24 | #define statx foo > | ^~~ > CC [U] samples/watchdog/watchdog-simple > AR samples/built-in.a > > Changes for v2: > - Fix ARCH=i386 build error for bpfilter_umh > - Rename 'user-ccflags' to 'userccflags' > because 'user-ccflags' would conflict if an object > called 'user.o' exists in the directory. > - Support 'userldflags' > > Masahiro Yamada (14): > bpfilter: match bit size of bpfilter_umh to that of the kernel > kbuild: add infrastructure to build userspace programs > bpfilter: use 'userprogs' syntax to build bpfilter_umh > samples: seccomp: build sample programs for target architecture > kbuild: doc: document the new syntax 'userprogs' > samples: uhid: build sample program for target architecture > samples: hidraw: build sample program for target architecture > samples: connector: build sample program for target architecture > samples: vfs: build sample programs for target architecture > samples: pidfd: build sample program for target architecture > samples: mei: build sample program for target architecture > samples: auxdisplay: use 'userprogs' syntax > samples: timers: use 'userprogs' syntax > samples: watchdog: use 'userprogs' syntax > > Sam Ravnborg (1): > samples: uhid: fix warnings in uhid-example > > Documentation/kbuild/makefiles.rst | 183 +++++++++++++++++++++-------- > Makefile | 13 +- > init/Kconfig | 4 +- > net/bpfilter/Makefile | 11 +- > samples/Kconfig | 26 +++- > samples/Makefile | 4 + > samples/auxdisplay/Makefile | 11 +- > samples/connector/Makefile | 12 +- > samples/hidraw/Makefile | 9 +- > samples/mei/Makefile | 9 +- > samples/pidfd/Makefile | 8 +- > samples/seccomp/Makefile | 42 +------ > samples/timers/Makefile | 17 +-- > samples/uhid/.gitignore | 2 + > samples/uhid/Makefile | 9 +- > samples/uhid/uhid-example.c | 4 +- > samples/vfs/Makefile | 11 +- > samples/watchdog/Makefile | 10 +- > scripts/Makefile.build | 6 + > scripts/Makefile.clean | 2 +- > scripts/Makefile.userprogs | 45 +++++++ > usr/include/Makefile | 4 + > 22 files changed, 267 insertions(+), 175 deletions(-) > create mode 100644 samples/uhid/.gitignore > create mode 100644 scripts/Makefile.userprogs > > -- > 2.25.1 > -- Best Regards Masahiro Yamada