Commit | Line | Data |
---|---|---|
9f36eaed | 1 | # SPDX-License-Identifier: (GPL-2.0 or LGPL-2.1) |
1c8284eb MD |
2 | |
3 | ifneq ($(KERNELRELEASE),) | |
1c8284eb | 4 | |
a8907e9a MJ |
5 | # This part of the Makefile is used when called by the kernel build system |
6 | # and defines the modules to be built. | |
7 | ||
98eb7f81 MD |
8 | ifdef CONFIG_LOCALVERSION # Check if dot-config is included. |
9 | ifeq ($(CONFIG_TRACEPOINTS),) | |
10 | $(error The option CONFIG_TRACEPOINTS needs to be enabled in your kernel configuration) | |
11 | endif # CONFIG_TRACEPOINTS | |
12 | endif # ifdef CONFIG_LOCALVERSION | |
a8907e9a | 13 | |
ca62d279 | 14 | TOP_LTTNG_MODULES_DIR := $(shell dirname $(lastword $(MAKEFILE_LIST))) |
39e088f3 | 15 | |
ca62d279 MD |
16 | lttng_check_linux_version = $(shell pwd)/include/linux/version.h |
17 | lttng_check_generated_linux_version = $(shell pwd)/include/generated/uapi/linux/version.h | |
a8907e9a | 18 | |
ca62d279 MD |
19 | # |
20 | # Check for stale version.h, which can be a leftover from an old Linux | |
21 | # kernel tree moved to a newer kernel version, only pruned by make | |
22 | # distclean. | |
23 | # | |
24 | ifneq ($(wildcard $(lttng_check_linux_version)),) | |
25 | ifneq ($(wildcard $(lttng_check_generated_linux_version)),) | |
26 | $(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) | |
27 | endif | |
28 | endif | |
29 | ||
751494f9 | 30 | include $(TOP_LTTNG_MODULES_DIR)/Kbuild.common |
ca62d279 MD |
31 | |
32 | ccflags-y += -I$(TOP_LTTNG_MODULES_DIR) | |
33 | ||
34 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-client-discard.o | |
35 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-client-overwrite.o | |
36 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-metadata-client.o | |
37 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-client-mmap-discard.o | |
38 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-client-mmap-overwrite.o | |
39 | obj-$(CONFIG_LTTNG) += lttng-ring-buffer-metadata-mmap-client.o | |
40 | obj-$(CONFIG_LTTNG) += lttng-clock.o | |
41 | ||
42 | obj-$(CONFIG_LTTNG) += lttng-tracer.o | |
43 | ||
d4d4da49 MD |
44 | obj-$(CONFIG_LTTNG) += lttng-wrapper.o |
45 | ||
231b5333 | 46 | lttng-tracer-objs := lttng-events.o lttng-abi.o lttng-string-utils.o \ |
ca62d279 MD |
47 | lttng-probes.o lttng-context.o \ |
48 | lttng-context-pid.o lttng-context-procname.o \ | |
49 | lttng-context-prio.o lttng-context-nice.o \ | |
50 | lttng-context-vpid.o lttng-context-tid.o \ | |
51 | lttng-context-vtid.o lttng-context-ppid.o \ | |
52 | lttng-context-vppid.o lttng-context-cpu-id.o \ | |
dc923e75 MJ |
53 | lttng-context-uid.o \ |
54 | lttng-context-euid.o \ | |
55 | lttng-context-suid.o \ | |
56 | lttng-context-gid.o \ | |
57 | lttng-context-egid.o \ | |
58 | lttng-context-sgid.o \ | |
59 | lttng-context-vuid.o \ | |
60 | lttng-context-veuid.o \ | |
61 | lttng-context-vsuid.o \ | |
62 | lttng-context-vgid.o \ | |
63 | lttng-context-vegid.o \ | |
64 | lttng-context-vsgid.o \ | |
ca62d279 | 65 | lttng-context-interruptible.o \ |
2fa2d39a FG |
66 | lttng-context-need-reschedule.o \ |
67 | lttng-context-callstack.o lttng-calibrate.o \ | |
d4d4da49 MD |
68 | lttng-context-hostname.o \ |
69 | probes/lttng.o \ | |
d1f652f8 | 70 | lttng-tracker-id.o \ |
ca62d279 MD |
71 | lttng-filter.o lttng-filter-interpreter.o \ |
72 | lttng-filter-specialize.o \ | |
73 | lttng-filter-validator.o \ | |
f771eda6 | 74 | probes/lttng-probe-user.o \ |
d4d4da49 MD |
75 | lttng-tp-mempool.o \ |
76 | ||
77 | lttng-wrapper-objs := wrapper/page_alloc.o \ | |
78 | wrapper/random.o \ | |
79 | wrapper/trace-clock.o \ | |
d551a26d | 80 | wrapper/kallsyms.o \ |
d4d4da49 MD |
81 | wrapper/irqdesc.o \ |
82 | wrapper/fdtable.o \ | |
d8933959 | 83 | wrapper/genhd.o \ |
d4d4da49 | 84 | lttng-wrapper-impl.o |
ca62d279 MD |
85 | |
86 | ifneq ($(CONFIG_HAVE_SYSCALL_TRACEPOINTS),) | |
87 | lttng-tracer-objs += lttng-syscalls.o | |
88 | endif # CONFIG_HAVE_SYSCALL_TRACEPOINTS | |
89 | ||
90 | ifneq ($(CONFIG_PERF_EVENTS),) | |
12ce29c7 | 91 | lttng-tracer-objs += lttng-context-perf-counters.o |
ca62d279 MD |
92 | endif # CONFIG_PERF_EVENTS |
93 | ||
94 | ifneq ($(CONFIG_PREEMPT_RT_FULL),) | |
95 | lttng-tracer-objs += lttng-context-migratable.o | |
96 | lttng-tracer-objs += lttng-context-preemptible.o | |
97 | endif # CONFIG_PREEMPT_RT_FULL | |
98 | ||
99 | ifneq ($(CONFIG_PREEMPT),) | |
100 | lttng-tracer-objs += lttng-context-preemptible.o | |
101 | endif | |
102 | ||
103 | lttng-tracer-objs += $(shell \ | |
104 | if [ $(VERSION) -ge 4 \ | |
78b33418 | 105 | -o \( $(VERSION) -eq 3 -a $(PATCHLEVEL) -ge 15 \) ] ; then \ |
ca62d279 MD |
106 | echo "lttng-tracepoint.o" ; fi;) |
107 | ||
a6cf40a4 MJ |
108 | lttng-tracer-objs += lttng-context-cgroup-ns.o |
109 | ||
110 | ifneq ($(CONFIG_IPC_NS),) | |
111 | lttng-tracer-objs += lttng-context-ipc-ns.o | |
112 | endif | |
113 | ||
114 | ifneq ($(wildcard $(mnt_ns_dep)),) | |
115 | lttng-tracer-objs += lttng-context-mnt-ns.o | |
116 | endif | |
117 | ||
118 | ifneq ($(CONFIG_NET_NS),) | |
119 | lttng-tracer-objs += lttng-context-net-ns.o | |
120 | endif | |
121 | ||
122 | ifneq ($(CONFIG_PID_NS),) | |
123 | lttng-tracer-objs += lttng-context-pid-ns.o | |
124 | endif | |
125 | ||
126 | ifneq ($(CONFIG_USER_NS),) | |
127 | lttng-tracer-objs += lttng-context-user-ns.o | |
128 | endif | |
129 | ||
130 | ifneq ($(CONFIG_UTS_NS),) | |
131 | lttng-tracer-objs += lttng-context-uts-ns.o | |
132 | endif | |
133 | ||
ca62d279 | 134 | obj-$(CONFIG_LTTNG) += lttng-statedump.o |
d4d4da49 | 135 | lttng-statedump-objs := lttng-statedump-impl.o |
ca62d279 MD |
136 | |
137 | obj-$(CONFIG_LTTNG) += probes/ | |
138 | obj-$(CONFIG_LTTNG) += lib/ | |
db758d11 | 139 | obj-$(CONFIG_LTTNG) += tests/ |
c340f071 | 140 | |
a8907e9a | 141 | else # KERNELRELEASE |
b37d476e | 142 | |
a8907e9a MJ |
143 | # This part of the Makefile is used when the 'make' command is runned in the |
144 | # base directory of the lttng-modules sources. It sets some environment and | |
145 | # calls the kernel build system to build the actual modules. | |
1c8284eb | 146 | |
a8907e9a MJ |
147 | KERNELDIR ?= /lib/modules/$(shell uname -r)/build |
148 | PWD := $(shell pwd) | |
149 | CFLAGS = $(EXTCFLAGS) | |
1c8284eb | 150 | |
87d1b66f MJ |
151 | default: modules |
152 | ||
153 | modules: | |
3a3b740f | 154 | $(MAKE) -C $(KERNELDIR) M=$(PWD) CONFIG_LTTNG=m CONFIG_LTTNG_CLOCK_PLUGIN_TEST=m modules |
1c8284eb MD |
155 | |
156 | modules_install: | |
3a3b740f | 157 | $(MAKE) -C $(KERNELDIR) M=$(PWD) CONFIG_LTTNG=m CONFIG_LTTNG_CLOCK_PLUGIN_TEST=m modules_install |
1c8284eb MD |
158 | |
159 | clean: | |
ebc53e02 | 160 | $(MAKE) -C $(KERNELDIR) M=$(PWD) clean |
1c8284eb | 161 | |
23e6a44f | 162 | %.i: %.c |
3a3b740f | 163 | $(MAKE) -C $(KERNELDIR) M=$(PWD) CONFIG_LTTNG=m CONFIG_LTTNG_CLOCK_PLUGIN_TEST=m $@ |
a8907e9a | 164 | |
b4809588 | 165 | endif # KERNELRELEASE |