xref: /linux/tools/power/x86/turbostat/Makefile (revision a1ff5a7d78a036d6c2178ee5acd6ba4946243800)
1b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
2ee0778a3SMark AsselstineCC		= $(CROSS_COMPILE)gcc
3f82263c6SThomas DBUILD_OUTPUT	:= $(CURDIR)
4ac485cb4SAndy ShevchenkoPREFIX		?= /usr
5ac485cb4SAndy ShevchenkoDESTDIR		?=
6231ce08bSLen BrownDAY		:= $(shell date +%Y.%m.%d)
7231ce08bSLen BrownSNAPSHOT		= turbostat-$(DAY)
8ee0778a3SMark Asselstine
9f82263c6SThomas Difeq ("$(origin O)", "command line")
10f82263c6SThomas D	BUILD_OUTPUT := $(O)
11f82263c6SThomas Dendif
12f82263c6SThomas D
13103a8feaSLen Brownturbostat : turbostat.c
149878bf7aSLen Brownoverride CFLAGS +=	-O2 -Wall -Wextra -I../../../include
156b7f98a3SJiri Olsaoverride CFLAGS +=	-DMSRHEADER='"../../../../arch/x86/include/asm/msr-index.h"'
166b7f98a3SJiri Olsaoverride CFLAGS +=	-DINTEL_FAMILY_HEADER='"../../../../arch/x86/include/asm/intel-family.h"'
17b15943c4SPatryk Wlazlynoverride CFLAGS +=	-DBUILD_BUG_HEADER='"../../../../include/linux/build_bug.h"'
184be61e6bSAlexander Monakovoverride CFLAGS +=	-D_FILE_OFFSET_BITS=64
196ac1730fSBen Hutchingsoverride CFLAGS +=	-D_FORTIFY_SOURCE=2
20103a8feaSLen Brown
21ee0778a3SMark Asselstine%: %.c
22ee0778a3SMark Asselstine	@mkdir -p $(BUILD_OUTPUT)
2387e15da9SChen Yu	$(CC) $(CFLAGS) $< -o $(BUILD_OUTPUT)/$@ $(LDFLAGS) -lcap -lrt
24103a8feaSLen Brown
25ee0778a3SMark Asselstine.PHONY : clean
26103a8feaSLen Brownclean :
27ee0778a3SMark Asselstine	@rm -f $(BUILD_OUTPUT)/turbostat
28231ce08bSLen Brown	@rm -f $(SNAPSHOT).tar.gz
29103a8feaSLen Brown
30ee0778a3SMark Asselstineinstall : turbostat
31ee0778a3SMark Asselstine	install -d $(DESTDIR)$(PREFIX)/bin
32ee0778a3SMark Asselstine	install $(BUILD_OUTPUT)/turbostat $(DESTDIR)$(PREFIX)/bin/turbostat
33ee0778a3SMark Asselstine	install -d $(DESTDIR)$(PREFIX)/share/man/man8
34e29dc460SLaura Abbott	install -m 644 turbostat.8 $(DESTDIR)$(PREFIX)/share/man/man8
35231ce08bSLen Brown
36231ce08bSLen Brownsnapshot: turbostat
37231ce08bSLen Brown	@rm -rf $(SNAPSHOT)
38231ce08bSLen Brown	@mkdir $(SNAPSHOT)
39231ce08bSLen Brown	@cp turbostat Makefile turbostat.c turbostat.8 ../../../../arch/x86/include/asm/intel-family.h $(SNAPSHOT)
40231ce08bSLen Brown
41231ce08bSLen Brown	@sed -e 's/^#include <linux\/bits.h>/#include "bits.h"/' ../../../../arch/x86/include/asm/msr-index.h > $(SNAPSHOT)/msr-index.h
42231ce08bSLen Brown	@echo '#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))' >> $(SNAPSHOT)/msr-index.h
43231ce08bSLen Brown	@echo "#define BIT(x) (1 << (x))" > $(SNAPSHOT)/bits.h
44231ce08bSLen Brown	@echo "#define BIT_ULL(nr) (1ULL << (nr))" >> $(SNAPSHOT)/bits.h
45231ce08bSLen Brown	@echo "#define GENMASK(h, l) (((~0UL) << (l)) & (~0UL >> (sizeof(long) * 8 - 1 - (h))))" >> $(SNAPSHOT)/bits.h
46231ce08bSLen Brown	@echo "#define GENMASK_ULL(h, l) (((~0ULL) << (l)) & (~0ULL >> (sizeof(long long) * 8 - 1 - (h))))" >> $(SNAPSHOT)/bits.h
47231ce08bSLen Brown
48b15943c4SPatryk Wlazlyn	@echo '#define BUILD_BUG_ON(cond) do { enum { compile_time_check ## __COUNTER__ = 1/(!(cond)) }; } while (0)' > $(SNAPSHOT)/build_bug.h
49*361b8fc7SPatryk Wlazlyn	@echo '#define __must_be_array(arr) 0' >> $(SNAPSHOT)/build_bug.h
50b15943c4SPatryk Wlazlyn
51231ce08bSLen Brown	@echo PWD=. > $(SNAPSHOT)/Makefile
52231ce08bSLen Brown	@echo "CFLAGS +=	-DMSRHEADER='\"msr-index.h\"'" >> $(SNAPSHOT)/Makefile
53231ce08bSLen Brown	@echo "CFLAGS +=	-DINTEL_FAMILY_HEADER='\"intel-family.h\"'" >> $(SNAPSHOT)/Makefile
54b15943c4SPatryk Wlazlyn	@echo "CFLAGS +=	-DBUILD_BUG_HEADER='\"build_bug.h\"'" >> $(SNAPSHOT)/Makefile
55b15943c4SPatryk Wlazlyn	@sed -e's/.*MSRHEADER.*//' -e's/.*INTEL_FAMILY_HEADER.*//' -e's/.*BUILD_BUG_HEADER.*//' Makefile >> $(SNAPSHOT)/Makefile
56231ce08bSLen Brown
57231ce08bSLen Brown	@rm -f $(SNAPSHOT).tar.gz
58231ce08bSLen Brown	tar cvzf $(SNAPSHOT).tar.gz $(SNAPSHOT)
59