]>
Commit | Line | Data |
---|---|---|
84ae0f2e | 1 | SHELL := @SHELL@ |
2 | ||
ecd50392 | 3 | # Support out-of-tree builds |
4 | srcdir := @srcdir@ | |
5 | VPATH := @srcdir@ | |
6 | ||
608fbdbd | 7 | prefix := @prefix@ |
8 | exec_prefix := @exec_prefix@ | |
9 | datarootdir := @datarootdir@ | |
10 | bindir := @bindir@ | |
11 | datadir := @datadir@ | |
12 | sysconfdir := @sysconfdir@ | |
13 | libdir := @libdir@ | |
a5f6bc36 | 14 | includedir := @includedir@ |
608fbdbd | 15 | sbindir := @sbindir@ |
16 | localstatedir := @localstatedir@ | |
40641b40 | 17 | systemdsystemunitdir := @systemdsystemunitdir@ |
8100ef94 | 18 | CXX := @CXX@ |
8af35e1f | 19 | CXXFLAGS := -I$(srcdir)/include -Iinclude @CPPFLAGS@ @CXXFLAGS@ |
8100ef94 | 20 | LDFLAGS := @LDFLAGS@ |
8100ef94 | 21 | LIBS := @LIBS@ |
432a04e5 | 22 | LIBZNC := @LIBZNC@ |
23 | LIBZNCDIR:= @LIBZNCDIR@ | |
5a2844f9 | 24 | MODDIR := @MODDIR@ |
fbe5dd10 | 25 | DATADIR := @DATADIR@ |
64fbd545 | 26 | PKGCONFIGDIR := $(libdir)/pkgconfig |
eb307ddc | 27 | INSTALL := @INSTALL@ |
28 | INSTALL_PROGRAM := @INSTALL_PROGRAM@ | |
29 | INSTALL_SCRIPT := @INSTALL_SCRIPT@ | |
30 | INSTALL_DATA := @INSTALL_DATA@ | |
a1311277 AS |
31 | GIT := @GIT@ |
32 | SED := @SED@ | |
d9591e95 | 33 | |
17907784 AS |
34 | GTEST_DOWNLOAD := |
35 | GTEST_DIR := @GTEST_DIR@ | |
36 | ifeq "$(GTEST_DIR)" "" | |
37 | GTEST_VER := 1.7.0 | |
38 | GTEST_DIR := test/gtest-$(GTEST_VER) | |
39 | GTEST_DOWNLOAD := 1 | |
40 | endif | |
41 | ||
fec1a3fe KF |
42 | LIB_SRCS := ZNCString.cpp Csocket.cpp znc.cpp IRCNetwork.cpp User.cpp IRCSock.cpp \ |
43 | Client.cpp Chan.cpp Nick.cpp Server.cpp Modules.cpp MD5.cpp Buffer.cpp Utils.cpp \ | |
eb449190 | 44 | FileUtils.cpp HTTPSock.cpp Template.cpp ClientCommand.cpp Socket.cpp SHA256.cpp \ |
4442af72 AS |
45 | WebModules.cpp Listener.cpp Config.cpp ZNCDebug.cpp Threads.cpp version.cpp Query.cpp \ |
46 | SSLVerifyHost.cpp | |
afeab4a9 AS |
47 | LIB_SRCS := $(addprefix src/,$(LIB_SRCS)) |
48 | BIN_SRCS := src/main.cpp | |
432a04e5 | 49 | LIB_OBJS := $(patsubst %cpp,%o,$(LIB_SRCS)) |
50 | BIN_OBJS := $(patsubst %cpp,%o,$(BIN_SRCS)) | |
7345a6ee | 51 | TESTS := StringTest ConfigTest UtilsTest ThreadTest NickTest ClientTest NetworkTest |
e13bfa11 | 52 | TESTS := $(addprefix test/,$(addsuffix .o,$(TESTS))) |
0696a6ed | 53 | CLEAN := znc src/*.o test/*.o core core.* .version_extra .depend modules/.depend unittest |
2f058fcc | 54 | DISTCLEAN := Makefile config.log config.status znc-buildmod include/znc/zncconfig.h \ |
6aaf0770 | 55 | modules/Makefile man/Makefile znc.pc znc-uninstalled.pc test/Makefile |
d9591e95 | 56 | |
aeeb1eb3 | 57 | CXXFLAGS += -D_MODDIR_=\"$(MODDIR)\" -D_DATADIR_=\"$(DATADIR)\" |
58 | ||
877c5775 | 59 | ifneq "$(V)" "" |
60 | VERBOSE=1 | |
61 | endif | |
c91d032e | 62 | ifeq "$(VERBOSE)" "" |
63 | Q=@ | |
64 | E=@echo | |
65 | C=-s | |
66 | else | |
67 | Q= | |
68 | E=@\# | |
69 | C= | |
70 | endif | |
71 | ||
e13bfa11 | 72 | .PHONY: all man modules clean distclean install version_extra_recompile test |
897806a8 | 73 | .SECONDARY: |
d9591e95 | 74 | |
f72e2f8a | 75 | all: znc man modules $(LIBZNC) |
8b5ba0f1 | 76 | @echo "" |
1f9b20a9 AS |
77 | @echo " ZNC was successfully compiled." |
78 | @echo " Use '$(MAKE) install' to install ZNC to '$(prefix)'." | |
432a04e5 | 79 | |
80 | ifeq "$(LIBZNC)" "" | |
81 | OBJS := $(BIN_OBJS) $(LIB_OBJS) | |
6169df3f | 82 | |
d9591e95 | 83 | znc: $(OBJS) |
c91d032e | 84 | $(E) Linking znc... |
85 | $(Q)$(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LIBS) | |
e13bfa11 | 86 | |
432a04e5 | 87 | else |
88 | znc: $(BIN_OBJS) $(LIBZNC) | |
c91d032e | 89 | $(E) Linking znc... |
90 | $(Q)$(CXX) $(LDFLAGS) -o $@ $(BIN_OBJS) -L. -lznc -Wl,-rpath,$(LIBZNCDIR) $(LIBS) | |
432a04e5 | 91 | |
92 | $(LIBZNC): $(LIB_OBJS) | |
c91d032e | 93 | $(E) Linking $(LIBZNC)... |
94 | $(Q)$(CXX) $(LDFLAGS) -shared -o $@ $(LIB_OBJS) $(LIBS) | |
432a04e5 | 95 | endif |
d9591e95 | 96 | |
91c07d5a AS |
97 | unittest: $(LIB_OBJS) test/gtest-all.o test/gtest-main.o $(TESTS) |
98 | $(E) Linking unit test... | |
99 | $(Q)$(CXX) $(LDFLAGS) -o $@ $(LIB_OBJS) test/gtest-all.o test/gtest-main.o $(TESTS) $(LIBS) | |
100 | ||
f59b7122 | 101 | man: |
c91d032e | 102 | @$(MAKE) -C man $(C) |
f59b7122 | 103 | |
9166e6ed | 104 | modules: $(LIBZNC) include/znc/Csocket.h |
84ec4978 | 105 | @$(MAKE) -C modules $(C) |
d280f386 | 106 | |
d9591e95 | 107 | clean: |
6169df3f | 108 | rm -rf $(CLEAN) |
f72e2f8a | 109 | @$(MAKE) -C modules clean; |
f59b7122 | 110 | @$(MAKE) -C man clean |
d9591e95 | 111 | |
44431c46 | 112 | distclean: clean |
6169df3f | 113 | rm -rf $(DISTCLEAN) |
d9591e95 | 114 | |
9166e6ed | 115 | src/%.o: src/%.cpp Makefile include/znc/Csocket.h |
afeab4a9 AS |
116 | @mkdir -p .depend src |
117 | $(E) Building core object $*... | |
34d0da20 | 118 | $(Q)$(CXX) $(CXXFLAGS) -c -o $@ $< -MD -MF .depend/$*.dep -MT $@ |
b6fadce9 | 119 | |
9166e6ed | 120 | test/%.o: test/%.cpp Makefile include/znc/Csocket.h |
e13bfa11 AS |
121 | @mkdir -p .depend test |
122 | $(E) Building test object $*... | |
17907784 | 123 | $(Q)$(CXX) $(CXXFLAGS) -I$(GTEST_DIR)/include -c -o $@ $< -MD -MF .depend/$*.test.dep -MT $@ |
e13bfa11 | 124 | |
17907784 | 125 | test/gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc Makefile |
e13bfa11 AS |
126 | @mkdir -p .depend test |
127 | $(E) Building test object gtest-all... | |
17907784 | 128 | $(Q)$(CXX) $(CXXFLAGS) -I$(GTEST_DIR)/include -I$(GTEST_DIR) -c -o $@ $< -MD -MF .depend/gtest-all.dep -MT $@ |
e13bfa11 | 129 | |
17907784 | 130 | test/gtest-main.o: $(GTEST_DIR)/src/gtest_main.cc Makefile |
e13bfa11 AS |
131 | @mkdir -p .depend test |
132 | $(E) Building test object gtest-main... | |
17907784 | 133 | $(Q)$(CXX) $(CXXFLAGS) -I$(GTEST_DIR)/include -c -o $@ $< -MD -MF .depend/gtest-main.dep -MT $@ |
e13bfa11 | 134 | |
17907784 | 135 | ifneq "$(GTEST_DOWNLOAD)" "" |
e13bfa11 | 136 | test/gtest.zip: |
17907784 | 137 | @mkdir -p .depend test |
e13bfa11 AS |
138 | $(E) Downloading GoogleTest $(GTEST_VER) |
139 | $(Q)wget http://googletest.googlecode.com/files/gtest-$(GTEST_VER).zip -O $@ | |
140 | ||
17907784 | 141 | $(GTEST_DIR)/src/gtest-all.cc $(GTEST_DIR)/src/gtest_main.cc $(GTEST_DIR)/include/gtest/gtest.h: test/gtest.zip |
e13bfa11 | 142 | $(E) Unpacking GoogleTest $(GTEST_VER) |
627b53b4 AS |
143 | $(Q)test -r $@ || unzip $^ -d test/ |
144 | $(Q)test -r $@ | |
145 | $(Q)touch -c $@ | |
17907784 | 146 | endif |
e13bfa11 | 147 | |
90b4c882 | 148 | ifneq "THIS_IS_NOT_TARBALL" "" |
bbde9ab4 AS |
149 | # If git commit was changed since previous build, add a phony target to dependencies, forcing version.o to be recompiled |
150 | # Nightlies have pregenerated version.cpp | |
ce1543c5 | 151 | src/version.cpp: Makefile version.sh $(shell if [ x`cat .version_extra 2> /dev/null` != x`$(srcdir)/version.sh $(GIT) 3>&2 2> /dev/null` ]; then echo version_extra_recompile; fi) |
a1311277 | 152 | @mkdir -p .depend src |
58a34fa5 | 153 | $(E) Building source file version.cpp... |
3a7dc7aa | 154 | $(Q)WRITE_OUTPUT=yes $(srcdir)/version.sh "$(GIT)" > .version_extra 2> /dev/null |
cc279666 | 155 | |
9166e6ed AS |
156 | CLEAN += src/version.cpp src/Csocket.cpp include/znc/Csocket.h |
157 | ||
158 | src/Csocket.cpp: third_party/Csocket/Csocket.cc | |
159 | @rm -f $@ | |
160 | @mkdir -p src | |
161 | @sed -e 's:#include "Csocket.h":#include <znc/Csocket.h>:' $^ > $@ | |
162 | include/znc/Csocket.h: third_party/Csocket/Csocket.h | |
163 | @rm -f $@ | |
164 | @mkdir -p include/znc | |
165 | @sed -e 's:#include "defines.h":#include <znc/defines.h>:' $^ > $@ | |
ffd1352f AS |
166 | third_party/Csocket/Csocket.h third_party/Csocket/Csocket.cc: |
167 | @echo It looks like git submodules are not initialized. Run: git submodule update --init --recursive | |
168 | @exit 1 | |
bbde9ab4 | 169 | endif |
a1311277 | 170 | |
432a04e5 | 171 | install: znc $(LIBZNC) |
a08ec52d US |
172 | test -d $(DESTDIR)$(bindir) || $(INSTALL) -d $(DESTDIR)$(bindir) |
173 | test -d $(DESTDIR)$(includedir)/znc || $(INSTALL) -d $(DESTDIR)$(includedir)/znc | |
174 | test -d $(DESTDIR)$(PKGCONFIGDIR) || $(INSTALL) -d $(DESTDIR)$(PKGCONFIGDIR) | |
175 | test -d $(DESTDIR)$(MODDIR) || $(INSTALL) -d $(DESTDIR)$(MODDIR) | |
176 | test -d $(DESTDIR)$(DATADIR) || $(INSTALL) -d $(DESTDIR)$(DATADIR) | |
4c7808c5 | 177 | cp -R $(srcdir)/webskins $(DESTDIR)$(DATADIR) |
0cc8bebd | 178 | find $(DESTDIR)$(DATADIR)/webskins -type d -exec chmod 0755 '{}' \; |
179 | find $(DESTDIR)$(DATADIR)/webskins -type f -exec chmod 0644 '{}' \; | |
eb307ddc | 180 | $(INSTALL_PROGRAM) znc $(DESTDIR)$(bindir) |
eb307ddc | 181 | $(INSTALL_SCRIPT) znc-buildmod $(DESTDIR)$(bindir) |
afeab4a9 AS |
182 | $(INSTALL_DATA) $(srcdir)/include/znc/*.h $(DESTDIR)$(includedir)/znc |
183 | $(INSTALL_DATA) include/znc/zncconfig.h $(DESTDIR)$(includedir)/znc | |
eb307ddc | 184 | $(INSTALL_DATA) znc.pc $(DESTDIR)$(PKGCONFIGDIR) |
84ec4978 | 185 | @$(MAKE) -C modules install DESTDIR=$(DESTDIR); |
bec75207 | 186 | if test -n "$(LIBZNC)"; then \ |
a08ec52d | 187 | test -d $(DESTDIR)$(LIBZNCDIR) || $(INSTALL) -d $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \ |
eb307ddc | 188 | $(INSTALL_PROGRAM) $(LIBZNC) $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \ |
bec75207 | 189 | fi |
f59b7122 | 190 | @$(MAKE) -C man install DESTDIR=$(DESTDIR) |
701c0f35 AS |
191 | @HAVE_SYSTEMD_TRUE@test -d $(DESTDIR)$(systemdsystemunitdir) || $(INSTALL) -d $(DESTDIR)$(systemdsystemunitdir) |
192 | @HAVE_SYSTEMD_TRUE@$(INSTALL_DATA) $(srcdir)/znc.service $(DESTDIR)$(systemdsystemunitdir) | |
1f9b20a9 | 193 | @echo "" |
f1932b93 | 194 | @echo "******************************************************************" |
1f9b20a9 AS |
195 | @echo " ZNC was successfully installed." |
196 | @echo " You can use '$(bindir)/znc --makeconf'" | |
197 | @echo " to generate a config file." | |
198 | @echo "" | |
199 | @echo " If you need help with using ZNC, please visit our wiki at:" | |
200 | @echo " http://znc.in" | |
6169df3f | 201 | |
bec75207 | 202 | uninstall: |
203 | rm $(DESTDIR)$(bindir)/znc | |
bec75207 | 204 | rm $(DESTDIR)$(bindir)/znc-buildmod |
205 | rm $(DESTDIR)$(includedir)/znc/*.h | |
206 | rm $(DESTDIR)$(PKGCONFIGDIR)/znc.pc | |
0cc8bebd | 207 | rm -rf $(DESTDIR)$(DATADIR)/webskins |
bec75207 | 208 | if test -n "$(LIBZNC)"; then \ |
73ba0488 | 209 | rm $(DESTDIR)$(LIBZNCDIR)/$(LIBZNC) || exit 1 ; \ |
bec75207 | 210 | rmdir $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \ |
211 | fi | |
212 | @$(MAKE) -C man uninstall DESTDIR=$(DESTDIR) | |
213 | @if test -n "modules"; then \ | |
214 | $(MAKE) -C modules uninstall DESTDIR=$(DESTDIR); \ | |
215 | fi | |
216 | rmdir $(DESTDIR)$(bindir) | |
217 | rmdir $(DESTDIR)$(includedir)/znc | |
218 | rmdir $(DESTDIR)$(PKGCONFIGDIR) | |
5a2844f9 | 219 | @echo "Successfully uninstalled, but empty directories were left behind" |
bec75207 | 220 | |
e13bfa11 AS |
221 | test: unittest |
222 | $(Q)./unittest | |
223 | ||
3637091b | 224 | -include $(wildcard .depend/*.dep) |