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