b6dce35b18c3ba044e8fb36d736cfa86263e06a4
[oweals/dinit.git] / src / Makefile
1 include ../mconfig
2
3 HOSTCXX ?= $(CXX)
4 HOSTCXXFLAGS ?= $(CXXFLAGS)
5 HOSTLDFLAGS ?= $(LDFLAGS)
6 STRIPOPTS ?= -s
7
8 ifeq ($(BUILD_SHUTDOWN),yes)
9   SHUTDOWN=shutdown
10 endif
11
12 dinit_objects = dinit.o load-service.o service.o proc-service.o baseproc-service.o control.o dinit-log.o \
13                 dinit-main.o run-child-proc.o
14
15 objects = $(dinit_objects) dinitctl.o dinitcheck.o shutdown.o
16
17 all: dinit dinitctl dinitcheck $(SHUTDOWN)
18
19 # Look for a suitable build config file and use it.
20 ../mconfig:
21         @UNAME=`uname`;\
22         if [ -f "../configs/mconfig.$$UNAME" ]; then \
23             echo "Found configuration for OS: $$UNAME"; \
24             ln -sf "configs/mconfig.$$UNAME" ../mconfig; \
25         else \
26             echo "No config available. Please create suitable mconfig file."; \
27         fi
28
29 includes/mconfig.h: mconfig-gen
30         ./mconfig-gen SBINDIR=$(SBINDIR) SYSCONTROLSOCKET=$(SYSCONTROLSOCKET) \
31                 $(if $(USE_UTMPX),USE_UTMPX=$(USE_UTMPX),) > includes/mconfig.h
32
33 mconfig-gen: mconfig-gen.cc ../mconfig
34         $(HOSTCXX) $(HOSTCXXOPTS) -o mconfig-gen mconfig-gen.cc $(HOSTLDFLAGS)
35
36 $(objects): includes/mconfig.h
37
38 dinit: $(dinit_objects)
39         $(CXX) -o dinit $(dinit_objects) $(LDFLAGS)
40
41 dinitctl: dinitctl.o
42         $(CXX) -o dinitctl dinitctl.o $(LDFLAGS)
43
44 dinitcheck: dinitcheck.o
45         $(CXX) -o dinitcheck dinitcheck.o $(LDFLAGS)
46
47 shutdown: shutdown.o
48         $(CXX) -o shutdown shutdown.o $(LDFLAGS)
49
50 $(objects): %.o: %.cc
51         $(CXX) $(CXXOPTS) -MMD -MP -Iincludes -Idasynq -c $< -o $@
52
53 check:
54         $(MAKE) -C tests check
55
56 check-igr: dinit dinitctl
57         $(MAKE) -C igr-tests check-igr
58
59 run-cppcheck:
60         cppcheck --std=c++11 -Iincludes -Idasynq --force --enable=all *.cc 2>../cppcheck-report.txt
61
62 install: all
63         install -d $(DESTDIR)$(SBINDIR)
64         install $(STRIPOPTS) dinit dinitctl $(SHUTDOWN) $(DESTDIR)$(SBINDIR)
65 ifeq ($(BUILD_SHUTDOWN),yes)
66         ln -f $(DESTDIR)$(SBINDIR)/shutdown $(DESTDIR)$(SBINDIR)/halt
67         ln -f $(DESTDIR)$(SBINDIR)/shutdown $(DESTDIR)$(SBINDIR)/reboot
68 endif
69
70 clean:
71         rm -f *.o *.d
72         rm -f dinit dinitctl shutdown mconfig-gen
73         rm -f includes/mconfig.h
74         $(MAKE) -C tests clean
75         $(MAKE) -C igr-tests clean
76
77 -include $(objects:.o=.d)