]> git.stg.codes - ssmd.git/blob - Makefile
Patch from SpiderX. Added debug mode and install/uninstall targets.
[ssmd.git] / Makefile
1 ifeq ($(BUILD),Debug)
2        DEFS += -DDEBUG
3        CXXFLAGS += -g3
4 endif
5
6 INCS = -Iinclude -I3rdparty/snmp++/include
7 CXXFLAGS += -W -Wall -Wextra $(INCS) $(DEFS)
8 LIBS = -lpthread \
9        -lssl \
10        -lcurl \
11        -lboost_system \
12        -lboost_program_options \
13        3rdparty/snmp++/libsnmp++.a
14 PROG = ssmd # SNMP Switch Management Daemon
15 VERSION = 1.1.3
16
17 SOURCES = src/main.cpp \
18           src/pidfile.cpp \
19           src/settings.cpp \
20           src/settingsfileparser.cpp \
21           src/logger.cpp \
22           src/syncer.cpp \
23           src/subscriber.cpp \
24           src/switch.cpp \
25           src/acl.cpp \
26           src/snmptable.cpp \
27           src/dataparser.cpp
28
29 PREFIX =
30 BIN_MODE = 0755
31 DATA_MODE = 0644
32 OWNER = root
33
34 .PHONY: all clean snmplib version tests install uninstall
35
36 all: $(PROG)
37
38 tests:
39         $(MAKE) $(MAKECMDGOALS) -C tests
40
41 snmplib:
42         $(MAKE) $(MAKECMDGOALS) -C 3rdparty
43
44 include/version.h: version
45
46 version:
47         @sed 's/@VERSION@/$(VERSION)/g' include/version.h.in > include/version.h
48         @sed -i 's/@GIT_SHA@/'`git rev-parse --short HEAD`'/g' include/version.h
49
50 $(PROG): version $(subst .cpp,.o,$(SOURCES)) snmplib
51         $(CXX) $(subst .cpp,.o,$(SOURCES)) $(LIBS) -o $@
52
53 clean: snmplib
54         rm -f src/*.o src/*.d $(PROG) include/version.h
55
56 install: install-bin install-data
57
58 install-bin:
59 ifeq ($(findstring $(DEFS), -DDEBUG),)
60        install -D -m $(BIN_MODE) -o $(OWNER) $(PROG) $(PREFIX)/usr/sbin/$(PROG)
61 else
62        install -D -m $(BIN_MODE) -o $(OWNER) -s $(PROG) $(PREFIX)/usr/sbin/$(PROG)
63 endif
64
65 install-data:
66        install -D -m $(DATA_MODE) -o $(OWNER) ./ssmd.conf $(PREFIX)/etc/ssmd/ssmd.conf
67
68 uninstall: uninstall-bin uninstall-data
69
70 uninstall-bin:
71        rm -f $(PREFIX)/usr/sbin/$(PROG)
72
73 uninstall-data:
74        rm -f $(PREFIX)/etc/ssmd/ssmd.conf
75
76 ifneq ($(MAKECMDGOALS),distclean)
77 ifneq ($(MAKECMDGOALS),clean)
78 -include $(subst .cpp,.d,$(SOURCES))
79 endif
80 endif
81
82 %.d: %.cpp
83         @$(CXX) -MM $(CXXFLAGS) $< > $@.$$$$; \
84         sed 's,\($*\).o[ :]*,src\/\1.o $@ : ,g' < $@.$$$$ > $@; \
85         rm -f $@.$$$$