162306a36Sopenharmony_ciNAME := rv 262306a36Sopenharmony_ci# Follow the kernel version 362306a36Sopenharmony_ciVERSION := $(shell cat VERSION 2> /dev/null || make -sC ../../.. kernelversion | grep -v make) 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci# From libtracefs: 662306a36Sopenharmony_ci# Makefiles suck: This macro sets a default value of $(2) for the 762306a36Sopenharmony_ci# variable named by $(1), unless the variable has been set by 862306a36Sopenharmony_ci# environment or command line. This is necessary for CC and AR 962306a36Sopenharmony_ci# because make sets default values, so the simpler ?= approach 1062306a36Sopenharmony_ci# won't work as expected. 1162306a36Sopenharmony_cidefine allow-override 1262306a36Sopenharmony_ci $(if $(or $(findstring environment,$(origin $(1))),\ 1362306a36Sopenharmony_ci $(findstring command line,$(origin $(1)))),,\ 1462306a36Sopenharmony_ci $(eval $(1) = $(2))) 1562306a36Sopenharmony_ciendef 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci# Allow setting CC and AR, or setting CROSS_COMPILE as a prefix. 1862306a36Sopenharmony_ci$(call allow-override,CC,$(CROSS_COMPILE)gcc) 1962306a36Sopenharmony_ci$(call allow-override,AR,$(CROSS_COMPILE)ar) 2062306a36Sopenharmony_ci$(call allow-override,STRIP,$(CROSS_COMPILE)strip) 2162306a36Sopenharmony_ci$(call allow-override,PKG_CONFIG,pkg-config) 2262306a36Sopenharmony_ci$(call allow-override,LD_SO_CONF_PATH,/etc/ld.so.conf.d/) 2362306a36Sopenharmony_ci$(call allow-override,LDCONFIG,ldconfig) 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ciINSTALL = install 2662306a36Sopenharmony_ciMKDIR = mkdir 2762306a36Sopenharmony_ciFOPTS := -flto=auto -ffat-lto-objects -fexceptions -fstack-protector-strong \ 2862306a36Sopenharmony_ci -fasynchronous-unwind-tables -fstack-clash-protection 2962306a36Sopenharmony_ciWOPTS := -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -Wno-maybe-uninitialized 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ciifeq ($(CC),clang) 3262306a36Sopenharmony_ci FOPTS := $(filter-out -ffat-lto-objects, $(FOPTS)) 3362306a36Sopenharmony_ci WOPTS := $(filter-out -Wno-maybe-uninitialized, $(WOPTS)) 3462306a36Sopenharmony_ciendif 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ciTRACEFS_HEADERS := $$($(PKG_CONFIG) --cflags libtracefs) 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ciCFLAGS := -O -g -DVERSION=\"$(VERSION)\" $(FOPTS) $(MOPTS) $(WOPTS) $(TRACEFS_HEADERS) $(EXTRA_CFLAGS) -I include 3962306a36Sopenharmony_ciLDFLAGS := -flto=auto -ggdb $(EXTRA_LDFLAGS) 4062306a36Sopenharmony_ciLIBS := $$($(PKG_CONFIG) --libs libtracefs) 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ciSRC := $(wildcard src/*.c) 4362306a36Sopenharmony_ciHDR := $(wildcard src/*.h) 4462306a36Sopenharmony_ciOBJ := $(SRC:.c=.o) 4562306a36Sopenharmony_ciDIRS := src 4662306a36Sopenharmony_ciFILES := Makefile README.txt 4762306a36Sopenharmony_ciCEXT := bz2 4862306a36Sopenharmony_ciTARBALL := $(NAME)-$(VERSION).tar.$(CEXT) 4962306a36Sopenharmony_ciTAROPTS := -cvjf $(TARBALL) 5062306a36Sopenharmony_ciBINDIR := /usr/bin 5162306a36Sopenharmony_ciDATADIR := /usr/share 5262306a36Sopenharmony_ciDOCDIR := $(DATADIR)/doc 5362306a36Sopenharmony_ciMANDIR := $(DATADIR)/man 5462306a36Sopenharmony_ciLICDIR := $(DATADIR)/licenses 5562306a36Sopenharmony_ciSRCTREE := $(or $(BUILD_SRC),$(CURDIR)) 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_ci# If running from the tarball, man pages are stored in the Documentation 5862306a36Sopenharmony_ci# dir. If running from the kernel source, man pages are stored in 5962306a36Sopenharmony_ci# Documentation/tools/rv/. 6062306a36Sopenharmony_ciifneq ($(wildcard Documentation/.*),) 6162306a36Sopenharmony_ciDOCSRC = Documentation/ 6262306a36Sopenharmony_cielse 6362306a36Sopenharmony_ciDOCSRC = $(SRCTREE)/../../../Documentation/tools/rv/ 6462306a36Sopenharmony_ciendif 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ciLIBTRACEEVENT_MIN_VERSION = 1.5 6762306a36Sopenharmony_ciLIBTRACEFS_MIN_VERSION = 1.3 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci.PHONY: all warnings show_warnings 7062306a36Sopenharmony_ciall: warnings rv 7162306a36Sopenharmony_ci 7262306a36Sopenharmony_ciTEST_LIBTRACEEVENT = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEEVENT_MIN_VERSION) libtraceevent > /dev/null 2>&1 || echo n") 7362306a36Sopenharmony_ciifeq ("$(TEST_LIBTRACEEVENT)", "n") 7462306a36Sopenharmony_ciWARNINGS = show_warnings 7562306a36Sopenharmony_ciMISSING_LIBS += echo "** libtraceevent version $(LIBTRACEEVENT_MIN_VERSION) or higher"; 7662306a36Sopenharmony_ciMISSING_PACKAGES += "libtraceevent-devel" 7762306a36Sopenharmony_ciMISSING_SOURCE += echo "** https://git.kernel.org/pub/scm/libs/libtrace/libtraceevent.git/ "; 7862306a36Sopenharmony_ciendif 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ciTEST_LIBTRACEFS = $(shell sh -c "$(PKG_CONFIG) --atleast-version $(LIBTRACEFS_MIN_VERSION) libtracefs > /dev/null 2>&1 || echo n") 8162306a36Sopenharmony_ciifeq ("$(TEST_LIBTRACEFS)", "n") 8262306a36Sopenharmony_ciWARNINGS = show_warnings 8362306a36Sopenharmony_ciMISSING_LIBS += echo "** libtracefs version $(LIBTRACEFS_MIN_VERSION) or higher"; 8462306a36Sopenharmony_ciMISSING_PACKAGES += "libtracefs-devel" 8562306a36Sopenharmony_ciMISSING_SOURCE += echo "** https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/ "; 8662306a36Sopenharmony_ciendif 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_cidefine show_dependencies 8962306a36Sopenharmony_ci @echo "********************************************"; \ 9062306a36Sopenharmony_ci echo "** NOTICE: Failed build dependencies"; \ 9162306a36Sopenharmony_ci echo "**"; \ 9262306a36Sopenharmony_ci echo "** Required Libraries:"; \ 9362306a36Sopenharmony_ci $(MISSING_LIBS) \ 9462306a36Sopenharmony_ci echo "**"; \ 9562306a36Sopenharmony_ci echo "** Consider installing the latest libtracefs from your"; \ 9662306a36Sopenharmony_ci echo "** distribution, e.g., 'dnf install $(MISSING_PACKAGES)' on Fedora,"; \ 9762306a36Sopenharmony_ci echo "** or from source:"; \ 9862306a36Sopenharmony_ci echo "**"; \ 9962306a36Sopenharmony_ci $(MISSING_SOURCE) \ 10062306a36Sopenharmony_ci echo "**"; \ 10162306a36Sopenharmony_ci echo "********************************************" 10262306a36Sopenharmony_ciendef 10362306a36Sopenharmony_ci 10462306a36Sopenharmony_cishow_warnings: 10562306a36Sopenharmony_ci $(call show_dependencies); 10662306a36Sopenharmony_ci 10762306a36Sopenharmony_ciifneq ("$(WARNINGS)", "") 10862306a36Sopenharmony_ciERROR_OUT = $(error Please add the necessary dependencies) 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ciwarnings: $(WARNINGS) 11162306a36Sopenharmony_ci $(ERROR_OUT) 11262306a36Sopenharmony_ciendif 11362306a36Sopenharmony_ci 11462306a36Sopenharmony_cirv: $(OBJ) 11562306a36Sopenharmony_ci $(CC) -o rv $(LDFLAGS) $(OBJ) $(LIBS) 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci.PHONY: install 11862306a36Sopenharmony_ciinstall: doc_install 11962306a36Sopenharmony_ci $(MKDIR) -p $(DESTDIR)$(BINDIR) 12062306a36Sopenharmony_ci $(INSTALL) rv -m 755 $(DESTDIR)$(BINDIR) 12162306a36Sopenharmony_ci $(STRIP) $(DESTDIR)$(BINDIR)/rv 12262306a36Sopenharmony_ci 12362306a36Sopenharmony_ci.PHONY: clean tarball 12462306a36Sopenharmony_ciclean: doc_clean 12562306a36Sopenharmony_ci @test ! -f rv || rm rv 12662306a36Sopenharmony_ci @test ! -f $(TARBALL) || rm -f $(TARBALL) 12762306a36Sopenharmony_ci @rm -rf *~ $(OBJ) *.tar.$(CEXT) 12862306a36Sopenharmony_ci 12962306a36Sopenharmony_citarball: clean 13062306a36Sopenharmony_ci rm -rf $(NAME)-$(VERSION) && mkdir $(NAME)-$(VERSION) 13162306a36Sopenharmony_ci echo $(VERSION) > $(NAME)-$(VERSION)/VERSION 13262306a36Sopenharmony_ci cp -r $(DIRS) $(FILES) $(NAME)-$(VERSION) 13362306a36Sopenharmony_ci mkdir $(NAME)-$(VERSION)/Documentation/ 13462306a36Sopenharmony_ci cp -rp $(SRCTREE)/../../../Documentation/tools/rv/* $(NAME)-$(VERSION)/Documentation/ 13562306a36Sopenharmony_ci tar $(TAROPTS) --exclude='*~' $(NAME)-$(VERSION) 13662306a36Sopenharmony_ci rm -rf $(NAME)-$(VERSION) 13762306a36Sopenharmony_ci 13862306a36Sopenharmony_ci.PHONY: doc doc_clean doc_install 13962306a36Sopenharmony_cidoc: 14062306a36Sopenharmony_ci $(MAKE) -C $(DOCSRC) 14162306a36Sopenharmony_ci 14262306a36Sopenharmony_cidoc_clean: 14362306a36Sopenharmony_ci $(MAKE) -C $(DOCSRC) clean 14462306a36Sopenharmony_ci 14562306a36Sopenharmony_cidoc_install: 14662306a36Sopenharmony_ci $(MAKE) -C $(DOCSRC) install 147