]> jfr.im git - irc/evilnet/znc.git/blame - Makefile.in
Merge pull request #1383 from Phansa/master
[irc/evilnet/znc.git] / Makefile.in
CommitLineData
84ae0f2e 1SHELL := @SHELL@
2
ecd50392 3# Support out-of-tree builds
4srcdir := @srcdir@
5VPATH := @srcdir@
6
608fbdbd 7prefix := @prefix@
8exec_prefix := @exec_prefix@
9datarootdir := @datarootdir@
10bindir := @bindir@
11datadir := @datadir@
12sysconfdir := @sysconfdir@
13libdir := @libdir@
a5f6bc36 14includedir := @includedir@
608fbdbd 15sbindir := @sbindir@
16localstatedir := @localstatedir@
40641b40 17systemdsystemunitdir := @systemdsystemunitdir@
8100ef94 18CXX := @CXX@
8af35e1f 19CXXFLAGS := -I$(srcdir)/include -Iinclude @CPPFLAGS@ @CXXFLAGS@
8100ef94 20LDFLAGS := @LDFLAGS@
8100ef94 21LIBS := @LIBS@
432a04e5 22LIBZNC := @LIBZNC@
23LIBZNCDIR:= @LIBZNCDIR@
5a2844f9 24MODDIR := @MODDIR@
fbe5dd10 25DATADIR := @DATADIR@
64fbd545 26PKGCONFIGDIR := $(libdir)/pkgconfig
eb307ddc 27INSTALL := @INSTALL@
28INSTALL_PROGRAM := @INSTALL_PROGRAM@
29INSTALL_SCRIPT := @INSTALL_SCRIPT@
30INSTALL_DATA := @INSTALL_DATA@
a1311277
AS
31GIT := @GIT@
32SED := @SED@
d9591e95 33
17907784 34GTEST_DIR := @GTEST_DIR@
6f40e5dd 35GMOCK_DIR := @GMOCK_DIR@
17907784 36ifeq "$(GTEST_DIR)" ""
6f40e5dd
AS
37GTEST_DIR := $(srcdir)/third_party/googletest/googletest
38endif
39ifeq "$(GMOCK_DIR)" ""
40GMOCK_DIR := $(srcdir)/third_party/googletest/googlemock
17907784 41endif
90ae7853
AS
42qt_CFLAGS := @qt_CFLAGS@ -fPIC -std=c++11 -pthread
43qt_LIBS := @qt_LIBS@ -pthread
17907784 44
b3bb6fb5
N
45# Force the simple internal regex engine to get consistent behavior on all platforms.
46# See https://code.google.com/p/chromium/issues/detail?id=317224 for more details.
47GTEST_FLAGS := -DGTEST_HAS_POSIX_RE=0 -I$(GMOCK_DIR)/include -I$(GTEST_DIR)/include
565d04a8
N
48# Silence warnings about overload virtual Csock::Write(), and missing field
49# initializers in both gtest and gmock
50GTEST_FLAGS += -Wno-overloaded-virtual -Wno-missing-field-initializers
b3bb6fb5 51
fec1a3fe
KF
52LIB_SRCS := ZNCString.cpp Csocket.cpp znc.cpp IRCNetwork.cpp User.cpp IRCSock.cpp \
53 Client.cpp Chan.cpp Nick.cpp Server.cpp Modules.cpp MD5.cpp Buffer.cpp Utils.cpp \
eb449190 54 FileUtils.cpp HTTPSock.cpp Template.cpp ClientCommand.cpp Socket.cpp SHA256.cpp \
4442af72 55 WebModules.cpp Listener.cpp Config.cpp ZNCDebug.cpp Threads.cpp version.cpp Query.cpp \
8eeeaf71 56 SSLVerifyHost.cpp Message.cpp Translation.cpp
afeab4a9
AS
57LIB_SRCS := $(addprefix src/,$(LIB_SRCS))
58BIN_SRCS := src/main.cpp
432a04e5 59LIB_OBJS := $(patsubst %cpp,%o,$(LIB_SRCS))
60BIN_OBJS := $(patsubst %cpp,%o,$(BIN_SRCS))
f71a0a21 61TESTS := StringTest ConfigTest UtilsTest ThreadTest NickTest ClientTest NetworkTest \
b4bb4fa0 62 MessageTest ModulesTest IRCSockTest QueryTest BufferTest UserTest
e13bfa11 63TESTS := $(addprefix test/,$(addsuffix .o,$(TESTS)))
c336ef5e
AS
64CLEAN := znc src/*.o test/*.o core core.* .version_extra .depend modules/.depend \
65 unittest $(LIBZNC)
2f058fcc 66DISTCLEAN := Makefile config.log config.status znc-buildmod include/znc/zncconfig.h \
6aaf0770 67 modules/Makefile man/Makefile znc.pc znc-uninstalled.pc test/Makefile
d9591e95 68
aeeb1eb3 69CXXFLAGS += -D_MODDIR_=\"$(MODDIR)\" -D_DATADIR_=\"$(DATADIR)\"
70
877c5775 71ifneq "$(V)" ""
72VERBOSE=1
73endif
c91d032e 74ifeq "$(VERBOSE)" ""
75Q=@
76E=@echo
77C=-s
78else
79Q=
80E=@\#
81C=
82endif
83
e13bfa11 84.PHONY: all man modules clean distclean install version_extra_recompile test
897806a8 85.SECONDARY:
d9591e95 86
f72e2f8a 87all: znc man modules $(LIBZNC)
8b5ba0f1 88 @echo ""
1f9b20a9
AS
89 @echo " ZNC was successfully compiled."
90 @echo " Use '$(MAKE) install' to install ZNC to '$(prefix)'."
432a04e5 91
92ifeq "$(LIBZNC)" ""
93OBJS := $(BIN_OBJS) $(LIB_OBJS)
6169df3f 94
d9591e95 95znc: $(OBJS)
c91d032e 96 $(E) Linking znc...
97 $(Q)$(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
e13bfa11 98
432a04e5 99else
100znc: $(BIN_OBJS) $(LIBZNC)
c91d032e 101 $(E) Linking znc...
e93b029a 102 $(Q)$(CXX) $(LDFLAGS) -o $@ $(BIN_OBJS) -L. -lznc -Wl,-rpath,$(LIBZNCDIR) $(LIBS)
432a04e5 103
104$(LIBZNC): $(LIB_OBJS)
c91d032e 105 $(E) Linking $(LIBZNC)...
4aba9fed 106 $(Q)$(CXX) $(LDFLAGS) -shared -o $@ $(LIB_OBJS) $(LIBS) -Wl,--out-implib=libznc.dll.a
432a04e5 107endif
d9591e95 108
6f40e5dd 109unittest: $(LIB_OBJS) test/gtest-all.o test/gmock-all.o test/gmock-main.o $(TESTS)
91c07d5a 110 $(E) Linking unit test...
6f40e5dd 111 $(Q)$(CXX) $(LDFLAGS) -o $@ $(LIB_OBJS) test/gtest-all.o test/gmock-all.o test/gmock-main.o $(TESTS) $(LIBS)
91c07d5a 112
90ae7853
AS
113inttest: test/Integration.o test/Int-gtest-all.o test/Int-gmock-all.o test/Int-gmock-main.o
114 $(E) Linking integration test...
115 $(Q)g++ -std=c++11 -o $@ test/Integration.o test/Int-gtest-all.o test/Int-gmock-all.o test/Int-gmock-main.o $(LIBS) $(qt_LIBS)
116
f59b7122 117man:
c91d032e 118 @$(MAKE) -C man $(C)
f59b7122 119
9166e6ed 120modules: $(LIBZNC) include/znc/Csocket.h
84ec4978 121 @$(MAKE) -C modules $(C)
d280f386 122
d9591e95 123clean:
6169df3f 124 rm -rf $(CLEAN)
f72e2f8a 125 @$(MAKE) -C modules clean;
f59b7122 126 @$(MAKE) -C man clean
d9591e95 127
44431c46 128distclean: clean
6169df3f 129 rm -rf $(DISTCLEAN)
d9591e95 130
9166e6ed 131src/%.o: src/%.cpp Makefile include/znc/Csocket.h
afeab4a9
AS
132 @mkdir -p .depend src
133 $(E) Building core object $*...
34d0da20 134 $(Q)$(CXX) $(CXXFLAGS) -c -o $@ $< -MD -MF .depend/$*.dep -MT $@
b6fadce9 135
9166e6ed 136test/%.o: test/%.cpp Makefile include/znc/Csocket.h
e13bfa11
AS
137 @mkdir -p .depend test
138 $(E) Building test object $*...
b3bb6fb5 139 $(Q)$(CXX) $(CXXFLAGS) $(GTEST_FLAGS) -c -o $@ $< -MD -MF .depend/$*.test.dep -MT $@
e13bfa11 140
17907784 141test/gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc Makefile
e13bfa11
AS
142 @mkdir -p .depend test
143 $(E) Building test object gtest-all...
b3bb6fb5 144 $(Q)$(CXX) $(CXXFLAGS) $(GTEST_FLAGS) -I$(GTEST_DIR) -c -o $@ $< -MD -MF .depend/gtest-all.dep -MT $@
e13bfa11 145
6f40e5dd 146test/gmock-all.o: $(GMOCK_DIR)/src/gmock-all.cc Makefile
e13bfa11 147 @mkdir -p .depend test
6f40e5dd 148 $(E) Building test object gmock-all...
b3bb6fb5 149 $(Q)$(CXX) $(CXXFLAGS) $(GTEST_FLAGS) -I$(GMOCK_DIR) -c -o $@ $< -MD -MF .depend/gmock-all.dep -MT $@
e13bfa11 150
6f40e5dd 151test/gmock-main.o: $(GMOCK_DIR)/src/gmock_main.cc Makefile
17907784 152 @mkdir -p .depend test
6f40e5dd 153 $(E) Building test object gmock-main...
b3bb6fb5 154 $(Q)$(CXX) $(CXXFLAGS) $(GTEST_FLAGS) -c -o $@ $< -MD -MF .depend/gmock-main.dep -MT $@
e13bfa11 155
90ae7853 156# Qt fails under TSAN, so CXXFLAGS/LDFLAGS can't be used.
561a1805 157test/Integration.o: test/integration/main.cpp Makefile
90ae7853
AS
158 @mkdir -p .depend test
159 $(E) Building test object Integration...
d13742b1 160 $(Q)g++ $(qt_CFLAGS) $(GTEST_FLAGS) -c -o $@ $< -MD -MF .depend/Integration.test.dep -MT $@ '-DZNC_BIN_DIR="$(bindir)"' '-DZNC_SRC_DIR="$(realpath $(srcdir))"'
90ae7853
AS
161test/Int-gtest-all.o: $(GTEST_DIR)/src/gtest-all.cc Makefile
162 @mkdir -p .depend test
163 $(E) Building test object Int-gtest-all...
164 $(Q)g++ $(qt_CFLAGS) $(GTEST_FLAGS) -I$(GTEST_DIR) -c -o $@ $< -MD -MF .depend/Int-gtest-all.dep -MT $@
165test/Int-gmock-all.o: $(GMOCK_DIR)/src/gmock-all.cc Makefile
166 @mkdir -p .depend test
167 $(E) Building test object Int-gmock-all...
168 $(Q)g++ $(qt_CFLAGS) $(GTEST_FLAGS) -I$(GMOCK_DIR) -c -o $@ $< -MD -MF .depend/Int-gmock-all.dep -MT $@
169test/Int-gmock-main.o: $(GMOCK_DIR)/src/gmock_main.cc Makefile
170 @mkdir -p .depend test
171 $(E) Building test object Int-gmock-main...
172 $(Q)g++ $(qt_CFLAGS) $(GTEST_FLAGS) -c -o $@ $< -MD -MF .depend/Int-gmock-main.dep -MT $@
173
90b4c882 174ifneq "THIS_IS_NOT_TARBALL" ""
bbde9ab4
AS
175# If git commit was changed since previous build, add a phony target to dependencies, forcing version.o to be recompiled
176# Nightlies have pregenerated version.cpp
da279f96 177src/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 178 @mkdir -p .depend src
58a34fa5 179 $(E) Building source file version.cpp...
3a7dc7aa 180 $(Q)WRITE_OUTPUT=yes $(srcdir)/version.sh "$(GIT)" > .version_extra 2> /dev/null
cc279666 181
561a1805
AS
182CLEAN += src/version.cpp
183endif
184
185CLEAN += src/Csocket.cpp include/znc/Csocket.h
9166e6ed
AS
186
187src/Csocket.cpp: third_party/Csocket/Csocket.cc
188 @rm -f $@
189 @mkdir -p src
190 @sed -e 's:#include "Csocket.h":#include <znc/Csocket.h>:' $^ > $@
191include/znc/Csocket.h: third_party/Csocket/Csocket.h
192 @rm -f $@
193 @mkdir -p include/znc
194 @sed -e 's:#include "defines.h":#include <znc/defines.h>:' $^ > $@
ffd1352f
AS
195third_party/Csocket/Csocket.h third_party/Csocket/Csocket.cc:
196 @echo It looks like git submodules are not initialized. Run: git submodule update --init --recursive
197 @exit 1
a1311277 198
be60ebb4 199znc.service: znc.service.in
561a1805 200 @sed -e "s:\@CMAKE_INSTALL_FULL_BINDIR\@:$(bindir):" $^ > $@
be60ebb4
PG
201
202CLEAN += znc.service
203
204install: znc znc.service $(LIBZNC)
a08ec52d
US
205 test -d $(DESTDIR)$(bindir) || $(INSTALL) -d $(DESTDIR)$(bindir)
206 test -d $(DESTDIR)$(includedir)/znc || $(INSTALL) -d $(DESTDIR)$(includedir)/znc
207 test -d $(DESTDIR)$(PKGCONFIGDIR) || $(INSTALL) -d $(DESTDIR)$(PKGCONFIGDIR)
208 test -d $(DESTDIR)$(MODDIR) || $(INSTALL) -d $(DESTDIR)$(MODDIR)
209 test -d $(DESTDIR)$(DATADIR) || $(INSTALL) -d $(DESTDIR)$(DATADIR)
4c7808c5 210 cp -R $(srcdir)/webskins $(DESTDIR)$(DATADIR)
0cc8bebd 211 find $(DESTDIR)$(DATADIR)/webskins -type d -exec chmod 0755 '{}' \;
212 find $(DESTDIR)$(DATADIR)/webskins -type f -exec chmod 0644 '{}' \;
eb307ddc 213 $(INSTALL_PROGRAM) znc $(DESTDIR)$(bindir)
eb307ddc 214 $(INSTALL_SCRIPT) znc-buildmod $(DESTDIR)$(bindir)
afeab4a9 215 $(INSTALL_DATA) $(srcdir)/include/znc/*.h $(DESTDIR)$(includedir)/znc
786d94fb 216 $(INSTALL_DATA) include/znc/*.h $(DESTDIR)$(includedir)/znc
eb307ddc 217 $(INSTALL_DATA) znc.pc $(DESTDIR)$(PKGCONFIGDIR)
84ec4978 218 @$(MAKE) -C modules install DESTDIR=$(DESTDIR);
bec75207 219 if test -n "$(LIBZNC)"; then \
a08ec52d 220 test -d $(DESTDIR)$(LIBZNCDIR) || $(INSTALL) -d $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \
eb307ddc 221 $(INSTALL_PROGRAM) $(LIBZNC) $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \
4aba9fed 222 $(INSTALL_PROGRAM) libznc.dll.a $(DESTDIR)$(libdir) || exit 1 ; \
bec75207 223 fi
f59b7122 224 @$(MAKE) -C man install DESTDIR=$(DESTDIR)
701c0f35
AS
225 @HAVE_SYSTEMD_TRUE@test -d $(DESTDIR)$(systemdsystemunitdir) || $(INSTALL) -d $(DESTDIR)$(systemdsystemunitdir)
226 @HAVE_SYSTEMD_TRUE@$(INSTALL_DATA) $(srcdir)/znc.service $(DESTDIR)$(systemdsystemunitdir)
1f9b20a9 227 @echo ""
f1932b93 228 @echo "******************************************************************"
1f9b20a9
AS
229 @echo " ZNC was successfully installed."
230 @echo " You can use '$(bindir)/znc --makeconf'"
231 @echo " to generate a config file."
232 @echo ""
233 @echo " If you need help with using ZNC, please visit our wiki at:"
234 @echo " http://znc.in"
6169df3f 235
bec75207 236uninstall:
237 rm $(DESTDIR)$(bindir)/znc
bec75207 238 rm $(DESTDIR)$(bindir)/znc-buildmod
239 rm $(DESTDIR)$(includedir)/znc/*.h
240 rm $(DESTDIR)$(PKGCONFIGDIR)/znc.pc
0cc8bebd 241 rm -rf $(DESTDIR)$(DATADIR)/webskins
bec75207 242 if test -n "$(LIBZNC)"; then \
73ba0488 243 rm $(DESTDIR)$(LIBZNCDIR)/$(LIBZNC) || exit 1 ; \
bec75207 244 rmdir $(DESTDIR)$(LIBZNCDIR) || exit 1 ; \
245 fi
246 @$(MAKE) -C man uninstall DESTDIR=$(DESTDIR)
247 @if test -n "modules"; then \
248 $(MAKE) -C modules uninstall DESTDIR=$(DESTDIR); \
249 fi
250 rmdir $(DESTDIR)$(bindir)
251 rmdir $(DESTDIR)$(includedir)/znc
252 rmdir $(DESTDIR)$(PKGCONFIGDIR)
5a2844f9 253 @echo "Successfully uninstalled, but empty directories were left behind"
bec75207 254
e13bfa11
AS
255test: unittest
256 $(Q)./unittest
ceb1c5ec 257
90ae7853
AS
258# This test uses files at <prefix>/lib/znc, which is less than ideal, especially from build scripts of distros.
259# That's why it's a separate make target.
260test2: inttest
261 $(Q)./inttest
e13bfa11 262
3637091b 263-include $(wildcard .depend/*.dep)