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 Lezcanoifeq ("$(origin V)", "command line") 4347c4b0deSDaniel Lezcano VERBOSE = $(V) 4447c4b0deSDaniel Lezcanoendif 4547c4b0deSDaniel Lezcanoifndef VERBOSE 4647c4b0deSDaniel Lezcano VERBOSE = 0 4747c4b0deSDaniel Lezcanoendif 4847c4b0deSDaniel Lezcano 4947c4b0deSDaniel Lezcanoifeq ($(VERBOSE),1) 5047c4b0deSDaniel Lezcano Q = 5147c4b0deSDaniel Lezcanoelse 5247c4b0deSDaniel Lezcano Q = @ 5347c4b0deSDaniel Lezcanoendif 5447c4b0deSDaniel Lezcano 5547c4b0deSDaniel Lezcano# Set compile option CFLAGS 5647c4b0deSDaniel Lezcanoifdef EXTRA_CFLAGS 5747c4b0deSDaniel Lezcano CFLAGS := $(EXTRA_CFLAGS) 5847c4b0deSDaniel Lezcanoelse 5947c4b0deSDaniel Lezcano CFLAGS := -g -Wall 6047c4b0deSDaniel Lezcanoendif 6147c4b0deSDaniel Lezcano 6247c4b0deSDaniel LezcanoINCLUDES = \ 6347c4b0deSDaniel Lezcano-I/usr/include/libnl3 \ 6447c4b0deSDaniel Lezcano-I$(srctree)/tools/lib/thermal/include \ 6547c4b0deSDaniel Lezcano-I$(srctree)/tools/lib/ \ 6647c4b0deSDaniel Lezcano-I$(srctree)/tools/include \ 6747c4b0deSDaniel Lezcano-I$(srctree)/tools/arch/$(SRCARCH)/include/ \ 6847c4b0deSDaniel Lezcano-I$(srctree)/tools/arch/$(SRCARCH)/include/uapi \ 6947c4b0deSDaniel Lezcano-I$(srctree)/tools/include/uapi 7047c4b0deSDaniel Lezcano 7147c4b0deSDaniel Lezcano# Append required CFLAGS 7247c4b0deSDaniel Lezcanooverride CFLAGS += $(EXTRA_WARNINGS) 7347c4b0deSDaniel Lezcanooverride CFLAGS += -Werror -Wall 7447c4b0deSDaniel Lezcanooverride CFLAGS += -fPIC 7547c4b0deSDaniel Lezcanooverride CFLAGS += $(INCLUDES) 7647c4b0deSDaniel Lezcanooverride CFLAGS += -fvisibility=hidden 7747c4b0deSDaniel Lezcanooverride CFGLAS += -Wl,-L. 7847c4b0deSDaniel Lezcanooverride CFGLAS += -Wl,-lthermal 7947c4b0deSDaniel Lezcano 8047c4b0deSDaniel Lezcanoall: 8147c4b0deSDaniel Lezcano 8247c4b0deSDaniel Lezcanoexport srctree OUTPUT CC LD CFLAGS V 8347c4b0deSDaniel Lezcanoexport DESTDIR DESTDIR_SQ 8447c4b0deSDaniel Lezcano 8547c4b0deSDaniel Lezcanoinclude $(srctree)/tools/build/Makefile.include 8647c4b0deSDaniel Lezcano 8747c4b0deSDaniel LezcanoVERSION_SCRIPT := libthermal.map 8847c4b0deSDaniel Lezcano 8947c4b0deSDaniel LezcanoPATCHLEVEL = $(LIBTHERMAL_PATCHLEVEL) 9047c4b0deSDaniel LezcanoEXTRAVERSION = $(LIBTHERMAL_EXTRAVERSION) 9147c4b0deSDaniel LezcanoVERSION = $(LIBTHERMAL_VERSION).$(LIBTHERMAL_PATCHLEVEL).$(LIBTHERMAL_EXTRAVERSION) 9247c4b0deSDaniel Lezcano 9347c4b0deSDaniel LezcanoLIBTHERMAL_SO := $(OUTPUT)libthermal.so.$(VERSION) 9447c4b0deSDaniel LezcanoLIBTHERMAL_A := $(OUTPUT)libthermal.a 9547c4b0deSDaniel LezcanoLIBTHERMAL_IN := $(OUTPUT)libthermal-in.o 9647c4b0deSDaniel LezcanoLIBTHERMAL_PC := $(OUTPUT)libthermal.pc 9747c4b0deSDaniel LezcanoLIBTHERMAL_ALL := $(LIBTHERMAL_A) $(OUTPUT)libthermal.so* 9847c4b0deSDaniel Lezcano 9947c4b0deSDaniel LezcanoTHERMAL_UAPI := include/uapi/linux/thermal.h 10047c4b0deSDaniel Lezcano 10147c4b0deSDaniel Lezcano$(THERMAL_UAPI): FORCE 10247c4b0deSDaniel Lezcano ln -sf $(srctree)/$@ $(srctree)/tools/$@ 10347c4b0deSDaniel Lezcano 10447c4b0deSDaniel Lezcano$(LIBTHERMAL_IN): FORCE 10547c4b0deSDaniel Lezcano $(Q)$(MAKE) $(build)=libthermal 10647c4b0deSDaniel Lezcano 10747c4b0deSDaniel Lezcano$(LIBTHERMAL_A): $(LIBTHERMAL_IN) 10847c4b0deSDaniel Lezcano $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIBTHERMAL_IN) 10947c4b0deSDaniel Lezcano 11047c4b0deSDaniel Lezcano$(LIBTHERMAL_SO): $(LIBTHERMAL_IN) 11147c4b0deSDaniel Lezcano $(QUIET_LINK)$(CC) --shared -Wl,-soname,libthermal.so \ 11247c4b0deSDaniel Lezcano -Wl,--version-script=$(VERSION_SCRIPT) $^ -o $@ 11347c4b0deSDaniel Lezcano @ln -sf $(@F) $(OUTPUT)libthermal.so 11447c4b0deSDaniel Lezcano @ln -sf $(@F) $(OUTPUT)libthermal.so.$(LIBTHERMAL_VERSION) 11547c4b0deSDaniel Lezcano 11647c4b0deSDaniel Lezcano 11747c4b0deSDaniel Lezcanolibs: $(THERMAL_UAPI) $(LIBTHERMAL_A) $(LIBTHERMAL_SO) $(LIBTHERMAL_PC) 11847c4b0deSDaniel Lezcano 11947c4b0deSDaniel Lezcanoall: fixdep 12047c4b0deSDaniel Lezcano $(Q)$(MAKE) libs 12147c4b0deSDaniel Lezcano 12247c4b0deSDaniel Lezcanoclean: 12347c4b0deSDaniel Lezcano $(call QUIET_CLEAN, libthermal) $(RM) $(LIBTHERMAL_A) \ 124*3e8cc990Szhang jiao *.o *~ *.a *.so *.so.$(VERSION) *.so.$(LIBTHERMAL_VERSION) \ 125*3e8cc990Szhang jiao .*.d .*.cmd LIBTHERMAL-CFLAGS $(LIBTHERMAL_PC) \ 126*3e8cc990Szhang jiao $(srctree)/tools/$(THERMAL_UAPI) 12747c4b0deSDaniel Lezcano 12847c4b0deSDaniel Lezcano$(LIBTHERMAL_PC): 12947c4b0deSDaniel Lezcano $(QUIET_GEN)sed -e "s|@PREFIX@|$(prefix)|" \ 13047c4b0deSDaniel Lezcano -e "s|@LIBDIR@|$(libdir_SQ)|" \ 13147c4b0deSDaniel Lezcano -e "s|@VERSION@|$(VERSION)|" \ 13247c4b0deSDaniel Lezcano < libthermal.pc.template > $@ 13347c4b0deSDaniel Lezcano 13447c4b0deSDaniel Lezcanodefine do_install_mkdir 13547c4b0deSDaniel Lezcano if [ ! -d '$(DESTDIR_SQ)$1' ]; then \ 13647c4b0deSDaniel Lezcano $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1'; \ 13747c4b0deSDaniel Lezcano fi 13847c4b0deSDaniel Lezcanoendef 13947c4b0deSDaniel Lezcano 14047c4b0deSDaniel Lezcanodefine do_install 14147c4b0deSDaniel Lezcano if [ ! -d '$(DESTDIR_SQ)$2' ]; then \ 14247c4b0deSDaniel Lezcano $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \ 14347c4b0deSDaniel Lezcano fi; \ 14447c4b0deSDaniel Lezcano $(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR_SQ)$2' 14547c4b0deSDaniel Lezcanoendef 14647c4b0deSDaniel Lezcano 14747c4b0deSDaniel Lezcanoinstall_lib: libs 14847c4b0deSDaniel Lezcano $(call QUIET_INSTALL, $(LIBTHERMAL_ALL)) \ 14947c4b0deSDaniel Lezcano $(call do_install_mkdir,$(libdir_SQ)); \ 15047c4b0deSDaniel Lezcano cp -fpR $(LIBTHERMAL_ALL) $(DESTDIR)$(libdir_SQ) 15147c4b0deSDaniel Lezcano 15247c4b0deSDaniel Lezcanoinstall_headers: 15347c4b0deSDaniel Lezcano $(call QUIET_INSTALL, headers) \ 15447c4b0deSDaniel Lezcano $(call do_install,include/thermal.h,$(prefix)/include/thermal,644); \ 15547c4b0deSDaniel Lezcano 15647c4b0deSDaniel Lezcanoinstall_pkgconfig: $(LIBTHERMAL_PC) 15747c4b0deSDaniel Lezcano $(call QUIET_INSTALL, $(LIBTHERMAL_PC)) \ 15847c4b0deSDaniel Lezcano $(call do_install,$(LIBTHERMAL_PC),$(libdir_SQ)/pkgconfig,644) 15947c4b0deSDaniel Lezcano 16047c4b0deSDaniel Lezcanoinstall_doc: 16147c4b0deSDaniel Lezcano $(Q)$(MAKE) -C Documentation install-man install-html install-examples 16247c4b0deSDaniel Lezcano 16347c4b0deSDaniel Lezcanoinstall: install_lib install_headers install_pkgconfig 16447c4b0deSDaniel Lezcano 16547c4b0deSDaniel LezcanoFORCE: 16647c4b0deSDaniel Lezcano 16747c4b0deSDaniel Lezcano.PHONY: all install clean FORCE 168