69 lines · plain
1# SPDX-License-Identifier: GPL-2.0-only2include ../scripts/Makefile.include3 4bindir ?= /usr/bin5 6ifeq ($(srctree),)7srctree := $(patsubst %/,%,$(dir $(CURDIR)))8srctree := $(patsubst %/,%,$(dir $(srctree)))9endif10 11# Do not use make's built-in rules12# (this improves performance and avoids hard-to-debug behaviour);13MAKEFLAGS += -r14 15CFLAGS += -O2 -Wall -g -D_GNU_SOURCE -I$(OUTPUT)include16 17ALL_TARGETS := spidev_test spidev_fdx18ALL_PROGRAMS := $(patsubst %,$(OUTPUT)%,$(ALL_TARGETS))19 20all: $(ALL_PROGRAMS)21 22export srctree OUTPUT CC LD CFLAGS23include $(srctree)/tools/build/Makefile.include24 25#26# We need the following to be outside of kernel tree27#28$(OUTPUT)include/linux/spi: ../../include/uapi/linux/spi29 mkdir -p $(OUTPUT)include/linux/spi 2>&1 || true30 ln -sf $(CURDIR)/../../include/uapi/linux/spi/spidev.h $@31 ln -sf $(CURDIR)/../../include/uapi/linux/spi/spi.h $@32 33prepare: $(OUTPUT)include/linux/spi34 35#36# spidev_test37#38SPIDEV_TEST_IN := $(OUTPUT)spidev_test-in.o39$(SPIDEV_TEST_IN): prepare FORCE40 $(Q)$(MAKE) $(build)=spidev_test41$(OUTPUT)spidev_test: $(SPIDEV_TEST_IN)42 $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@43 44#45# spidev_fdx46#47SPIDEV_FDX_IN := $(OUTPUT)spidev_fdx-in.o48$(SPIDEV_FDX_IN): prepare FORCE49 $(Q)$(MAKE) $(build)=spidev_fdx50$(OUTPUT)spidev_fdx: $(SPIDEV_FDX_IN)51 $(QUIET_LINK)$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@52 53clean:54 rm -f $(ALL_PROGRAMS)55 rm -rf $(OUTPUT)include/56 find $(or $(OUTPUT),.) -name '*.o' -delete57 find $(or $(OUTPUT),.) -name '\.*.o.d' -delete58 find $(or $(OUTPUT),.) -name '\.*.o.cmd' -delete59 60install: $(ALL_PROGRAMS)61 install -d -m 755 $(DESTDIR)$(bindir); \62 for program in $(ALL_PROGRAMS); do \63 install $$program $(DESTDIR)$(bindir); \64 done65 66FORCE:67 68.PHONY: all install clean FORCE prepare69