6008105b4f
Everything should be available in the selftest part of the tree, but providing an example without uhid and hidraw will be more easy to follow for users. This example will probably ever only work on the Etekcity Scroll 6E because we need to adapt the various raw values to the actual device. On that device, the X and Y axis will be swapped and inverted, and on any other device, chances are high that the device will not work until Ctrl-C is hit. The Makefiles are taken from samples/bpf to not reinvent the wheel and to force using in-kernel libbpf and bpftool. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
76 lines
2.5 KiB
Makefile
76 lines
2.5 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# ==========================================================================
|
|
# Building binaries on the host system
|
|
# Binaries are not used during the compilation of the kernel, and intended
|
|
# to be build for target board, target board can be host of course. Added to
|
|
# build binaries to run not on host system.
|
|
#
|
|
# Sample syntax
|
|
# tprogs-y := xsk_example
|
|
# Will compile xsk_example.c and create an executable named xsk_example
|
|
#
|
|
# tprogs-y := xdpsock
|
|
# xdpsock-objs := xdpsock_1.o xdpsock_2.o
|
|
# Will compile xdpsock_1.c and xdpsock_2.c, and then link the executable
|
|
# xdpsock, based on xdpsock_1.o and xdpsock_2.o
|
|
#
|
|
# Derived from scripts/Makefile.host
|
|
#
|
|
__tprogs := $(sort $(tprogs-y))
|
|
|
|
# C code
|
|
# Executables compiled from a single .c file
|
|
tprog-csingle := $(foreach m,$(__tprogs), \
|
|
$(if $($(m)-objs),,$(m)))
|
|
|
|
# C executables linked based on several .o files
|
|
tprog-cmulti := $(foreach m,$(__tprogs),\
|
|
$(if $($(m)-objs),$(m)))
|
|
|
|
# Object (.o) files compiled from .c files
|
|
tprog-cobjs := $(sort $(foreach m,$(__tprogs),$($(m)-objs)))
|
|
|
|
tprog-csingle := $(addprefix $(obj)/,$(tprog-csingle))
|
|
tprog-cmulti := $(addprefix $(obj)/,$(tprog-cmulti))
|
|
tprog-cobjs := $(addprefix $(obj)/,$(tprog-cobjs))
|
|
|
|
#####
|
|
# Handle options to gcc. Support building with separate output directory
|
|
|
|
_tprogc_flags = $(TPROGS_CFLAGS) \
|
|
$(TPROGCFLAGS_$(basetarget).o)
|
|
|
|
# $(objtree)/$(obj) for including generated headers from checkin source files
|
|
ifeq ($(KBUILD_EXTMOD),)
|
|
ifdef building_out_of_srctree
|
|
_tprogc_flags += -I $(objtree)/$(obj)
|
|
endif
|
|
endif
|
|
|
|
tprogc_flags = -Wp,-MD,$(depfile) $(_tprogc_flags)
|
|
|
|
# Create executable from a single .c file
|
|
# tprog-csingle -> Executable
|
|
quiet_cmd_tprog-csingle = CC $@
|
|
cmd_tprog-csingle = $(CC) $(tprogc_flags) $(TPROGS_LDFLAGS) -o $@ $< \
|
|
$(TPROGS_LDLIBS) $(TPROGLDLIBS_$(@F))
|
|
$(tprog-csingle): $(obj)/%: $(src)/%.c FORCE
|
|
$(call if_changed_dep,tprog-csingle)
|
|
|
|
# Link an executable based on list of .o files, all plain c
|
|
# tprog-cmulti -> executable
|
|
quiet_cmd_tprog-cmulti = LD $@
|
|
cmd_tprog-cmulti = $(CC) $(tprogc_flags) $(TPROGS_LDFLAGS) -o $@ \
|
|
$(addprefix $(obj)/,$($(@F)-objs)) \
|
|
$(TPROGS_LDLIBS) $(TPROGLDLIBS_$(@F))
|
|
$(tprog-cmulti): $(tprog-cobjs) FORCE
|
|
$(call if_changed,tprog-cmulti)
|
|
$(call multi_depend, $(tprog-cmulti), , -objs)
|
|
|
|
# Create .o file from a single .c file
|
|
# tprog-cobjs -> .o
|
|
quiet_cmd_tprog-cobjs = CC $@
|
|
cmd_tprog-cobjs = $(CC) $(tprogc_flags) -c -o $@ $<
|
|
$(tprog-cobjs): $(obj)/%.o: $(src)/%.c FORCE
|
|
$(call if_changed_dep,tprog-cobjs)
|