mirror of
https://github.com/znc/znc.git
synced 2026-03-28 17:42:41 +01:00
- PASS [user[@identifier][/network]:]password - USER user[@identifier][/network] ... NOTE: There's a slight ambiguosity with the '@' character, which happens to be a valid character in usernames, but also acts as a marker for the identifier. Therefore, '@' is considered as part of the username if it's followed by non-word characters (as in an email address), otherwise as a marker for an identifier. This is only an enabler for #343. The rest can be done with modules: - managing client ID specific playback buffers - filtering channels based on the client ID The reason this should be part of ZNC core is that only global modules have access to OnUnknownUserRaw(), which is needed to capture USER/PASS. First of all, the aforementioned modules shouldn't be global. Furthermore, it would be possible to have only one module that parsed and removed the client ID so that ZNC core woulnd't choke.
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 ThreadTest NickTest ClientTest
|
|
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)
|