Commit | Line | Data |
---|---|---|
1c8284eb MD |
1 | # |
2 | # Makefile for the LTT objects. | |
3 | # | |
4 | ||
5 | ifneq ($(KERNELRELEASE),) | |
1c8284eb | 6 | |
a8907e9a MJ |
7 | # This part of the Makefile is used when called by the kernel build system |
8 | # and defines the modules to be built. | |
9 | ||
10 | ifneq ($(CONFIG_TRACEPOINTS),) | |
11 | ||
b933d85e | 12 | TOP_LTTNG_MODULES_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST))) |
a8907e9a MJ |
13 | |
14 | lttng_check_linux_version = $(shell pwd)/include/linux/version.h | |
15 | lttng_check_generated_linux_version = $(shell pwd)/include/generated/uapi/linux/version.h | |
16 | ||
17 | # | |
18 | # Check for stale version.h, which can be a leftover from an old Linux | |
19 | # kernel tree moved to a newer kernel version, only pruned by make | |
20 | # distclean. | |
21 | # | |
22 | ifneq ($(wildcard $(lttng_check_linux_version)),) | |
23 | ifneq ($(wildcard $(lttng_check_generated_linux_version)),) | |
24 | $(error Duplicate version.h files found in $(lttng_check_linux_version) and $(lttng_check_generated_linux_version). Consider running make distclean on your kernel, or removing the stale $(lttng_check_linux_version) file) | |
25 | endif | |
26 | endif | |
27 | ||
b933d85e | 28 | include $(TOP_LTTNG_MODULES_DIR)/Makefile.ABI.workarounds |
a8907e9a | 29 | |
b933d85e | 30 | ccflags-y += -I$(TOP_LTTNG_MODULES_DIR) |
c52610a4 | 31 | |
a8907e9a MJ |
32 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-client-discard.o |
33 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-client-overwrite.o | |
34 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-metadata-client.o | |
35 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-client-mmap-discard.o | |
36 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-client-mmap-overwrite.o | |
37 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-metadata-mmap-client.o | |
38 | obj-$(CONFIG_LTTNG) += lttng-clock.o | |
39 | ||
40 | obj-$(CONFIG_LTTNG) += lttng-tracer.o | |
41 | ||
42 | lttng-tracer-objs := lttng-events.o lttng-abi.o \ | |
43 | lttng-probes.o lttng-context.o \ | |
44 | lttng-context-pid.o lttng-context-procname.o \ | |
45 | lttng-context-prio.o lttng-context-nice.o \ | |
46 | lttng-context-vpid.o lttng-context-tid.o \ | |
47 | lttng-context-vtid.o lttng-context-ppid.o \ | |
48 | lttng-context-vppid.o lttng-context-cpu-id.o \ | |
49 | lttng-context-interruptible.o \ | |
50 | lttng-context-need-reschedule.o lttng-calibrate.o \ | |
51 | lttng-context-hostname.o wrapper/random.o \ | |
52 | probes/lttng.o wrapper/trace-clock.o \ | |
53 | wrapper/page_alloc.o \ | |
54 | lttng-tracker-pid.o \ | |
55 | lttng-filter.o lttng-filter-interpreter.o \ | |
56 | lttng-filter-specialize.o \ | |
57 | lttng-filter-validator.o \ | |
58 | probes/lttng-probe-user.o | |
59 | ||
a8907e9a MJ |
60 | ifneq ($(CONFIG_HAVE_SYSCALL_TRACEPOINTS),) |
61 | lttng-tracer-objs += lttng-syscalls.o | |
62 | endif # CONFIG_HAVE_SYSCALL_TRACEPOINTS | |
63 | ||
64 | ifneq ($(CONFIG_PERF_EVENTS),) | |
65 | lttng-tracer-objs += $(shell \ | |
66 | if [ $(VERSION) -ge 3 \ | |
67 | -o \( $(VERSION) -eq 2 -a $(PATCHLEVEL) -ge 6 -a $(SUBLEVEL) -ge 33 \) ] ; then \ | |
68 | echo "lttng-context-perf-counters.o" ; fi;) | |
69 | endif # CONFIG_PERF_EVENTS | |
70 | ||
71 | ifneq ($(CONFIG_PREEMPT_RT_FULL),) | |
72 | lttng-tracer-objs += lttng-context-migratable.o | |
73 | lttng-tracer-objs += lttng-context-preemptible.o | |
74 | endif # CONFIG_PREEMPT_RT_FULL | |
75 | ||
76 | ifneq ($(CONFIG_PREEMPT),) | |
77 | lttng-tracer-objs += lttng-context-preemptible.o | |
78 | endif | |
79 | ||
80 | lttng-tracer-objs += $(shell \ | |
81 | if [ $(VERSION) -ge 4 \ | |
82 | -o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -ge 15 -a $(SUBLEVEL) -ge 0 \) ] ; then \ | |
83 | echo "lttng-tracepoint.o" ; fi;) | |
84 | ||
39e088f3 MJ |
85 | obj-$(CONFIG_LTTNG) += lttng-statedump.o |
86 | lttng-statedump-objs := lttng-statedump-impl.o wrapper/irqdesc.o \ | |
87 | wrapper/fdtable.o | |
88 | ||
a8907e9a MJ |
89 | obj-$(CONFIG_LTTNG) += probes/ |
90 | obj-$(CONFIG_LTTNG) += lib/ | |
91 | ||
92 | endif # CONFIG_TRACEPOINTS | |
c340f071 | 93 | |
a8907e9a | 94 | else # KERNELRELEASE |
b37d476e | 95 | |
a8907e9a MJ |
96 | # This part of the Makefile is used when the 'make' command is runned in the |
97 | # base directory of the lttng-modules sources. It sets some environment and | |
98 | # calls the kernel build system to build the actual modules. | |
1c8284eb | 99 | |
a8907e9a MJ |
100 | KERNELDIR ?= /lib/modules/$(shell uname -r)/build |
101 | PWD := $(shell pwd) | |
102 | CFLAGS = $(EXTCFLAGS) | |
1c8284eb MD |
103 | |
104 | default: | |
ebc53e02 | 105 | $(MAKE) -C $(KERNELDIR) M=$(PWD) CONFIG_LTTNG=m modules |
1c8284eb MD |
106 | |
107 | modules_install: | |
2da9fdcd | 108 | $(MAKE) -C $(KERNELDIR) M=$(PWD) CONFIG_LTTNG=m modules_install |
1c8284eb MD |
109 | |
110 | clean: | |
ebc53e02 | 111 | $(MAKE) -C $(KERNELDIR) M=$(PWD) clean |
1c8284eb | 112 | |
23e6a44f | 113 | %.i: %.c |
2da9fdcd | 114 | $(MAKE) -C $(KERNELDIR) M=$(PWD) CONFIG_LTTNG=m $@ |
a8907e9a | 115 | |
b4809588 | 116 | endif # KERNELRELEASE |