13ce311afSJiri Olsa# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) 23ce311afSJiri Olsa# Most of this file is copied from tools/lib/bpf/Makefile 33ce311afSJiri Olsa 43ce311afSJiri OlsaLIBPERF_VERSION = 0 53ce311afSJiri OlsaLIBPERF_PATCHLEVEL = 0 63ce311afSJiri OlsaLIBPERF_EXTRAVERSION = 1 73ce311afSJiri Olsa 83ce311afSJiri OlsaMAKEFLAGS += --no-print-directory 93ce311afSJiri Olsa 103ce311afSJiri Olsaifeq ($(srctree),) 113ce311afSJiri Olsasrctree := $(patsubst %/,%,$(dir $(CURDIR))) 123ce311afSJiri Olsasrctree := $(patsubst %/,%,$(dir $(srctree))) 133ce311afSJiri Olsasrctree := $(patsubst %/,%,$(dir $(srctree))) 143ce311afSJiri Olsa#$(info Determined 'srctree' to be $(srctree)) 153ce311afSJiri Olsaendif 163ce311afSJiri Olsa 173ce311afSJiri OlsaINSTALL = install 183ce311afSJiri Olsa 193ce311afSJiri Olsa# Use DESTDIR for installing into a different root directory. 203ce311afSJiri Olsa# This is useful for building a package. The program will be 213ce311afSJiri Olsa# installed in this directory as if it was the root directory. 223ce311afSJiri Olsa# Then the build tool can move it later. 233ce311afSJiri OlsaDESTDIR ?= 243ce311afSJiri OlsaDESTDIR_SQ = '$(subst ','\'',$(DESTDIR))' 253ce311afSJiri Olsa 263ce311afSJiri Olsainclude $(srctree)/tools/scripts/Makefile.include 273ce311afSJiri Olsainclude $(srctree)/tools/scripts/Makefile.arch 283ce311afSJiri Olsa 293ce311afSJiri Olsaifeq ($(LP64), 1) 303ce311afSJiri Olsa libdir_relative = lib64 313ce311afSJiri Olsaelse 323ce311afSJiri Olsa libdir_relative = lib 333ce311afSJiri Olsaendif 343ce311afSJiri Olsa 353ce311afSJiri Olsaprefix ?= 363ce311afSJiri Olsalibdir = $(prefix)/$(libdir_relative) 373ce311afSJiri Olsa 383ce311afSJiri Olsa# Shell quotes 393ce311afSJiri Olsalibdir_SQ = $(subst ','\'',$(libdir)) 403ce311afSJiri Olsalibdir_relative_SQ = $(subst ','\'',$(libdir_relative)) 413ce311afSJiri Olsa 423ce311afSJiri Olsaifeq ("$(origin V)", "command line") 433ce311afSJiri Olsa VERBOSE = $(V) 443ce311afSJiri Olsaendif 453ce311afSJiri Olsaifndef VERBOSE 463ce311afSJiri Olsa VERBOSE = 0 473ce311afSJiri Olsaendif 483ce311afSJiri Olsa 493ce311afSJiri Olsaifeq ($(VERBOSE),1) 503ce311afSJiri Olsa Q = 513ce311afSJiri Olsaelse 523ce311afSJiri Olsa Q = @ 533ce311afSJiri Olsaendif 543ce311afSJiri Olsa 553ce311afSJiri Olsa# Set compile option CFLAGS 563ce311afSJiri Olsaifdef EXTRA_CFLAGS 573ce311afSJiri Olsa CFLAGS := $(EXTRA_CFLAGS) 583ce311afSJiri Olsaelse 593ce311afSJiri Olsa CFLAGS := -g -Wall 603ce311afSJiri Olsaendif 613ce311afSJiri Olsa 623ce311afSJiri OlsaINCLUDES = \ 633ce311afSJiri Olsa-I$(srctree)/tools/lib/perf/include \ 643ce311afSJiri Olsa-I$(srctree)/tools/lib/ \ 653ce311afSJiri Olsa-I$(srctree)/tools/include \ 663ce311afSJiri Olsa-I$(srctree)/tools/arch/$(SRCARCH)/include/ \ 673ce311afSJiri Olsa-I$(srctree)/tools/arch/$(SRCARCH)/include/uapi \ 683ce311afSJiri Olsa-I$(srctree)/tools/include/uapi 693ce311afSJiri Olsa 703ce311afSJiri Olsa# Append required CFLAGS 713ce311afSJiri Olsaoverride CFLAGS += $(EXTRA_WARNINGS) 723ce311afSJiri Olsaoverride CFLAGS += -Werror -Wall 733ce311afSJiri Olsaoverride CFLAGS += -fPIC 743ce311afSJiri Olsaoverride CFLAGS += $(INCLUDES) 753ce311afSJiri Olsaoverride CFLAGS += -fvisibility=hidden 763ce311afSJiri Olsa 773ce311afSJiri Olsaall: 783ce311afSJiri Olsa 793ce311afSJiri Olsaexport srctree OUTPUT CC LD CFLAGS V 803ce311afSJiri Olsaexport DESTDIR DESTDIR_SQ 813ce311afSJiri Olsa 823ce311afSJiri Olsainclude $(srctree)/tools/build/Makefile.include 833ce311afSJiri Olsa 843ce311afSJiri OlsaVERSION_SCRIPT := libperf.map 853ce311afSJiri Olsa 863ce311afSJiri OlsaPATCHLEVEL = $(LIBPERF_PATCHLEVEL) 873ce311afSJiri OlsaEXTRAVERSION = $(LIBPERF_EXTRAVERSION) 883ce311afSJiri OlsaVERSION = $(LIBPERF_VERSION).$(LIBPERF_PATCHLEVEL).$(LIBPERF_EXTRAVERSION) 893ce311afSJiri Olsa 903ce311afSJiri OlsaLIBPERF_SO := $(OUTPUT)libperf.so.$(VERSION) 913ce311afSJiri OlsaLIBPERF_A := $(OUTPUT)libperf.a 923ce311afSJiri OlsaLIBPERF_IN := $(OUTPUT)libperf-in.o 933ce311afSJiri OlsaLIBPERF_PC := $(OUTPUT)libperf.pc 943ce311afSJiri Olsa 953ce311afSJiri OlsaLIBPERF_ALL := $(LIBPERF_A) $(OUTPUT)libperf.so* 963ce311afSJiri Olsa 973ce311afSJiri OlsaLIB_DIR := $(srctree)/tools/lib/api/ 983ce311afSJiri Olsa 993ce311afSJiri Olsaifneq ($(OUTPUT),) 1003ce311afSJiri Olsaifneq ($(subdir),) 1013ce311afSJiri Olsa API_PATH=$(OUTPUT)/../lib/api/ 1023ce311afSJiri Olsaelse 1033ce311afSJiri Olsa API_PATH=$(OUTPUT) 1043ce311afSJiri Olsaendif 1053ce311afSJiri Olsaelse 1063ce311afSJiri Olsa API_PATH=$(LIB_DIR) 1073ce311afSJiri Olsaendif 1083ce311afSJiri Olsa 1093ce311afSJiri OlsaLIBAPI = $(API_PATH)libapi.a 1103ce311afSJiri Olsaexport LIBAPI 1113ce311afSJiri Olsa 1123ce311afSJiri Olsa$(LIBAPI): FORCE 1133ce311afSJiri Olsa $(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) $(OUTPUT)libapi.a 1143ce311afSJiri Olsa 1153ce311afSJiri Olsa$(LIBAPI)-clean: 1163ce311afSJiri Olsa $(call QUIET_CLEAN, libapi) 1173ce311afSJiri Olsa $(Q)$(MAKE) -C $(LIB_DIR) O=$(OUTPUT) clean >/dev/null 1183ce311afSJiri Olsa 1193ce311afSJiri Olsa$(LIBPERF_IN): FORCE 1203ce311afSJiri Olsa $(Q)$(MAKE) $(build)=libperf 1213ce311afSJiri Olsa 1223ce311afSJiri Olsa$(LIBPERF_A): $(LIBPERF_IN) 1233ce311afSJiri Olsa $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIBPERF_IN) 1243ce311afSJiri Olsa 1253ce311afSJiri Olsa$(LIBPERF_SO): $(LIBPERF_IN) $(LIBAPI) 1263ce311afSJiri Olsa $(QUIET_LINK)$(CC) --shared -Wl,-soname,libperf.so \ 1273ce311afSJiri Olsa -Wl,--version-script=$(VERSION_SCRIPT) $^ -o $@ 1283ce311afSJiri Olsa @ln -sf $(@F) $(OUTPUT)libperf.so 1293ce311afSJiri Olsa @ln -sf $(@F) $(OUTPUT)libperf.so.$(LIBPERF_VERSION) 1303ce311afSJiri Olsa 1313ce311afSJiri Olsa 1323ce311afSJiri Olsalibs: $(LIBPERF_A) $(LIBPERF_SO) $(LIBPERF_PC) 1333ce311afSJiri Olsa 1343ce311afSJiri Olsaall: fixdep 1353ce311afSJiri Olsa $(Q)$(MAKE) libs 1363ce311afSJiri Olsa 1373ce311afSJiri Olsaclean: $(LIBAPI)-clean 1383ce311afSJiri Olsa $(call QUIET_CLEAN, libperf) $(RM) $(LIBPERF_A) \ 1393ce311afSJiri Olsa *.o *~ *.a *.so *.so.$(VERSION) *.so.$(LIBPERF_VERSION) .*.d .*.cmd LIBPERF-CFLAGS $(LIBPERF_PC) 1403ce311afSJiri Olsa $(Q)$(MAKE) -C tests clean 1413ce311afSJiri Olsa 1423ce311afSJiri Olsatests: libs 1433ce311afSJiri Olsa $(Q)$(MAKE) -C tests 1443ce311afSJiri Olsa $(Q)$(MAKE) -C tests run 1453ce311afSJiri Olsa 1463ce311afSJiri Olsa$(LIBPERF_PC): 1473ce311afSJiri Olsa $(QUIET_GEN)sed -e "s|@PREFIX@|$(prefix)|" \ 1483ce311afSJiri Olsa -e "s|@LIBDIR@|$(libdir_SQ)|" \ 1493ce311afSJiri Olsa -e "s|@VERSION@|$(VERSION)|" \ 1503ce311afSJiri Olsa < libperf.pc.template > $@ 1513ce311afSJiri Olsa 1523ce311afSJiri Olsadefine do_install_mkdir 1533ce311afSJiri Olsa if [ ! -d '$(DESTDIR_SQ)$1' ]; then \ 1543ce311afSJiri Olsa $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1'; \ 1553ce311afSJiri Olsa fi 1563ce311afSJiri Olsaendef 1573ce311afSJiri Olsa 1583ce311afSJiri Olsadefine do_install 1593ce311afSJiri Olsa if [ ! -d '$(DESTDIR_SQ)$2' ]; then \ 1603ce311afSJiri Olsa $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \ 1613ce311afSJiri Olsa fi; \ 1623ce311afSJiri Olsa $(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR_SQ)$2' 1633ce311afSJiri Olsaendef 1643ce311afSJiri Olsa 1653ce311afSJiri Olsainstall_lib: libs 1663ce311afSJiri Olsa $(call QUIET_INSTALL, $(LIBPERF_ALL)) \ 1673ce311afSJiri Olsa $(call do_install_mkdir,$(libdir_SQ)); \ 1683ce311afSJiri Olsa cp -fpR $(LIBPERF_ALL) $(DESTDIR)$(libdir_SQ) 1693ce311afSJiri Olsa 1703ce311afSJiri Olsainstall_headers: 1713ce311afSJiri Olsa $(call QUIET_INSTALL, headers) \ 1723ce311afSJiri Olsa $(call do_install,include/perf/core.h,$(prefix)/include/perf,644); \ 1733ce311afSJiri Olsa $(call do_install,include/perf/cpumap.h,$(prefix)/include/perf,644); \ 1743ce311afSJiri Olsa $(call do_install,include/perf/threadmap.h,$(prefix)/include/perf,644); \ 1753ce311afSJiri Olsa $(call do_install,include/perf/evlist.h,$(prefix)/include/perf,644); \ 1763ce311afSJiri Olsa $(call do_install,include/perf/evsel.h,$(prefix)/include/perf,644); \ 1773ce311afSJiri Olsa $(call do_install,include/perf/event.h,$(prefix)/include/perf,644); \ 1783ce311afSJiri Olsa $(call do_install,include/perf/mmap.h,$(prefix)/include/perf,644); 1793ce311afSJiri Olsa 1803ce311afSJiri Olsainstall_pkgconfig: $(LIBPERF_PC) 1813ce311afSJiri Olsa $(call QUIET_INSTALL, $(LIBPERF_PC)) \ 1823ce311afSJiri Olsa $(call do_install,$(LIBPERF_PC),$(libdir_SQ)/pkgconfig,644) 1833ce311afSJiri Olsa 184*81de3bf3SJiri Olsainstall_doc: 185*81de3bf3SJiri Olsa $(Q)$(MAKE) -C Documentation install-man install-html install-examples 186*81de3bf3SJiri Olsa 187*81de3bf3SJiri Olsainstall: install_lib install_headers install_pkgconfig install_doc 1883ce311afSJiri Olsa 1893ce311afSJiri OlsaFORCE: 1903ce311afSJiri Olsa 1913ce311afSJiri Olsa.PHONY: all install clean tests FORCE 192