hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/tools/perf/Makefile.perf
....@@ -1,4 +1,6 @@
1
+# SPDX-License-Identifier: GPL-2.0-only
12 include ../scripts/Makefile.include
3
+include ../scripts/Makefile.arch
24
35 # The default target of this Makefile is...
46 all:
....@@ -46,7 +48,7 @@
4648 #
4749 # Define NO_SLANG if you do not want TUI support.
4850 #
49
-# Define NO_GTK2 if you do not want GTK+ GUI support.
51
+# Define GTK2 if you want GTK+ GUI support.
5052 #
5153 # Define NO_DEMANGLE if you do not want C++ symbol demangling.
5254 #
....@@ -86,6 +88,8 @@
8688 #
8789 # Define NO_LIBBPF if you do not want BPF support
8890 #
91
+# Define NO_LIBCAP if you do not want process capabilities considered by perf
92
+#
8993 # Define NO_SDT if you do not want to define SDT event in perf tools,
9094 # note that it doesn't disable SDT scanning support.
9195 #
....@@ -94,11 +98,34 @@
9498 #
9599 # Define NO_JVMTI if you do not want jvmti agent built
96100 #
101
+# Define NO_JVMTI_CMLR (debug only) if you do not want to process CMLR
102
+# data for java source lines.
103
+#
97104 # Define LIBCLANGLLVM if you DO want builtin clang and llvm support.
98105 # When selected, pass LLVM_CONFIG=/path/to/llvm-config to `make' if
99106 # llvm-config is not in $PATH.
100
-
101
-# Define NO_CORESIGHT if you do not want support for CoreSight trace decoding.
107
+#
108
+# Define CORESIGHT if you DO WANT support for CoreSight trace decoding.
109
+#
110
+# Define NO_AIO if you do not want support of Posix AIO based trace
111
+# streaming for record mode. Currently Posix AIO trace streaming is
112
+# supported only when linking with glibc.
113
+#
114
+# Define NO_LIBZSTD if you do not want support of Zstandard based runtime
115
+# trace compression in record mode.
116
+#
117
+# Define TCMALLOC to enable tcmalloc heap profiling.
118
+#
119
+# Define LIBBPF_DYNAMIC to enable libbpf dynamic linking.
120
+#
121
+# Define NO_SYSCALL_TABLE=1 to disable the use of syscall id to/from name tables
122
+# generated from the kernel .tbl or unistd.h files and use, if available, libaudit
123
+# for doing the conversions to/from strings/id.
124
+#
125
+# Define LIBPFM4 to enable libpfm4 events extension.
126
+#
127
+# Define NO_LIBDEBUGINFOD if you do not want support debuginfod
128
+#
102129
103130 # As per kernel Makefile, avoid funny character set dependencies
104131 unexport LC_ALL
....@@ -165,7 +192,7 @@
165192 # non-config cases
166193 config := 1
167194
168
-NON_CONFIG_TARGETS := clean python-clean TAGS tags cscope help install-doc install-man install-html install-info install-pdf doc man html info pdf
195
+NON_CONFIG_TARGETS := clean python-clean TAGS tags cscope help
169196
170197 ifdef MAKECMDGOALS
171198 ifeq ($(filter-out $(NON_CONFIG_TARGETS),$(MAKECMDGOALS)),)
....@@ -207,6 +234,8 @@
207234 TRACE_EVENT_DIR = $(srctree)/tools/lib/traceevent/
208235 BPF_DIR = $(srctree)/tools/lib/bpf/
209236 SUBCMD_DIR = $(srctree)/tools/lib/subcmd/
237
+LIBPERF_DIR = $(srctree)/tools/lib/perf/
238
+DOC_DIR = $(srctree)/tools/perf/Documentation/
210239
211240 # Set FEATURE_TESTS to 'all' so all possible feature checkers are executed.
212241 # Without this setting the output feature dump file misses some features, for
....@@ -253,8 +282,10 @@
253282
254283 ifneq ($(OUTPUT),)
255284 TE_PATH=$(OUTPUT)
285
+ PLUGINS_PATH=$(OUTPUT)
256286 BPF_PATH=$(OUTPUT)
257287 SUBCMD_PATH=$(OUTPUT)
288
+ LIBPERF_PATH=$(OUTPUT)
258289 ifneq ($(subdir),)
259290 API_PATH=$(OUTPUT)/../lib/api/
260291 else
....@@ -262,15 +293,17 @@
262293 endif
263294 else
264295 TE_PATH=$(TRACE_EVENT_DIR)
296
+ PLUGINS_PATH=$(TRACE_EVENT_DIR)plugins/
265297 API_PATH=$(LIB_DIR)
266298 BPF_PATH=$(BPF_DIR)
267299 SUBCMD_PATH=$(SUBCMD_DIR)
300
+ LIBPERF_PATH=$(LIBPERF_DIR)
268301 endif
269302
270303 LIBTRACEEVENT = $(TE_PATH)libtraceevent.a
271304 export LIBTRACEEVENT
272305
273
-LIBTRACEEVENT_DYNAMIC_LIST = $(TE_PATH)libtraceevent-dynamic-list
306
+LIBTRACEEVENT_DYNAMIC_LIST = $(PLUGINS_PATH)libtraceevent-dynamic-list
274307
275308 #
276309 # The static build has no dynsym table, so this does not work for
....@@ -285,6 +318,9 @@
285318 LIBBPF = $(BPF_PATH)libbpf.a
286319
287320 LIBSUBCMD = $(SUBCMD_PATH)libsubcmd.a
321
+
322
+LIBPERF = $(LIBPERF_PATH)libperf.a
323
+export LIBPERF
288324
289325 # python extension build directories
290326 PYTHON_EXTBUILD := $(OUTPUT)python_ext_build/
....@@ -331,11 +367,11 @@
331367
332368 export PERL_PATH
333369
334
-LIB_FILE=$(OUTPUT)libperf.a
335
-
336
-PERFLIBS = $(LIB_FILE) $(LIBAPI) $(LIBTRACEEVENT) $(LIBSUBCMD)
370
+PERFLIBS = $(LIBAPI) $(LIBTRACEEVENT) $(LIBSUBCMD) $(LIBPERF)
337371 ifndef NO_LIBBPF
338
- PERFLIBS += $(LIBBPF)
372
+ ifndef LIBBPF_DYNAMIC
373
+ PERFLIBS += $(LIBBPF)
374
+ endif
339375 endif
340376
341377 # We choose to avoid "if .. else if .. else .. endif endif"
....@@ -346,7 +382,7 @@
346382 CFLAGS += -I$(OUTPUT)
347383 endif
348384
349
-ifndef NO_GTK2
385
+ifdef GTK2
350386 ALL_PROGRAMS += $(OUTPUT)libperf-gtk.so
351387 GTK_IN := $(OUTPUT)gtk-in.o
352388 endif
....@@ -380,7 +416,12 @@
380416
381417 SHELL = $(SHELL_PATH)
382418
419
+beauty_linux_dir := $(srctree)/tools/perf/trace/beauty/include/linux/
383420 linux_uapi_dir := $(srctree)/tools/include/uapi/linux
421
+asm_generic_uapi_dir := $(srctree)/tools/include/uapi/asm-generic
422
+arch_asm_uapi_dir := $(srctree)/tools/arch/$(SRCARCH)/include/uapi/asm/
423
+x86_arch_asm_uapi_dir := $(srctree)/tools/arch/x86/include/uapi/asm/
424
+x86_arch_asm_dir := $(srctree)/tools/arch/x86/include/asm/
384425
385426 beauty_outdir := $(OUTPUT)trace/beauty/generated
386427 beauty_ioctl_outdir := $(beauty_outdir)/ioctl
....@@ -393,6 +434,30 @@
393434
394435 $(drm_ioctl_array): $(drm_hdr_dir)/drm.h $(drm_hdr_dir)/i915_drm.h $(drm_ioctl_tbl)
395436 $(Q)$(SHELL) '$(drm_ioctl_tbl)' $(drm_hdr_dir) > $@
437
+
438
+fadvise_advice_array := $(beauty_outdir)/fadvise_advice_array.c
439
+fadvise_advice_tbl := $(srctree)/tools/perf/trace/beauty/fadvise.sh
440
+
441
+$(fadvise_advice_array): $(linux_uapi_dir)/in.h $(fadvise_advice_tbl)
442
+ $(Q)$(SHELL) '$(fadvise_advice_tbl)' $(linux_uapi_dir) > $@
443
+
444
+fsmount_arrays := $(beauty_outdir)/fsmount_arrays.c
445
+fsmount_tbls := $(srctree)/tools/perf/trace/beauty/fsmount.sh
446
+
447
+$(fsmount_arrays): $(linux_uapi_dir)/fs.h $(fsmount_tbls)
448
+ $(Q)$(SHELL) '$(fsmount_tbls)' $(linux_uapi_dir) > $@
449
+
450
+fspick_arrays := $(beauty_outdir)/fspick_arrays.c
451
+fspick_tbls := $(srctree)/tools/perf/trace/beauty/fspick.sh
452
+
453
+$(fspick_arrays): $(linux_uapi_dir)/fs.h $(fspick_tbls)
454
+ $(Q)$(SHELL) '$(fspick_tbls)' $(linux_uapi_dir) > $@
455
+
456
+fsconfig_arrays := $(beauty_outdir)/fsconfig_arrays.c
457
+fsconfig_tbls := $(srctree)/tools/perf/trace/beauty/fsconfig.sh
458
+
459
+$(fsconfig_arrays): $(linux_uapi_dir)/fs.h $(fsconfig_tbls)
460
+ $(Q)$(SHELL) '$(fsconfig_tbls)' $(linux_uapi_dir) > $@
396461
397462 pkey_alloc_access_rights_array := $(beauty_outdir)/pkey_alloc_access_rights_array.c
398463 asm_generic_hdr_dir := $(srctree)/tools/include/uapi/asm-generic/
....@@ -435,6 +500,12 @@
435500 $(socket_ipproto_array): $(linux_uapi_dir)/in.h $(socket_ipproto_tbl)
436501 $(Q)$(SHELL) '$(socket_ipproto_tbl)' $(linux_uapi_dir) > $@
437502
503
+socket_arrays := $(beauty_outdir)/socket_arrays.c
504
+socket_tbl := $(srctree)/tools/perf/trace/beauty/socket.sh
505
+
506
+$(socket_arrays): $(beauty_linux_dir)/socket.h $(socket_tbl)
507
+ $(Q)$(SHELL) '$(socket_tbl)' $(beauty_linux_dir) > $@
508
+
438509 vhost_virtio_ioctl_array := $(beauty_ioctl_outdir)/vhost_virtio_ioctl_array.c
439510 vhost_virtio_hdr_dir := $(srctree)/tools/include/uapi/linux
440511 vhost_virtio_ioctl_tbl := $(srctree)/tools/perf/trace/beauty/vhost_virtio_ioctl.sh
....@@ -456,6 +527,37 @@
456527 $(madvise_behavior_array): $(madvise_hdr_dir)/mman-common.h $(madvise_behavior_tbl)
457528 $(Q)$(SHELL) '$(madvise_behavior_tbl)' $(madvise_hdr_dir) > $@
458529
530
+mmap_flags_array := $(beauty_outdir)/mmap_flags_array.c
531
+mmap_flags_tbl := $(srctree)/tools/perf/trace/beauty/mmap_flags.sh
532
+
533
+$(mmap_flags_array): $(linux_uapi_dir)/mman.h $(asm_generic_uapi_dir)/mman.h $(asm_generic_uapi_dir)/mman-common.h $(mmap_flags_tbl)
534
+ $(Q)$(SHELL) '$(mmap_flags_tbl)' $(linux_uapi_dir) $(asm_generic_uapi_dir) $(arch_asm_uapi_dir) > $@
535
+
536
+mremap_flags_array := $(beauty_outdir)/mremap_flags_array.c
537
+mremap_flags_tbl := $(srctree)/tools/perf/trace/beauty/mremap_flags.sh
538
+
539
+$(mremap_flags_array): $(linux_uapi_dir)/mman.h $(mremap_flags_tbl)
540
+ $(Q)$(SHELL) '$(mremap_flags_tbl)' $(linux_uapi_dir) > $@
541
+
542
+mount_flags_array := $(beauty_outdir)/mount_flags_array.c
543
+mount_flags_tbl := $(srctree)/tools/perf/trace/beauty/mount_flags.sh
544
+
545
+$(mount_flags_array): $(linux_uapi_dir)/fs.h $(mount_flags_tbl)
546
+ $(Q)$(SHELL) '$(mount_flags_tbl)' $(linux_uapi_dir) > $@
547
+
548
+move_mount_flags_array := $(beauty_outdir)/move_mount_flags_array.c
549
+move_mount_flags_tbl := $(srctree)/tools/perf/trace/beauty/move_mount_flags.sh
550
+
551
+$(move_mount_flags_array): $(linux_uapi_dir)/fs.h $(move_mount_flags_tbl)
552
+ $(Q)$(SHELL) '$(move_mount_flags_tbl)' $(linux_uapi_dir) > $@
553
+
554
+
555
+mmap_prot_array := $(beauty_outdir)/mmap_prot_array.c
556
+mmap_prot_tbl := $(srctree)/tools/perf/trace/beauty/mmap_prot.sh
557
+
558
+$(mmap_prot_array): $(asm_generic_uapi_dir)/mman.h $(asm_generic_uapi_dir)/mman-common.h $(mmap_prot_tbl)
559
+ $(Q)$(SHELL) '$(mmap_prot_tbl)' $(asm_generic_uapi_dir) $(arch_asm_uapi_dir) > $@
560
+
459561 prctl_option_array := $(beauty_outdir)/prctl_option_array.c
460562 prctl_hdr_dir := $(srctree)/tools/include/uapi/linux/
461563 prctl_option_tbl := $(srctree)/tools/perf/trace/beauty/prctl_option.sh
....@@ -463,21 +565,59 @@
463565 $(prctl_option_array): $(prctl_hdr_dir)/prctl.h $(prctl_option_tbl)
464566 $(Q)$(SHELL) '$(prctl_option_tbl)' $(prctl_hdr_dir) > $@
465567
568
+usbdevfs_ioctl_array := $(beauty_ioctl_outdir)/usbdevfs_ioctl_array.c
569
+usbdevfs_ioctl_tbl := $(srctree)/tools/perf/trace/beauty/usbdevfs_ioctl.sh
570
+
571
+$(usbdevfs_ioctl_array): $(linux_uapi_dir)/usbdevice_fs.h $(usbdevfs_ioctl_tbl)
572
+ $(Q)$(SHELL) '$(usbdevfs_ioctl_tbl)' $(linux_uapi_dir) > $@
573
+
574
+x86_arch_prctl_code_array := $(beauty_outdir)/x86_arch_prctl_code_array.c
575
+x86_arch_prctl_code_tbl := $(srctree)/tools/perf/trace/beauty/x86_arch_prctl.sh
576
+
577
+$(x86_arch_prctl_code_array): $(x86_arch_asm_uapi_dir)/prctl.h $(x86_arch_prctl_code_tbl)
578
+ $(Q)$(SHELL) '$(x86_arch_prctl_code_tbl)' $(x86_arch_asm_uapi_dir) > $@
579
+
580
+x86_arch_irq_vectors_array := $(beauty_outdir)/x86_arch_irq_vectors_array.c
581
+x86_arch_irq_vectors_tbl := $(srctree)/tools/perf/trace/beauty/tracepoints/x86_irq_vectors.sh
582
+
583
+$(x86_arch_irq_vectors_array): $(x86_arch_asm_dir)/irq_vectors.h $(x86_arch_irq_vectors_tbl)
584
+ $(Q)$(SHELL) '$(x86_arch_irq_vectors_tbl)' $(x86_arch_asm_dir) > $@
585
+
586
+x86_arch_MSRs_array := $(beauty_outdir)/x86_arch_MSRs_array.c
587
+x86_arch_MSRs_tbl := $(srctree)/tools/perf/trace/beauty/tracepoints/x86_msr.sh
588
+
589
+$(x86_arch_MSRs_array): $(x86_arch_asm_dir)/msr-index.h $(x86_arch_MSRs_tbl)
590
+ $(Q)$(SHELL) '$(x86_arch_MSRs_tbl)' $(x86_arch_asm_dir) > $@
591
+
592
+rename_flags_array := $(beauty_outdir)/rename_flags_array.c
593
+rename_flags_tbl := $(srctree)/tools/perf/trace/beauty/rename_flags.sh
594
+
595
+$(rename_flags_array): $(linux_uapi_dir)/fs.h $(rename_flags_tbl)
596
+ $(Q)$(SHELL) '$(rename_flags_tbl)' $(linux_uapi_dir) > $@
597
+
466598 arch_errno_name_array := $(beauty_outdir)/arch_errno_name_array.c
467599 arch_errno_hdr_dir := $(srctree)/tools
468600 arch_errno_tbl := $(srctree)/tools/perf/trace/beauty/arch_errno_names.sh
469601
470602 $(arch_errno_name_array): $(arch_errno_tbl)
471
- $(Q)$(SHELL) '$(arch_errno_tbl)' $(CC) $(arch_errno_hdr_dir) > $@
603
+ $(Q)$(SHELL) '$(arch_errno_tbl)' '$(patsubst -%,,$(CC))' $(arch_errno_hdr_dir) > $@
604
+
605
+sync_file_range_arrays := $(beauty_outdir)/sync_file_range_arrays.c
606
+sync_file_range_tbls := $(srctree)/tools/perf/trace/beauty/sync_file_range.sh
607
+
608
+$(sync_file_range_arrays): $(linux_uapi_dir)/fs.h $(sync_file_range_tbls)
609
+ $(Q)$(SHELL) '$(sync_file_range_tbls)' $(linux_uapi_dir) > $@
472610
473611 all: shell_compatibility_test $(ALL_PROGRAMS) $(LANG_BINDINGS) $(OTHER_PROGRAMS)
474612
475
-$(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS) $(LIBTRACEEVENT_DYNAMIC_LIST)
613
+# Create python binding output directory if not already present
614
+_dummy := $(shell [ -d '$(OUTPUT)python' ] || mkdir -p '$(OUTPUT)python')
615
+
616
+$(OUTPUT)python/perf.so: $(PYTHON_EXT_SRCS) $(PYTHON_EXT_DEPS) $(LIBTRACEEVENT_DYNAMIC_LIST) $(LIBPERF)
476617 $(QUIET_GEN)LDSHARED="$(CC) -pthread -shared" \
477618 CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS) $(LIBTRACEEVENT_DYNAMIC_LIST_LDFLAGS)' \
478619 $(PYTHON_WORD) util/setup.py \
479620 --quiet build_ext; \
480
- mkdir -p $(OUTPUT)python && \
481621 cp $(PYTHON_EXTBUILD_LIB)perf*.so $(OUTPUT)python/
482622
483623 please_set_SHELL_PATH_to_a_more_modern_shell:
....@@ -565,17 +705,33 @@
565705 build-dir = $(if $(__build-dir),$(__build-dir),.)
566706
567707 prepare: $(OUTPUT)PERF-VERSION-FILE $(OUTPUT)common-cmds.h archheaders $(drm_ioctl_array) \
708
+ $(fadvise_advice_array) \
709
+ $(fsconfig_arrays) \
710
+ $(fsmount_arrays) \
711
+ $(fspick_arrays) \
568712 $(pkey_alloc_access_rights_array) \
569713 $(sndrv_pcm_ioctl_array) \
570714 $(sndrv_ctl_ioctl_array) \
571715 $(kcmp_type_array) \
572716 $(kvm_ioctl_array) \
573717 $(socket_ipproto_array) \
718
+ $(socket_arrays) \
574719 $(vhost_virtio_ioctl_array) \
575720 $(madvise_behavior_array) \
721
+ $(mmap_flags_array) \
722
+ $(mmap_prot_array) \
723
+ $(mremap_flags_array) \
724
+ $(mount_flags_array) \
725
+ $(move_mount_flags_array) \
576726 $(perf_ioctl_array) \
577727 $(prctl_option_array) \
578
- $(arch_errno_name_array)
728
+ $(usbdevfs_ioctl_array) \
729
+ $(x86_arch_irq_vectors_array) \
730
+ $(x86_arch_MSRs_array) \
731
+ $(x86_arch_prctl_code_array) \
732
+ $(rename_flags_array) \
733
+ $(arch_errno_name_array) \
734
+ $(sync_file_range_arrays)
579735
580736 $(OUTPUT)%.o: %.c prepare FORCE
581737 $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=$(build-dir) $@
....@@ -602,12 +758,12 @@
602758 $(QUIET_LINK)$(CC) $(CFLAGS) -o $@ $(LDFLAGS) $(filter %.o,$^) $(LIBS)
603759
604760 ifndef NO_PERF_READ_VDSO32
605
-$(OUTPUT)perf-read-vdso32: perf-read-vdso.c util/find-vdso-map.c
761
+$(OUTPUT)perf-read-vdso32: perf-read-vdso.c util/find-map.c
606762 $(QUIET_CC)$(CC) -m32 $(filter -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c
607763 endif
608764
609765 ifndef NO_PERF_READ_VDSOX32
610
-$(OUTPUT)perf-read-vdsox32: perf-read-vdso.c util/find-vdso-map.c
766
+$(OUTPUT)perf-read-vdsox32: perf-read-vdso.c util/find-map.c
611767 $(QUIET_CC)$(CC) -mx32 $(filter -static,$(LDFLAGS)) -Wall -Werror -o $@ perf-read-vdso.c
612768 endif
613769
....@@ -618,18 +774,10 @@
618774 $(Q)$(MAKE) -f $(srctree)/tools/build/Makefile.build dir=jvmti obj=jvmti
619775
620776 $(OUTPUT)$(LIBJVMTI): $(LIBJVMTI_IN)
621
- $(QUIET_LINK)$(CC) -shared -Wl,-soname -Wl,$(LIBJVMTI) -o $@ $<
777
+ $(QUIET_LINK)$(CC) $(LDFLAGS) -shared -Wl,-soname -Wl,$(LIBJVMTI) -o $@ $<
622778 endif
623779
624780 $(patsubst perf-%,%.o,$(PROGRAMS)): $(wildcard */*.h)
625
-
626
-LIBPERF_IN := $(OUTPUT)libperf-in.o
627
-
628
-$(LIBPERF_IN): prepare FORCE
629
- $(Q)$(MAKE) $(build)=libperf
630
-
631
-$(LIB_FILE): $(LIBPERF_IN)
632
- $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIBPERF_IN) $(LIB_OBJS)
633781
634782 LIBTRACEEVENT_FLAGS += plugin_dir=$(plugindir_SQ) 'EXTRA_CFLAGS=$(EXTRA_CFLAGS)' 'LDFLAGS=$(LDFLAGS)'
635783
....@@ -637,10 +785,10 @@
637785 $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent.a
638786
639787 libtraceevent_plugins: FORCE
640
- $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) plugins
788
+ $(Q)$(MAKE) -C $(TRACE_EVENT_DIR)plugins $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) plugins
641789
642790 $(LIBTRACEEVENT_DYNAMIC_LIST): libtraceevent_plugins
643
- $(Q)$(MAKE) -C $(TRACE_EVENT_DIR) $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent-dynamic-list
791
+ $(Q)$(MAKE) -C $(TRACE_EVENT_DIR)plugins $(LIBTRACEEVENT_FLAGS) O=$(OUTPUT) $(OUTPUT)libtraceevent-dynamic-list
644792
645793 $(LIBTRACEEVENT)-clean:
646794 $(call QUIET_CLEAN, libtraceevent)
....@@ -663,11 +811,17 @@
663811 $(call QUIET_CLEAN, libbpf)
664812 $(Q)$(MAKE) -C $(BPF_DIR) O=$(OUTPUT) clean >/dev/null
665813
814
+$(LIBPERF): FORCE
815
+ $(Q)$(MAKE) -C $(LIBPERF_DIR) EXTRA_CFLAGS="$(LIBPERF_CFLAGS)" O=$(OUTPUT) $(OUTPUT)libperf.a
816
+
817
+$(LIBPERF)-clean:
818
+ $(call QUIET_CLEAN, libperf)
819
+ $(Q)$(MAKE) -C $(LIBPERF_DIR) O=$(OUTPUT) clean >/dev/null
820
+
666821 $(LIBSUBCMD): FORCE
667822 $(Q)$(MAKE) -C $(SUBCMD_DIR) O=$(OUTPUT) $(OUTPUT)libsubcmd.a
668823
669824 $(LIBSUBCMD)-clean:
670
- $(call QUIET_CLEAN, libsubcmd)
671825 $(Q)$(MAKE) -C $(SUBCMD_DIR) O=$(OUTPUT) clean
672826
673827 help:
....@@ -707,7 +861,7 @@
707861
708862 # 'make doc' should call 'make -C Documentation all'
709863 $(DOC_TARGETS):
710
- $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) $(@:doc=all)
864
+ $(Q)$(MAKE) -C $(DOC_DIR) O=$(OUTPUT) $(@:doc=all) ASCIIDOC_EXTRA=$(ASCIIDOC_EXTRA)
711865
712866 TAG_FOLDERS= . ../lib ../include
713867 TAG_FILES= ../../include/uapi/linux/perf_event.h
....@@ -743,7 +897,7 @@
743897
744898 ### Installation rules
745899
746
-ifndef NO_GTK2
900
+ifdef GTK2
747901 install-gtk: $(OUTPUT)libperf-gtk.so
748902 $(call QUIET_INSTALL, 'GTK UI') \
749903 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(libdir_SQ)'; \
....@@ -775,7 +929,9 @@
775929 ifndef NO_LIBBPF
776930 $(call QUIET_INSTALL, bpf-headers) \
777931 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perf_include_instdir_SQ)/bpf'; \
778
- $(INSTALL) include/bpf/*.h -t '$(DESTDIR_SQ)$(perf_include_instdir_SQ)/bpf'
932
+ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perf_include_instdir_SQ)/bpf/linux'; \
933
+ $(INSTALL) include/bpf/*.h -t '$(DESTDIR_SQ)$(perf_include_instdir_SQ)/bpf'; \
934
+ $(INSTALL) include/bpf/linux/*.h -t '$(DESTDIR_SQ)$(perf_include_instdir_SQ)/bpf/linux'
779935 $(call QUIET_INSTALL, bpf-examples) \
780936 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perf_examples_instdir_SQ)/bpf'; \
781937 $(INSTALL) examples/bpf/*.c -t '$(DESTDIR_SQ)$(perf_examples_instdir_SQ)/bpf'
....@@ -801,8 +957,8 @@
801957 $(call QUIET_INSTALL, python-scripts) \
802958 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'; \
803959 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'; \
804
- $(INSTALL) scripts/python/Perf-Trace-Util/lib/Perf/Trace/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'; \
805
- $(INSTALL) scripts/python/*.py -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'; \
960
+ $(INSTALL) scripts/python/Perf-Trace-Util/lib/Perf/Trace/* -m 644 -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/Perf-Trace-Util/lib/Perf/Trace'; \
961
+ $(INSTALL) scripts/python/*.py -m 644 -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python'; \
806962 $(INSTALL) scripts/python/bin/* -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/python/bin'
807963 endif
808964 $(call QUIET_INSTALL, perf_completion-script) \
....@@ -816,6 +972,7 @@
816972 $(call QUIET_INSTALL, tests) \
817973 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'; \
818974 $(INSTALL) tests/attr.py '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'; \
975
+ $(INSTALL) tests/pe-file.exe* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'; \
819976 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \
820977 $(INSTALL) tests/attr/* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \
821978 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell'; \
....@@ -832,7 +989,7 @@
832989
833990 # 'make install-doc' should call 'make -C Documentation install'
834991 $(INSTALL_DOC_TARGETS):
835
- $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) $(@:-doc=)
992
+ $(Q)$(MAKE) -C $(DOC_DIR) O=$(OUTPUT) $(@:-doc=) ASCIIDOC_EXTRA=$(ASCIIDOC_EXTRA)
836993
837994 ### Cleaning rules
838995
....@@ -847,8 +1004,8 @@
8471004 python-clean:
8481005 $(python-clean)
8491006
850
-clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean config-clean fixdep-clean python-clean
851
- $(call QUIET_CLEAN, core-objs) $(RM) $(LIB_FILE) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS)
1007
+clean:: $(LIBTRACEEVENT)-clean $(LIBAPI)-clean $(LIBBPF)-clean $(LIBSUBCMD)-clean $(LIBPERF)-clean config-clean fixdep-clean python-clean
1008
+ $(call QUIET_CLEAN, core-objs) $(RM) $(LIBPERF_A) $(OUTPUT)perf-archive $(OUTPUT)perf-with-kcore $(LANG_BINDINGS)
8521009 $(Q)find $(if $(OUTPUT),$(OUTPUT),.) -name '*.o' -delete -o -name '\.*.cmd' -delete -o -name '\.*.d' -delete
8531010 $(Q)$(RM) $(OUTPUT).config-detected
8541011 $(call QUIET_CLEAN, core-progs) $(RM) $(ALL_PROGRAMS) perf perf-read-vdso32 perf-read-vdsox32 $(OUTPUT)pmu-events/jevents $(OUTPUT)$(LIBJVMTI).so
....@@ -856,7 +1013,16 @@
8561013 $(OUTPUT)util/intel-pt-decoder/inat-tables.c \
8571014 $(OUTPUT)tests/llvm-src-{base,kbuild,prologue,relocation}.c \
8581015 $(OUTPUT)pmu-events/pmu-events.c \
1016
+ $(OUTPUT)$(fadvise_advice_array) \
1017
+ $(OUTPUT)$(fsconfig_arrays) \
1018
+ $(OUTPUT)$(fsmount_arrays) \
1019
+ $(OUTPUT)$(fspick_arrays) \
8591020 $(OUTPUT)$(madvise_behavior_array) \
1021
+ $(OUTPUT)$(mmap_flags_array) \
1022
+ $(OUTPUT)$(mmap_prot_array) \
1023
+ $(OUTPUT)$(mremap_flags_array) \
1024
+ $(OUTPUT)$(mount_flags_array) \
1025
+ $(OUTPUT)$(move_mount_flags_array) \
8601026 $(OUTPUT)$(drm_ioctl_array) \
8611027 $(OUTPUT)$(pkey_alloc_access_rights_array) \
8621028 $(OUTPUT)$(sndrv_ctl_ioctl_array) \
....@@ -864,11 +1030,19 @@
8641030 $(OUTPUT)$(kvm_ioctl_array) \
8651031 $(OUTPUT)$(kcmp_type_array) \
8661032 $(OUTPUT)$(socket_ipproto_array) \
1033
+ $(OUTPUT)$(socket_arrays) \
8671034 $(OUTPUT)$(vhost_virtio_ioctl_array) \
8681035 $(OUTPUT)$(perf_ioctl_array) \
8691036 $(OUTPUT)$(prctl_option_array) \
870
- $(OUTPUT)$(arch_errno_name_array)
871
- $(QUIET_SUBDIR0)Documentation $(QUIET_SUBDIR1) clean
1037
+ $(OUTPUT)$(usbdevfs_ioctl_array) \
1038
+ $(OUTPUT)$(x86_arch_irq_vectors_array) \
1039
+ $(OUTPUT)$(x86_arch_MSRs_array) \
1040
+ $(OUTPUT)$(x86_arch_prctl_code_array) \
1041
+ $(OUTPUT)$(rename_flags_array) \
1042
+ $(OUTPUT)$(arch_errno_name_array) \
1043
+ $(OUTPUT)$(sync_file_range_arrays)
1044
+ $(call QUIET_CLEAN, Documentation) \
1045
+ $(MAKE) -C $(DOC_DIR) O=$(OUTPUT) clean >/dev/null
8721046
8731047 #
8741048 # To provide FEATURE-DUMP into $(FEATURE_DUMP_COPY)