xref: /openbmc/linux/tools/lib/thermal/Makefile (revision ecc23d0a422a3118fcf6e4f0a46e17a6c2047b02)
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