mirror of
https://github.com/znc/znc.git
synced 2026-06-30 23:11:28 +02:00
14a534c953
Store query buffers per query the same way it's done for channels. This allows clients to implement persistent query buffers. Queries remain open across clients and sessions until a client explicitly sends a command to clear a (closed) query buffer. A new config option AutoClearQueryBuffer that default to false ensures behavioral backwards compatibility, and another config MaxQueries protects from OOM eg. due to PM attacks.
212 lines
6.9 KiB
Makefile
212 lines
6.9 KiB
Makefile
SHELL := @SHELL@
|
|
|
|
# Support out-of-tree builds
|
|
srcdir := @srcdir@
|
|
VPATH := @srcdir@
|
|
|
|
prefix := @prefix@
|
|
exec_prefix := @exec_prefix@
|
|
datarootdir := @datarootdir@
|
|
bindir := @bindir@
|
|
datadir := @datadir@
|
|
sysconfdir := @sysconfdir@
|
|
libdir := @libdir@
|
|
includedir := @includedir@
|
|
sbindir := @sbindir@
|
|
localstatedir := @localstatedir@
|
|
systemdsystemunitdir := @systemdsystemunitdir@
|
|
CXX := @CXX@
|
|
CXXFLAGS := -I$(srcdir)/include -Iinclude @CPPFLAGS@ @CXXFLAGS@
|
|
LDFLAGS := @LDFLAGS@
|
|
LIBS := @LIBS@
|
|
LIBZNC := @LIBZNC@
|
|
LIBZNCDIR:= @LIBZNCDIR@
|
|
MODDIR := @MODDIR@
|
|
DATADIR := @DATADIR@
|
|
PKGCONFIGDIR := $(libdir)/pkgconfig
|
|
INSTALL := @INSTALL@
|
|
INSTALL_PROGRAM := @INSTALL_PROGRAM@
|
|
INSTALL_SCRIPT := @INSTALL_SCRIPT@
|
|
INSTALL_DATA := @INSTALL_DATA@
|
|
GIT := @GIT@
|
|
SED := @SED@
|
|
|
|
GTEST_DOWNLOAD :=
|
|
GTEST_DIR := @GTEST_DIR@
|
|
ifeq "$(GTEST_DIR)" ""
|
|
GTEST_VER := 1.7.0
|
|
GTEST_DIR := test/gtest-$(GTEST_VER)
|
|
GTEST_DOWNLOAD := 1
|
|
endif
|
|
|
|
LIB_SRCS := ZNCString.cpp Csocket.cpp znc.cpp IRCNetwork.cpp User.cpp IRCSock.cpp \
|
|
Client.cpp Chan.cpp Nick.cpp Server.cpp Modules.cpp MD5.cpp Buffer.cpp Utils.cpp \
|
|
FileUtils.cpp HTTPSock.cpp Template.cpp ClientCommand.cpp Socket.cpp SHA256.cpp \
|
|
WebModules.cpp Listener.cpp Config.cpp ZNCDebug.cpp Threads.cpp version.cpp Query.cpp
|
|
LIB_SRCS := $(addprefix src/,$(LIB_SRCS))
|
|
BIN_SRCS := src/main.cpp
|
|
LIB_OBJS := $(patsubst %cpp,%o,$(LIB_SRCS))
|
|
BIN_OBJS := $(patsubst %cpp,%o,$(BIN_SRCS))
|
|
TESTS := StringTest ConfigTest UtilsTest
|
|
TESTS := $(addprefix test/,$(addsuffix .o,$(TESTS)))
|
|
CLEAN := znc src/*.o test/*.o core core.* .version_extra .depend modules/.depend unittest
|
|
DISTCLEAN := Makefile config.log config.status znc-buildmod \
|
|
modules/Makefile man/Makefile znc.pc znc-uninstalled.pc test/Makefile
|
|
|
|
CXXFLAGS += -D_MODDIR_=\"$(MODDIR)\" -D_DATADIR_=\"$(DATADIR)\"
|
|
|
|
ifneq "$(V)" ""
|
|
VERBOSE=1
|
|
endif
|
|
ifeq "$(VERBOSE)" ""
|
|
Q=@
|
|
E=@echo
|
|
C=-s
|
|
else
|
|
Q=
|
|
E=@\#
|
|
C=
|
|
endif
|
|
|
|
.PHONY: all man modules clean distclean install version_extra_recompile test
|
|
.SECONDARY:
|
|
|
|
all: znc man modules $(LIBZNC)
|
|
@echo ""
|
|
@echo " ZNC was successfully compiled."
|
|
@echo " Use '$(MAKE) install' to install ZNC to '$(prefix)'."
|
|
|
|
ifeq "$(LIBZNC)" ""
|
|
OBJS := $(BIN_OBJS) $(LIB_OBJS)
|
|
|
|
znc: $(OBJS)
|
|
$(E) Linking znc...
|
|
$(Q)$(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
|
|
|
|
else
|
|
znc: $(BIN_OBJS) $(LIBZNC)
|
|
$(E) Linking znc...
|
|
$(Q)$(CXX) $(LDFLAGS) -o $@ $(BIN_OBJS) -L. -lznc -Wl,-rpath,$(LIBZNCDIR) $(LIBS)
|
|
|
|
$(LIBZNC): $(LIB_OBJS)
|
|
$(E) Linking $(LIBZNC)...
|
|
$(Q)$(CXX) $(LDFLAGS) -shared -o $@ $(LIB_OBJS) $(LIBS)
|
|
endif
|
|
|
|
unittest: $(LIB_OBJS) test/gtest-all.o test/gtest-main.o $(TESTS)
|
|
$(E) Linking unit test...
|
|
$(Q)$(CXX) $(LDFLAGS) -o $@ $(LIB_OBJS) test/gtest-all.o test/gtest-main.o $(TESTS) $(LIBS)
|
|
|
|
man:
|
|
@$(MAKE) -C man $(C)
|
|
|
|
modules: $(LIBZNC)
|
|
@$(MAKE) -C modules $(C)
|
|
|
|
clean:
|
|
rm -rf $(CLEAN)
|
|
@$(MAKE) -C modules clean;
|
|
@$(MAKE) -C man clean
|
|
|
|
distclean: clean
|
|
rm -rf $(DISTCLEAN)
|
|
|
|
src/%.o: src/%.cpp Makefile
|
|
@mkdir -p .depend src
|
|
$(E) Building core object $*...
|
|
$(Q)$(CXX) $(CXXFLAGS) -c -o $@ $< -MD -MF .depend/$*.dep -MT $@
|
|
|
|
test/%.o: test/%.cpp Makefile
|
|
@mkdir -p .depend test
|
|
$(E) Building test object $*...
|
|
$(Q)$(CXX) $(CXXFLAGS) -I$(GTEST_DIR)/include -c -o $@ $< -MD -MF .depend/$*.test.dep -MT $@
|
|
|
|
test/gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc Makefile
|
|
@mkdir -p .depend test
|
|
$(E) Building test object gtest-all...
|
|
$(Q)$(CXX) $(CXXFLAGS) -I$(GTEST_DIR)/include -I$(GTEST_DIR) -c -o $@ $< -MD -MF .depend/gtest-all.dep -MT $@
|
|
|
|
test/gtest-main.o: $(GTEST_DIR)/src/gtest_main.cc Makefile
|
|
@mkdir -p .depend test
|
|
$(E) Building test object gtest-main...
|
|
$(Q)$(CXX) $(CXXFLAGS) -I$(GTEST_DIR)/include -c -o $@ $< -MD -MF .depend/gtest-main.dep -MT $@
|
|
|
|
ifneq "$(GTEST_DOWNLOAD)" ""
|
|
test/gtest.zip:
|
|
@mkdir -p .depend test
|
|
$(E) Downloading GoogleTest $(GTEST_VER)
|
|
$(Q)wget http://googletest.googlecode.com/files/gtest-$(GTEST_VER).zip -O $@
|
|
|
|
$(GTEST_DIR)/src/gtest-all.cc $(GTEST_DIR)/src/gtest_main.cc $(GTEST_DIR)/include/gtest/gtest.h: test/gtest.zip
|
|
$(E) Unpacking GoogleTest $(GTEST_VER)
|
|
$(Q)test -r $@ || unzip $^ -d test/
|
|
$(Q)test -r $@
|
|
$(Q)touch -c $@
|
|
endif
|
|
|
|
ifneq "THIS_IS_NOT_TARBALL" ""
|
|
# If git commit was changed since previous build, add a phony target to dependencies, forcing version.o to be recompiled
|
|
# Nightlies have pregenerated version.cpp
|
|
src/version.cpp: Makefile version.sh $(shell if [ x`cat .version_extra 2> /dev/null` != x`$(srcdir)/version.sh $(GIT) 2> /dev/null` ]; then echo version_extra_recompile; fi)
|
|
@mkdir -p .depend src
|
|
$(E) Building source file version.cpp...
|
|
$(Q)WRITE_OUTPUT=yes $(srcdir)/version.sh "$(GIT)" > .version_extra 2> /dev/null
|
|
|
|
CLEAN += src/version.cpp
|
|
endif
|
|
|
|
install: znc $(LIBZNC)
|
|
test -d $(DESTDIR)$(bindir) || $(INSTALL) -d $(DESTDIR)$(bindir)
|
|
test -d $(DESTDIR)$(includedir)/znc || $(INSTALL) -d $(DESTDIR)$(includedir)/znc
|
|
test -d $(DESTDIR)$(PKGCONFIGDIR) || $(INSTALL) -d $(DESTDIR)$(PKGCONFIGDIR)
|
|
test -d $(DESTDIR)$(MODDIR) || $(INSTALL) -d $(DESTDIR)$(MODDIR)
|
|
test -d $(DESTDIR)$(DATADIR) || $(INSTALL) -d $(DESTDIR)$(DATADIR)
|
|
cp -R $(srcdir)/webskins $(DESTDIR)$(DATADIR)
|
|
find $(DESTDIR)$(DATADIR)/webskins -type d -exec chmod 0755 '{}' \;
|
|
find $(DESTDIR)$(DATADIR)/webskins -type f -exec chmod 0644 '{}' \;
|
|
$(INSTALL_PROGRAM) znc $(DESTDIR)$(bindir)
|
|
$(INSTALL_SCRIPT) znc-buildmod $(DESTDIR)$(bindir)
|
|
$(INSTALL_DATA) $(srcdir)/include/znc/*.h $(DESTDIR)$(includedir)/znc
|
|
$(INSTALL_DATA) include/znc/zncconfig.h $(DESTDIR)$(includedir)/znc
|
|
$(INSTALL_DATA) znc.pc $(DESTDIR)$(PKGCONFIGDIR)
|
|
@$(MAKE) -C modules install DESTDIR=$(DESTDIR);
|
|
if test -n "$(LIBZNC)"; then \
|
|
test -d $(DESTDIR)$(LIBZNCDIR) || $(INSTALL) -d $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \
|
|
$(INSTALL_PROGRAM) $(LIBZNC) $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \
|
|
fi
|
|
@$(MAKE) -C man install DESTDIR=$(DESTDIR)
|
|
@HAVE_SYSTEMD_TRUE@test -d $(DESTDIR)$(systemdsystemunitdir) || $(INSTALL) -d $(DESTDIR)$(systemdsystemunitdir)
|
|
@HAVE_SYSTEMD_TRUE@$(INSTALL_DATA) $(srcdir)/znc.service $(DESTDIR)$(systemdsystemunitdir)
|
|
@echo ""
|
|
@echo "******************************************************************"
|
|
@echo " ZNC was successfully installed."
|
|
@echo " You can use '$(bindir)/znc --makeconf'"
|
|
@echo " to generate a config file."
|
|
@echo ""
|
|
@echo " If you need help with using ZNC, please visit our wiki at:"
|
|
@echo " http://znc.in"
|
|
|
|
uninstall:
|
|
rm $(DESTDIR)$(bindir)/znc
|
|
rm $(DESTDIR)$(bindir)/znc-buildmod
|
|
rm $(DESTDIR)$(includedir)/znc/*.h
|
|
rm $(DESTDIR)$(PKGCONFIGDIR)/znc.pc
|
|
rm -rf $(DESTDIR)$(DATADIR)/webskins
|
|
if test -n "$(LIBZNC)"; then \
|
|
rm $(DESTDIR)$(LIBZNCDIR)/$(LIBZNC) || exit 1 ; \
|
|
rmdir $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \
|
|
fi
|
|
@$(MAKE) -C man uninstall DESTDIR=$(DESTDIR)
|
|
@if test -n "modules"; then \
|
|
$(MAKE) -C modules uninstall DESTDIR=$(DESTDIR); \
|
|
fi
|
|
rmdir $(DESTDIR)$(bindir)
|
|
rmdir $(DESTDIR)$(includedir)/znc
|
|
rmdir $(DESTDIR)$(PKGCONFIGDIR)
|
|
@echo "Successfully uninstalled, but empty directories were left behind"
|
|
|
|
test: unittest
|
|
$(Q)./unittest
|
|
|
|
-include $(wildcard .depend/*.dep)
|