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