ifneq ($(KERNELRELEASE),) # Uncomment the following line to enable kernel stack unwinding within gator, or update gator_backtrace.c # EXTRA_CFLAGS += -DGATOR_KERNEL_STACK_UNWINDING CONFIG_GATOR ?= m obj-$(CONFIG_GATOR) := gator.o gator-y := gator_main.o \ gator_events_block.o \ gator_events_irq.o \ gator_events_meminfo.o \ gator_events_mmapped.o \ gator_events_net.o \ gator_events_perf_pmu.o \ gator_events_sched.o \ # Convert the old GATOR_WITH_MALI_SUPPORT to the new kernel flags ifneq ($(GATOR_WITH_MALI_SUPPORT),) CONFIG_GATOR_WITH_MALI_SUPPORT := y ifeq ($(GATOR_WITH_MALI_SUPPORT),MALI_MIDGARD) CONFIG_GATOR_MALI_4XXMP := n CONFIG_GATOR_MALI_MIDGARD := y else CONFIG_GATOR_MALI_4XXMP := y CONFIG_GATOR_MALI_MIDGARD := n endif EXTRA_CFLAGS += -DMALI_SUPPORT=$(GATOR_WITH_MALI_SUPPORT) ifneq ($(GATOR_MALI_INTERFACE_STYLE),) EXTRA_CFLAGS += -DGATOR_MALI_INTERFACE_STYLE=$(GATOR_MALI_INTERFACE_STYLE) endif endif ifeq ($(CONFIG_GATOR_WITH_MALI_SUPPORT),y) ifeq ($(CONFIG_GATOR_MALI_MIDGARD),y) gator-y += gator_events_mali_midgard.o \ gator_events_mali_midgard_hw.o include $(src)/mali_midgard.mk else gator-y += gator_events_mali_4xx.o endif gator-y += gator_events_mali_common.o ifneq ($(CONFIG_GATOR_MALI_PATH),) ccflags-y += -I$(CONFIG_GATOR_MALI_PATH) endif ccflags-$(CONFIG_GATOR_MALI_4XXMP) += -DMALI_SUPPORT=MALI_4xx ccflags-$(CONFIG_GATOR_MALI_MIDGARD) += -DMALI_SUPPORT=MALI_MIDGARD endif # GATOR_TEST controls whether to include (=1) or exclude (=0) test code. GATOR_TEST ?= 0 EXTRA_CFLAGS += -DGATOR_TEST=$(GATOR_TEST) # Should the original or new block_rq_complete API be used? OLD_BLOCK_RQ_COMPLETE := $(shell grep -A3 block_rq_complete $(srctree)/include/trace/events/block.h | grep nr_bytes -q; echo $$?) EXTRA_CFLAGS += -DOLD_BLOCK_RQ_COMPLETE=$(OLD_BLOCK_RQ_COMPLETE) gator-$(CONFIG_ARM) += gator_events_armv6.o \ gator_events_armv7.o \ gator_events_l2c-310.o \ gator_events_scorpion.o gator-$(CONFIG_ARM64) += $(obj)/gator_main.o: $(obj)/gator_src_md5.h clean-files := gator_src_md5.h # Note, in the recipe below we use "cd $(srctree) && cd $(src)" rather than # "cd $(srctree)/$(src)" because under DKMS $(src) is an absolute path, and we # can't just use $(src) because for normal kernel builds this is relative to # $(srctree) chk_events.h = : quiet_chk_events.h = echo ' CHK $@' silent_chk_events.h = : $(obj)/gator_src_md5.h: FORCE @$($(quiet)chk_events.h) $(Q)cd $(srctree) && cd $(src) ; $(CONFIG_SHELL) -c "echo 'static char *gator_src_md5 = \"'\`ls *.c *.h mali/*.h | grep -Ev '^(gator_src_md5\.c|gator\.mod\.c)$$' | LC_ALL=C sort | xargs cat | md5sum | cut -b 1-32\`'\";'" > $(abspath $@) else all: @echo @echo "usage:" @echo " make -C M=\`pwd\` ARCH=arm CROSS_COMPILE=<...> modules" @echo $(error) clean: rm -f *.o .*.cmd gator_src_md5.h modules.order Module.symvers gator.ko gator.mod.c rm -rf .tmp_versions endif