File: Makefile

package info (click to toggle)
fwupdate 12-7
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 588 kB
  • sloc: ansic: 4,329; makefile: 358; sh: 49
file content (152 lines) | stat: -rw-r--r-- 5,148 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
default : all

ifneq	($(origin TOPDIR),undefined)
TOP     := $(abspath $(TOPDIR))
else
TOP     := $(abspath ..)
endif
include $(TOP)/Make.defaults
include $(TOP)/Make.rules
VPATH	= $(TOP)/linux

LIB_LIBS= pthread
BIN_LIBS= popt pthread
PKLIBS	= efivar efiboot
CFLAGS	?= -g3 -Og -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 \
	   -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 \
	   -grecord-gcc-switches
PJONES	=
BIN_CCLDFLAGS = $(foreach lib,$(BIN_LIBS),-l$(lib)) \
	$(foreach pklib,$(PKLIBS), \
		$(shell $(PKG_CONFIG) --libs-only-l --libs-only-other $(pklib))) \
	$(LDFLAGS) -pie -fPIE -Wl,-z,relro,-z,now -L.
LIB_CCLDFLAGS = $(foreach lib,$(LIB_LIBS),-l$(lib)) \
	$(foreach pklib,$(PKLIBS), \
		$(shell $(PKG_CONFIG) --libs-only-l --libs-only-other $(pklib))) \
	$(LDFLAGS) -shared -fPIC -Wl,-z,relro,-z,now

HAVE_LIBSMBIOS := $(shell $(PKG_CONFIG) --exists libsmbios_c && \
				echo yes || echo no)
ifeq ($(HAVE_LIBSMBIOS),yes)
	PKLIBS += libsmbios_c
	CFLAGS += -DFWUPDATE_HAVE_LIBSMBIOS__
endif
BUILDFLAGS := $(CFLAGS) -Wall -Wextra -Werror -Wno-error=cpp \
	-Wno-unused-result -Wno-unused-function \
	-Wsign-compare -Werror=sign-compare \
	-Wno-error=missing-field-initializers -Wno-missing-field-initializers \
	-fshort-wchar --std=gnu11 \
	-DLOCALEDIR=\"$(localedir)\" -D_GNU_SOURCE \
	-DFWUP_EFI_DIR_NAME=\"$(EFIDIR)\"  \
	-DFWUP_ESP_MOUNTPOINT=\"$(ESPMOUNTPOINT)\"  \
	-I include -I $(TOP)/linux/include/ -iquote $(TOP)/include/ \
	$(foreach pklib,$(PKLIBS), $(shell $(PKG_CONFIG) --cflags $(pklib))) \
	$(PJONES)

BINTARGETS=fwupdate
INCTARGETS=include/fwup-version.h $(VPATH)/include/fwup.h
LIBTARGETS=libfwup.so
PCTARGETS=fwup.pc
POTARGETS = fwupdate.po libfwup.po
TARGETS=$(BINTARGETS) $(INCTARGETS) $(foreach x,$(LIBTARGETS),$(patsubst %.so,%.map,$(x)) $(x).1.$(VERSION) $(x).1 $(x)) $(PCTARGETS) $(POTARGETS) cleanup.service cleanup

.SUFFIXES:

all : $(TARGETS)

fwupdate : libfwup.so

include-dir :
	if [ ! -d include ]; then \
		$(INSTALL) -d -m 755 include ; \
	fi

fwupdate.c : | include/fwup.h
libfwup.c : | include/fwup.h
include/fwup.h : | include/fwup-version.h
include/fwup-version.h : | include-dir

abicheck : | clean $(LIBTARGETS)
abicheck : $(patsubst %.so,%.abicheck,$(LIBTARGETS))

abiclean :
	@rm -vf $(patsubst %.so,%.abixml,$(LIBTARGETS))

abixml : | $(LIBTARGETS)
abixml : $(patsubst %.so,%.abixml,$(LIBTARGETS))

abiupdate : abixml
	git add $(patsubst %.so,%.abixml,$(LIBTARGETS))

% : %.o
	$(CC) $(BUILDFLAGS) -o $@ $(patsubst lib%.so,-l%,$^) $(BIN_CCLDFLAGS)

%.so.1.$(VERSION) : %.o | %.map
	$(CC) $(BUILDFLAGS) \
		-Wl,-soname,$(patsubst %.o,%.so.1,$<) \
		-Wl,--version-script=$(patsubst %.o,%.map,$<) \
		-o $@ $< $(LIB_CCLDFLAGS)

