]>
Commit | Line | Data |
---|---|---|
85b458d9 HH |
1 | -include dracut-version.sh |
2 | ||
31c4d284 | 3 | DRACUT_MAIN_VERSION ?= $(shell env GIT_CEILING_DIRECTORIES=$(CURDIR)/.. git describe --abbrev=0 --tags --always 2>/dev/null || :) |
a76aa8e3 AT |
4 | ifeq ($(DRACUT_MAIN_VERSION),) |
5 | DRACUT_MAIN_VERSION = $(DRACUT_VERSION) | |
6 | endif | |
31c4d284 | 7 | DRACUT_FULL_VERSION ?= $(shell env GIT_CEILING_DIRECTORIES=$(CURDIR)/.. git describe --tags --always 2>/dev/null || :) |
a76aa8e3 AT |
8 | ifeq ($(DRACUT_FULL_VERSION),) |
9 | DRACUT_FULL_VERSION = $(DRACUT_VERSION) | |
10 | endif | |
7323a621 | 11 | |
4235c035 HG |
12 | HAVE_SHELLCHECK ?= $(shell command -v shellcheck >/dev/null 2>&1 && echo yes) |
13 | HAVE_SHFMT ?= $(shell command -v shfmt >/dev/null 2>&1 && echo yes) | |
07b65603 | 14 | |
103281f3 CW |
15 | -include Makefile.inc |
16 | ||
d8a454a5 HH |
17 | KVERSION ?= $(shell uname -r) |
18 | ||
13d942e1 | 19 | prefix ?= /usr |
c5a65990 | 20 | libdir ?= ${prefix}/lib |
13d942e1 | 21 | datadir ?= ${prefix}/share |
c5a65990 | 22 | pkglibdir ?= ${libdir}/dracut |
13d942e1 | 23 | sysconfdir ?= ${prefix}/etc |
5e90d266 | 24 | bindir ?= ${prefix}/bin |
13d942e1 | 25 | mandir ?= ${prefix}/share/man |
c490ea8b | 26 | CFLAGS ?= -O2 -g -Wall -std=gnu99 -D_FILE_OFFSET_BITS=64 -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 |
917f3e4d | 27 | bashcompletiondir ?= ${datadir}/bash-completion/completions |
471439f5 | 28 | pkgconfigdatadir ?= $(datadir)/pkgconfig |
59615e06 | 29 | |
e5ac28a5 | 30 | man1pages = man/lsinitrd.1 |
13f77e9f | 31 | |
e5ac28a5 | 32 | man5pages = man/dracut.conf.5 |
13f77e9f | 33 | |
e5ac28a5 JG |
34 | man7pages = man/dracut.cmdline.7 \ |
35 | man/dracut.bootup.7 \ | |
36 | man/dracut.modules.7 | |
13f77e9f | 37 | |
e5ac28a5 JG |
38 | man8pages = man/dracut.8 \ |
39 | man/dracut-catimages.8 \ | |
28eae10b HH |
40 | modules.d/98dracut-systemd/dracut-cmdline.service.8 \ |
41 | modules.d/98dracut-systemd/dracut-initqueue.service.8 \ | |
42 | modules.d/98dracut-systemd/dracut-mount.service.8 \ | |
43 | modules.d/98dracut-systemd/dracut-shutdown.service.8 \ | |
44 | modules.d/98dracut-systemd/dracut-pre-mount.service.8 \ | |
45 | modules.d/98dracut-systemd/dracut-pre-pivot.service.8 \ | |
46 | modules.d/98dracut-systemd/dracut-pre-trigger.service.8 \ | |
47 | modules.d/98dracut-systemd/dracut-pre-udev.service.8 | |
13f77e9f HH |
48 | |
49 | manpages = $(man1pages) $(man5pages) $(man7pages) $(man8pages) | |
50 | ||
b4e23ce4 | 51 | .PHONY: install clean archive testimage test all check AUTHORS CONTRIBUTORS doc |
c4da2407 | 52 | |
b4e23ce4 | 53 | all: dracut.pc dracut-install src/skipcpio/skipcpio dracut-util |
f4031e8a | 54 | |
db44331d DM |
55 | %.o : %.c |
56 | $(CC) -c $(CFLAGS) $(CPPFLAGS) $(KMOD_CFLAGS) $< -o $@ | |
57 | ||
4a1255bc | 58 | DRACUT_INSTALL_OBJECTS = \ |
3420a70d JG |
59 | src/install/dracut-install.o \ |
60 | src/install/hashmap.o\ | |
61 | src/install/log.o \ | |
62 | src/install/strv.o \ | |
63 | src/install/util.o | |
f4031e8a | 64 | |
c9baff66 | 65 | # deps generated with gcc -MM |
3420a70d JG |
66 | src/install/dracut-install.o: src/install/dracut-install.c src/install/log.h src/install/macro.h \ |
67 | src/install/hashmap.h src/install/util.h | |
68 | src/install/hashmap.o: src/install/hashmap.c src/install/util.h src/install/macro.h src/install/log.h \ | |
69 | src/install/hashmap.h | |
70 | src/install/log.o: src/install/log.c src/install/log.h src/install/macro.h src/install/util.h | |
71 | src/install/util.o: src/install/util.c src/install/util.h src/install/macro.h src/install/log.h | |
72 | src/install/strv.o: src/install/strv.c src/install/strv.h src/install/util.h src/install/macro.h src/install/log.h | |
73 | ||
74 | src/install/dracut-install: $(DRACUT_INSTALL_OBJECTS) | |
62f27ee6 | 75 | $(CC) $(LDFLAGS) -o $@ $(DRACUT_INSTALL_OBJECTS) $(LDLIBS) $(FTS_LIBS) $(KMOD_LIBS) |
24ba78cb | 76 | |
9f9bf8a1 | 77 | logtee: src/logtee/logtee.c |
51d0a545 HH |
78 | $(CC) $(LDFLAGS) -o $@ $< |
79 | ||
3420a70d | 80 | dracut-install: src/install/dracut-install |
4a1255bc | 81 | ln -fs $< $@ |
f4031e8a | 82 | |
9f9bf8a1 JG |
83 | SKIPCPIO_OBJECTS = src/skipcpio/skipcpio.o |
84 | skipcpio/skipcpio.o: src/skipcpio/skipcpio.c | |
501d82f7 HH |
85 | skipcpio/skipcpio: $(SKIPCPIO_OBJECTS) |
86 | ||
9f9bf8a1 JG |
87 | UTIL_OBJECTS = src/util/util.o |
88 | util/util.o: src/util/util.c | |
501d82f7 HH |
89 | util/util: $(UTIL_OBJECTS) |
90 | ||
9f9bf8a1 | 91 | dracut-util: src/util/util |
501d82f7 | 92 | cp -a $< $@ |
9ea68421 | 93 | |
9e587f00 HH |
94 | .PHONY: indent-c |
95 | indent-c: | |
44ca04c8 | 96 | astyle -n --quiet --options=.astylerc $(wildcard *.[ch] */*.[ch] src/*/*.[ch]) |
9e587f00 HH |
97 | |
98 | .PHONY: indent | |
99 | indent: indent-c | |
07b65603 HH |
100 | ifeq ($(HAVE_SHFMT),yes) |
101 | shfmt -w -s . | |
102 | endif | |
cdc8d9c4 | 103 | |
51d21c6b DD |
104 | src/dracut-cpio/target/release/dracut-cpio: src/dracut-cpio/src/main.rs |
105 | cargo --offline build --release --manifest-path src/dracut-cpio/Cargo.toml | |
106 | ||
107 | dracut-cpio: src/dracut-cpio/target/release/dracut-cpio | |
108 | ln -fs $< $@ | |
109 | ||
110 | ifeq ($(enable_dracut_cpio),yes) | |
111 | all: dracut-cpio | |
112 | endif | |
113 | ||
4ce3a1b1 HH |
114 | doc: $(manpages) dracut.html |
115 | ||
308015bc | 116 | ifneq ($(enable_documentation),no) |
2692a422 CW |
117 | all: doc |
118 | endif | |
119 | ||
cdc8d9c4 | 120 | %: %.xml |
3e1c531b HH |
121 | @rm -f -- "$@" |
122 | xsltproc -o "$@" -nonet http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< | |
533cd778 | 123 | |
888d53f2 | 124 | %.xml: %.asc |
3e1c531b | 125 | @rm -f -- "$@" |
eb8a7a96 | 126 | asciidoc -a "version=$(DRACUT_FULL_VERSION)" -d manpage -b docbook -o "$@" $< |
888d53f2 | 127 | |
e5ac28a5 JG |
128 | dracut.8: man/dracut.8.asc \ |
129 | man/dracut.usage.asc | |
b6c89768 | 130 | |
0eca1914 | 131 | dracut.html: man/dracut.asc $(manpages) docs/dracut.css man/dracut.usage.asc |
3e1c531b | 132 | @rm -f -- dracut.xml |
50057af1 | 133 | asciidoc -a "mainversion=$(DRACUT_MAIN_VERSION)" \ |
eb8a7a96 | 134 | -a "version=$(DRACUT_FULL_VERSION)" \ |
50057af1 | 135 | -a numbered \ |
e5ac28a5 | 136 | -d book -b docbook -o dracut.xml man/dracut.asc |
3e1c531b | 137 | @rm -f -- dracut.html |
1b4a9d8a | 138 | xsltproc -o dracut.html --xinclude -nonet \ |
0eca1914 | 139 | --stringparam custom.css.source docs/dracut.css \ |
bae44feb | 140 | --stringparam generate.css.header 1 \ |
498a1312 | 141 | http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl dracut.xml |
3e1c531b | 142 | @rm -f -- dracut.xml |
2d9f5858 | 143 | |
471439f5 HH |
144 | dracut.pc: Makefile.inc Makefile |
145 | @echo "Name: dracut" > dracut.pc | |
146 | @echo "Description: dracut" >> dracut.pc | |
eb8a7a96 | 147 | @echo "Version: $(DRACUT_FULL_VERSION)" >> dracut.pc |
471439f5 HH |
148 | @echo "dracutdir=$(pkglibdir)" >> dracut.pc |
149 | @echo "dracutmodulesdir=$(pkglibdir)/modules.d" >> dracut.pc | |
150 | @echo "dracutconfdir=$(pkglibdir)/dracut.conf.d" >> dracut.pc | |
151 | ||
152 | install: all | |
59615e06 | 153 | mkdir -p $(DESTDIR)$(pkglibdir) |
ed919de0 | 154 | mkdir -p $(DESTDIR)$(bindir) |
59615e06 HH |
155 | mkdir -p $(DESTDIR)$(sysconfdir) |
156 | mkdir -p $(DESTDIR)$(pkglibdir)/modules.d | |
0e14946a | 157 | mkdir -p $(DESTDIR)$(mandir)/man1 $(DESTDIR)$(mandir)/man5 $(DESTDIR)$(mandir)/man7 $(DESTDIR)$(mandir)/man8 |
552ecca6 | 158 | install -m 0755 dracut.sh $(DESTDIR)$(bindir)/dracut |
552ecca6 | 159 | install -m 0755 dracut-catimages.sh $(DESTDIR)$(bindir)/dracut-catimages |
552ecca6 | 160 | install -m 0755 lsinitrd.sh $(DESTDIR)$(bindir)/lsinitrd |
59615e06 | 161 | install -m 0644 dracut.conf $(DESTDIR)$(sysconfdir)/dracut.conf |
2c2c4580 | 162 | mkdir -p $(DESTDIR)$(sysconfdir)/dracut.conf.d |
a42b2b81 | 163 | mkdir -p $(DESTDIR)$(pkglibdir)/dracut.conf.d |
777f2db0 | 164 | install -m 0755 dracut-init.sh $(DESTDIR)$(pkglibdir)/dracut-init.sh |
552ecca6 | 165 | install -m 0755 dracut-functions.sh $(DESTDIR)$(pkglibdir)/dracut-functions.sh |
dbf8f6ba | 166 | install -m 0755 dracut-version.sh $(DESTDIR)$(pkglibdir)/dracut-version.sh |
4a1255bc | 167 | ln -fs dracut-functions.sh $(DESTDIR)$(pkglibdir)/dracut-functions |
552ecca6 | 168 | install -m 0755 dracut-logger.sh $(DESTDIR)$(pkglibdir)/dracut-logger.sh |
fb67e4aa | 169 | install -m 0755 dracut-initramfs-restore.sh $(DESTDIR)$(pkglibdir)/dracut-initramfs-restore |
59615e06 | 170 | cp -arx modules.d $(DESTDIR)$(pkglibdir) |
308015bc | 171 | ifneq ($(enable_documentation),no) |
13f77e9f HH |
172 | for i in $(man1pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man1/$${i##*/}; done |
173 | for i in $(man5pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man5/$${i##*/}; done | |
174 | for i in $(man7pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man7/$${i##*/}; done | |
175 | for i in $(man8pages); do install -m 0644 $$i $(DESTDIR)$(mandir)/man8/$${i##*/}; done | |
4a1255bc | 176 | ln -fs dracut.cmdline.7 $(DESTDIR)$(mandir)/man7/dracut.kernel.7 |
2692a422 | 177 | endif |
4cfd24d1 HH |
178 | if [ -n "$(systemdsystemunitdir)" ]; then \ |
179 | mkdir -p $(DESTDIR)$(systemdsystemunitdir); \ | |
7ab1d002 | 180 | ln -srf $(DESTDIR)$(pkglibdir)/modules.d/98dracut-systemd/dracut-shutdown-onfailure.service $(DESTDIR)$(systemdsystemunitdir)/dracut-shutdown-onfailure.service; \ |
28eae10b | 181 | ln -srf $(DESTDIR)$(pkglibdir)/modules.d/98dracut-systemd/dracut-shutdown.service $(DESTDIR)$(systemdsystemunitdir)/dracut-shutdown.service; \ |
4f03054e | 182 | mkdir -p $(DESTDIR)$(systemdsystemunitdir)/sysinit.target.wants; \ |
4ce3a1b1 | 183 | ln -s ../dracut-shutdown.service \ |
4f03054e | 184 | $(DESTDIR)$(systemdsystemunitdir)/sysinit.target.wants/dracut-shutdown.service; \ |
cbd69dc6 HH |
185 | mkdir -p $(DESTDIR)$(systemdsystemunitdir)/initrd.target.wants; \ |
186 | for i in \ | |
187 | dracut-cmdline.service \ | |
188 | dracut-initqueue.service \ | |
189 | dracut-mount.service \ | |
190 | dracut-pre-mount.service \ | |
191 | dracut-pre-pivot.service \ | |
192 | dracut-pre-trigger.service \ | |
193 | dracut-pre-udev.service \ | |
194 | ; do \ | |
28eae10b | 195 | ln -srf $(DESTDIR)$(pkglibdir)/modules.d/98dracut-systemd/$$i $(DESTDIR)$(systemdsystemunitdir); \ |
cbd69dc6 | 196 | ln -s ../$$i \ |
373efa44 | 197 | $(DESTDIR)$(systemdsystemunitdir)/initrd.target.wants/$$i; \ |
cbd69dc6 | 198 | done \ |
4cfd24d1 | 199 | fi |
3420a70d JG |
200 | if [ -f src/install/dracut-install ]; then \ |
201 | install -m 0755 src/install/dracut-install $(DESTDIR)$(pkglibdir)/dracut-install; \ | |
ab8bfca7 | 202 | fi |
9f9bf8a1 JG |
203 | if [ -f src/skipcpio/skipcpio ]; then \ |
204 | install -m 0755 src/skipcpio/skipcpio $(DESTDIR)$(pkglibdir)/skipcpio; \ | |
9ea68421 | 205 | fi |
501d82f7 HH |
206 | if [ -f dracut-util ]; then \ |
207 | install -m 0755 dracut-util $(DESTDIR)$(pkglibdir)/dracut-util; \ | |
208 | fi | |
51d21c6b DD |
209 | ifeq ($(enable_dracut_cpio),yes) |
210 | install -m 0755 dracut-cpio $(DESTDIR)$(pkglibdir)/dracut-cpio | |
211 | endif | |
9dd9d81f | 212 | mkdir -p $(DESTDIR)${prefix}/lib/kernel/install.d |
49717458 JG |
213 | install -m 0755 install.d/50-dracut.install $(DESTDIR)${prefix}/lib/kernel/install.d/50-dracut.install |
214 | install -m 0755 install.d/51-dracut-rescue.install $(DESTDIR)${prefix}/lib/kernel/install.d/51-dracut-rescue.install | |
917f3e4d | 215 | mkdir -p $(DESTDIR)${bashcompletiondir} |
b544bd6b JG |
216 | install -m 0644 shell-completion/bash/dracut $(DESTDIR)${bashcompletiondir}/dracut |
217 | install -m 0644 shell-completion/bash/lsinitrd $(DESTDIR)${bashcompletiondir}/lsinitrd | |
471439f5 HH |
218 | mkdir -p $(DESTDIR)${pkgconfigdatadir} |
219 | install -m 0644 dracut.pc $(DESTDIR)${pkgconfigdatadir}/dracut.pc | |
834f6145 | 220 | |
533cd778 | 221 | clean: |
5150d44a AŻ |
222 | $(RM) *~ |
223 | $(RM) */*~ | |
224 | $(RM) */*/*~ | |
e1cb8580 | 225 | $(RM) $(manpages:%=%.xml) dracut.xml |
5150d44a | 226 | $(RM) test-*.img |
f5cc202e | 227 | $(RM) dracut-*.tar.bz2 dracut-*.tar.xz |
3420a70d | 228 | $(RM) dracut-install src/install/dracut-install $(DRACUT_INSTALL_OBJECTS) |
9ea68421 | 229 | $(RM) skipcpio/skipcpio $(SKIPCPIO_OBJECTS) |
501d82f7 | 230 | $(RM) dracut-util util/util $(UTIL_OBJECTS) |
2d9f5858 | 231 | $(RM) $(manpages) dracut.html |
d643156d | 232 | $(RM) dracut.pc |
51d21c6b | 233 | $(RM) dracut-cpio src/dracut-cpio/target/release/dracut-cpio* |
5150d44a | 234 | $(MAKE) -C test clean |
533cd778 | 235 | |
b355c7a5 | 236 | dist: dracut-$(DRACUT_MAIN_VERSION).tar.xz |
f1bbaa64 | 237 | |
b355c7a5 | 238 | dracut-$(DRACUT_MAIN_VERSION).tar.xz: doc syncheck |
b355c7a5 HH |
239 | git archive --format=tar $(DRACUT_MAIN_VERSION) --prefix=dracut-$(DRACUT_MAIN_VERSION)/ > dracut-$(DRACUT_MAIN_VERSION).tar |
240 | mkdir -p dracut-$(DRACUT_MAIN_VERSION) | |
b4e23ce4 | 241 | for i in $(manpages) dracut.html; do [ "$${i%/*}" != "$$i" ] && mkdir -p "dracut-$(DRACUT_MAIN_VERSION)/$${i%/*}"; cp "$$i" "dracut-$(DRACUT_MAIN_VERSION)/$$i"; done |
b355c7a5 HH |
242 | tar --owner=root --group=root -rf dracut-$(DRACUT_MAIN_VERSION).tar $$(find dracut-$(DRACUT_MAIN_VERSION) -type f) |
243 | rm -fr -- dracut-$(DRACUT_MAIN_VERSION).tar.xz dracut-$(DRACUT_MAIN_VERSION) | |
244 | xz -9 dracut-$(DRACUT_MAIN_VERSION).tar | |
245 | rm -f -- dracut-$(DRACUT_MAIN_VERSION).tar | |
b4fbdbbe | 246 | |
da22a021 | 247 | syncheck: |
36c34f4e | 248 | @ret=0;for i in dracut-initramfs-restore.sh modules.d/*/*.sh; do \ |
440a4cc2 | 249 | [ "$${i##*/}" = "module-setup.sh" ] && continue; \ |
f5af0df8 | 250 | read line < "$$i"; [ "$${line#*bash*}" != "$$line" ] && continue; \ |
36c34f4e | 251 | [ $$V ] && echo "posix syntax check: $$i"; bash --posix -n "$$i" ; ret=$$(($$ret+$$?)); \ |
24f32511 MG |
252 | [ $$V ] && echo "checking for [[: $$i"; if grep -Fq '[[ ' "$$i" ; then ret=$$(($$ret+1)); echo "$$i contains [["; fi; \ |
253 | [ $$V ] && echo "checking for echo -n: $$i"; if grep -Fq 'echo -n ' "$$i" ; then ret=$$(($$ret+1)); echo "$$i contains echo -n"; fi \ | |
5cb6c761 | 254 | done;exit $$ret |
43df4ee2 | 255 | @ret=0;for i in *.sh modules.d/*/*.sh modules.d/*/module-setup.sh; do \ |
41b0e41a | 256 | [ $$V ] && echo "bash syntax check: $$i"; bash -n "$$i" ; ret=$$(($$ret+$$?)); \ |
da22a021 | 257 | done;exit $$ret |
d376b985 HH |
258 | ifeq ($(HAVE_SHELLCHECK),yes) |
259 | ifeq ($(HAVE_SHFMT),yes) | |
260 | shellcheck $$(shfmt -f .) | |
261 | else | |
262 | find . -name '*.sh' -print0 | xargs -0 shellcheck | |
263 | endif | |
264 | endif | |
da22a021 | 265 | |
f5cc202e | 266 | check: all syncheck |
1f524c45 HH |
267 | @[ "$$EUID" == "0" ] || { echo "'check' must be run as root! Please use 'sudo'."; exit 1; } |
268 | @$(MAKE) -C test check | |
5cb6c761 | 269 | |
2f525c49 | 270 | testimage: all |
d8a454a5 HH |
271 | ./dracut.sh -N -l -a debug -f test-$(KVERSION).img $(KVERSION) |
272 | @echo wrote test-$(KVERSION).img | |
33ee031c | 273 | |
899f5962 | 274 | debugtestimage: all |
d8a454a5 HH |
275 | ./dracut.sh --debug -l -a debug -f test-$(KVERSION).img $(KVERSION) |
276 | @echo wrote test-$(KVERSION).img | |
899f5962 | 277 | |
33ee031c | 278 | testimages: all |
d8a454a5 HH |
279 | ./dracut.sh -l -a debug --kernel-only -f test-kernel-$(KVERSION).img $(KVERSION) |
280 | @echo wrote test-$(KVERSION).img | |
281 | ./dracut.sh -l -a debug --no-kernel -f test-dracut.img $(KVERSION) | |
026b81e9 | 282 | @echo wrote test-dracut.img |
6cc96b35 | 283 | |
899f5962 | 284 | debughostimage: all |
d8a454a5 HH |
285 | ./dracut.sh --debug -H -l -f test-$(KVERSION).img $(KVERSION) |
286 | @echo wrote test-$(KVERSION).img | |
899f5962 | 287 | |
bdccc34e | 288 | hostimage: all |
d8a454a5 HH |
289 | ./dracut.sh -H -l -f test-$(KVERSION).img $(KVERSION) |
290 | @echo wrote test-$(KVERSION).img | |
33ee031c | 291 | |
2249e731 | 292 | efi: all |
d8a454a5 HH |
293 | ./dracut.sh --uefi -H -l -f linux-$(KVERSION).efi $(KVERSION) |
294 | @echo wrote linux-$(KVERSION).efi | |
2249e731 | 295 | |
3f793c91 | 296 | AUTHORS: |
5cdd4b35 | 297 | @git log | git shortlog --numbered --summary -e | while read -r a rest || [ -n "$$rest" ]; do echo "$$rest"; done > AUTHORS |
df7be11b | 298 | |
1a604e2a | 299 | CONTRIBUTORS: |
5cdd4b35 | 300 | @git log | git shortlog $(DRACUT_MAIN_VERSION).. --numbered --summary -e | while read -r a rest || [ -n "$$rest" ]; do echo "- $$rest"; done |