xref: /linux/tools/power/cpupower/Makefile (revision f688b599d711d169b22e99f2d055847d66c4e0d3)
1873e65bcSThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2ee3db6fcSThomas Renninger# Makefile for cpupower
37fe2f639SDominik Brodowski#
47fe2f639SDominik Brodowski# Copyright (C) 2005,2006 Dominik Brodowski <linux@dominikbrodowski.net>
59c70b779SFrancesco Poli (wintermute)# Copyright (C) 2025      Francesco Poli <invernomuto@paranoici.org>
67fe2f639SDominik Brodowski#
77fe2f639SDominik Brodowski# Based largely on the Makefile for udev by:
87fe2f639SDominik Brodowski#
97fe2f639SDominik Brodowski# Copyright (C) 2003,2004 Greg Kroah-Hartman <greg@kroah.com>
107fe2f639SDominik Brodowski#
1168bb2c3aSFranck Bui-HuuOUTPUT=./
1268bb2c3aSFranck Bui-Huuifeq ("$(origin O)", "command line")
1368bb2c3aSFranck Bui-Huu	OUTPUT := $(O)/
1468bb2c3aSFranck Bui-Huuendif
1568bb2c3aSFranck Bui-Huu
1668bb2c3aSFranck Bui-Huuifneq ($(OUTPUT),)
1768bb2c3aSFranck Bui-Huu# check that the output directory actually exists
1816f8259cSBjørn ForsmanOUTDIR := $(shell cd $(OUTPUT) && pwd)
1968bb2c3aSFranck Bui-Huu$(if $(OUTDIR),, $(error output directory "$(OUTPUT)" does not exist))
2068bb2c3aSFranck Bui-Huuendif
217fe2f639SDominik Brodowski
22d4dbfa4bSPrarit Bhargava
237fe2f639SDominik Brodowski# --- CONFIGURATION BEGIN ---
247fe2f639SDominik Brodowski
257fe2f639SDominik Brodowski# Set the following to `true' to make a unstripped, unoptimized
267fe2f639SDominik Brodowski# binary. Leave this set to `false' for production use.
272dfc818bSThomas RenningerDEBUG ?=	true
287fe2f639SDominik Brodowski
297fe2f639SDominik Brodowski# make the build silent. Set this to something else to make it noisy again.
307fe2f639SDominik BrodowskiV ?=		false
317fe2f639SDominik Brodowski
327fe2f639SDominik Brodowski# Internationalization support (output in different languages).
337fe2f639SDominik Brodowski# Requires gettext.
347fe2f639SDominik BrodowskiNLS ?=		true
357fe2f639SDominik Brodowski
367fe2f639SDominik Brodowski# Set the following to 'true' to build/install the
377fe2f639SDominik Brodowski# cpufreq-bench benchmarking tool
3863b37de1SDave JonesCPUFREQ_BENCH ?= true
397fe2f639SDominik Brodowski
40e51207f0SThomas Renninger# Do not build libraries, but build the code in statically
41e51207f0SThomas Renninger# Libraries are still built, otherwise the Makefile code would
42e51207f0SThomas Renninger# be rather ugly.
43e51207f0SThomas Renningerexport STATIC ?= false
44e51207f0SThomas Renninger
457fe2f639SDominik Brodowski# Prefix to the directories we're installing to
467fe2f639SDominik BrodowskiDESTDIR ?=
477fe2f639SDominik Brodowski
487fe2f639SDominik Brodowski# --- CONFIGURATION END ---
497fe2f639SDominik Brodowski
507fe2f639SDominik Brodowski
517fe2f639SDominik Brodowski
527fe2f639SDominik Brodowski# Package-related definitions. Distributions can modify the version
537fe2f639SDominik Brodowski# and _should_ modify the PACKAGE_BUGREPORT definition
547fe2f639SDominik Brodowski
55527b7779SMartin KaistraVERSION:=			$(shell ./utils/version-gen.sh)
56fffadbddSThomas RenningerLIB_FIX=			1
57fffadbddSThomas RenningerLIB_MIN=			0
58fffadbddSThomas RenningerLIB_MAJ=			1
59fffadbddSThomas RenningerLIB_VER=			$(LIB_MAJ).$(LIB_MIN).$(LIB_FIX)
60fffadbddSThomas Renninger
617fe2f639SDominik Brodowski
62ee3db6fcSThomas RenningerPACKAGE =			cpupower
63dec102aaSViresh KumarPACKAGE_BUGREPORT =		linux-pm@vger.kernel.org
64b78abc21SKieran MoyLANGUAGES = 			de fr it cs pt ka zh_CN
657fe2f639SDominik Brodowski
667fe2f639SDominik Brodowski
677fe2f639SDominik Brodowski# Directory definitions. These are default and most probably
687fe2f639SDominik Brodowski# do not need to be changed. Please note that DESTDIR is
697fe2f639SDominik Brodowski# added in front of any of them
707fe2f639SDominik Brodowski
717fe2f639SDominik Brodowskibindir ?=	/usr/bin
727fe2f639SDominik Brodowskisbindir ?=	/usr/sbin
737fe2f639SDominik Brodowskimandir ?=	/usr/man
743a5bb506SRoman Storozhenkolibdir ?=	/usr/lib
759c70b779SFrancesco Poli (wintermute)libexecdir ?=	/usr/libexec
76*e044b8a9SFrancesco Poli (wintermute)unitdir ?=	/usr/lib/systemd/system
777fe2f639SDominik Brodowskiincludedir ?=	/usr/include
787fe2f639SDominik Brodowskilocaledir ?=	/usr/share/locale
79ee3db6fcSThomas Renningerdocdir ?=       /usr/share/doc/packages/cpupower
807fe2f639SDominik Brodowskiconfdir ?=      /etc/
81901d32bcSAbhishek Goelbash_completion_dir ?= /usr/share/bash-completion/completions
827fe2f639SDominik Brodowski
837fe2f639SDominik Brodowski# Toolchain: what tools do we use, and what options do they need:
847fe2f639SDominik Brodowski
857fe2f639SDominik BrodowskiCP = cp -fpR
867fe2f639SDominik BrodowskiINSTALL = /usr/bin/install -c
877fe2f639SDominik BrodowskiINSTALL_PROGRAM = ${INSTALL}
887fe2f639SDominik BrodowskiINSTALL_DATA  = ${INSTALL} -m 644
899c70b779SFrancesco Poli (wintermute)SETPERM_DATA  = chmod 644
90901d32bcSAbhishek Goel#bash completion scripts get sourced and so they should be rw only.
91901d32bcSAbhishek GoelINSTALL_SCRIPT = ${INSTALL} -m 644
927fe2f639SDominik Brodowski
937fe2f639SDominik Brodowski# If you are running a cross compiler, you may want to set this
947fe2f639SDominik Brodowski# to something more interesting, like "arm-linux-".  If you want
957fe2f639SDominik Brodowski# to compile vs uClibc, that can be done here as well.
96f79473edSPeng FanCROSS ?= #/usr/i386-linux-uclibc/usr/bin/i386-uclibc-
973075476aSPeng Fanifneq ($(CROSS), )
983075476aSPeng FanCC = $(CROSS)gcc
993075476aSPeng FanLD = $(CROSS)gcc
1003075476aSPeng FanAR = $(CROSS)ar
1013075476aSPeng FanSTRIP = $(CROSS)strip
1023075476aSPeng FanRANLIB = $(CROSS)ranlib
1033075476aSPeng Fanelse
104f79473edSPeng FanCC ?= $(CROSS)gcc
105f79473edSPeng FanLD ?= $(CROSS)gcc
106f79473edSPeng FanAR ?= $(CROSS)ar
107f79473edSPeng FanSTRIP ?= $(CROSS)strip
108f79473edSPeng FanRANLIB ?= $(CROSS)ranlib
1093075476aSPeng Fanendif
1107fe2f639SDominik BrodowskiHOSTCC = gcc
11168bb2c3aSFranck Bui-HuuMKDIR = mkdir
1127fe2f639SDominik Brodowski
1137fe2f639SDominik Brodowski# Now we set up the build system
1147fe2f639SDominik Brodowski#
1157fe2f639SDominik Brodowski
11668bb2c3aSFranck Bui-HuuGMO_FILES = ${shell for HLANG in ${LANGUAGES}; do echo $(OUTPUT)po/$$HLANG.gmo; done;}
117f5ac0641SDominik Brodowski
1187fe2f639SDominik Brodowskiexport CROSS CC AR STRIP RANLIB CFLAGS LDFLAGS LIB_OBJS
1197fe2f639SDominik Brodowski
1207fe2f639SDominik Brodowski# check if compiler option is supported
1217fe2f639SDominik Brodowskicc-supports = ${shell if $(CC) ${1} -S -o /dev/null -x c /dev/null > /dev/null 2>&1; then echo "$(1)"; fi;}
1227fe2f639SDominik Brodowski
1237fe2f639SDominik Brodowski# use '-Os' optimization if available, else use -O2
1247fe2f639SDominik BrodowskiOPTIMIZATION := $(call cc-supports,-Os,-O2)
1257fe2f639SDominik Brodowski
1267fe2f639SDominik BrodowskiWARNINGS := -Wall -Wchar-subscripts -Wpointer-arith -Wsign-compare
1277fe2f639SDominik BrodowskiWARNINGS += $(call cc-supports,-Wno-pointer-sign)
1287fe2f639SDominik BrodowskiWARNINGS += $(call cc-supports,-Wdeclaration-after-statement)
1297fe2f639SDominik BrodowskiWARNINGS += -Wshadow
1307fe2f639SDominik Brodowski
131dbc4ca33SJiri Olsaoverride CFLAGS += -DVERSION=\"$(VERSION)\" -DPACKAGE=\"$(PACKAGE)\" \
1327fe2f639SDominik Brodowski		-DPACKAGE_BUGREPORT=\"$(PACKAGE_BUGREPORT)\" -D_GNU_SOURCE
1337fe2f639SDominik Brodowski
134ac5a181dSThomas RenningerUTIL_OBJS =  utils/helpers/amd.o utils/helpers/msr.o \
1357fe2f639SDominik Brodowski	utils/helpers/sysfs.o utils/helpers/misc.o utils/helpers/cpuid.o \
1367fe2f639SDominik Brodowski	utils/helpers/pci.o utils/helpers/bitmask.o \
1377fe2f639SDominik Brodowski	utils/idle_monitor/nhm_idle.o utils/idle_monitor/snb_idle.o \
1387ee767b6SThomas Renninger	utils/idle_monitor/hsw_ext_idle.o \
1397fe2f639SDominik Brodowski	utils/idle_monitor/amd_fam14h_idle.o utils/idle_monitor/cpuidle_sysfs.o \
1407fe2f639SDominik Brodowski	utils/idle_monitor/mperf_monitor.o utils/idle_monitor/cpupower-monitor.o \
1418c37df3dSThomas Renninger	utils/idle_monitor/rapl_monitor.o \
1427fe2f639SDominik Brodowski	utils/cpupower.o utils/cpufreq-info.o utils/cpufreq-set.o \
143c4f3610eSThomas Renninger	utils/cpupower-set.o utils/cpupower-info.o utils/cpuidle-info.o \
144c2294c14SThomas Renninger	utils/cpuidle-set.o utils/powercap-info.o
1457fe2f639SDominik Brodowski
14668bb2c3aSFranck Bui-HuuUTIL_SRC := $(UTIL_OBJS:.o=.c)
14768bb2c3aSFranck Bui-Huu
14868bb2c3aSFranck Bui-HuuUTIL_OBJS := $(addprefix $(OUTPUT),$(UTIL_OBJS))
14968bb2c3aSFranck Bui-Huu
1507fe2f639SDominik BrodowskiUTIL_HEADERS = utils/helpers/helpers.h utils/idle_monitor/cpupower-monitor.h \
1517fe2f639SDominik Brodowski	utils/helpers/bitmask.h \
1527fe2f639SDominik Brodowski	utils/idle_monitor/idle_monitors.h utils/idle_monitor/idle_monitors.def
1537fe2f639SDominik Brodowski
154c2294c14SThomas RenningerLIB_HEADERS = 	lib/cpufreq.h lib/cpupower.h lib/cpuidle.h lib/acpi_cppc.h \
155c2294c14SThomas Renninger	lib/powercap.h
156c2294c14SThomas RenningerLIB_SRC = 	lib/cpufreq.c lib/cpupower.c lib/cpuidle.c lib/acpi_cppc.c \
157c2294c14SThomas Renninger	lib/powercap.c
158c2294c14SThomas RenningerLIB_OBJS = 	lib/cpufreq.o lib/cpupower.o lib/cpuidle.o lib/acpi_cppc.o \
159c2294c14SThomas Renninger	lib/powercap.o
16068bb2c3aSFranck Bui-HuuLIB_OBJS :=	$(addprefix $(OUTPUT),$(LIB_OBJS))
1617fe2f639SDominik Brodowski
162dbc4ca33SJiri Olsaoverride CFLAGS +=	-pipe
1637fe2f639SDominik Brodowski
1647fe2f639SDominik Brodowskiifeq ($(strip $(NLS)),true)
1657fe2f639SDominik Brodowski	INSTALL_NLS += install-gmo
166f5ac0641SDominik Brodowski	COMPILE_NLS += create-gmo
167dbc4ca33SJiri Olsa	override CFLAGS += -DNLS
1687fe2f639SDominik Brodowskiendif
1697fe2f639SDominik Brodowski
17063b37de1SDave Jonesifeq ($(strip $(CPUFREQ_BENCH)),true)
1717fe2f639SDominik Brodowski	INSTALL_BENCH += install-bench
1727fe2f639SDominik Brodowski	COMPILE_BENCH += compile-bench
1737fe2f639SDominik Brodowskiendif
1747fe2f639SDominik Brodowski
175e51207f0SThomas Renningerifeq ($(strip $(STATIC)),true)
176e51207f0SThomas Renninger        UTIL_OBJS += $(LIB_OBJS)
177e51207f0SThomas Renninger        UTIL_HEADERS += $(LIB_HEADERS)
178e51207f0SThomas Renninger        UTIL_SRC += $(LIB_SRC)
179e51207f0SThomas Renningerendif
180e51207f0SThomas Renninger
181dbc4ca33SJiri Olsaoverride CFLAGS += $(WARNINGS)
1827fe2f639SDominik Brodowski
1837fe2f639SDominik Brodowskiifeq ($(strip $(V)),false)
1847443af9cSDominik Brodowski	QUIET=@
1857443af9cSDominik Brodowski	ECHO=@echo
1867fe2f639SDominik Brodowskielse
1877fe2f639SDominik Brodowski	QUIET=
1887443af9cSDominik Brodowski	ECHO=@\#
1897fe2f639SDominik Brodowskiendif
1907443af9cSDominik Brodowskiexport QUIET ECHO
1917fe2f639SDominik Brodowski
1927fe2f639SDominik Brodowski# if DEBUG is enabled, then we do not strip or optimize
1937fe2f639SDominik Brodowskiifeq ($(strip $(DEBUG)),true)
194dbc4ca33SJiri Olsa	override CFLAGS += -O1 -g -DDEBUG
1957fe2f639SDominik Brodowski	STRIPCMD = /bin/true -Since_we_are_debugging
1967fe2f639SDominik Brodowskielse
197dbc4ca33SJiri Olsa	override CFLAGS += $(OPTIMIZATION) -fomit-frame-pointer
1987fe2f639SDominik Brodowski	STRIPCMD = $(STRIP) -s --remove-section=.note --remove-section=.comment
1997fe2f639SDominik Brodowskiendif
2007fe2f639SDominik Brodowski
2017fe2f639SDominik Brodowski
2027fe2f639SDominik Brodowski# the actual make rules
2037fe2f639SDominik Brodowski
20468bb2c3aSFranck Bui-Huuall: libcpupower $(OUTPUT)cpupower $(COMPILE_NLS) $(COMPILE_BENCH)
2057fe2f639SDominik Brodowski
20668bb2c3aSFranck Bui-Huu$(OUTPUT)lib/%.o: $(LIB_SRC) $(LIB_HEADERS)
2077443af9cSDominik Brodowski	$(ECHO) "  CC      " $@
208af594f0cSDominik Brodowski	$(QUIET) $(CC) $(CFLAGS) -fPIC -o $@ -c lib/$*.c
2097fe2f639SDominik Brodowski
210fffadbddSThomas Renninger$(OUTPUT)libcpupower.so.$(LIB_VER): $(LIB_OBJS)
2117443af9cSDominik Brodowski	$(ECHO) "  LD      " $@
212af594f0cSDominik Brodowski	$(QUIET) $(CC) -shared $(CFLAGS) $(LDFLAGS) -o $@ \
213fffadbddSThomas Renninger		-Wl,-soname,libcpupower.so.$(LIB_MAJ) $(LIB_OBJS)
21468bb2c3aSFranck Bui-Huu	@ln -sf $(@F) $(OUTPUT)libcpupower.so
215fffadbddSThomas Renninger	@ln -sf $(@F) $(OUTPUT)libcpupower.so.$(LIB_MAJ)
2167fe2f639SDominik Brodowski
217fffadbddSThomas Renningerlibcpupower: $(OUTPUT)libcpupower.so.$(LIB_VER)
2187fe2f639SDominik Brodowski
2197fe2f639SDominik Brodowski# Let all .o files depend on its .c file and all headers
2207fe2f639SDominik Brodowski# Might be worth to put this into utils/Makefile at some point of time
2217fe2f639SDominik Brodowski$(UTIL_OBJS): $(UTIL_HEADERS)
2227fe2f639SDominik Brodowski
22368bb2c3aSFranck Bui-Huu$(OUTPUT)%.o: %.c
2247443af9cSDominik Brodowski	$(ECHO) "  CC      " $@
225af594f0cSDominik Brodowski	$(QUIET) $(CC) $(CFLAGS) -I./lib -I ./utils -o $@ -c $*.c
2267fe2f639SDominik Brodowski
227fffadbddSThomas Renninger$(OUTPUT)cpupower: $(UTIL_OBJS) $(OUTPUT)libcpupower.so.$(LIB_VER)
2287443af9cSDominik Brodowski	$(ECHO) "  CC      " $@
229e51207f0SThomas Renningerifeq ($(strip $(STATIC)),true)
230e51207f0SThomas Renninger	$(QUIET) $(CC) $(CFLAGS) $(LDFLAGS) $(UTIL_OBJS) -lrt -lpci -L$(OUTPUT) -o $@
231e51207f0SThomas Renningerelse
232b8ea351bSJosh Boyer	$(QUIET) $(CC) $(CFLAGS) $(LDFLAGS) $(UTIL_OBJS) -lcpupower -lrt -lpci -L$(OUTPUT) -o $@
233e51207f0SThomas Renningerendif
2347443af9cSDominik Brodowski	$(QUIET) $(STRIPCMD) $@
2357fe2f639SDominik Brodowski
23647d7650bSSiddharth Menonifeq (, $(shell which xgettext))
23747d7650bSSiddharth Menon$(warning "Install xgettext to extract translatable strings.")
23847d7650bSSiddharth Menonelse
23968bb2c3aSFranck Bui-Huu$(OUTPUT)po/$(PACKAGE).pot: $(UTIL_SRC)
240f5ac0641SDominik Brodowski	$(ECHO) "  GETTEXT " $@
241f5ac0641SDominik Brodowski	$(QUIET) xgettext --default-domain=$(PACKAGE) --add-comments \
24238271504SFranck Bui-Huu		--keyword=_ --keyword=N_ $(UTIL_SRC) -p $(@D) -o $(@F)
24347d7650bSSiddharth Menonendif
2447fe2f639SDominik Brodowski
24547d7650bSSiddharth Menonifeq (, $(shell which msgfmt))
24647d7650bSSiddharth Menon$(warning "Install msgfmt to generate binary message catalogs.")
24747d7650bSSiddharth Menonelse
24868bb2c3aSFranck Bui-Huu$(OUTPUT)po/%.gmo: po/%.po
249f5ac0641SDominik Brodowski	$(ECHO) "  MSGFMT  " $@
250f5ac0641SDominik Brodowski	$(QUIET) msgfmt -o $@ po/$*.po
25147d7650bSSiddharth Menonendif
252f5ac0641SDominik Brodowski
253f5ac0641SDominik Brodowskicreate-gmo: ${GMO_FILES}
254f5ac0641SDominik Brodowski
25547d7650bSSiddharth Menonifeq (, $(shell which msgmerge))
25647d7650bSSiddharth Menon$(warning "Install msgmerge to merge translations.")
25747d7650bSSiddharth Menonelse
25868bb2c3aSFranck Bui-Huuupdate-po: $(OUTPUT)po/$(PACKAGE).pot
259f5ac0641SDominik Brodowski	$(ECHO) "  MSGMRG  " $@
260f5ac0641SDominik Brodowski	$(QUIET) @for HLANG in $(LANGUAGES); do \
261f5ac0641SDominik Brodowski		echo -n "Updating $$HLANG "; \
26268bb2c3aSFranck Bui-Huu		if msgmerge po/$$HLANG.po $< -o \
26368bb2c3aSFranck Bui-Huu		   $(OUTPUT)po/$$HLANG.new.po; then \
26468bb2c3aSFranck Bui-Huu			mv -f $(OUTPUT)po/$$HLANG.new.po $(OUTPUT)po/$$HLANG.po; \
2657fe2f639SDominik Brodowski		else \
2667fe2f639SDominik Brodowski			echo "msgmerge for $$HLANG failed!"; \
26768bb2c3aSFranck Bui-Huu			rm -f $(OUTPUT)po/$$HLANG.new.po; \
2687fe2f639SDominik Brodowski		fi; \
2697fe2f639SDominik Brodowski	done;
27047d7650bSSiddharth Menonendif
2717fe2f639SDominik Brodowski
272fffadbddSThomas Renningercompile-bench: $(OUTPUT)libcpupower.so.$(LIB_VER)
27368bb2c3aSFranck Bui-Huu	@V=$(V) confdir=$(confdir) $(MAKE) -C bench O=$(OUTPUT)
27468bb2c3aSFranck Bui-Huu
27568bb2c3aSFranck Bui-Huu# we compile into subdirectories. if the target directory is not the
27668bb2c3aSFranck Bui-Huu# source directory, they might not exists. So we depend the various
27768bb2c3aSFranck Bui-Huu# files onto their directories.
27868bb2c3aSFranck Bui-HuuDIRECTORY_DEPS = $(LIB_OBJS) $(UTIL_OBJS) $(GMO_FILES)
27968bb2c3aSFranck Bui-Huu$(DIRECTORY_DEPS): | $(sort $(dir $(DIRECTORY_DEPS)))
28068bb2c3aSFranck Bui-Huu
28168bb2c3aSFranck Bui-Huu# In the second step, we make a rule to actually create these directories
28268bb2c3aSFranck Bui-Huu$(sort $(dir $(DIRECTORY_DEPS))):
28368bb2c3aSFranck Bui-Huu	$(ECHO) "  MKDIR      " $@
28468bb2c3aSFranck Bui-Huu	$(QUIET) $(MKDIR) -p $@ 2>/dev/null
2857fe2f639SDominik Brodowski
2867fe2f639SDominik Brodowskiclean:
28768bb2c3aSFranck Bui-Huu	-find $(OUTPUT) \( -not -type d \) -and \( -name '*~' -o -name '*.[oas]' \) -type f -print \
2887fe2f639SDominik Brodowski	 | xargs rm -f
28968bb2c3aSFranck Bui-Huu	-rm -f $(OUTPUT)cpupower
29068bb2c3aSFranck Bui-Huu	-rm -f $(OUTPUT)libcpupower.so*
2918c00bdfbSPalmer Cox	-rm -rf $(OUTPUT)po/*.gmo
2928c00bdfbSPalmer Cox	-rm -rf $(OUTPUT)po/*.pot
29368bb2c3aSFranck Bui-Huu	$(MAKE) -C bench O=$(OUTPUT) clean
2947fe2f639SDominik Brodowski
2957fe2f639SDominik Brodowski
296fb7791e2SIvan Babrouinstall-lib: libcpupower
2977fe2f639SDominik Brodowski	$(INSTALL) -d $(DESTDIR)${libdir}
29868bb2c3aSFranck Bui-Huu	$(CP) $(OUTPUT)libcpupower.so* $(DESTDIR)${libdir}/
2997fe2f639SDominik Brodowski	$(INSTALL) -d $(DESTDIR)${includedir}
3007fe2f639SDominik Brodowski	$(INSTALL_DATA) lib/cpufreq.h $(DESTDIR)${includedir}/cpufreq.h
301ac5a181dSThomas Renninger	$(INSTALL_DATA) lib/cpuidle.h $(DESTDIR)${includedir}/cpuidle.h
302c2294c14SThomas Renninger	$(INSTALL_DATA) lib/powercap.h $(DESTDIR)${includedir}/powercap.h
3037fe2f639SDominik Brodowski
304fb7791e2SIvan Babrouinstall-tools: $(OUTPUT)cpupower
3057fe2f639SDominik Brodowski	$(INSTALL) -d $(DESTDIR)${bindir}
30668bb2c3aSFranck Bui-Huu	$(INSTALL_PROGRAM) $(OUTPUT)cpupower $(DESTDIR)${bindir}
307901d32bcSAbhishek Goel	$(INSTALL) -d $(DESTDIR)${bash_completion_dir}
308901d32bcSAbhishek Goel	$(INSTALL_SCRIPT) cpupower-completion.sh '$(DESTDIR)${bash_completion_dir}/cpupower'
309e5174365SFrancesco Poli (wintermute)	$(INSTALL) -d $(DESTDIR)${confdir}
310e5174365SFrancesco Poli (wintermute)	$(INSTALL_DATA) cpupower-service.conf '$(DESTDIR)${confdir}'
3119c70b779SFrancesco Poli (wintermute)	$(INSTALL) -d $(DESTDIR)${libexecdir}
3129c70b779SFrancesco Poli (wintermute)	$(INSTALL_PROGRAM) cpupower.sh '$(DESTDIR)${libexecdir}/cpupower'
313*e044b8a9SFrancesco Poli (wintermute)	$(INSTALL) -d $(DESTDIR)${unitdir}
314*e044b8a9SFrancesco Poli (wintermute)	sed 's|___CDIR___|${confdir}|; s|___LDIR___|${libexecdir}|' cpupower.service.in > '$(DESTDIR)${unitdir}/cpupower.service'
315*e044b8a9SFrancesco Poli (wintermute)	$(SETPERM_DATA) '$(DESTDIR)${unitdir}/cpupower.service'
3167fe2f639SDominik Brodowski
3177fe2f639SDominik Brodowskiinstall-man:
3187fe2f639SDominik Brodowski	$(INSTALL_DATA) -D man/cpupower.1 $(DESTDIR)${mandir}/man1/cpupower.1
3197fe2f639SDominik Brodowski	$(INSTALL_DATA) -D man/cpupower-frequency-set.1 $(DESTDIR)${mandir}/man1/cpupower-frequency-set.1
3207fe2f639SDominik Brodowski	$(INSTALL_DATA) -D man/cpupower-frequency-info.1 $(DESTDIR)${mandir}/man1/cpupower-frequency-info.1
32184baab91SThomas Renninger	$(INSTALL_DATA) -D man/cpupower-idle-set.1 $(DESTDIR)${mandir}/man1/cpupower-idle-set.1
32284baab91SThomas Renninger	$(INSTALL_DATA) -D man/cpupower-idle-info.1 $(DESTDIR)${mandir}/man1/cpupower-idle-info.1
3237fe2f639SDominik Brodowski	$(INSTALL_DATA) -D man/cpupower-set.1 $(DESTDIR)${mandir}/man1/cpupower-set.1
3247fe2f639SDominik Brodowski	$(INSTALL_DATA) -D man/cpupower-info.1 $(DESTDIR)${mandir}/man1/cpupower-info.1
3257fe2f639SDominik Brodowski	$(INSTALL_DATA) -D man/cpupower-monitor.1 $(DESTDIR)${mandir}/man1/cpupower-monitor.1
326c2294c14SThomas Renninger	$(INSTALL_DATA) -D man/cpupower-powercap-info.1 $(DESTDIR)${mandir}/man1/cpupower-powercap-info.1
3277fe2f639SDominik Brodowski
328fb7791e2SIvan Babrouinstall-gmo: create-gmo
3297fe2f639SDominik Brodowski	$(INSTALL) -d $(DESTDIR)${localedir}
3307fe2f639SDominik Brodowski	for HLANG in $(LANGUAGES); do \
33168bb2c3aSFranck Bui-Huu		echo '$(INSTALL_DATA) -D $(OUTPUT)po/$$HLANG.gmo $(DESTDIR)${localedir}/$$HLANG/LC_MESSAGES/cpupower.mo'; \
33268bb2c3aSFranck Bui-Huu		$(INSTALL_DATA) -D $(OUTPUT)po/$$HLANG.gmo $(DESTDIR)${localedir}/$$HLANG/LC_MESSAGES/cpupower.mo; \
3337fe2f639SDominik Brodowski	done;
3347fe2f639SDominik Brodowski
335fb7791e2SIvan Babrouinstall-bench: compile-bench
3367fe2f639SDominik Brodowski	@#DESTDIR must be set from outside to survive
33768bb2c3aSFranck Bui-Huu	@sbindir=$(sbindir) bindir=$(bindir) docdir=$(docdir) confdir=$(confdir) $(MAKE) -C bench O=$(OUTPUT) install
3387fe2f639SDominik Brodowski
339e51207f0SThomas Renningerifeq ($(strip $(STATIC)),true)
340e51207f0SThomas Renningerinstall: all install-tools install-man $(INSTALL_NLS) $(INSTALL_BENCH)
341e51207f0SThomas Renningerelse
3427fe2f639SDominik Brodowskiinstall: all install-lib install-tools install-man $(INSTALL_NLS) $(INSTALL_BENCH)
343e51207f0SThomas Renningerendif
3447fe2f639SDominik Brodowski
3457fe2f639SDominik Brodowskiuninstall:
3464c22337fSThomas Renninger	- rm -f $(DESTDIR)${libdir}/libcpupower.*
3477fe2f639SDominik Brodowski	- rm -f $(DESTDIR)${includedir}/cpufreq.h
348ac5a181dSThomas Renninger	- rm -f $(DESTDIR)${includedir}/cpuidle.h
3497fe2f639SDominik Brodowski	- rm -f $(DESTDIR)${bindir}/utils/cpupower
350e5174365SFrancesco Poli (wintermute)	- rm -f $(DESTDIR)${confdir}cpupower-service.conf
3519c70b779SFrancesco Poli (wintermute)	- rm -f $(DESTDIR)${libexecdir}/cpupower
352*e044b8a9SFrancesco Poli (wintermute)	- rm -f $(DESTDIR)${unitdir}/cpupower.service
353706f4c11SRamkumar Ramachandra	- rm -f $(DESTDIR)${mandir}/man1/cpupower.1
354706f4c11SRamkumar Ramachandra	- rm -f $(DESTDIR)${mandir}/man1/cpupower-frequency-set.1
355706f4c11SRamkumar Ramachandra	- rm -f $(DESTDIR)${mandir}/man1/cpupower-frequency-info.1
356706f4c11SRamkumar Ramachandra	- rm -f $(DESTDIR)${mandir}/man1/cpupower-set.1
357706f4c11SRamkumar Ramachandra	- rm -f $(DESTDIR)${mandir}/man1/cpupower-info.1
358706f4c11SRamkumar Ramachandra	- rm -f $(DESTDIR)${mandir}/man1/cpupower-monitor.1
359c2294c14SThomas Renninger	- rm -f $(DESTDIR)${mandir}/man1/cpupower-powercap-info.1
3607fe2f639SDominik Brodowski	- for HLANG in $(LANGUAGES); do \
361ee3db6fcSThomas Renninger		rm -f $(DESTDIR)${localedir}/$$HLANG/LC_MESSAGES/cpupower.mo; \
3627fe2f639SDominik Brodowski	  done;
3637fe2f639SDominik Brodowski
364705c80dfSRoman Storozhenkohelp:
365705c80dfSRoman Storozhenko	@echo  'Building targets:'
366705c80dfSRoman Storozhenko	@echo  '  all		  - Default target. Could be omitted. Put build artifacts'
367705c80dfSRoman Storozhenko	@echo  '                    to "O" cmdline option dir (default: current dir)'
368705c80dfSRoman Storozhenko	@echo  '  install	  - Install previously built project files from the output'
369705c80dfSRoman Storozhenko	@echo  '                    dir defined by "O" cmdline option (default: current dir)'
370705c80dfSRoman Storozhenko	@echo  '                    to the install dir  defined by "DESTDIR" cmdline or'
371705c80dfSRoman Storozhenko	@echo  '                    Makefile config block option (default: "")'
372705c80dfSRoman Storozhenko	@echo  '  install-lib	  - Install previously built library binary from the output'
373705c80dfSRoman Storozhenko	@echo  '                    dir defined by "O" cmdline option (default: current dir)'
374705c80dfSRoman Storozhenko	@echo  '                    and library headers from "lib/" for userspace to the install'
375705c80dfSRoman Storozhenko	@echo  '                    dir  defined by "DESTDIR" cmdline (default: "")'
376705c80dfSRoman Storozhenko	@echo  '  install-tools	  - Install previously built "cpupower" util from the output'
377705c80dfSRoman Storozhenko	@echo  '                    dir defined by "O" cmdline option (default: current dir) and'
378705c80dfSRoman Storozhenko	@echo  '                    "cpupower-completion.sh" script from the src dir to the'
379705c80dfSRoman Storozhenko	@echo  '                    install dir  defined by "DESTDIR" cmdline or Makefile'
380705c80dfSRoman Storozhenko	@echo  '                    config block option (default: "")'
381705c80dfSRoman Storozhenko	@echo  '  install-man	  - Install man pages from the "man" src subdir to the'
382705c80dfSRoman Storozhenko	@echo  '                    install dir  defined by "DESTDIR" cmdline or Makefile'
383705c80dfSRoman Storozhenko	@echo  '                    config block option (default: "")'
384705c80dfSRoman Storozhenko	@echo  '  install-gmo	  - Install previously built language files from the output'
385705c80dfSRoman Storozhenko	@echo  '                    dir defined by "O" cmdline option (default: current dir)'
386705c80dfSRoman Storozhenko	@echo  '                    to the install dir defined by "DESTDIR" cmdline or Makefile'
387705c80dfSRoman Storozhenko	@echo  '                    config block option (default: "")'
388705c80dfSRoman Storozhenko	@echo  '  install-bench	  - Install previously built "cpufreq-bench" util files from the'
389705c80dfSRoman Storozhenko	@echo  '                    output dir defined by "O" cmdline option (default: current dir)'
390705c80dfSRoman Storozhenko	@echo  '                    to the install dir  defined by "DESTDIR" cmdline or Makefile'
391705c80dfSRoman Storozhenko	@echo  '                    config block option (default: "")'
392705c80dfSRoman Storozhenko	@echo  ''
393705c80dfSRoman Storozhenko	@echo  'Cleaning targets:'
394705c80dfSRoman Storozhenko	@echo  '  clean		  - Clean build artifacts from the dir defined by "O" cmdline'
395705c80dfSRoman Storozhenko	@echo  '                    option (default: current dir)'
396705c80dfSRoman Storozhenko	@echo  '  uninstall	  - Remove previously installed files from the dir defined by "DESTDIR"'
397705c80dfSRoman Storozhenko	@echo  '                    cmdline or Makefile config block option (default: "")'
398705c80dfSRoman Storozhenko
399705c80dfSRoman Storozhenko.PHONY: all utils libcpupower update-po create-gmo install-lib install-tools install-man install-gmo install uninstall clean help
400