-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
100 lines (87 loc) · 2.36 KB
/
Makefile
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
PROJECT = vm
VERSION = 0.0.1
sysconfdir ?= /etc
bootdir ?= /boot
bindir ?= /usr/bin
sbindir ?= /usr/sbin
datadir ?= /usr/share
libexecdir ?= /usr/libexec/$(PROJECT)
infodir ?= $(datadir)/info
mandir ?= $(datadir)/man
man1dir ?= $(mandir)/man1
tmpdir ?= /tmp
prefix ?= $(datadir)/$(PROJECT)
DESTDIR ?=
mklocal =
ifdef MKLOCAL
prefix = $(CURDIR)
bindir = $(CURDIR)
sbindir = $(CURDIR)
libexecdir = $(CURDIR)
mklocal = 1
endif
CFLAGS = -Wall -Wextra -W -Wshadow -Wcast-align \
-Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes \
-Wmissing-prototypes -Wmissing-declarations -Wmissing-noreturn \
-Wmissing-format-attribute -Wredundant-decls -Wdisabled-optimization \
-Wno-pointer-arith \
-Os
CP = cp -a
INSTALL = install
MKDIR_P = mkdir -p
TOUCH_R = touch -r
HELP2MAN = env -i help2man -N
MAKEINFO_FLAGS = -D "VERSION $(VERSION)"
PROGRAMS = vm
DATA = \
vm-options
HELPERS = \
vm-sh-config \
vm-command-debug \
vm-command-help \
vm-command-init \
vm-command-list \
vm-command-run \
vm-command-sandbox \
vm-command-setup
BIN_HELPERS = init
TARGETS = $(PROGRAMS) $(HELPERS) $(BIN_HELPERS)
SUBDIRS =
KERNEL_CONFIGS = \
kernel.config \
kernel.config.balloon.virtio \
kernel.config.console.serial \
kernel.config.console.virtio \
kernel.config.rnd.virtio
.PHONY: $(SUBDIRS)
all: $(SUBDIRS) $(TARGETS)
%: %.in
sed \
-e 's,@VERSION@,$(VERSION),g' \
-e 's,@PROJECT@,$(PROJECT),g' \
-e 's,@BOOTDIR@,$(bootdir),g' \
-e 's,@CONFIG@,$(sysconfdir),g' \
-e 's,@PREFIX@,$(prefix),g' \
-e 's,@BINDIR@,$(bindir),g' \
-e 's,@SBINDIR@,$(sbindir),g' \
-e 's,@TMPDIR@,$(tmpdir),g' \
-e 's,@LIBEXECDIR@,$(libexecdir),g' \
-e 's,@MKLOCAL@,$(mklocal),g' \
<$< >$@
$(TOUCH_R) $< $@
chmod --reference=$< $@
init: guest/init.c
$(CC) -static $(CFLAGS) -o $@ $<
install: $(TARGETS)
$(MKDIR_P) -- $(DESTDIR)$(libexecdir)
$(INSTALL) -p -m755 init.sh $(BIN_HELPERS) $(DESTDIR)$(libexecdir)/
$(INSTALL) -p -m644 $(KERNEL_CONFIGS) $(DESTDIR)$(libexecdir)/
$(MKDIR_P) -- $(DESTDIR)$(prefix)
$(INSTALL) -p -m644 $(DATA) $(DESTDIR)$(prefix)/
$(INSTALL) -p -m755 $(HELPERS) $(DESTDIR)$(prefix)/
$(MKDIR_P) -- $(DESTDIR)$(bindir)
$(INSTALL) -p -m755 $(PROGRAMS) $(DESTDIR)$(bindir)/
clean: $(SUBDIRS)
$(RM) -- $(TARGETS)
$(SUBDIRS):
$(MAKE) $(MFLAGS) -C "$@" $(MAKECMDGOALS)