License cleanup: add SPDX GPL-2.0 license identifier to files with no license
[linux-block.git] / tools / lib / lockdep / Makefile
CommitLineData
b2441318 1# SPDX-License-Identifier: GPL-2.0
5634bd7d
SL
2# file format version
3FILE_VERSION = 1
4
0041898e 5LIBLOCKDEP_VERSION=$(shell make --no-print-directory -sC ../../.. kernelversion)
5634bd7d
SL
6
7# Makefiles suck: This macro sets a default value of $(2) for the
8# variable named by $(1), unless the variable has been set by
9# environment or command line. This is necessary for CC and AR
10# because make sets default values, so the simpler ?= approach
11# won't work as expected.
12define allow-override
13 $(if $(or $(findstring environment,$(origin $(1))),\
14 $(findstring command line,$(origin $(1)))),,\
15 $(eval $(1) = $(2)))
16endef
17
d1e40e59 18# Allow setting CC and AR and LD, or setting CROSS_COMPILE as a prefix.
5634bd7d
SL
19$(call allow-override,CC,$(CROSS_COMPILE)gcc)
20$(call allow-override,AR,$(CROSS_COMPILE)ar)
d1e40e59 21$(call allow-override,LD,$(CROSS_COMPILE)ld)
5634bd7d
SL
22
23INSTALL = install
24
25# Use DESTDIR for installing into a different root directory.
26# This is useful for building a package. The program will be
27# installed in this directory as if it was the root directory.
28# Then the build tool can move it later.
29DESTDIR ?=
30DESTDIR_SQ = '$(subst ','\'',$(DESTDIR))'
31
32prefix ?= /usr/local
33libdir_relative = lib
34libdir = $(prefix)/$(libdir_relative)
35bindir_relative = bin
36bindir = $(prefix)/$(bindir_relative)
37
38export DESTDIR DESTDIR_SQ INSTALL
39
9244e2c6
JO
40MAKEFLAGS += --no-print-directory
41
42include ../../scripts/Makefile.include
43
5634bd7d
SL
44# copy a bit from Linux kbuild
45
46ifeq ("$(origin V)", "command line")
47 VERBOSE = $(V)
48endif
49ifndef VERBOSE
50 VERBOSE = 0
51endif
52
9244e2c6 53ifeq ($(srctree),)
e19b7cee 54srctree := $(patsubst %/,%,$(dir $(CURDIR)))
9244e2c6
JO
55srctree := $(patsubst %/,%,$(dir $(srctree)))
56srctree := $(patsubst %/,%,$(dir $(srctree)))
57#$(info Determined 'srctree' to be $(srctree))
5634bd7d
SL
58endif
59
5634bd7d
SL
60# Shell quotes
61libdir_SQ = $(subst ','\'',$(libdir))
62bindir_SQ = $(subst ','\'',$(bindir))
63
9244e2c6
JO
64LIB_IN := $(OUTPUT)liblockdep-in.o
65
5634bd7d 66BIN_FILE = lockdep
9244e2c6 67LIB_FILE = $(OUTPUT)liblockdep.a $(OUTPUT)liblockdep.so.$(LIBLOCKDEP_VERSION)
5634bd7d
SL
68
69CONFIG_INCLUDES =
70CONFIG_LIBS =
71CONFIG_FLAGS =
72
73OBJ = $@
74N =
75
76export Q VERBOSE
77
8baeccdc 78INCLUDES = -I. -I./uinclude -I./include -I../../include $(CONFIG_INCLUDES)
5634bd7d
SL
79
80# Set compile option CFLAGS if not set elsewhere
81CFLAGS ?= -g -DCONFIG_LOCKDEP -DCONFIG_STACKTRACE -DCONFIG_PROVE_LOCKING -DBITS_PER_LONG=__WORDSIZE -DLIBLOCKDEP_VERSION='"$(LIBLOCKDEP_VERSION)"' -rdynamic -O0 -g
9244e2c6 82CFLAGS += -fPIC
db8f7796 83CFLAGS += -Wall
5634bd7d
SL
84
85override CFLAGS += $(CONFIG_FLAGS) $(INCLUDES) $(PLUGIN_DIR_SQ)
86
87ifeq ($(VERBOSE),1)
88 Q =
5634bd7d
SL
89 print_shared_lib_compile =
90 print_install =
91else
92 Q = @
9244e2c6
JO
93 print_shared_lib_compile = echo ' LD '$(OBJ);
94 print_static_lib_build = echo ' LD '$(OBJ);
95 print_install = echo ' INSTALL '$1' to $(DESTDIR_SQ)$2';
5634bd7d
SL
96endif
97
7c422f55
JO
98all:
99
9244e2c6 100export srctree OUTPUT CC LD CFLAGS V
ab6201d0 101include $(srctree)/tools/build/Makefile.include
5634bd7d
SL
102
103do_compile_shared_library = \
104 ($(print_shared_lib_compile) \
d8633a32 105 $(CC) $(LDFLAGS) --shared $^ -o $@ -lpthread -ldl -Wl,-soname='$(@F)';$(shell ln -sf $(@F) $(@D)/liblockdep.so))
5634bd7d
SL
106
107do_build_static_lib = \
108 ($(print_static_lib_build) \
109 $(RM) $@; $(AR) rcs $@ $^)
110
5634bd7d
SL
111CMD_TARGETS = $(LIB_FILE)
112
113TARGETS = $(CMD_TARGETS)
114
115
7c422f55 116all: fixdep all_cmd
5634bd7d
SL
117
118all_cmd: $(CMD_TARGETS)
119
9244e2c6
JO
120$(LIB_IN): force
121 $(Q)$(MAKE) $(build)=liblockdep
122
ea59f30d 123$(OUTPUT)liblockdep.so.$(LIBLOCKDEP_VERSION): $(LIB_IN)
5634bd7d
SL
124 $(Q)$(do_compile_shared_library)
125
ea59f30d 126$(OUTPUT)liblockdep.a: $(LIB_IN)
5634bd7d
SL
127 $(Q)$(do_build_static_lib)
128
5634bd7d
SL
129tags: force
130 $(RM) tags
131 find . -name '*.[ch]' | xargs ctags --extra=+f --c-kinds=+px \
132 --regex-c++='/_PE\(([^,)]*).*/PEVENT_ERRNO__\1/'
133
134TAGS: force
135 $(RM) TAGS
136 find . -name '*.[ch]' | xargs etags \
137 --regex='/_PE(\([^,)]*\).*/PEVENT_ERRNO__\1/'
138
139define do_install
140 $(print_install) \
141 if [ ! -d '$(DESTDIR_SQ)$2' ]; then \
142 $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$2'; \
143 fi; \
144 $(INSTALL) $1 '$(DESTDIR_SQ)$2'
145endef
146
147install_lib: all_cmd
148 $(Q)$(call do_install,$(LIB_FILE),$(libdir_SQ))
149 $(Q)$(call do_install,$(BIN_FILE),$(bindir_SQ))
150
151install: install_lib
152
153clean:
ea59f30d 154 $(RM) $(OUTPUT)*.o *~ $(TARGETS) $(OUTPUT)*.a $(OUTPUT)*liblockdep*.so* $(VERSION_FILES) $(OUTPUT).*.d $(OUTPUT).*.cmd
5634bd7d
SL
155 $(RM) tags TAGS
156
5634bd7d
SL
157PHONY += force
158force:
159
160# Declare the contents of the .PHONY variable as phony. We keep that
161# information in a variable so we can use it in if_changed and friends.
162.PHONY: $(PHONY)