%.so.1 : %.so.1.$(VERSION)
	ln -sf $< $@

%.so : %.so.1.$(VERSION)
	ln -sf $< $@

%.po : %.c
	$(XGETTEXT) -a --package-name=$(patsubst %.po,%,$@) --package-version=$(VERSION) -o $@ $^

%.o : %.c
	$(CC) $(BUILDFLAGS) -fPIC -c -o $@ $^

% : %.in
	sed -e "s,@@FWUP_VERSION@@,$(VERSION),g" \
		-e "s,@@FWUP_MAJOR_VERSION@@,$(MAJOR_VERSION),g" \
		-e "s,@@FWUP_MINOR_VERSION@@,$(MINOR_VERSION),g" \
		-e "s,@@PREFIX@@,$(prefix),g" \
		-e "s,@@EXEC_PREFIX@@,$(exec_prefix),g" \
		-e "s,@@SHAREDSTATEDIR@@,$(sharedstatedir),g" \
		-e "s,@@ESPMOUNTPOINT@@,$(ESPMOUNTPOINT),g" \
		-e "s,@@EFIDIR@@,$(EFIDIR),g" \
		-e "s,@@LIBDIR@@,$(libdir),g" \
		-e "s,@@LIBEXECDIR@@,$(libexecdir),g" \
		-e "s,@@INCLUDEDIR@@,$(includedir),g" \
		$< > $@

tester : tester.c
	$(CC) -Wall -Werror -ggdb -L. -I./include $(shell $(PKG_CONFIG) --cflags efivar) \
		$(shell $(PKG_CONFIG) --libs efivar) -lfwup -o $@ $^

test : tester
	LD_LIBRARY_PATH=$(shell pwd) ./tester

clean :
	@rm -vf $(BINTARGETS) $(LIBTARGETS) $(PCTARGETS) $(POTARGETS) *.o
	@rm -vf libfwup.so* *.map
	@rm -vf cleanup.service cleanup
	@rm -vf include/fwup-version.h

install : check_efidir_error all
	$(INSTALL) -d -m 755 $(DESTDIR)$(libdir)
	$(foreach x, $(LIBTARGETS), $(INSTALL) -m 755 $(x).1.$(VERSION) $(DESTDIR)$(libdir);)
	$(INSTALL) -d -m 755 $(DESTDIR)$(pcdir)
	$(foreach x, $(PCTARGETS), $(INSTALL) -m 644 $(x) $(DESTDIR)$(pcdir) ;)
	$(INSTALL) -d -m 755 $(DESTDIR)$(includedir)/
	$(INSTALL) -m 644 $(INCTARGETS) $(DESTDIR)$(includedir)/
	$(INSTALL) -d -m 755 $(DESTDIR)$(localedir)/en/
	$(INSTALL) -m 644 $(POTARGETS) $(DESTDIR)$(localedir)/en/
	$(INSTALL) -d -m 755 $(DESTDIR)$(bindir)/
	$(foreach x, $(BINTARGETS), $(INSTALL) -m 755 $(x) $(DESTDIR)$(bindir);)
	$(foreach x, $(wildcard *.so.1.$(VERSION)), \
		ln -fs $(x) $(patsubst %.so.1.$(VERSION),%.so.1,$(DESTDIR)$(libdir)/$(x)) ;\
		ln -fs $(x) $(patsubst %.so.1.$(VERSION),%.so,$(DESTDIR)$(libdir)/$(x)) ;\
		)
	$(INSTALL) -d -m 755 $(DESTDIR)$(sharedstatedir)/fwupdate/
	$(INSTALL) -d -m 755 $(DESTDIR)$(libexecdir)/fwupdate/
	$(INSTALL) -m 755 cleanup $(DESTDIR)$(libexecdir)/fwupdate/cleanup
	$(INSTALL) -d -m 755 $(DESTDIR)$(libdatadir)/systemd/system
	$(INSTALL) -m 644 cleanup.service \
		$(DESTDIR)$(libdatadir)/systemd/system/fwupdate-cleanup.service
	$(INSTALL) -d -m 755 $(DESTDIR)$(datadir)/bash-completion/completions/
	$(INSTALL) -m 755 $(VPATH)/bash-completion \
		$(DESTDIR)$(datadir)/bash-completion/completions/fwupdate