blob: c01b1f552eebcb07cb45de7e6fd4abcc3af69a23 [file] [log] [blame]
CXXFLAGS=-std=c++11 -I. -I../shared -Icppdsaext/src -Wall -Werror --pedantic-errors -fPIC -O2 \
-Wsign-compare -Wpointer-arith -Wswitch-default -Wswitch-enum -Wtype-limits \
-Wmissing-declarations -Wshadow
CXX = @CXX@
# variables set by configure
sbindir = @sbindir@
WITH_DRBDMON=@WITH_DRBDMON@
# variables meant to be overridden from the make command line
DESTDIR ?= /
binaries := drbdmon drbdmon_test
ifeq ($(WITH_DRBDMON),yes)
all: $(binaries)
else
all:
endif
PHONY := all
dsaext-obj := cppdsaext/src/dsaext.o
l-obj := DrbdMon.o MessageLog.o CompactDisplay.o
l-obj += DrbdResource.o DrbdRole.o DrbdVolume.o DrbdConnection.o
l-obj += VolumesContainer.o StateFlags.o EventsIo.o EventsSourceSpawner.o
l-obj += Args.o ConfigOption.o
l-obj += StringTokenizer.o comparators.o utils.o
ls-obj := drbdmon_main.o $(l-obj) $(dsaext-obj)
lst-obj := drbdmon_main.o $(l-obj) $(dsaext-obj) DebugDisplay.o
all-obj := $(sort $(ls-obj) $(lst-obj))
local-obj := $(filter-out $(dsaext-obj),$(all-obj))
local-dep := $(patsubst %.o,.%.d,$(local-obj))
ifeq ($(WITH_DRBDMON),yes)
-include $(local-dep)
endif
$(dsaext-obj): $(basename $(dsaext-obj)).cpp $(basename $(dsaext-obj)).h
drbdmon: $(ls-obj)
$(CXX) -o $@ $(CPPFLAGS) $(CXXFLAGS) $^
drbdmon_test: $(lst-obj)
$(CXX) -o $@ $(CPPFLAGS) $(CXXFLAGS) $^
# do not try to rebuild Makefile itself
Makefile: ;
.%.d: %.cpp
@set -e; rm -f $@; \
$(CXX) -MM $(CPPFLAGS) $(CXXFLAGS) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
install:
ifeq ($(WITH_DRBDMON),yes)
install -m 755 drbdmon $(DESTDIR)$(sbindir)
endif
uninstall:
ifeq ($(WITH_DRBDMON),yes)
rm -f $(DESTDIR)$(sbindir)/drbdmon
endif
PHONY += clean distclean
clean:
rm -f $(local-obj) $(dsaext-obj) $(binaries)
distclean: clean
rm -f $(local-dep)
.PHONY: $(PHONY)