eeacc7182178613ab8d849579e8951b059b41130
[oweals/dinit.git] / src / Makefile
1 include ../mconfig
2
3 ifeq ($(BUILD_SHUTDOWN),yes)
4   SHUTDOWN=shutdown
5 endif
6
7 dinit_objects = dinit.o load-service.o service.o proc-service.o baseproc-service.o control.o dinit-log.o \
8                 dinit-main.o run-child-proc.o
9
10 objects = $(dinit_objects) dinitctl.o shutdown.o
11
12 all: dinit dinitctl $(SHUTDOWN)
13
14 includes/mconfig.h: mconfig-gen
15         ./mconfig-gen SBINDIR=$(SBINDIR) SYSCONTROLSOCKET=$(SYSCONTROLSOCKET) > includes/mconfig.h
16
17 mconfig-gen: mconfig-gen.cc ../mconfig
18         $(CXX) $(CXXOPTS) -o mconfig-gen mconfig-gen.cc $(LDFLAGS)
19
20 $(dinit_objects): includes/mconfig.h
21
22 dinit: $(dinit_objects)
23         $(CXX) -o dinit $(dinit_objects) $(LDFLAGS)
24
25 dinitctl: dinitctl.o
26         $(CXX) -o dinitctl dinitctl.o $(LDFLAGS)
27         
28 shutdown: shutdown.o
29         $(CXX) -o shutdown shutdown.o $(LDFLAGS)
30
31 $(objects): %.o: %.cc
32         $(CXX) $(CXXOPTS) -MMD -MP -Iincludes -Idasynq -c $< -o $@
33
34 check:
35         $(MAKE) -C tests check
36
37 run-cppcheck:
38         cppcheck --std=c++11 -Iincludes -Idasynq --force --enable=all *.cc 2>../cppcheck-report.txt
39
40 install: all
41         install -d $(DESTDIR)$(SBINDIR)
42         install -s dinit dinitctl $(SHUTDOWN) $(DESTDIR)$(SBINDIR)
43 ifeq ($(BUILD_SHUTDOWN),yes)
44         ln $(DESTDIR)$(SBINDIR)/shutdown $(DESTDIR)$(SBINDIR)/halt
45         ln $(DESTDIR)$(SBINDIR)/shutdown $(DESTDIR)$(SBINDIR)/reboot
46 endif
47
48 clean:
49         rm -f *.o *.d
50         rm -f dinit dinitctl shutdown mconfig-gen
51         rm -f includes/mconfig.h
52         $(MAKE) -C tests clean
53
54 -include $(objects:.o=.d)