mirror of
https://github.com/znc/znc.git
synced 2026-04-30 18:42:25 +02:00
lahwran just showed up on irc and told us that he installed znc, but znc failed to find any modules. The reason for this was his umask 077 which means that "make install" installed stuff so that only root can access it. The solution is do use "install -d" since that makes sure to ignore the currently set umask. However, google finds results which say that "install -d" might mess with stuff of pre-existing directories when it shouldn't, so we must first test if the directory already exists before calling install. Obviously, this makes our Makefile a lot more readable. :-( I didn't have time to test this properly, so stuff might break. Signed-off-by: Uli Schlachter <psychon@znc.in>
148 lines
4.5 KiB
Makefile
148 lines
4.5 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@
|
|
CXX := @CXX@
|
|
CXXFLAGS := @CPPFLAGS@ @CXXFLAGS@ -I$(srcdir)/include -Iinclude
|
|
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@
|
|
|
|
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
|
|
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))
|
|
CLEAN := znc src/*.o core core.*
|
|
DISTCLEAN := Makefile config.log config.status znc-config znc-buildmod .depend \
|
|
modules/.depend modules/Makefile man/Makefile znc.pc znc-uninstalled.pc
|
|
|
|
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
|
|
|
|
all: znc man modules $(LIBZNC)
|
|
@echo ""
|
|
@echo " ZNC was successfully compiled. You may use"
|
|
@echo " '$(MAKE) install' to install ZNC to '$(prefix)'."
|
|
@echo " You can then 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"
|
|
|
|
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
|
|
|
|
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 $@ $< -MMD -MF .depend/$*.dep
|
|
|
|
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-config $(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)
|
|
|
|
uninstall:
|
|
rm $(DESTDIR)$(bindir)/znc
|
|
rm $(DESTDIR)$(bindir)/znc-config
|
|
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"
|
|
|
|
-include $(wildcard .depend/*.dep)
|