xref: /openbmc/linux/tools/lib/thermal/Makefile (revision 47c4b0de)
1*47c4b0deSDaniel Lezcano# SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause)
2*47c4b0deSDaniel Lezcano# Most of this file is copied from tools/lib/perf/Makefile
3*47c4b0deSDaniel Lezcano
4*47c4b0deSDaniel LezcanoLIBTHERMAL_VERSION = 0
5*47c4b0deSDaniel LezcanoLIBTHERMAL_PATCHLEVEL = 0
6*47c4b0deSDaniel LezcanoLIBTHERMAL_EXTRAVERSION = 1
7*47c4b0deSDaniel Lezcano
8*47c4b0deSDaniel LezcanoMAKEFLAGS += --no-print-directory
9*47c4b0deSDaniel Lezcano
10*47c4b0deSDaniel Lezcanoifeq ($(srctree),)
11*47c4b0deSDaniel Lezcanosrctree := $(patsubst %/,%,$(dir $(CURDIR)))
12*47c4b0deSDaniel Lezcanosrctree := $(patsubst %/,%,$(dir $(srctree)))
13*47c4b0deSDaniel Lezcanosrctree := $(patsubst %/,%,$(dir $(srctree)))
14*47c4b0deSDaniel Lezcano# $(info Determined 'srctree' to be $(srctree))
15*47c4b0deSDaniel Lezcanoendif
16*47c4b0deSDaniel Lezcano
17*47c4b0deSDaniel LezcanoINSTALL = install
18*47c4b0deSDaniel Lezcano
19*47c4b0deSDaniel Lezcano# Use DESTDIR for installing into a different root directory.
20*47c4b0deSDaniel Lezcano# This is useful for building a package. The program will be
21*47c4b0deSDaniel Lezcano# installed in this directory as if it was the root directory.
22*47c4b0deSDaniel Lezcano# Then the build tool can move it later.
23*47c4b0deSDaniel LezcanoDESTDIR ?=
24*47c4b0deSDaniel LezcanoDESTDIR_SQ = '$(subst ','\'',$(DESTDIR))'
25*47c4b0deSDaniel Lezcano
26*47c4b0deSDaniel Lezcanoinclude $(srctree)/tools/scripts/Makefile.include
27*47c4b0deSDaniel Lezcanoinclude $(srctree)/tools/scripts/Makefile.arch
28*47c4b0deSDaniel Lezcano
29*47c4b0deSDaniel Lezcanoifeq ($(LP64), 1)
30*47c4b0deSDaniel Lezcano  libdir_relative = lib64
31*47c4b0deSDaniel Lezcanoelse
32*47c4b0deSDaniel Lezcano  libdir_relative = lib
33*47c4b0deSDaniel Lezcanoendif
34*47c4b0deSDaniel Lezcano
35*47c4b0deSDaniel Lezcanoprefix ?=
36*47c4b0deSDaniel Lezcanolibdir = $(prefix)/$(libdir_relative)
37*47c4b0deSDaniel Lezcano
38*47c4b0deSDaniel Lezcano# Shell quotes
39*47c4b0deSDaniel Lezcanolibdir_SQ = $(subst ','\'',$(libdir))
40*47c4b0deSDaniel Lezcanolibdir_relative_SQ = $(subst ','\'',$(libdir_relative))
41*47c4b0deSDaniel Lezcano
42*47c4b0deSDaniel Lezcanoifeq ("$(origin V)", "command line")
43*47c4b0deSDaniel Lezcano  VERBOSE = $(V)
44*47c4b0deSDaniel Lezcanoendif
45*47c4b0deSDaniel Lezcanoifndef VERBOSE
46*47c4b0deSDaniel Lezcano  VERBOSE = 0
47*47c4b0deSDaniel Lezcanoendif
48*47c4b0deSDaniel Lezcano
49*47c4b0deSDaniel Lezcanoifeq ($(VERBOSE),1)
50*47c4b0deSDaniel Lezcano  Q =
51*47c4b0deSDaniel Lezcanoelse
52*47c4b0deSDaniel Lezcano  Q = @
53*47c4b0deSDaniel Lezcanoendif
54*47c4b0deSDaniel Lezcano
55*47c4b0deSDaniel Lezcano# Set compile option CFLAGS
56*47c4b0deSDaniel Lezcanoifdef EXTRA_CFLAGS
57*47c4b0deSDaniel Lezcano  CFLAGS := $(EXTRA_CFLAGS)
58*47c4b0deSDaniel Lezcanoelse
59*47c4b0deSDaniel Lezcano  CFLAGS := -g -Wall
60*47c4b0deSDaniel Lezcanoendif
61*47c4b0deSDaniel Lezcano
62*47c4b0deSDaniel LezcanoINCLUDES = \
63*47c4b0deSDaniel Lezcano-I/usr/include/libnl3 \
64*47c4b0deSDaniel Lezcano-I$(srctree)/tools/lib/thermal/include \
65*47c4b0deSDaniel Lezcano-I$(srctree)/tools/lib/ \
66*47c4b0deSDaniel Lezcano-I$(srctree)/tools/include \
67*47c4b0deSDaniel Lezcano-I$(srctree)/tools/arch/$(SRCARCH)/include/ \
68*47c4b0deSDaniel Lezcano-I$(srctree)/tools/arch/$(SRCARCH)/include/uapi \
69*47c4b0deSDaniel Lezcano-I$(srctree)/tools/include/uapi
70*47c4b0deSDaniel Lezcano
71*47c4b0deSDaniel Lezcano# Append required CFLAGS
72*47c4b0deSDaniel Lezcanooverride CFLAGS += $(EXTRA_WARNINGS)
73*47c4b0deSDaniel Lezcanooverride CFLAGS += -Werror -Wall
74*47c4b0deSDaniel Lezcanooverride CFLAGS += -fPIC
75*47c4b0deSDaniel Lezcanooverride CFLAGS += $(INCLUDES)
76*47c4b0deSDaniel Lezcanooverride CFLAGS += -fvisibility=hidden
77*47c4b0deSDaniel Lezcanooverride CFGLAS += -Wl,-L.
78*47c4b0deSDaniel Lezcanooverride CFGLAS += -Wl,-lthermal
79*47c4b0deSDaniel Lezcano
80*47c4b0deSDaniel Lezcanoall:
81*47c4b0deSDaniel Lezcano
82*47c4b0deSDaniel Lezcanoexport srctree OUTPUT CC LD CFLAGS V
83*47c4b0deSDaniel Lezcanoexport DESTDIR DESTDIR_SQ
84*47c4b0deSDaniel Lezcano
85*47c4b0deSDaniel Lezcanoinclude $(srctree)/tools/build/Makefile.include
86*47c4b0deSDaniel Lezcano
87*47c4b0deSDaniel LezcanoVERSION_SCRIPT := libthermal.map
88*47c4b0deSDaniel Lezcano
89*47c4b0deSDaniel LezcanoPATCHLEVEL    = $(LIBTHERMAL_PATCHLEVEL)
90*47c4b0deSDaniel LezcanoEXTRAVERSION  = $(LIBTHERMAL_EXTRAVERSION)
91*47c4b0deSDaniel LezcanoVERSION       = $(LIBTHERMAL_VERSION).$(LIBTHERMAL_PATCHLEVEL).$(LIBTHERMAL_EXTRAVERSION)
92*47c4b0deSDaniel Lezcano
93*47c4b0deSDaniel LezcanoLIBTHERMAL_SO := $(OUTPUT)libthermal.so.$(VERSION)
94*47c4b0deSDaniel LezcanoLIBTHERMAL_A  := $(OUTPUT)libthermal.a
95*47c4b0deSDaniel LezcanoLIBTHERMAL_IN := $(OUTPUT)libthermal-in.o
96*47c4b0deSDaniel LezcanoLIBTHERMAL_PC := $(OUTPUT)libthermal.pc
97*47c4b0deSDaniel LezcanoLIBTHERMAL_ALL := $(LIBTHERMAL_A) $(OUTPUT)libthermal.so*
98*47c4b0deSDaniel Lezcano
99*47c4b0deSDaniel LezcanoTHERMAL_UAPI := include/uapi/linux/thermal.h
100*47c4b0deSDaniel Lezcano
101*47c4b0deSDaniel Lezcano$(THERMAL_UAPI): FORCE
102*47c4b0deSDaniel Lezcano	ln -sf $(srctree)/$@ $(srctree)/tools/$@
103*47c4b0deSDaniel Lezcano
104*47c4b0deSDaniel Lezcano$(LIBTHERMAL_IN): FORCE
105*47c4b0deSDaniel Lezcano	$(Q)$(MAKE) $(build)=libthermal
106*47c4b0deSDaniel Lezcano
107*47c4b0deSDaniel Lezcano$(LIBTHERMAL_A): $(LIBTHERMAL_IN)
108*47c4b0deSDaniel Lezcano	$(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(LIBTHERMAL_IN)
109*47c4b0deSDaniel Lezcano
110*47c4b0deSDaniel Lezcano$(LIBTHERMAL_SO): $(LIBTHERMAL_IN)
111*47c4b0deSDaniel Lezcano	$(QUIET_LINK)$(CC) --shared -Wl,-soname,libthermal.so \
112*47c4b0deSDaniel Lezcano                                    -Wl,--version-script=$(VERSION_SCRIPT) $^ -o $@
113*47c4b0deSDaniel Lezcano	@ln -sf $(@F) $(OUTPUT)libthermal.so
114*47c4b0deSDaniel Lezcano	@ln -sf $(@F) $(OUTPUT)libthermal.so.$(LIBTHERMAL_VERSION)
115*47c4b0deSDaniel Lezcano
116*47c4b0deSDaniel Lezcano
117*47c4b0deSDaniel Lezcanolibs: $(THERMAL_UAPI) $(LIBTHERMAL_A) $(LIBTHERMAL_SO) $(LIBTHERMAL_PC)
118*47c4b0deSDaniel Lezcano
119*47c4b0deSDaniel Lezcanoall: fixdep
120*47c4b0deSDaniel Lezcano	$(Q)$(MAKE) libs
121*47c4b0deSDaniel Lezcano
122*47c4b0deSDaniel Lezcanoclean:
123*47c4b0deSDaniel Lezcano	$(call QUIET_CLEAN, libthermal) $(RM) $(LIBTHERMAL_A) \
124*47c4b0deSDaniel Lezcano                *.o *~ *.a *.so *.so.$(VERSION) *.so.$(LIBTHERMAL_VERSION) .*.d .*.cmd LIBTHERMAL-CFLAGS $(LIBTHERMAL_PC)
125*47c4b0deSDaniel Lezcano
126*47c4b0deSDaniel Lezcano$(LIBTHERMAL_PC):
127*47c4b0deSDaniel Lezcano	$(QUIET_GEN)sed -e "s|@PREFIX@|$(prefix)|" \
128*47c4b0deSDaniel Lezcano		-e "s|@LIBDIR@|$(libdir_SQ)|" \
129*47c4b0deSDaniel Lezcano		-e "s|@VERSION@|$(VERSION)|" \
130*47c4b0deSDaniel Lezcano		< libthermal.pc.template > $@
131*47c4b0deSDaniel Lezcano
132*47c4b0deSDaniel Lezcanodefine do_install_mkdir
133*47c4b0deSDaniel Lezcano	if [ ! -d '$(DESTDIR_SQ)$1' ]; then             \
134*47c4b0deSDaniel Lezcano		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$1'; \
135*47c4b0deSDaniel Lezcano	fi
136*47c4b0deSDaniel Lezcanoendef
137*47c4b0deSDaniel Lezcano
138*47c4b0deSDaniel Lezcanodefine do_install
139*47c4b0deSDaniel Lezcano	if [ ! -d '$(DESTDIR_SQ)$2' ]; then             \
140*47c4b0deSDaniel Lezcano		$(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \
141*47c4b0deSDaniel Lezcano	fi;                                             \
142*47c4b0deSDaniel Lezcano	$(INSTALL) $1 $(if $3,-m $3,) '$(DESTDIR_SQ)$2'
143*47c4b0deSDaniel Lezcanoendef
144*47c4b0deSDaniel Lezcano
145*47c4b0deSDaniel Lezcanoinstall_lib: libs
146*47c4b0deSDaniel Lezcano	$(call QUIET_INSTALL, $(LIBTHERMAL_ALL)) \
147*47c4b0deSDaniel Lezcano		$(call do_install_mkdir,$(libdir_SQ)); \
148*47c4b0deSDaniel Lezcano		cp -fpR $(LIBTHERMAL_ALL) $(DESTDIR)$(libdir_SQ)
149*47c4b0deSDaniel Lezcano
150*47c4b0deSDaniel Lezcanoinstall_headers:
151*47c4b0deSDaniel Lezcano	$(call QUIET_INSTALL, headers) \
152*47c4b0deSDaniel Lezcano		$(call do_install,include/thermal.h,$(prefix)/include/thermal,644); \
153*47c4b0deSDaniel Lezcano
154*47c4b0deSDaniel Lezcanoinstall_pkgconfig: $(LIBTHERMAL_PC)
155*47c4b0deSDaniel Lezcano	$(call QUIET_INSTALL, $(LIBTHERMAL_PC)) \
156*47c4b0deSDaniel Lezcano		$(call do_install,$(LIBTHERMAL_PC),$(libdir_SQ)/pkgconfig,644)
157*47c4b0deSDaniel Lezcano
158*47c4b0deSDaniel Lezcanoinstall_doc:
159*47c4b0deSDaniel Lezcano	$(Q)$(MAKE) -C Documentation install-man install-html install-examples
160*47c4b0deSDaniel Lezcano
161*47c4b0deSDaniel Lezcanoinstall: install_lib install_headers install_pkgconfig
162*47c4b0deSDaniel Lezcano
163*47c4b0deSDaniel LezcanoFORCE:
164*47c4b0deSDaniel Lezcano
165*47c4b0deSDaniel Lezcano.PHONY: all install clean FORCE
166