xref: /linux/tools/lib/thermal/Makefile (revision 4f38da1f027ea2c9f01bb71daa7a299c191b6940)
147c4b0deSDaniel Lezcano# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
247c4b0deSDaniel Lezcano# Most of this file is copied from tools/lib/perf/Makefile
347c4b0deSDaniel Lezcano
447c4b0deSDaniel LezcanoLIBTHERMAL_VERSION = 0
547c4b0deSDaniel LezcanoLIBTHERMAL_PATCHLEVEL = 0
647c4b0deSDaniel LezcanoLIBTHERMAL_EXTRAVERSION = 1
747c4b0deSDaniel Lezcano
847c4b0deSDaniel LezcanoMAKEFLAGS += --no-print-directory
947c4b0deSDaniel Lezcano
1047c4b0deSDaniel Lezcanoifeq ($(srctree),)
1147c4b0deSDaniel Lezcanosrctree := $(patsubst %/,%,$(dir $(CURDIR)))
1247c4b0deSDaniel Lezcanosrctree := $(patsubst %/,%,$(dir $(srctree)))
1347c4b0deSDaniel Lezcanosrctree := $(patsubst %/,%,$(dir $(srctree)))
1447c4b0deSDaniel Lezcano# $(info Determined 'srctree' to be $(srctree))
1547c4b0deSDaniel Lezcanoendif
1647c4b0deSDaniel Lezcano
1747c4b0deSDaniel LezcanoINSTALL = install
1847c4b0deSDaniel Lezcano
1947c4b0deSDaniel Lezcano# Use DESTDIR for installing into a different root directory.
2047c4b0deSDaniel Lezcano# This is useful for building a package. The program will be
2147c4b0deSDaniel Lezcano# installed in this directory as if it was the root directory.
2247c4b0deSDaniel Lezcano# Then the build tool can move it later.
2347c4b0deSDaniel LezcanoDESTDIR ?=
2447c4b0deSDaniel LezcanoDESTDIR_SQ = '$(subst ','\'',$(DESTDIR))'
2547c4b0deSDaniel Lezcano
2647c4b0deSDaniel Lezcanoinclude $(srctree)/tools/scripts/Makefile.include
2747c4b0deSDaniel Lezcanoinclude $(srctree)/tools/scripts/Makefile.arch
2847c4b0deSDaniel Lezcano
2947c4b0deSDaniel Lezcanoifeq ($(LP64), 1)
3047c4b0deSDaniel Lezcano  libdir_relative = lib64
3147c4b0deSDaniel Lezcanoelse
3247c4b0deSDaniel Lezcano  libdir_relative = lib
3347c4b0deSDaniel Lezcanoendif
3447c4b0deSDaniel Lezcano
3547c4b0deSDaniel Lezcanoprefix ?=
3647c4b0deSDaniel Lezcanolibdir = $(prefix)/$(libdir_relative)
3747c4b0deSDaniel Lezcano
3847c4b0deSDaniel Lezcano# Shell quotes
3947c4b0deSDaniel Lezcanolibdir_SQ = $(subst ','\'',$(libdir))
4047c4b0deSDaniel Lezcanolibdir_relative_SQ = $(subst ','\'',$(libdir_relative))
4147c4b0deSDaniel Lezcano
4247c4b0deSDaniel Lezcano# Set compile option CFLAGS
4347c4b0deSDaniel Lezcanoifdef EXTRA_CFLAGS
4447c4b0deSDaniel Lezcano  CFLAGS := $(EXTRA_CFLAGS)
4547c4b0deSDaniel Lezcanoelse
4647c4b0deSDaniel Lezcano  CFLAGS := -g -Wall
4747c4b0deSDaniel Lezcanoendif
4847c4b0deSDaniel Lezcano
49b31f7f72SSascha HauerNL3_CFLAGS = $(shell pkg-config --cflags libnl-3.0 2>/dev/null)
50b31f7f72SSascha Hauerifeq ($(NL3_CFLAGS),)
51b31f7f72SSascha HauerNL3_CFLAGS = -I/usr/include/libnl3
52b31f7f72SSascha Hauerendif
53b31f7f72SSascha Hauer
5447c4b0deSDaniel LezcanoINCLUDES = \
5547c4b0deSDaniel Lezcano-I$(srctree)/tools/lib/thermal/include \
5647c4b0deSDaniel Lezcano-I$(srctree)/tools/lib/ \
5747c4b0deSDaniel Lezcano-I$(srctree)/tools/include \
5847c4b0deSDaniel Lezcano-I$(srctree)/tools/arch/$(SRCARCH)/include/ \
5947c4b0deSDaniel Lezcano-I$(srctree)/tools/arch/$(SRCARCH)/include/uapi \
6047c4b0deSDaniel Lezcano-I$(srctree)/tools/include/uapi
6147c4b0deSDaniel Lezcano
6247c4b0deSDaniel Lezcano# Append required CFLAGS
6347c4b0deSDaniel Lezcanooverride CFLAGS += $(EXTRA_WARNINGS)
6447c4b0deSDaniel Lezcanooverride CFLAGS += -Werror -Wall
6547c4b0deSDaniel Lezcanooverride CFLAGS += -fPIC
66b31f7f72SSascha Haueroverride CFLAGS += $(NL3_CFLAGS)
6747c4b0deSDaniel Lezcanooverride CFLAGS += $(INCLUDES)
6847c4b0deSDaniel Lezcanooverride CFLAGS += -fvisibility=hidden
6947c4b0deSDaniel Lezcanooverride CFGLAS += -Wl,-L.
7047c4b0deSDaniel Lezcanooverride CFGLAS += -Wl,-lthermal
7147c4b0deSDaniel Lezcano
7247c4b0deSDaniel Lezcanoall:
7347c4b0deSDaniel Lezcano
7447c4b0deSDaniel Lezcanoexport srctree OUTPUT CC LD CFLAGS V
7547c4b0deSDaniel Lezcanoexport DESTDIR DESTDIR_SQ
7647c4b0deSDaniel Lezcano
7747c4b0deSDaniel Lezcanoinclude $(srctree)/tools/build/Makefile.include
7847c4b0deSDaniel Lezcano
7947c4b0deSDaniel LezcanoVERSION_SCRIPT := libthermal.map
8047c4b0deSDaniel Lezcano
8147c4b0deSDaniel LezcanoPATCHLEVEL    = $(LIBTHERMAL_PATCHLEVEL)
8247c4b0deSDaniel LezcanoEXTRAVERSION  = $(LIBTHERMAL_EXTRAVERSION)
8347c4b0deSDaniel LezcanoVERSION       = $(LIBTHERMAL_VERSION).$(LIBTHERMAL_PATCHLEVEL).$(LIBTHERMAL_EXTRAVERSION)
8447c4b0deSDaniel Lezcano
8547c4b0deSDaniel LezcanoLIBTHERMAL_SO := $(OUTPUT)libthermal.so.$(VERSION)
8647c4b0deSDaniel LezcanoLIBTHERMAL_A  := $(OUTPUT)libthermal.a
8747c4b0deSDaniel LezcanoLIBTHERMAL_IN := $(OUTPUT)libthermal-in.o
8847c4b0deSDaniel LezcanoLIBTHERMAL_PC := $(OUTPUT)libthermal.pc
8947c4b0deSDaniel LezcanoLIBTHERMAL_ALL := $(LIBTHERMAL_A) $(OUTPUT)libthermal.so*
9047c4b0deSDaniel Lezcano
9147c4b0deSDaniel LezcanoTHERMAL_UAPI := include/uapi/linux/thermal.h
9247c4b0deSDaniel Lezcano
9347c4b0deSDaniel Lezcano$(THERMAL_UAPI): FORCE
9447c4b0deSDaniel Lezcano	ln -sf $(srctree)/$@ $(srctree)/tools/$@
9547c4b0deSDaniel Lezcano
9647c4b0deSDaniel Lezcano$(LIBTHERMAL_IN): FORCE
9747c4b0deSDaniel Lezcano	$(Q)$(MAKE) $(build)=libthermal
9847c4b0deSDaniel Lezcano
9947c4b0deSDaniel Lezcano$(LIBTHERMAL_A): $(LIBTHERMAL_IN)
10047c4b0deSDaniel Lezcano	$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIBTHERMAL_IN)
10147c4b0deSDaniel Lezcano
10247c4b0deSDaniel Lezcano$(LIBTHERMAL_SO): $(LIBTHERMAL_IN)
10347c4b0deSDaniel Lezcano	$(QUIET_LINK)$(CC) --shared -Wl,-soname,libthermal.so \
10447c4b0deSDaniel Lezcano                                    -Wl,--version-script=$(VERSION_SCRIPT) $^ -o $@
10547c4b0deSDaniel Lezcano	@ln -sf $(@F) $(OUTPUT)libthermal.so
10647c4b0deSDaniel Lezcano	@ln -sf $(@F) $(OUTPUT)libthermal.so.$(LIBTHERMAL_VERSION)
10747c4b0deSDaniel Lezcano
10847c4b0deSDaniel Lezcano
10947c4b0deSDaniel Lezcanolibs: $(THERMAL_UAPI) $(LIBTHERMAL_A) $(LIBTHERMAL_SO) $(LIBTHERMAL_PC)
11047c4b0deSDaniel Lezcano
11147c4b0deSDaniel Lezcanoall: fixdep
11247c4b0deSDaniel Lezcano	$(Q)$(MAKE) libs
11347c4b0deSDaniel Lezcano
11447c4b0deSDaniel Lezcanoclean:
11547c4b0deSDaniel Lezcano	$(call QUIET_CLEAN, libthermal) $(RM) $(LIBTHERMAL_A) \
116c5426dccSzhang jiao                *.o *~ *.a *.so *.so.$(VERSION) *.so.$(LIBTHERMAL_VERSION) \
117c5426dccSzhang jiao                .*.d .*.cmd LIBTHERMAL-CFLAGS $(LIBTHERMAL_PC) \
118c5426dccSzhang jiao                $(srctree)/tools/$(THERMAL_UAPI)
11947c4b0deSDaniel Lezcano
12047c4b0deSDaniel Lezcano$(LIBTHERMAL_PC):
12147c4b0deSDaniel Lezcano	$(QUIET_GEN)sed -e "s|@PREFIX@|$(prefix)|" \
12247c4b0deSDaniel Lezcano		-e "s|@LIBDIR@|$(libdir_SQ)|" \
12347c4b0deSDaniel Lezcano		-e "s|@VERSION@|$(VERSION)|" \
12447c4b0deSDaniel Lezcano		< libthermal.pc.template > $@
12547c4b0deSDaniel Lezcano
12647c4b0deSDaniel Lezcanodefine do_install_mkdir
12747c4b0deSDaniel Lezcano	if [ ! -d '$(DESTDIR_SQ)$1' ]; then             \
12847c4b0deSDaniel Lezcano		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1'; \
12947c4b0deSDaniel Lezcano	fi
13047c4b0deSDaniel Lezcanoendef
13147c4b0deSDaniel Lezcano
13247c4b0deSDaniel Lezcanodefine do_install
13347c4b0deSDaniel Lezcano	if [ ! -d '$(DESTDIR_SQ)$2' ]; then             \
13447c4b0deSDaniel Lezcano		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \
13547c4b0deSDaniel Lezcano	fi;                                             \
13647c4b0deSDaniel Lezcano	$(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR_SQ)$2'
13747c4b0deSDaniel Lezcanoendef
13847c4b0deSDaniel Lezcano
13947c4b0deSDaniel Lezcanoinstall_lib: libs
14047c4b0deSDaniel Lezcano	$(call QUIET_INSTALL, $(LIBTHERMAL_ALL)) \
14147c4b0deSDaniel Lezcano		$(call do_install_mkdir,$(libdir_SQ)); \
142*1375152bSEmil Dahl Juhl		cp -fR --preserve=mode,timestamp $(LIBTHERMAL_ALL) $(DESTDIR)$(libdir_SQ)
14347c4b0deSDaniel Lezcano
14447c4b0deSDaniel Lezcanoinstall_headers:
14547c4b0deSDaniel Lezcano	$(call QUIET_INSTALL, headers) \
14647c4b0deSDaniel Lezcano		$(call do_install,include/thermal.h,$(prefix)/include/thermal,644); \
14747c4b0deSDaniel Lezcano
14847c4b0deSDaniel Lezcanoinstall_pkgconfig: $(LIBTHERMAL_PC)
14947c4b0deSDaniel Lezcano	$(call QUIET_INSTALL, $(LIBTHERMAL_PC)) \
15047c4b0deSDaniel Lezcano		$(call do_install,$(LIBTHERMAL_PC),$(libdir_SQ)/pkgconfig,644)
15147c4b0deSDaniel Lezcano
15247c4b0deSDaniel Lezcanoinstall_doc:
15347c4b0deSDaniel Lezcano	$(Q)$(MAKE) -C Documentation install-man install-html install-examples
15447c4b0deSDaniel Lezcano
15547c4b0deSDaniel Lezcanoinstall: install_lib install_headers install_pkgconfig
15647c4b0deSDaniel Lezcano
15747c4b0deSDaniel LezcanoFORCE:
15847c4b0deSDaniel Lezcano
15947c4b0deSDaniel Lezcano.PHONY: all install clean FORCE
160