Makefile.config 29 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027
  1. ifeq ($(src-perf),)
  2. src-perf := $(srctree)/tools/perf
  3. endif
  4. ifeq ($(obj-perf),)
  5. obj-perf := $(OUTPUT)
  6. endif
  7. ifneq ($(obj-perf),)
  8. obj-perf := $(abspath $(obj-perf))/
  9. endif
  10. $(shell printf "" > $(OUTPUT).config-detected)
  11. detected = $(shell echo "$(1)=y" >> $(OUTPUT).config-detected)
  12. detected_var = $(shell echo "$(1)=$($(1))" >> $(OUTPUT).config-detected)
  13. CFLAGS := $(EXTRA_CFLAGS) $(EXTRA_WARNINGS)
  14. include $(srctree)/tools/scripts/Makefile.arch
  15. $(call detected_var,SRCARCH)
  16. NO_PERF_REGS := 1
  17. NO_SYSCALL_TABLE := 1
  18. # Additional ARCH settings for ppc
  19. ifeq ($(SRCARCH),powerpc)
  20. NO_PERF_REGS := 0
  21. NO_SYSCALL_TABLE := 0
  22. CFLAGS += -I$(OUTPUT)arch/powerpc/include/generated
  23. LIBUNWIND_LIBS := -lunwind -lunwind-ppc64
  24. endif
  25. # Additional ARCH settings for x86
  26. ifeq ($(SRCARCH),x86)
  27. $(call detected,CONFIG_X86)
  28. ifeq (${IS_64_BIT}, 1)
  29. NO_SYSCALL_TABLE := 0
  30. CFLAGS += -DHAVE_ARCH_X86_64_SUPPORT -I$(OUTPUT)arch/x86/include/generated
  31. ARCH_INCLUDE = ../../arch/x86/lib/memcpy_64.S ../../arch/x86/lib/memset_64.S
  32. LIBUNWIND_LIBS = -lunwind-x86_64 -lunwind -llzma
  33. $(call detected,CONFIG_X86_64)
  34. else
  35. LIBUNWIND_LIBS = -lunwind -lunwind-x86
  36. endif
  37. NO_PERF_REGS := 0
  38. endif
  39. ifeq ($(SRCARCH),arm)
  40. NO_PERF_REGS := 0
  41. LIBUNWIND_LIBS = -lunwind -lunwind-arm
  42. endif
  43. ifeq ($(SRCARCH),arm64)
  44. NO_PERF_REGS := 0
  45. NO_SYSCALL_TABLE := 0
  46. CFLAGS += -I$(OUTPUT)arch/arm64/include/generated
  47. LIBUNWIND_LIBS = -lunwind -lunwind-aarch64
  48. endif
  49. ifeq ($(ARCH),s390)
  50. NO_PERF_REGS := 0
  51. NO_SYSCALL_TABLE := 0
  52. CFLAGS += -fPIC -I$(OUTPUT)arch/s390/include/generated
  53. endif
  54. ifeq ($(NO_PERF_REGS),0)
  55. $(call detected,CONFIG_PERF_REGS)
  56. endif
  57. ifneq ($(NO_SYSCALL_TABLE),1)
  58. CFLAGS += -DHAVE_SYSCALL_TABLE_SUPPORT
  59. endif
  60. # So far there's only x86 and arm libdw unwind support merged in perf.
  61. # Disable it on all other architectures in case libdw unwind
  62. # support is detected in system. Add supported architectures
  63. # to the check.
  64. ifneq ($(SRCARCH),$(filter $(SRCARCH),x86 arm arm64 powerpc s390))
  65. NO_LIBDW_DWARF_UNWIND := 1
  66. endif
  67. ifeq ($(LIBUNWIND_LIBS),)
  68. NO_LIBUNWIND := 1
  69. endif
  70. #
  71. # For linking with debug library, run like:
  72. #
  73. # make DEBUG=1 LIBUNWIND_DIR=/opt/libunwind/
  74. #
  75. libunwind_arch_set_flags = $(eval $(libunwind_arch_set_flags_code))
  76. define libunwind_arch_set_flags_code
  77. FEATURE_CHECK_CFLAGS-libunwind-$(1) = -I$(LIBUNWIND_DIR)/include
  78. FEATURE_CHECK_LDFLAGS-libunwind-$(1) = -L$(LIBUNWIND_DIR)/lib
  79. endef
  80. ifdef LIBUNWIND_DIR
  81. LIBUNWIND_CFLAGS = -I$(LIBUNWIND_DIR)/include
  82. LIBUNWIND_LDFLAGS = -L$(LIBUNWIND_DIR)/lib
  83. LIBUNWIND_ARCHS = x86 x86_64 arm aarch64 debug-frame-arm debug-frame-aarch64
  84. $(foreach libunwind_arch,$(LIBUNWIND_ARCHS),$(call libunwind_arch_set_flags,$(libunwind_arch)))
  85. endif
  86. # Set per-feature check compilation flags
  87. FEATURE_CHECK_CFLAGS-libunwind = $(LIBUNWIND_CFLAGS)
  88. FEATURE_CHECK_LDFLAGS-libunwind = $(LIBUNWIND_LDFLAGS) $(LIBUNWIND_LIBS)
  89. FEATURE_CHECK_CFLAGS-libunwind-debug-frame = $(LIBUNWIND_CFLAGS)
  90. FEATURE_CHECK_LDFLAGS-libunwind-debug-frame = $(LIBUNWIND_LDFLAGS) $(LIBUNWIND_LIBS)
  91. ifdef CSINCLUDES
  92. LIBOPENCSD_CFLAGS := -I$(CSINCLUDES)
  93. endif
  94. OPENCSDLIBS := -lopencsd_c_api -lopencsd
  95. ifdef CSLIBS
  96. LIBOPENCSD_LDFLAGS := -L$(CSLIBS)
  97. endif
  98. FEATURE_CHECK_CFLAGS-libopencsd := $(LIBOPENCSD_CFLAGS)
  99. FEATURE_CHECK_LDFLAGS-libopencsd := $(LIBOPENCSD_LDFLAGS) $(OPENCSDLIBS)
  100. ifeq ($(NO_PERF_REGS),0)
  101. CFLAGS += -DHAVE_PERF_REGS_SUPPORT
  102. endif
  103. # for linking with debug library, run like:
  104. # make DEBUG=1 LIBDW_DIR=/opt/libdw/
  105. ifdef LIBDW_DIR
  106. LIBDW_CFLAGS := -I$(LIBDW_DIR)/include
  107. LIBDW_LDFLAGS := -L$(LIBDW_DIR)/lib
  108. endif
  109. DWARFLIBS := -ldw
  110. ifeq ($(findstring -static,${LDFLAGS}),-static)
  111. DWARFLIBS += -lelf -lebl -ldl -lz -llzma -lbz2
  112. endif
  113. FEATURE_CHECK_CFLAGS-libdw-dwarf-unwind := $(LIBDW_CFLAGS)
  114. FEATURE_CHECK_LDFLAGS-libdw-dwarf-unwind := $(LIBDW_LDFLAGS) $(DWARFLIBS)
  115. # for linking with debug library, run like:
  116. # make DEBUG=1 LIBBABELTRACE_DIR=/opt/libbabeltrace/
  117. ifdef LIBBABELTRACE_DIR
  118. LIBBABELTRACE_CFLAGS := -I$(LIBBABELTRACE_DIR)/include
  119. LIBBABELTRACE_LDFLAGS := -L$(LIBBABELTRACE_DIR)/lib
  120. endif
  121. FEATURE_CHECK_CFLAGS-libbabeltrace := $(LIBBABELTRACE_CFLAGS)
  122. FEATURE_CHECK_LDFLAGS-libbabeltrace := $(LIBBABELTRACE_LDFLAGS) -lbabeltrace-ctf
  123. FEATURE_CHECK_CFLAGS-bpf = -I. -I$(srctree)/tools/include -I$(srctree)/tools/arch/$(SRCARCH)/include/uapi -I$(srctree)/tools/include/uapi
  124. # include ARCH specific config
  125. -include $(src-perf)/arch/$(SRCARCH)/Makefile
  126. ifdef PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
  127. CFLAGS += -DHAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
  128. endif
  129. include $(srctree)/tools/scripts/utilities.mak
  130. ifeq ($(call get-executable,$(FLEX)),)
  131. dummy := $(error Error: $(FLEX) is missing on this system, please install it)
  132. endif
  133. ifeq ($(call get-executable,$(BISON)),)
  134. dummy := $(error Error: $(BISON) is missing on this system, please install it)
  135. endif
  136. # Treat warnings as errors unless directed not to
  137. ifneq ($(WERROR),0)
  138. CFLAGS += -Werror
  139. CXXFLAGS += -Werror
  140. endif
  141. ifndef DEBUG
  142. DEBUG := 0
  143. endif
  144. ifeq ($(DEBUG),0)
  145. ifeq ($(CC_NO_CLANG), 0)
  146. CFLAGS += -O3
  147. else
  148. CFLAGS += -O6
  149. endif
  150. endif
  151. ifdef PARSER_DEBUG
  152. PARSER_DEBUG_BISON := -t
  153. PARSER_DEBUG_FLEX := -d
  154. CFLAGS += -DPARSER_DEBUG
  155. $(call detected_var,PARSER_DEBUG_BISON)
  156. $(call detected_var,PARSER_DEBUG_FLEX)
  157. endif
  158. # Try different combinations to accommodate systems that only have
  159. # python[2][-config] in weird combinations but always preferring
  160. # python2 and python2-config as per pep-0394. If we catch a
  161. # python[-config] in version 3, the version check will kill it.
  162. PYTHON2 := $(if $(call get-executable,python2),python2,python)
  163. override PYTHON := $(call get-executable-or-default,PYTHON,$(PYTHON2))
  164. PYTHON2_CONFIG := \
  165. $(if $(call get-executable,$(PYTHON)-config),$(PYTHON)-config,python-config)
  166. override PYTHON_CONFIG := \
  167. $(call get-executable-or-default,PYTHON_CONFIG,$(PYTHON2_CONFIG))
  168. grep-libs = $(filter -l%,$(1))
  169. strip-libs = $(filter-out -l%,$(1))
  170. PYTHON_CONFIG_SQ := $(call shell-sq,$(PYTHON_CONFIG))
  171. ifdef PYTHON_CONFIG
  172. PYTHON_EMBED_LDOPTS := $(shell $(PYTHON_CONFIG_SQ) --ldflags 2>/dev/null)
  173. PYTHON_EMBED_LDFLAGS := $(call strip-libs,$(PYTHON_EMBED_LDOPTS))
  174. PYTHON_EMBED_LIBADD := $(call grep-libs,$(PYTHON_EMBED_LDOPTS)) -lutil
  175. PYTHON_EMBED_CCOPTS := $(shell $(PYTHON_CONFIG_SQ) --includes 2>/dev/null)
  176. FLAGS_PYTHON_EMBED := $(PYTHON_EMBED_CCOPTS) $(PYTHON_EMBED_LDOPTS)
  177. endif
  178. FEATURE_CHECK_CFLAGS-libpython := $(PYTHON_EMBED_CCOPTS)
  179. FEATURE_CHECK_LDFLAGS-libpython := $(PYTHON_EMBED_LDOPTS)
  180. FEATURE_CHECK_CFLAGS-libpython-version := $(PYTHON_EMBED_CCOPTS)
  181. FEATURE_CHECK_LDFLAGS-libpython-version := $(PYTHON_EMBED_LDOPTS)
  182. CFLAGS += -fno-omit-frame-pointer
  183. CFLAGS += -ggdb3
  184. CFLAGS += -funwind-tables
  185. CFLAGS += -Wall
  186. CFLAGS += -Wextra
  187. CFLAGS += -std=gnu99
  188. CXXFLAGS += -std=gnu++11 -fno-exceptions -fno-rtti
  189. CXXFLAGS += -Wall
  190. CXXFLAGS += -fno-omit-frame-pointer
  191. CXXFLAGS += -ggdb3
  192. CXXFLAGS += -funwind-tables
  193. CXXFLAGS += -Wno-strict-aliasing
  194. # Enforce a non-executable stack, as we may regress (again) in the future by
  195. # adding assembler files missing the .GNU-stack linker note.
  196. LDFLAGS += -Wl,-z,noexecstack
  197. EXTLIBS = -lpthread -lrt -lm -ldl
  198. ifeq ($(FEATURES_DUMP),)
  199. include $(srctree)/tools/build/Makefile.feature
  200. else
  201. include $(FEATURES_DUMP)
  202. endif
  203. ifeq ($(feature-stackprotector-all), 1)
  204. CFLAGS += -fstack-protector-all
  205. endif
  206. ifeq ($(DEBUG),0)
  207. ifeq ($(feature-fortify-source), 1)
  208. CFLAGS += -D_FORTIFY_SOURCE=2
  209. endif
  210. endif
  211. INC_FLAGS += -I$(src-perf)/util/include
  212. INC_FLAGS += -I$(src-perf)/arch/$(SRCARCH)/include
  213. INC_FLAGS += -I$(srctree)/tools/include/uapi
  214. INC_FLAGS += -I$(srctree)/tools/include/
  215. INC_FLAGS += -I$(srctree)/tools/arch/$(SRCARCH)/include/uapi
  216. INC_FLAGS += -I$(srctree)/tools/arch/$(SRCARCH)/include/
  217. INC_FLAGS += -I$(srctree)/tools/arch/$(SRCARCH)/
  218. # $(obj-perf) for generated common-cmds.h
  219. # $(obj-perf)/util for generated bison/flex headers
  220. ifneq ($(OUTPUT),)
  221. INC_FLAGS += -I$(obj-perf)/util
  222. INC_FLAGS += -I$(obj-perf)
  223. endif
  224. INC_FLAGS += -I$(src-perf)/util
  225. INC_FLAGS += -I$(src-perf)
  226. INC_FLAGS += -I$(srctree)/tools/lib/
  227. CFLAGS += $(INC_FLAGS)
  228. CXXFLAGS += $(INC_FLAGS)
  229. CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
  230. ifeq ($(feature-sync-compare-and-swap), 1)
  231. CFLAGS += -DHAVE_SYNC_COMPARE_AND_SWAP_SUPPORT
  232. endif
  233. ifeq ($(feature-pthread-attr-setaffinity-np), 1)
  234. CFLAGS += -DHAVE_PTHREAD_ATTR_SETAFFINITY_NP
  235. endif
  236. ifeq ($(feature-pthread-barrier), 1)
  237. CFLAGS += -DHAVE_PTHREAD_BARRIER
  238. endif
  239. ifndef NO_BIONIC
  240. $(call feature_check,bionic)
  241. ifeq ($(feature-bionic), 1)
  242. BIONIC := 1
  243. CFLAGS += -DLACKS_SIGQUEUE_PROTOTYPE
  244. CFLAGS += -DLACKS_OPEN_MEMSTREAM_PROTOTYPE
  245. EXTLIBS := $(filter-out -lrt,$(EXTLIBS))
  246. EXTLIBS := $(filter-out -lpthread,$(EXTLIBS))
  247. endif
  248. endif
  249. ifdef NO_LIBELF
  250. NO_DWARF := 1
  251. NO_DEMANGLE := 1
  252. NO_LIBUNWIND := 1
  253. NO_LIBDW_DWARF_UNWIND := 1
  254. NO_LIBBPF := 1
  255. NO_JVMTI := 1
  256. else
  257. ifeq ($(feature-libelf), 0)
  258. ifeq ($(feature-glibc), 1)
  259. LIBC_SUPPORT := 1
  260. endif
  261. ifeq ($(BIONIC),1)
  262. LIBC_SUPPORT := 1
  263. endif
  264. ifeq ($(LIBC_SUPPORT),1)
  265. msg := $(warning No libelf found. Disables 'probe' tool, jvmti and BPF support in 'perf record'. Please install libelf-dev, libelf-devel or elfutils-libelf-devel);
  266. NO_LIBELF := 1
  267. NO_DWARF := 1
  268. NO_DEMANGLE := 1
  269. NO_LIBUNWIND := 1
  270. NO_LIBDW_DWARF_UNWIND := 1
  271. NO_LIBBPF := 1
  272. NO_JVMTI := 1
  273. else
  274. ifneq ($(filter s% -static%,$(LDFLAGS),),)
  275. msg := $(error No static glibc found, please install glibc-static);
  276. else
  277. msg := $(error No gnu/libc-version.h found, please install glibc-dev[el]);
  278. endif
  279. endif
  280. else
  281. ifndef NO_LIBDW_DWARF_UNWIND
  282. ifneq ($(feature-libdw-dwarf-unwind),1)
  283. NO_LIBDW_DWARF_UNWIND := 1
  284. msg := $(warning No libdw DWARF unwind found, Please install elfutils-devel/libdw-dev >= 0.158 and/or set LIBDW_DIR);
  285. endif
  286. endif
  287. ifneq ($(feature-dwarf), 1)
  288. ifndef NO_DWARF
  289. msg := $(warning No libdw.h found or old libdw.h found or elfutils is older than 0.138, disables dwarf support. Please install new elfutils-devel/libdw-dev);
  290. NO_DWARF := 1
  291. endif
  292. else
  293. ifneq ($(feature-dwarf_getlocations), 1)
  294. msg := $(warning Old libdw.h, finding variables at given 'perf probe' point will not work, install elfutils-devel/libdw-dev >= 0.157);
  295. else
  296. CFLAGS += -DHAVE_DWARF_GETLOCATIONS_SUPPORT
  297. endif # dwarf_getlocations
  298. endif # Dwarf support
  299. endif # libelf support
  300. endif # NO_LIBELF
  301. ifeq ($(feature-glibc), 1)
  302. CFLAGS += -DHAVE_GLIBC_SUPPORT
  303. endif
  304. ifdef NO_DWARF
  305. NO_LIBDW_DWARF_UNWIND := 1
  306. endif
  307. ifeq ($(feature-sched_getcpu), 1)
  308. CFLAGS += -DHAVE_SCHED_GETCPU_SUPPORT
  309. endif
  310. ifeq ($(feature-setns), 1)
  311. CFLAGS += -DHAVE_SETNS_SUPPORT
  312. $(call detected,CONFIG_SETNS)
  313. endif
  314. ifndef NO_CORESIGHT
  315. ifeq ($(feature-libopencsd), 1)
  316. CFLAGS += -DHAVE_CSTRACE_SUPPORT $(LIBOPENCSD_CFLAGS)
  317. LDFLAGS += $(LIBOPENCSD_LDFLAGS)
  318. EXTLIBS += $(OPENCSDLIBS)
  319. $(call detected,CONFIG_LIBOPENCSD)
  320. ifdef CSTRACE_RAW
  321. CFLAGS += -DCS_DEBUG_RAW
  322. ifeq (${CSTRACE_RAW}, packed)
  323. CFLAGS += -DCS_RAW_PACKED
  324. endif
  325. endif
  326. endif
  327. endif
  328. ifndef NO_LIBELF
  329. CFLAGS += -DHAVE_LIBELF_SUPPORT
  330. EXTLIBS += -lelf
  331. $(call detected,CONFIG_LIBELF)
  332. ifeq ($(feature-libelf-mmap), 1)
  333. CFLAGS += -DHAVE_LIBELF_MMAP_SUPPORT
  334. endif
  335. ifeq ($(feature-libelf-getphdrnum), 1)
  336. CFLAGS += -DHAVE_ELF_GETPHDRNUM_SUPPORT
  337. endif
  338. ifeq ($(feature-libelf-gelf_getnote), 1)
  339. CFLAGS += -DHAVE_GELF_GETNOTE_SUPPORT
  340. else
  341. msg := $(warning gelf_getnote() not found on libelf, SDT support disabled);
  342. endif
  343. ifeq ($(feature-libelf-getshdrstrndx), 1)
  344. CFLAGS += -DHAVE_ELF_GETSHDRSTRNDX_SUPPORT
  345. endif
  346. ifndef NO_DWARF
  347. ifeq ($(origin PERF_HAVE_DWARF_REGS), undefined)
  348. msg := $(warning DWARF register mappings have not been defined for architecture $(SRCARCH), DWARF support disabled);
  349. NO_DWARF := 1
  350. else
  351. CFLAGS += -DHAVE_DWARF_SUPPORT $(LIBDW_CFLAGS)
  352. LDFLAGS += $(LIBDW_LDFLAGS)
  353. EXTLIBS += ${DWARFLIBS}
  354. $(call detected,CONFIG_DWARF)
  355. endif # PERF_HAVE_DWARF_REGS
  356. endif # NO_DWARF
  357. ifndef NO_LIBBPF
  358. ifeq ($(feature-bpf), 1)
  359. CFLAGS += -DHAVE_LIBBPF_SUPPORT
  360. $(call detected,CONFIG_LIBBPF)
  361. endif
  362. ifndef NO_DWARF
  363. ifdef PERF_HAVE_ARCH_REGS_QUERY_REGISTER_OFFSET
  364. CFLAGS += -DHAVE_BPF_PROLOGUE
  365. $(call detected,CONFIG_BPF_PROLOGUE)
  366. else
  367. msg := $(warning BPF prologue is not supported by architecture $(SRCARCH), missing regs_query_register_offset());
  368. endif
  369. else
  370. msg := $(warning DWARF support is off, BPF prologue is disabled);
  371. endif
  372. endif # NO_LIBBPF
  373. endif # NO_LIBELF
  374. ifndef NO_SDT
  375. ifneq ($(feature-sdt), 1)
  376. msg := $(warning No sys/sdt.h found, no SDT events are defined, please install systemtap-sdt-devel or systemtap-sdt-dev);
  377. NO_SDT := 1;
  378. else
  379. CFLAGS += -DHAVE_SDT_EVENT
  380. $(call detected,CONFIG_SDT_EVENT)
  381. endif
  382. endif
  383. ifdef PERF_HAVE_JITDUMP
  384. ifndef NO_LIBELF
  385. $(call detected,CONFIG_JITDUMP)
  386. CFLAGS += -DHAVE_JITDUMP
  387. endif
  388. endif
  389. ifeq ($(SRCARCH),powerpc)
  390. ifndef NO_DWARF
  391. CFLAGS += -DHAVE_SKIP_CALLCHAIN_IDX
  392. endif
  393. endif
  394. ifndef NO_LIBUNWIND
  395. have_libunwind :=
  396. ifeq ($(feature-libunwind-x86), 1)
  397. $(call detected,CONFIG_LIBUNWIND_X86)
  398. CFLAGS += -DHAVE_LIBUNWIND_X86_SUPPORT
  399. LDFLAGS += -lunwind-x86
  400. EXTLIBS_LIBUNWIND += -lunwind-x86
  401. have_libunwind = 1
  402. endif
  403. ifeq ($(feature-libunwind-aarch64), 1)
  404. $(call detected,CONFIG_LIBUNWIND_AARCH64)
  405. CFLAGS += -DHAVE_LIBUNWIND_AARCH64_SUPPORT
  406. LDFLAGS += -lunwind-aarch64
  407. EXTLIBS_LIBUNWIND += -lunwind-aarch64
  408. have_libunwind = 1
  409. $(call feature_check,libunwind-debug-frame-aarch64)
  410. ifneq ($(feature-libunwind-debug-frame-aarch64), 1)
  411. msg := $(warning No debug_frame support found in libunwind-aarch64);
  412. CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME_AARCH64
  413. endif
  414. endif
  415. ifneq ($(feature-libunwind), 1)
  416. msg := $(warning No libunwind found. Please install libunwind-dev[el] >= 1.1 and/or set LIBUNWIND_DIR);
  417. NO_LOCAL_LIBUNWIND := 1
  418. else
  419. have_libunwind := 1
  420. $(call detected,CONFIG_LOCAL_LIBUNWIND)
  421. endif
  422. ifneq ($(have_libunwind), 1)
  423. NO_LIBUNWIND := 1
  424. endif
  425. else
  426. NO_LOCAL_LIBUNWIND := 1
  427. endif
  428. ifndef NO_LIBBPF
  429. ifneq ($(feature-bpf), 1)
  430. msg := $(warning BPF API too old. Please install recent kernel headers. BPF support in 'perf record' is disabled.)
  431. NO_LIBBPF := 1
  432. endif
  433. endif
  434. dwarf-post-unwind := 1
  435. dwarf-post-unwind-text := BUG
  436. # setup DWARF post unwinder
  437. ifdef NO_LIBUNWIND
  438. ifdef NO_LIBDW_DWARF_UNWIND
  439. msg := $(warning Disabling post unwind, no support found.);
  440. dwarf-post-unwind := 0
  441. else
  442. dwarf-post-unwind-text := libdw
  443. $(call detected,CONFIG_LIBDW_DWARF_UNWIND)
  444. endif
  445. else
  446. dwarf-post-unwind-text := libunwind
  447. $(call detected,CONFIG_LIBUNWIND)
  448. # Enable libunwind support by default.
  449. ifndef NO_LIBDW_DWARF_UNWIND
  450. NO_LIBDW_DWARF_UNWIND := 1
  451. endif
  452. endif
  453. ifeq ($(dwarf-post-unwind),1)
  454. CFLAGS += -DHAVE_DWARF_UNWIND_SUPPORT
  455. $(call detected,CONFIG_DWARF_UNWIND)
  456. else
  457. NO_DWARF_UNWIND := 1
  458. endif
  459. ifndef NO_LOCAL_LIBUNWIND
  460. ifeq ($(SRCARCH),$(filter $(SRCARCH),arm arm64))
  461. $(call feature_check,libunwind-debug-frame)
  462. ifneq ($(feature-libunwind-debug-frame), 1)
  463. msg := $(warning No debug_frame support found in libunwind);
  464. CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
  465. endif
  466. else
  467. # non-ARM has no dwarf_find_debug_frame() function:
  468. CFLAGS += -DNO_LIBUNWIND_DEBUG_FRAME
  469. endif
  470. EXTLIBS += $(LIBUNWIND_LIBS)
  471. LDFLAGS += $(LIBUNWIND_LIBS)
  472. endif
  473. ifeq ($(findstring -static,${LDFLAGS}),-static)
  474. # gcc -static links libgcc_eh which contans piece of libunwind
  475. LIBUNWIND_LDFLAGS += -Wl,--allow-multiple-definition
  476. endif
  477. ifndef NO_LIBUNWIND
  478. CFLAGS += -DHAVE_LIBUNWIND_SUPPORT
  479. CFLAGS += $(LIBUNWIND_CFLAGS)
  480. LDFLAGS += $(LIBUNWIND_LDFLAGS)
  481. EXTLIBS += $(EXTLIBS_LIBUNWIND)
  482. endif
  483. ifeq ($(NO_SYSCALL_TABLE),0)
  484. $(call detected,CONFIG_TRACE)
  485. else
  486. ifndef NO_LIBAUDIT
  487. ifneq ($(feature-libaudit), 1)
  488. msg := $(warning No libaudit.h found, disables 'trace' tool, please install audit-libs-devel or libaudit-dev);
  489. NO_LIBAUDIT := 1
  490. else
  491. CFLAGS += -DHAVE_LIBAUDIT_SUPPORT
  492. EXTLIBS += -laudit
  493. $(call detected,CONFIG_TRACE)
  494. endif
  495. endif
  496. endif
  497. ifndef NO_LIBCRYPTO
  498. ifneq ($(feature-libcrypto), 1)
  499. msg := $(warning No libcrypto.h found, disables jitted code injection, please install libssl-devel or libssl-dev);
  500. NO_LIBCRYPTO := 1
  501. else
  502. CFLAGS += -DHAVE_LIBCRYPTO_SUPPORT
  503. EXTLIBS += -lcrypto
  504. $(call detected,CONFIG_CRYPTO)
  505. endif
  506. endif
  507. ifdef NO_NEWT
  508. NO_SLANG=1
  509. endif
  510. ifndef NO_SLANG
  511. ifneq ($(feature-libslang), 1)
  512. msg := $(warning slang not found, disables TUI support. Please install slang-devel, libslang-dev or libslang2-dev);
  513. NO_SLANG := 1
  514. else
  515. # Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h
  516. CFLAGS += -I/usr/include/slang
  517. CFLAGS += -DHAVE_SLANG_SUPPORT
  518. EXTLIBS += -lslang
  519. $(call detected,CONFIG_SLANG)
  520. endif
  521. endif
  522. ifndef NO_GTK2
  523. FLAGS_GTK2=$(CFLAGS) $(LDFLAGS) $(EXTLIBS) $(shell $(PKG_CONFIG) --libs --cflags gtk+-2.0 2>/dev/null)
  524. ifneq ($(feature-gtk2), 1)
  525. msg := $(warning GTK2 not found, disables GTK2 support. Please install gtk2-devel or libgtk2.0-dev);
  526. NO_GTK2 := 1
  527. else
  528. ifeq ($(feature-gtk2-infobar), 1)
  529. GTK_CFLAGS := -DHAVE_GTK_INFO_BAR_SUPPORT
  530. endif
  531. CFLAGS += -DHAVE_GTK2_SUPPORT
  532. GTK_CFLAGS += $(shell $(PKG_CONFIG) --cflags gtk+-2.0 2>/dev/null)
  533. GTK_LIBS := $(shell $(PKG_CONFIG) --libs gtk+-2.0 2>/dev/null)
  534. EXTLIBS += -ldl
  535. endif
  536. endif
  537. ifdef NO_LIBPERL
  538. CFLAGS += -DNO_LIBPERL
  539. else
  540. PERL_EMBED_LDOPTS = $(shell perl -MExtUtils::Embed -e ldopts 2>/dev/null)
  541. PERL_EMBED_LDFLAGS = $(call strip-libs,$(PERL_EMBED_LDOPTS))
  542. PERL_EMBED_LIBADD = $(call grep-libs,$(PERL_EMBED_LDOPTS))
  543. PERL_EMBED_CCOPTS = $(shell perl -MExtUtils::Embed -e ccopts 2>/dev/null)
  544. PERL_EMBED_CCOPTS := $(filter-out -specs=%,$(PERL_EMBED_CCOPTS))
  545. PERL_EMBED_LDOPTS := $(filter-out -specs=%,$(PERL_EMBED_LDOPTS))
  546. FLAGS_PERL_EMBED=$(PERL_EMBED_CCOPTS) $(PERL_EMBED_LDOPTS)
  547. ifneq ($(feature-libperl), 1)
  548. CFLAGS += -DNO_LIBPERL
  549. NO_LIBPERL := 1
  550. msg := $(warning Missing perl devel files. Disabling perl scripting support, please install perl-ExtUtils-Embed/libperl-dev);
  551. else
  552. LDFLAGS += $(PERL_EMBED_LDFLAGS)
  553. EXTLIBS += $(PERL_EMBED_LIBADD)
  554. CFLAGS += -DHAVE_LIBPERL_SUPPORT
  555. $(call detected,CONFIG_LIBPERL)
  556. endif
  557. endif
  558. ifeq ($(feature-timerfd), 1)
  559. CFLAGS += -DHAVE_TIMERFD_SUPPORT
  560. else
  561. msg := $(warning No timerfd support. Disables 'perf kvm stat live');
  562. endif
  563. disable-python = $(eval $(disable-python_code))
  564. define disable-python_code
  565. CFLAGS += -DNO_LIBPYTHON
  566. $(warning $1)
  567. NO_LIBPYTHON := 1
  568. endef
  569. ifdef NO_LIBPYTHON
  570. $(call disable-python,Python support disabled by user)
  571. else
  572. ifndef PYTHON
  573. $(call disable-python,No python interpreter was found: disables Python support - please install python-devel/python-dev)
  574. else
  575. PYTHON_WORD := $(call shell-wordify,$(PYTHON))
  576. ifndef PYTHON_CONFIG
  577. $(call disable-python,No 'python-config' tool was found: disables Python support - please install python-devel/python-dev)
  578. else
  579. ifneq ($(feature-libpython), 1)
  580. $(call disable-python,No 'Python.h' (for Python 2.x support) was found: disables Python support - please install python-devel/python-dev)
  581. else
  582. LDFLAGS += $(PYTHON_EMBED_LDFLAGS)
  583. EXTLIBS += $(PYTHON_EMBED_LIBADD)
  584. LANG_BINDINGS += $(obj-perf)python/perf.so
  585. CFLAGS += -DHAVE_LIBPYTHON_SUPPORT
  586. $(call detected,CONFIG_LIBPYTHON)
  587. endif
  588. endif
  589. endif
  590. endif
  591. ifeq ($(feature-libbfd), 1)
  592. EXTLIBS += -lbfd
  593. else
  594. # we are on a system that requires -liberty and (maybe) -lz
  595. # to link against -lbfd; test each case individually here
  596. # call all detections now so we get correct
  597. # status in VF output
  598. $(call feature_check,libbfd-liberty)
  599. $(call feature_check,libbfd-liberty-z)
  600. ifeq ($(feature-libbfd-liberty), 1)
  601. EXTLIBS += -lbfd -liberty
  602. else
  603. ifeq ($(feature-libbfd-liberty-z), 1)
  604. EXTLIBS += -lbfd -liberty -lz
  605. endif
  606. endif
  607. endif
  608. ifdef NO_DEMANGLE
  609. CFLAGS += -DNO_DEMANGLE
  610. else
  611. ifdef HAVE_CPLUS_DEMANGLE_SUPPORT
  612. EXTLIBS += -liberty
  613. else
  614. ifeq ($(filter -liberty,$(EXTLIBS)),)
  615. $(call feature_check,cplus-demangle)
  616. # we dont have neither HAVE_CPLUS_DEMANGLE_SUPPORT
  617. # or any of 'bfd iberty z' trinity
  618. ifeq ($(feature-cplus-demangle), 1)
  619. EXTLIBS += -liberty
  620. else
  621. msg := $(warning No bfd.h/libbfd found, please install binutils-dev[el]/zlib-static/libiberty-dev to gain symbol demangling)
  622. CFLAGS += -DNO_DEMANGLE
  623. endif
  624. endif
  625. endif
  626. ifneq ($(filter -liberty,$(EXTLIBS)),)
  627. CFLAGS += -DHAVE_CPLUS_DEMANGLE_SUPPORT
  628. endif
  629. endif
  630. ifneq ($(filter -lbfd,$(EXTLIBS)),)
  631. CFLAGS += -DHAVE_LIBBFD_SUPPORT
  632. endif
  633. ifndef NO_ZLIB
  634. ifeq ($(feature-zlib), 1)
  635. CFLAGS += -DHAVE_ZLIB_SUPPORT
  636. EXTLIBS += -lz
  637. $(call detected,CONFIG_ZLIB)
  638. else
  639. NO_ZLIB := 1
  640. endif
  641. endif
  642. ifndef NO_LZMA
  643. ifeq ($(feature-lzma), 1)
  644. CFLAGS += -DHAVE_LZMA_SUPPORT
  645. EXTLIBS += -llzma
  646. $(call detected,CONFIG_LZMA)
  647. else
  648. msg := $(warning No liblzma found, disables xz kernel module decompression, please install xz-devel/liblzma-dev);
  649. NO_LZMA := 1
  650. endif
  651. endif
  652. ifndef NO_BACKTRACE
  653. ifeq ($(feature-backtrace), 1)
  654. CFLAGS += -DHAVE_BACKTRACE_SUPPORT
  655. endif
  656. endif
  657. ifndef NO_LIBNUMA
  658. ifeq ($(feature-libnuma), 0)
  659. msg := $(warning No numa.h found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev);
  660. NO_LIBNUMA := 1
  661. else
  662. ifeq ($(feature-numa_num_possible_cpus), 0)
  663. msg := $(warning Old numa library found, disables 'perf bench numa mem' benchmark, please install numactl-devel/libnuma-devel/libnuma-dev >= 2.0.8);
  664. NO_LIBNUMA := 1
  665. else
  666. CFLAGS += -DHAVE_LIBNUMA_SUPPORT
  667. EXTLIBS += -lnuma
  668. $(call detected,CONFIG_NUMA)
  669. endif
  670. endif
  671. endif
  672. ifdef HAVE_KVM_STAT_SUPPORT
  673. CFLAGS += -DHAVE_KVM_STAT_SUPPORT
  674. endif
  675. ifeq (${IS_64_BIT}, 1)
  676. ifndef NO_PERF_READ_VDSO32
  677. $(call feature_check,compile-32)
  678. ifeq ($(feature-compile-32), 1)
  679. CFLAGS += -DHAVE_PERF_READ_VDSO32
  680. else
  681. NO_PERF_READ_VDSO32 := 1
  682. endif
  683. endif
  684. ifneq ($(SRCARCH), x86)
  685. NO_PERF_READ_VDSOX32 := 1
  686. endif
  687. ifndef NO_PERF_READ_VDSOX32
  688. $(call feature_check,compile-x32)
  689. ifeq ($(feature-compile-x32), 1)
  690. CFLAGS += -DHAVE_PERF_READ_VDSOX32
  691. else
  692. NO_PERF_READ_VDSOX32 := 1
  693. endif
  694. endif
  695. else
  696. NO_PERF_READ_VDSO32 := 1
  697. NO_PERF_READ_VDSOX32 := 1
  698. endif
  699. ifndef NO_LIBBABELTRACE
  700. $(call feature_check,libbabeltrace)
  701. ifeq ($(feature-libbabeltrace), 1)
  702. CFLAGS += -DHAVE_LIBBABELTRACE_SUPPORT $(LIBBABELTRACE_CFLAGS)
  703. LDFLAGS += $(LIBBABELTRACE_LDFLAGS)
  704. EXTLIBS += -lbabeltrace-ctf
  705. $(call detected,CONFIG_LIBBABELTRACE)
  706. else
  707. msg := $(warning No libbabeltrace found, disables 'perf data' CTF format support, please install libbabeltrace-dev[el]/libbabeltrace-ctf-dev);
  708. endif
  709. endif
  710. ifndef NO_AUXTRACE
  711. ifeq ($(SRCARCH),x86)
  712. ifeq ($(feature-get_cpuid), 0)
  713. msg := $(warning Your gcc lacks the __get_cpuid() builtin, disables support for auxtrace/Intel PT, please install a newer gcc);
  714. NO_AUXTRACE := 1
  715. endif
  716. endif
  717. ifndef NO_AUXTRACE
  718. $(call detected,CONFIG_AUXTRACE)
  719. CFLAGS += -DHAVE_AUXTRACE_SUPPORT
  720. endif
  721. endif
  722. ifndef NO_JVMTI
  723. ifneq (,$(wildcard /usr/sbin/update-java-alternatives))
  724. JDIR=$(shell /usr/sbin/update-java-alternatives -l | head -1 | awk '{print $$3}')
  725. else
  726. ifneq (,$(wildcard /usr/sbin/alternatives))
  727. JDIR=$(shell /usr/sbin/alternatives --display java | tail -1 | cut -d' ' -f 5 | sed -e 's%/jre/bin/java.%%g' -e 's%/bin/java.%%g')
  728. endif
  729. endif
  730. ifndef JDIR
  731. $(warning No alternatives command found, you need to set JDIR= to point to the root of your Java directory)
  732. NO_JVMTI := 1
  733. endif
  734. endif
  735. ifndef NO_JVMTI
  736. FEATURE_CHECK_CFLAGS-jvmti := -I$(JDIR)/include -I$(JDIR)/include/linux
  737. $(call feature_check,jvmti)
  738. ifeq ($(feature-jvmti), 1)
  739. $(call detected_var,JDIR)
  740. else
  741. $(warning No openjdk development package found, please install JDK package, e.g. openjdk-8-jdk, java-1.8.0-openjdk-devel)
  742. NO_JVMTI := 1
  743. endif
  744. endif
  745. USE_CXX = 0
  746. USE_CLANGLLVM = 0
  747. ifdef LIBCLANGLLVM
  748. $(call feature_check,cxx)
  749. ifneq ($(feature-cxx), 1)
  750. msg := $(warning No g++ found, disable clang and llvm support. Please install g++)
  751. else
  752. $(call feature_check,llvm)
  753. $(call feature_check,llvm-version)
  754. ifneq ($(feature-llvm), 1)
  755. msg := $(warning No suitable libLLVM found, disabling builtin clang and LLVM support. Please install llvm-dev(el) (>= 3.9.0))
  756. else
  757. $(call feature_check,clang)
  758. ifneq ($(feature-clang), 1)
  759. msg := $(warning No suitable libclang found, disabling builtin clang and LLVM support. Please install libclang-dev(el) (>= 3.9.0))
  760. else
  761. CFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT
  762. CXXFLAGS += -DHAVE_LIBCLANGLLVM_SUPPORT -I$(shell $(LLVM_CONFIG) --includedir)
  763. $(call detected,CONFIG_CXX)
  764. $(call detected,CONFIG_CLANGLLVM)
  765. USE_CXX = 1
  766. USE_LLVM = 1
  767. USE_CLANG = 1
  768. ifneq ($(feature-llvm-version),1)
  769. msg := $(warning This version of LLVM is not tested. May cause build errors)
  770. endif
  771. endif
  772. endif
  773. endif
  774. endif
  775. # Among the variables below, these:
  776. # perfexecdir
  777. # perf_include_dir
  778. # perf_examples_dir
  779. # template_dir
  780. # mandir
  781. # infodir
  782. # htmldir
  783. # ETC_PERFCONFIG (but not sysconfdir)
  784. # can be specified as a relative path some/where/else;
  785. # this is interpreted as relative to $(prefix) and "perf" at
  786. # runtime figures out where they are based on the path to the executable.
  787. # This can help installing the suite in a relocatable way.
  788. # Make the path relative to DESTDIR, not to prefix
  789. ifndef DESTDIR
  790. prefix ?= $(HOME)
  791. endif
  792. bindir_relative = bin
  793. bindir = $(abspath $(prefix)/$(bindir_relative))
  794. mandir = share/man
  795. infodir = share/info
  796. perfexecdir = libexec/perf-core
  797. perf_include_dir = lib/perf/include
  798. perf_examples_dir = lib/perf/examples
  799. sharedir = $(prefix)/share
  800. template_dir = share/perf-core/templates
  801. STRACE_GROUPS_DIR = share/perf-core/strace/groups
  802. htmldir = share/doc/perf-doc
  803. tipdir = share/doc/perf-tip
  804. srcdir = $(srctree)/tools/perf
  805. ifeq ($(prefix),/usr)
  806. sysconfdir = /etc
  807. ETC_PERFCONFIG = $(sysconfdir)/perfconfig
  808. else
  809. sysconfdir = $(prefix)/etc
  810. ETC_PERFCONFIG = etc/perfconfig
  811. endif
  812. ifndef lib
  813. ifeq ($(SRCARCH)$(IS_64_BIT), x861)
  814. lib = lib64
  815. else
  816. lib = lib
  817. endif
  818. endif # lib
  819. libdir = $(prefix)/$(lib)
  820. # Shell quote (do not use $(call) to accommodate ancient setups);
  821. ETC_PERFCONFIG_SQ = $(subst ','\'',$(ETC_PERFCONFIG))
  822. STRACE_GROUPS_DIR_SQ = $(subst ','\'',$(STRACE_GROUPS_DIR))
  823. DESTDIR_SQ = $(subst ','\'',$(DESTDIR))
  824. bindir_SQ = $(subst ','\'',$(bindir))
  825. mandir_SQ = $(subst ','\'',$(mandir))
  826. infodir_SQ = $(subst ','\'',$(infodir))
  827. perfexecdir_SQ = $(subst ','\'',$(perfexecdir))
  828. perf_include_dir_SQ = $(subst ','\'',$(perf_include_dir))
  829. perf_examples_dir_SQ = $(subst ','\'',$(perf_examples_dir))
  830. template_dir_SQ = $(subst ','\'',$(template_dir))
  831. htmldir_SQ = $(subst ','\'',$(htmldir))
  832. tipdir_SQ = $(subst ','\'',$(tipdir))
  833. prefix_SQ = $(subst ','\'',$(prefix))
  834. sysconfdir_SQ = $(subst ','\'',$(sysconfdir))
  835. libdir_SQ = $(subst ','\'',$(libdir))
  836. srcdir_SQ = $(subst ','\'',$(srcdir))
  837. ifneq ($(filter /%,$(firstword $(perfexecdir))),)
  838. perfexec_instdir = $(perfexecdir)
  839. perf_include_instdir = $(perf_include_dir)
  840. perf_examples_instdir = $(perf_examples_dir)
  841. STRACE_GROUPS_INSTDIR = $(STRACE_GROUPS_DIR)
  842. tip_instdir = $(tipdir)
  843. else
  844. perfexec_instdir = $(prefix)/$(perfexecdir)
  845. perf_include_instdir = $(prefix)/$(perf_include_dir)
  846. perf_examples_instdir = $(prefix)/$(perf_examples_dir)
  847. STRACE_GROUPS_INSTDIR = $(prefix)/$(STRACE_GROUPS_DIR)
  848. tip_instdir = $(prefix)/$(tipdir)
  849. endif
  850. perfexec_instdir_SQ = $(subst ','\'',$(perfexec_instdir))
  851. perf_include_instdir_SQ = $(subst ','\'',$(perf_include_instdir))
  852. perf_examples_instdir_SQ = $(subst ','\'',$(perf_examples_instdir))
  853. STRACE_GROUPS_INSTDIR_SQ = $(subst ','\'',$(STRACE_GROUPS_INSTDIR))
  854. tip_instdir_SQ = $(subst ','\'',$(tip_instdir))
  855. # If we install to $(HOME) we keep the traceevent default:
  856. # $(HOME)/.traceevent/plugins
  857. # Otherwise we install plugins into the global $(libdir).
  858. ifdef DESTDIR
  859. plugindir=$(libdir)/traceevent/plugins
  860. plugindir_SQ= $(subst ','\'',$(plugindir))
  861. endif
  862. print_var = $(eval $(print_var_code)) $(info $(MSG))
  863. define print_var_code
  864. MSG = $(shell printf '...%30s: %s' $(1) $($(1)))
  865. endef
  866. ifeq ($(VF),1)
  867. # Display EXTRA features which are detected manualy
  868. # from here with feature_check call and thus cannot
  869. # be partof global state output.
  870. $(foreach feat,$(FEATURE_TESTS_EXTRA),$(call feature_print_status,$(feat),))
  871. $(call print_var,prefix)
  872. $(call print_var,bindir)
  873. $(call print_var,libdir)
  874. $(call print_var,sysconfdir)
  875. $(call print_var,LIBUNWIND_DIR)
  876. $(call print_var,LIBDW_DIR)
  877. $(call print_var,JDIR)
  878. ifeq ($(dwarf-post-unwind),1)
  879. $(call feature_print_text,"DWARF post unwind library", $(dwarf-post-unwind-text))
  880. endif
  881. $(info )
  882. endif
  883. $(call detected_var,bindir_SQ)
  884. $(call detected_var,PYTHON_WORD)
  885. ifneq ($(OUTPUT),)
  886. $(call detected_var,OUTPUT)
  887. endif
  888. $(call detected_var,htmldir_SQ)
  889. $(call detected_var,infodir_SQ)
  890. $(call detected_var,mandir_SQ)
  891. $(call detected_var,ETC_PERFCONFIG_SQ)
  892. $(call detected_var,STRACE_GROUPS_DIR_SQ)
  893. $(call detected_var,prefix_SQ)
  894. $(call detected_var,perfexecdir_SQ)
  895. $(call detected_var,perf_include_dir_SQ)
  896. $(call detected_var,perf_examples_dir_SQ)
  897. $(call detected_var,tipdir_SQ)
  898. $(call detected_var,srcdir_SQ)
  899. $(call detected_var,LIBDIR)
  900. $(call detected_var,GTK_CFLAGS)
  901. $(call detected_var,PERL_EMBED_CCOPTS)
  902. $(call detected_var,PYTHON_EMBED_CCOPTS)