1*4882a593Smuzhiyunperf-y += annotate.o 2*4882a593Smuzhiyunperf-y += block-info.o 3*4882a593Smuzhiyunperf-y += block-range.o 4*4882a593Smuzhiyunperf-y += build-id.o 5*4882a593Smuzhiyunperf-y += cacheline.o 6*4882a593Smuzhiyunperf-y += config.o 7*4882a593Smuzhiyunperf-y += copyfile.o 8*4882a593Smuzhiyunperf-y += ctype.o 9*4882a593Smuzhiyunperf-y += db-export.o 10*4882a593Smuzhiyunperf-y += env.o 11*4882a593Smuzhiyunperf-y += event.o 12*4882a593Smuzhiyunperf-y += evlist.o 13*4882a593Smuzhiyunperf-y += sideband_evlist.o 14*4882a593Smuzhiyunperf-y += evsel.o 15*4882a593Smuzhiyunperf-y += evsel_fprintf.o 16*4882a593Smuzhiyunperf-y += perf_event_attr_fprintf.o 17*4882a593Smuzhiyunperf-y += evswitch.o 18*4882a593Smuzhiyunperf-y += find_bit.o 19*4882a593Smuzhiyunperf-y += get_current_dir_name.o 20*4882a593Smuzhiyunperf-y += kallsyms.o 21*4882a593Smuzhiyunperf-y += levenshtein.o 22*4882a593Smuzhiyunperf-y += llvm-utils.o 23*4882a593Smuzhiyunperf-y += mmap.o 24*4882a593Smuzhiyunperf-y += memswap.o 25*4882a593Smuzhiyunperf-y += parse-events.o 26*4882a593Smuzhiyunperf-y += perf_regs.o 27*4882a593Smuzhiyunperf-y += path.o 28*4882a593Smuzhiyunperf-y += print_binary.o 29*4882a593Smuzhiyunperf-y += rlimit.o 30*4882a593Smuzhiyunperf-y += argv_split.o 31*4882a593Smuzhiyunperf-y += rbtree.o 32*4882a593Smuzhiyunperf-y += libstring.o 33*4882a593Smuzhiyunperf-y += bitmap.o 34*4882a593Smuzhiyunperf-y += hweight.o 35*4882a593Smuzhiyunperf-y += smt.o 36*4882a593Smuzhiyunperf-y += strbuf.o 37*4882a593Smuzhiyunperf-y += string.o 38*4882a593Smuzhiyunperf-y += strlist.o 39*4882a593Smuzhiyunperf-y += strfilter.o 40*4882a593Smuzhiyunperf-y += top.o 41*4882a593Smuzhiyunperf-y += usage.o 42*4882a593Smuzhiyunperf-y += dso.o 43*4882a593Smuzhiyunperf-y += dsos.o 44*4882a593Smuzhiyunperf-y += symbol.o 45*4882a593Smuzhiyunperf-y += symbol_fprintf.o 46*4882a593Smuzhiyunperf-y += color.o 47*4882a593Smuzhiyunperf-y += color_config.o 48*4882a593Smuzhiyunperf-y += metricgroup.o 49*4882a593Smuzhiyunperf-y += header.o 50*4882a593Smuzhiyunperf-y += callchain.o 51*4882a593Smuzhiyunperf-y += values.o 52*4882a593Smuzhiyunperf-y += debug.o 53*4882a593Smuzhiyunperf-y += fncache.o 54*4882a593Smuzhiyunperf-y += machine.o 55*4882a593Smuzhiyunperf-y += map.o 56*4882a593Smuzhiyunperf-y += pstack.o 57*4882a593Smuzhiyunperf-y += session.o 58*4882a593Smuzhiyunperf-y += sample-raw.o 59*4882a593Smuzhiyunperf-y += s390-sample-raw.o 60*4882a593Smuzhiyunperf-$(CONFIG_TRACE) += syscalltbl.o 61*4882a593Smuzhiyunperf-y += ordered-events.o 62*4882a593Smuzhiyunperf-y += namespaces.o 63*4882a593Smuzhiyunperf-y += comm.o 64*4882a593Smuzhiyunperf-y += thread.o 65*4882a593Smuzhiyunperf-y += thread_map.o 66*4882a593Smuzhiyunperf-y += trace-event-parse.o 67*4882a593Smuzhiyunperf-y += parse-events-flex.o 68*4882a593Smuzhiyunperf-y += parse-events-bison.o 69*4882a593Smuzhiyunperf-y += pmu.o 70*4882a593Smuzhiyunperf-y += pmu-flex.o 71*4882a593Smuzhiyunperf-y += pmu-bison.o 72*4882a593Smuzhiyunperf-y += trace-event-read.o 73*4882a593Smuzhiyunperf-y += trace-event-info.o 74*4882a593Smuzhiyunperf-y += trace-event-scripting.o 75*4882a593Smuzhiyunperf-y += trace-event.o 76*4882a593Smuzhiyunperf-y += svghelper.o 77*4882a593Smuzhiyunperf-y += sort.o 78*4882a593Smuzhiyunperf-y += hist.o 79*4882a593Smuzhiyunperf-y += util.o 80*4882a593Smuzhiyunperf-y += cpumap.o 81*4882a593Smuzhiyunperf-y += affinity.o 82*4882a593Smuzhiyunperf-y += cputopo.o 83*4882a593Smuzhiyunperf-y += cgroup.o 84*4882a593Smuzhiyunperf-y += target.o 85*4882a593Smuzhiyunperf-y += rblist.o 86*4882a593Smuzhiyunperf-y += intlist.o 87*4882a593Smuzhiyunperf-y += vdso.o 88*4882a593Smuzhiyunperf-y += counts.o 89*4882a593Smuzhiyunperf-y += stat.o 90*4882a593Smuzhiyunperf-y += stat-shadow.o 91*4882a593Smuzhiyunperf-y += stat-display.o 92*4882a593Smuzhiyunperf-y += perf_api_probe.o 93*4882a593Smuzhiyunperf-y += record.o 94*4882a593Smuzhiyunperf-y += srcline.o 95*4882a593Smuzhiyunperf-y += srccode.o 96*4882a593Smuzhiyunperf-y += synthetic-events.o 97*4882a593Smuzhiyunperf-y += data.o 98*4882a593Smuzhiyunperf-y += tsc.o 99*4882a593Smuzhiyunperf-y += cloexec.o 100*4882a593Smuzhiyunperf-y += call-path.o 101*4882a593Smuzhiyunperf-y += rwsem.o 102*4882a593Smuzhiyunperf-y += thread-stack.o 103*4882a593Smuzhiyunperf-y += spark.o 104*4882a593Smuzhiyunperf-y += topdown.o 105*4882a593Smuzhiyunperf-y += stream.o 106*4882a593Smuzhiyunperf-$(CONFIG_AUXTRACE) += auxtrace.o 107*4882a593Smuzhiyunperf-$(CONFIG_AUXTRACE) += intel-pt-decoder/ 108*4882a593Smuzhiyunperf-$(CONFIG_AUXTRACE) += intel-pt.o 109*4882a593Smuzhiyunperf-$(CONFIG_AUXTRACE) += intel-bts.o 110*4882a593Smuzhiyunperf-$(CONFIG_AUXTRACE) += arm-spe.o 111*4882a593Smuzhiyunperf-$(CONFIG_AUXTRACE) += arm-spe-decoder/ 112*4882a593Smuzhiyunperf-$(CONFIG_AUXTRACE) += s390-cpumsf.o 113*4882a593Smuzhiyun 114*4882a593Smuzhiyunifdef CONFIG_LIBOPENCSD 115*4882a593Smuzhiyunperf-$(CONFIG_AUXTRACE) += cs-etm.o 116*4882a593Smuzhiyunperf-$(CONFIG_AUXTRACE) += cs-etm-decoder/ 117*4882a593Smuzhiyunendif 118*4882a593Smuzhiyun 119*4882a593Smuzhiyunperf-y += parse-branch-options.o 120*4882a593Smuzhiyunperf-y += dump-insn.o 121*4882a593Smuzhiyunperf-y += parse-regs-options.o 122*4882a593Smuzhiyunperf-y += parse-sublevel-options.o 123*4882a593Smuzhiyunperf-y += term.o 124*4882a593Smuzhiyunperf-y += help-unknown-cmd.o 125*4882a593Smuzhiyunperf-y += mem-events.o 126*4882a593Smuzhiyunperf-y += vsprintf.o 127*4882a593Smuzhiyunperf-y += units.o 128*4882a593Smuzhiyunperf-y += time-utils.o 129*4882a593Smuzhiyunperf-y += expr-flex.o 130*4882a593Smuzhiyunperf-y += expr-bison.o 131*4882a593Smuzhiyunperf-y += expr.o 132*4882a593Smuzhiyunperf-y += branch.o 133*4882a593Smuzhiyunperf-y += mem2node.o 134*4882a593Smuzhiyunperf-y += clockid.o 135*4882a593Smuzhiyun 136*4882a593Smuzhiyunperf-$(CONFIG_LIBBPF) += bpf-loader.o 137*4882a593Smuzhiyunperf-$(CONFIG_LIBBPF) += bpf_map.o 138*4882a593Smuzhiyunperf-$(CONFIG_BPF_PROLOGUE) += bpf-prologue.o 139*4882a593Smuzhiyunperf-$(CONFIG_LIBELF) += symbol-elf.o 140*4882a593Smuzhiyunperf-$(CONFIG_LIBELF) += probe-file.o 141*4882a593Smuzhiyunperf-$(CONFIG_LIBELF) += probe-event.o 142*4882a593Smuzhiyun 143*4882a593Smuzhiyunifdef CONFIG_LIBBPF_DYNAMIC 144*4882a593Smuzhiyun hashmap := 1 145*4882a593Smuzhiyunendif 146*4882a593Smuzhiyunifndef CONFIG_LIBBPF 147*4882a593Smuzhiyun hashmap := 1 148*4882a593Smuzhiyunendif 149*4882a593Smuzhiyun 150*4882a593Smuzhiyunifdef hashmap 151*4882a593Smuzhiyunperf-y += hashmap.o 152*4882a593Smuzhiyunendif 153*4882a593Smuzhiyun 154*4882a593Smuzhiyunifndef CONFIG_LIBELF 155*4882a593Smuzhiyunperf-y += symbol-minimal.o 156*4882a593Smuzhiyunendif 157*4882a593Smuzhiyun 158*4882a593Smuzhiyunifndef CONFIG_SETNS 159*4882a593Smuzhiyunperf-y += setns.o 160*4882a593Smuzhiyunendif 161*4882a593Smuzhiyun 162*4882a593Smuzhiyunperf-$(CONFIG_DWARF) += probe-finder.o 163*4882a593Smuzhiyunperf-$(CONFIG_DWARF) += dwarf-aux.o 164*4882a593Smuzhiyunperf-$(CONFIG_DWARF) += dwarf-regs.o 165*4882a593Smuzhiyun 166*4882a593Smuzhiyunperf-$(CONFIG_LIBDW_DWARF_UNWIND) += unwind-libdw.o 167*4882a593Smuzhiyunperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind-local.o 168*4882a593Smuzhiyunperf-$(CONFIG_LIBUNWIND) += unwind-libunwind.o 169*4882a593Smuzhiyunperf-$(CONFIG_LIBUNWIND_X86) += libunwind/x86_32.o 170*4882a593Smuzhiyunperf-$(CONFIG_LIBUNWIND_AARCH64) += libunwind/arm64.o 171*4882a593Smuzhiyun 172*4882a593Smuzhiyunperf-$(CONFIG_LIBBABELTRACE) += data-convert-bt.o 173*4882a593Smuzhiyun 174*4882a593Smuzhiyunperf-y += scripting-engines/ 175*4882a593Smuzhiyun 176*4882a593Smuzhiyunperf-$(CONFIG_ZLIB) += zlib.o 177*4882a593Smuzhiyunperf-$(CONFIG_LZMA) += lzma.o 178*4882a593Smuzhiyunperf-$(CONFIG_ZSTD) += zstd.o 179*4882a593Smuzhiyun 180*4882a593Smuzhiyunperf-$(CONFIG_LIBCAP) += cap.o 181*4882a593Smuzhiyun 182*4882a593Smuzhiyunperf-y += demangle-java.o 183*4882a593Smuzhiyunperf-y += demangle-rust.o 184*4882a593Smuzhiyun 185*4882a593Smuzhiyunifdef CONFIG_JITDUMP 186*4882a593Smuzhiyunperf-$(CONFIG_LIBELF) += jitdump.o 187*4882a593Smuzhiyunperf-$(CONFIG_LIBELF) += genelf.o 188*4882a593Smuzhiyunperf-$(CONFIG_DWARF) += genelf_debug.o 189*4882a593Smuzhiyunendif 190*4882a593Smuzhiyun 191*4882a593Smuzhiyunperf-y += perf-hooks.o 192*4882a593Smuzhiyun 193*4882a593Smuzhiyunperf-$(CONFIG_LIBBPF) += bpf-event.o 194*4882a593Smuzhiyun 195*4882a593Smuzhiyunperf-$(CONFIG_CXX) += c++/ 196*4882a593Smuzhiyun 197*4882a593Smuzhiyunperf-$(CONFIG_LIBPFM4) += pfm.o 198*4882a593Smuzhiyun 199*4882a593SmuzhiyunCFLAGS_config.o += -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 200*4882a593SmuzhiyunCFLAGS_llvm-utils.o += -DPERF_INCLUDE_DIR="BUILD_STR($(perf_include_dir_SQ))" 201*4882a593Smuzhiyun 202*4882a593Smuzhiyun# avoid compiler warnings in 32-bit mode 203*4882a593SmuzhiyunCFLAGS_genelf_debug.o += -Wno-packed 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun$(OUTPUT)util/parse-events-flex.c $(OUTPUT)util/parse-events-flex.h: util/parse-events.l $(OUTPUT)util/parse-events-bison.c 206*4882a593Smuzhiyun $(call rule_mkdir) 207*4882a593Smuzhiyun $(Q)$(call echo-cmd,flex)$(FLEX) -o $(OUTPUT)util/parse-events-flex.c \ 208*4882a593Smuzhiyun --header-file=$(OUTPUT)util/parse-events-flex.h $(PARSER_DEBUG_FLEX) $< 209*4882a593Smuzhiyun 210*4882a593Smuzhiyun$(OUTPUT)util/parse-events-bison.c $(OUTPUT)util/parse-events-bison.h: util/parse-events.y 211*4882a593Smuzhiyun $(call rule_mkdir) 212*4882a593Smuzhiyun $(Q)$(call echo-cmd,bison)$(BISON) -v $< -d $(PARSER_DEBUG_BISON) \ 213*4882a593Smuzhiyun -o $(OUTPUT)util/parse-events-bison.c -p parse_events_ 214*4882a593Smuzhiyun 215*4882a593Smuzhiyun$(OUTPUT)util/expr-flex.c $(OUTPUT)util/expr-flex.h: util/expr.l $(OUTPUT)util/expr-bison.c 216*4882a593Smuzhiyun $(call rule_mkdir) 217*4882a593Smuzhiyun $(Q)$(call echo-cmd,flex)$(FLEX) -o $(OUTPUT)util/expr-flex.c \ 218*4882a593Smuzhiyun --header-file=$(OUTPUT)util/expr-flex.h $(PARSER_DEBUG_FLEX) $< 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun$(OUTPUT)util/expr-bison.c $(OUTPUT)util/expr-bison.h: util/expr.y 221*4882a593Smuzhiyun $(call rule_mkdir) 222*4882a593Smuzhiyun $(Q)$(call echo-cmd,bison)$(BISON) -v $< -d $(PARSER_DEBUG_BISON) \ 223*4882a593Smuzhiyun -o $(OUTPUT)util/expr-bison.c -p expr_ 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun$(OUTPUT)util/pmu-flex.c $(OUTPUT)util/pmu-flex.h: util/pmu.l $(OUTPUT)util/pmu-bison.c 226*4882a593Smuzhiyun $(call rule_mkdir) 227*4882a593Smuzhiyun $(Q)$(call echo-cmd,flex)$(FLEX) -o $(OUTPUT)util/pmu-flex.c \ 228*4882a593Smuzhiyun --header-file=$(OUTPUT)util/pmu-flex.h $(PARSER_DEBUG_FLEX) $< 229*4882a593Smuzhiyun 230*4882a593Smuzhiyun$(OUTPUT)util/pmu-bison.c $(OUTPUT)util/pmu-bison.h: util/pmu.y 231*4882a593Smuzhiyun $(call rule_mkdir) 232*4882a593Smuzhiyun $(Q)$(call echo-cmd,bison)$(BISON) -v $< -d $(PARSER_DEBUG_BISON) \ 233*4882a593Smuzhiyun -o $(OUTPUT)util/pmu-bison.c -p perf_pmu_ 234*4882a593Smuzhiyun 235*4882a593SmuzhiyunFLEX_GE_26 := $(shell expr $(shell $(FLEX) --version | sed -e 's/flex \([0-9]\+\).\([0-9]\+\)/\1\2/g') \>\= 26) 236*4882a593Smuzhiyunifeq ($(FLEX_GE_26),1) 237*4882a593Smuzhiyun flex_flags := -Wno-switch-enum -Wno-switch-default -Wno-unused-function -Wno-redundant-decls -Wno-sign-compare -Wno-unused-parameter -Wno-missing-prototypes -Wno-missing-declarations 238*4882a593Smuzhiyun CC_HASNT_MISLEADING_INDENTATION := $(shell echo "int main(void) { return 0 }" | $(CC) -Werror -Wno-misleading-indentation -o /dev/null -xc - 2>&1 | grep -q -- -Wno-misleading-indentation ; echo $$?) 239*4882a593Smuzhiyun ifeq ($(CC_HASNT_MISLEADING_INDENTATION), 1) 240*4882a593Smuzhiyun flex_flags += -Wno-misleading-indentation 241*4882a593Smuzhiyun endif 242*4882a593Smuzhiyunelse 243*4882a593Smuzhiyun flex_flags := -w 244*4882a593Smuzhiyunendif 245*4882a593SmuzhiyunCFLAGS_parse-events-flex.o += $(flex_flags) 246*4882a593SmuzhiyunCFLAGS_pmu-flex.o += $(flex_flags) 247*4882a593SmuzhiyunCFLAGS_expr-flex.o += $(flex_flags) 248*4882a593Smuzhiyun 249*4882a593Smuzhiyunbison_flags := -DYYENABLE_NLS=0 250*4882a593SmuzhiyunBISON_GE_35 := $(shell expr $(shell $(BISON) --version | grep bison | sed -e 's/.\+ \([0-9]\+\).\([0-9]\+\)/\1\2/g') \>\= 35) 251*4882a593Smuzhiyunifeq ($(BISON_GE_35),1) 252*4882a593Smuzhiyun bison_flags += -Wno-unused-parameter -Wno-nested-externs -Wno-implicit-function-declaration -Wno-switch-enum 253*4882a593Smuzhiyunelse 254*4882a593Smuzhiyun bison_flags += -w 255*4882a593Smuzhiyunendif 256*4882a593SmuzhiyunCFLAGS_parse-events-bison.o += $(bison_flags) 257*4882a593SmuzhiyunCFLAGS_pmu-bison.o += -DYYLTYPE_IS_TRIVIAL=0 $(bison_flags) 258*4882a593SmuzhiyunCFLAGS_expr-bison.o += -DYYLTYPE_IS_TRIVIAL=0 $(bison_flags) 259*4882a593Smuzhiyun 260*4882a593Smuzhiyun$(OUTPUT)util/parse-events.o: $(OUTPUT)util/parse-events-flex.c $(OUTPUT)util/parse-events-bison.c 261*4882a593Smuzhiyun$(OUTPUT)util/pmu.o: $(OUTPUT)util/pmu-flex.c $(OUTPUT)util/pmu-bison.c 262*4882a593Smuzhiyun$(OUTPUT)util/expr.o: $(OUTPUT)util/expr-flex.c $(OUTPUT)util/expr-bison.c 263*4882a593Smuzhiyun 264*4882a593SmuzhiyunCFLAGS_bitmap.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 265*4882a593SmuzhiyunCFLAGS_find_bit.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 266*4882a593SmuzhiyunCFLAGS_rbtree.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 267*4882a593SmuzhiyunCFLAGS_libstring.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 268*4882a593SmuzhiyunCFLAGS_hweight.o += -Wno-unused-parameter -DETC_PERFCONFIG="BUILD_STR($(ETC_PERFCONFIG_SQ))" 269*4882a593SmuzhiyunCFLAGS_parse-events.o += -Wno-redundant-decls 270*4882a593SmuzhiyunCFLAGS_expr.o += -Wno-redundant-decls 271*4882a593SmuzhiyunCFLAGS_header.o += -include $(OUTPUT)PERF-VERSION-FILE 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun$(OUTPUT)util/kallsyms.o: ../lib/symbol/kallsyms.c FORCE 274*4882a593Smuzhiyun $(call rule_mkdir) 275*4882a593Smuzhiyun $(call if_changed_dep,cc_o_c) 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun$(OUTPUT)util/argv_split.o: ../lib/argv_split.c FORCE 278*4882a593Smuzhiyun $(call rule_mkdir) 279*4882a593Smuzhiyun $(call if_changed_dep,cc_o_c) 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun$(OUTPUT)util/bitmap.o: ../lib/bitmap.c FORCE 282*4882a593Smuzhiyun $(call rule_mkdir) 283*4882a593Smuzhiyun $(call if_changed_dep,cc_o_c) 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun$(OUTPUT)util/ctype.o: ../lib/ctype.c FORCE 286*4882a593Smuzhiyun $(call rule_mkdir) 287*4882a593Smuzhiyun $(call if_changed_dep,cc_o_c) 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun$(OUTPUT)util/find_bit.o: ../lib/find_bit.c FORCE 290*4882a593Smuzhiyun $(call rule_mkdir) 291*4882a593Smuzhiyun $(call if_changed_dep,cc_o_c) 292*4882a593Smuzhiyun 293*4882a593Smuzhiyun$(OUTPUT)util/rbtree.o: ../lib/rbtree.c FORCE 294*4882a593Smuzhiyun $(call rule_mkdir) 295*4882a593Smuzhiyun $(call if_changed_dep,cc_o_c) 296*4882a593Smuzhiyun 297*4882a593Smuzhiyun$(OUTPUT)util/libstring.o: ../lib/string.c FORCE 298*4882a593Smuzhiyun $(call rule_mkdir) 299*4882a593Smuzhiyun $(call if_changed_dep,cc_o_c) 300*4882a593Smuzhiyun 301*4882a593Smuzhiyun$(OUTPUT)util/hweight.o: ../lib/hweight.c FORCE 302*4882a593Smuzhiyun $(call rule_mkdir) 303*4882a593Smuzhiyun $(call if_changed_dep,cc_o_c) 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun$(OUTPUT)util/vsprintf.o: ../lib/vsprintf.c FORCE 306*4882a593Smuzhiyun $(call rule_mkdir) 307*4882a593Smuzhiyun $(call if_changed_dep,cc_o_c) 308