aebb43f48d
which don't use coolmount and coolforkit, but instead use linux mount spaces with coolforkitns instead. That doesn't need sudo, so drop automatically calling that in make to setcaps on coolmount + coolforkit for an easier developer experience. Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com> Change-Id: I6f8ddaf1053d084ec8c1f22adf830a677e80cadc
740 lines
23 KiB
Makefile
740 lines
23 KiB
Makefile
ETAGS=ctags -e
|
|
|
|
if ENABLE_MOBILEAPP
|
|
|
|
if ENABLE_GTKAPP
|
|
SUBDIRS = gtk browser
|
|
else
|
|
if ENABLE_WASM
|
|
SUBDIRS = wasm browser
|
|
else !ENABLE_WASM
|
|
SUBDIRS = browser
|
|
endif !ENABLE_WASM
|
|
endif
|
|
|
|
else
|
|
|
|
SUBDIRS = . browser test cypress_test
|
|
|
|
export ENABLE_DEBUG
|
|
|
|
bin_PROGRAMS = \
|
|
coolforkit \
|
|
coolforkitns \
|
|
coolmount \
|
|
coolstress \
|
|
coolconvert coolconfig
|
|
|
|
if ENABLE_LIBFUZZER
|
|
else
|
|
bin_PROGRAMS += coolwsd
|
|
if ENABLE_DEBUG
|
|
bin_PROGRAMS += coolwsd-inproc
|
|
endif
|
|
endif
|
|
|
|
dist_bin_SCRIPTS = coolwsd-systemplate-setup
|
|
|
|
man_MANS = man/coolwsd.1 \
|
|
man/coolforkit.1 \
|
|
man/coolconvert.1 \
|
|
man/coolconfig.1 \
|
|
man/coolstress.1 \
|
|
man/coolwsd-systemplate-setup.1 \
|
|
man/coolmount.1
|
|
|
|
|
|
dist_doc_DATA = wsd/README.md \
|
|
wsd/README.vars \
|
|
wsd/protocol.txt \
|
|
wsd/reference.md \
|
|
wsd/metrics.txt \
|
|
THIRDPARTYLICENSES
|
|
|
|
coolwsddatadir = @COOLWSD_DATADIR@
|
|
|
|
coolwsddata_DATA = discovery.xml \
|
|
favicon.ico
|
|
|
|
coolwsdconfigdir = @COOLWSD_CONFIGDIR@
|
|
|
|
coolwsdconfig_DATA = coolwsd.xml \
|
|
coolkitconfig.xcu
|
|
|
|
apache2configdir = ${sysconfdir}/apache2/conf-available
|
|
|
|
apache2config_DATA = etc/apache2/coolwsd.conf
|
|
|
|
nginxconfigdir = ${sysconfdir}/nginx/snippets
|
|
|
|
nginxconfig_DATA = etc/nginx/coolwsd.conf
|
|
|
|
ACLOCAL_AMFLAGS = -I m4
|
|
|
|
# quick and easy for now.
|
|
include_paths = -I${top_srcdir}/common -I${top_srcdir}/net -I${top_srcdir}/wsd -I${top_srcdir}/kit ${ZLIB_CFLAGS} ${ZSTD_CFLAGS} ${PNG_CFLAGS}
|
|
if ENABLE_SSL
|
|
include_paths += ${OPENSSL_CFLAGS}
|
|
endif
|
|
|
|
AM_CPPFLAGS = -pthread -DCOOLWSD_DATADIR='"@COOLWSD_DATADIR@"' \
|
|
-DCOOLWSD_CONFIGDIR='"@COOLWSD_CONFIGDIR@"' \
|
|
-DDEBUG_ABSSRCDIR='"@abs_srcdir@"' \
|
|
${include_paths}
|
|
|
|
if !ENABLE_DEBUG
|
|
AM_CPPFLAGS += -DNDEBUG
|
|
endif
|
|
|
|
AM_LDFLAGS = -Wl,-E -lpam $(ZLIB_LIBS) $(ZSTD_LIBS) ${PNG_LIBS}
|
|
|
|
# Clang's linker doesn't like -pthread.
|
|
if !HAVE_CLANG
|
|
AM_LDFLAGS += -pthread
|
|
endif
|
|
|
|
if ENABLE_SSL
|
|
AM_LDFLAGS += ${OPENSSL_LIBS}
|
|
else
|
|
coolwsd_LDADD = ${OPENSSL_LIBS}
|
|
coolconfig_LDADD = ${OPENSSL_LIBS}
|
|
endif
|
|
|
|
AM_ETAGSFLAGS = --c++-kinds=+p --fields=+iaS --extra=+q -R --totals=yes --exclude=browser *
|
|
AM_CTAGSFLAGS = $(AM_ETAGSFLAGS)
|
|
|
|
shared_sources = common/FileUtil.cpp \
|
|
common/JailUtil.cpp \
|
|
common/Log.cpp \
|
|
common/Protocol.cpp \
|
|
common/StringVector.cpp \
|
|
common/Session.cpp \
|
|
common/Seccomp.cpp \
|
|
common/MobileApp.cpp \
|
|
common/TraceEvent.cpp \
|
|
common/SigUtil.cpp \
|
|
common/SpookyV2.cpp \
|
|
common/Unit.cpp \
|
|
common/Util.cpp \
|
|
common/Util-desktop.cpp \
|
|
common/ConfigUtil.cpp \
|
|
common/Authorization.cpp \
|
|
common/CommandControl.cpp \
|
|
common/Simd.cpp \
|
|
common/CoolMount.cpp \
|
|
kit/KitQueue.cpp \
|
|
net/DelaySocket.cpp \
|
|
net/HttpRequest.cpp \
|
|
net/HttpHelper.cpp \
|
|
net/NetUtil.cpp \
|
|
net/Socket.cpp \
|
|
wsd/Exceptions.cpp
|
|
if ENABLE_SSL
|
|
shared_sources += net/Ssl.cpp
|
|
endif
|
|
|
|
coolwsd_sources = common/Crypto.cpp \
|
|
wsd/Admin.cpp \
|
|
wsd/AdminModel.cpp \
|
|
wsd/Auth.cpp \
|
|
wsd/DocumentBroker.cpp \
|
|
wsd/ProxyProtocol.cpp \
|
|
wsd/COOLWSD.cpp \
|
|
wsd/ClientRequestDispatcher.cpp \
|
|
wsd/ClientSession.cpp \
|
|
wsd/FileServer.cpp \
|
|
wsd/ProxyRequestHandler.cpp \
|
|
wsd/FileServerUtil.cpp \
|
|
wsd/RequestDetails.cpp \
|
|
wsd/RequestVettingStation.cpp \
|
|
wsd/Storage.cpp \
|
|
wsd/HostUtil.cpp \
|
|
wsd/TileCache.cpp \
|
|
wsd/ProofKey.cpp \
|
|
wsd/QuarantineUtil.cpp \
|
|
wsd/ServerAuditUtil.cpp \
|
|
wsd/wopi/CheckFileInfo.cpp \
|
|
wsd/wopi/StorageConnectionManager.cpp \
|
|
wsd/wopi/WopiProxy.cpp \
|
|
wsd/wopi/WopiStorage.cpp
|
|
|
|
coolwsd_SOURCES = $(coolwsd_sources) \
|
|
$(shared_sources) \
|
|
wsd/coolwsd-fork.cpp
|
|
|
|
EXTRA_coolwsd_DEPENDENCIES = browser/node_modules
|
|
|
|
noinst_PROGRAMS = clientnb \
|
|
connect \
|
|
lokitclient \
|
|
coolmap \
|
|
coolbench \
|
|
coolsocketdump
|
|
|
|
if ENABLE_LIBFUZZER
|
|
noinst_PROGRAMS += \
|
|
admin_fuzzer \
|
|
clientsession_fuzzer \
|
|
httpresponse_fuzzer \
|
|
httpecho_fuzzer
|
|
endif
|
|
|
|
connect_SOURCES = tools/Connect.cpp \
|
|
common/DummyTraceEventEmitter.cpp \
|
|
common/Log.cpp \
|
|
common/Protocol.cpp \
|
|
common/StringVector.cpp \
|
|
common/Util.cpp \
|
|
common/Util-desktop.cpp
|
|
|
|
lokitclient_SOURCES = common/Log.cpp \
|
|
common/DummyTraceEventEmitter.cpp \
|
|
tools/KitClient.cpp \
|
|
common/Protocol.cpp \
|
|
common/StringVector.cpp \
|
|
common/TraceEvent.cpp \
|
|
common/Util.cpp \
|
|
common/Util-desktop.cpp
|
|
|
|
noinst_LIBRARIES = libsimd.a
|
|
libsimd_a_SOURCES = kit/DeltaSimd.c
|
|
libsimd_a_CFLAGS = @SIMD_CFLAGS@
|
|
|
|
coolforkit_sources = kit/ChildSession.cpp \
|
|
kit/ForKit.cpp \
|
|
kit/Kit.cpp \
|
|
kit/KitWebSocket.cpp
|
|
|
|
coolforkit_SOURCES = $(coolforkit_sources) \
|
|
$(shared_sources) \
|
|
kit/forkit-main.cpp
|
|
|
|
coolforkit_LDADD = libsimd.a
|
|
|
|
coolforkitns_SOURCES = $(coolforkit_sources) \
|
|
$(shared_sources) \
|
|
kit/forkit-main.cpp
|
|
|
|
coolforkitns_LDADD = libsimd.a
|
|
|
|
if ENABLE_DEBUG
|
|
coolwsd_inproc_SOURCES = $(coolwsd_sources) \
|
|
$(shared_sources) \
|
|
$(coolforkit_sources) \
|
|
wsd/coolwsd-inproc.cpp
|
|
|
|
coolwsd_inproc_LDADD = ${coolwsd_LDADD} \
|
|
${coolforkit_LDADD}
|
|
endif
|
|
|
|
if ENABLE_LIBFUZZER
|
|
coolforkit_SOURCES += \
|
|
common/DummyTraceEventEmitter.cpp
|
|
coolforkitns_SOURCES += \
|
|
common/DummyTraceEventEmitter.cpp
|
|
|
|
common_fuzzer_sources = \
|
|
fuzzer/Common.cpp \
|
|
common/DummyTraceEventEmitter.cpp \
|
|
$(coolwsd_sources) \
|
|
wsd/coolwsd-inproc.cpp \
|
|
$(coolforkit_sources) \
|
|
$(shared_sources)
|
|
|
|
admin_fuzzer_CPPFLAGS = \
|
|
$(AM_CPPFLAGS)
|
|
admin_fuzzer_SOURCES = \
|
|
$(common_fuzzer_sources) \
|
|
fuzzer/Admin.cpp
|
|
admin_fuzzer_LDFLAGS = -fsanitize=fuzzer $(AM_LDFLAGS)
|
|
admin_fuzzer_LDADD = libsimd.a
|
|
|
|
clientsession_fuzzer_CPPFLAGS = \
|
|
$(AM_CPPFLAGS)
|
|
clientsession_fuzzer_SOURCES = \
|
|
$(common_fuzzer_sources) \
|
|
fuzzer/ClientSession.cpp
|
|
clientsession_fuzzer_LDFLAGS = -fsanitize=fuzzer $(AM_LDFLAGS)
|
|
clientsession_fuzzer_LDADD = libsimd.a
|
|
|
|
httpresponse_fuzzer_CPPFLAGS = \
|
|
$(AM_CPPFLAGS)
|
|
httpresponse_fuzzer_SOURCES = \
|
|
$(common_fuzzer_sources) \
|
|
fuzzer/HttpResponse.cpp
|
|
httpresponse_fuzzer_LDFLAGS = -fsanitize=fuzzer $(AM_LDFLAGS)
|
|
httpresponse_fuzzer_LDADD = libsimd.a
|
|
|
|
httpecho_fuzzer_CPPFLAGS = \
|
|
$(AM_CPPFLAGS) \
|
|
-I${top_srcdir}/test
|
|
httpecho_fuzzer_SOURCES = \
|
|
$(common_fuzzer_sources) \
|
|
fuzzer/HttpEcho.cpp
|
|
httpecho_fuzzer_LDFLAGS = -fsanitize=fuzzer $(AM_LDFLAGS)
|
|
httpecho_fuzzer_LDADD = libsimd.a
|
|
|
|
endif # ENABLE_LIBFUZZER
|
|
|
|
clientnb_SOURCES = net/clientnb.cpp \
|
|
common/DummyTraceEventEmitter.cpp \
|
|
common/Log.cpp \
|
|
common/StringVector.cpp \
|
|
common/Util.cpp \
|
|
common/Util-desktop.cpp
|
|
|
|
coolmount_SOURCES = tools/mount.cpp \
|
|
common/CoolMount.cpp
|
|
|
|
coolmap_SOURCES = tools/map.cpp
|
|
|
|
coolbench_SOURCES = tools/Benchmark.cpp \
|
|
common/DummyTraceEventEmitter.cpp \
|
|
common/Log.cpp \
|
|
common/StringVector.cpp \
|
|
common/Util.cpp \
|
|
common/Util-desktop.cpp \
|
|
common/Simd.cpp
|
|
coolbench_LDADD = libsimd.a
|
|
|
|
coolconvert_SOURCES = tools/Tool.cpp
|
|
|
|
coolstress_CPPFLAGS = -DTDOC=\"$(abs_top_srcdir)/test/data\" ${include_paths}
|
|
coolstress_SOURCES = tools/Stress.cpp \
|
|
common/DummyTraceEventEmitter.cpp \
|
|
$(shared_sources)
|
|
|
|
coolconfig_SOURCES = tools/Config.cpp \
|
|
tools/ConfigMigrationAssistant.cpp \
|
|
common/DummyTraceEventEmitter.cpp \
|
|
common/ConfigUtil.cpp \
|
|
common/Crypto.cpp \
|
|
common/Log.cpp \
|
|
common/StringVector.cpp \
|
|
common/Util.cpp \
|
|
common/Util-desktop.cpp
|
|
|
|
coolsocketdump_SOURCES = tools/WebSocketDump.cpp \
|
|
common/DummyTraceEventEmitter.cpp \
|
|
$(shared_sources)
|
|
|
|
wsd_headers = wsd/Admin.hpp \
|
|
wsd/AdminModel.hpp \
|
|
wsd/Auth.hpp \
|
|
wsd/ClientSession.hpp \
|
|
wsd/ContentSecurityPolicy.hpp \
|
|
wsd/DocumentBroker.hpp \
|
|
wsd/ProxyProtocol.hpp \
|
|
wsd/Exceptions.hpp \
|
|
wsd/FileServer.hpp \
|
|
wsd/ProxyRequestHandler.hpp \
|
|
wsd/COOLWSD.hpp \
|
|
wsd/ClientRequestDispatcher.hpp \
|
|
wsd/ProofKey.hpp \
|
|
wsd/RequestDetails.hpp \
|
|
wsd/RequestVettingStation.hpp \
|
|
wsd/SenderQueue.hpp \
|
|
wsd/ServerURL.hpp \
|
|
wsd/Storage.hpp \
|
|
wsd/TileCache.hpp \
|
|
wsd/TileDesc.hpp \
|
|
wsd/TraceFile.hpp \
|
|
wsd/UserMessages.hpp \
|
|
wsd/QuarantineUtil.hpp \
|
|
wsd/HostUtil.hpp \
|
|
wsd/ServerAuditUtil.hpp \
|
|
wsd/wopi/CheckFileInfo.hpp \
|
|
wsd/wopi/StorageConnectionManager.hpp \
|
|
wsd/wopi/WopiProxy.hpp \
|
|
wsd/wopi/WopiStorage.hpp
|
|
|
|
shared_headers = common/Common.hpp \
|
|
common/Clipboard.hpp \
|
|
common/Crypto.hpp \
|
|
common/JsonUtil.hpp \
|
|
common/FileUtil.hpp \
|
|
common/JailUtil.hpp \
|
|
common/LangUtil.hpp \
|
|
common/Log.hpp \
|
|
common/Protocol.hpp \
|
|
common/StateEnum.hpp \
|
|
common/StringVector.hpp \
|
|
common/Seccomp.hpp \
|
|
common/Session.hpp \
|
|
common/Unit.hpp \
|
|
common/Util.hpp \
|
|
common/ConfigUtil.hpp \
|
|
common/Authorization.hpp \
|
|
common/Message.hpp \
|
|
common/MobileApp.hpp \
|
|
common/Png.hpp \
|
|
common/TraceEvent.hpp \
|
|
common/Rectangle.hpp \
|
|
common/RenderTiles.hpp \
|
|
common/SigUtil.hpp \
|
|
common/security.h \
|
|
common/SpookyV2.h \
|
|
common/CommandControl.hpp \
|
|
common/Simd.hpp \
|
|
common/ThreadPool.hpp \
|
|
common/Watchdog.hpp \
|
|
kit/KitQueue.hpp \
|
|
net/AsyncDNS.hpp \
|
|
net/Buffer.hpp \
|
|
net/DelaySocket.hpp \
|
|
net/FakeSocket.hpp \
|
|
net/HttpRequest.hpp \
|
|
net/HttpHelper.hpp \
|
|
net/NetUtil.hpp \
|
|
net/ServerSocket.hpp \
|
|
net/Socket.hpp \
|
|
net/WebSocketHandler.hpp \
|
|
tools/Replay.hpp \
|
|
wasm/base64.hpp
|
|
if ENABLE_SSL
|
|
shared_headers += net/Ssl.hpp \
|
|
net/SslSocket.hpp
|
|
endif
|
|
|
|
kit_headers = kit/ChildSession.hpp \
|
|
kit/Delta.hpp \
|
|
kit/DeltaSimd.h \
|
|
kit/DummyLibreOfficeKit.hpp \
|
|
kit/Kit.hpp \
|
|
kit/KitHelper.hpp \
|
|
kit/KitWebSocket.hpp \
|
|
kit/SetupKitEnvironment.hpp \
|
|
kit/StateRecorder.hpp \
|
|
kit/Watermark.hpp
|
|
|
|
noinst_HEADERS = $(wsd_headers) $(shared_headers) $(kit_headers) \
|
|
tools/COOLWebSocket.hpp \
|
|
test/UnitHTTP.hpp \
|
|
test/HttpTestServer.hpp \
|
|
test/WopiTestServer.hpp \
|
|
test/KitPidHelpers.hpp \
|
|
test/lokassert.hpp \
|
|
test/test.hpp \
|
|
test/testlog.hpp \
|
|
test/HttpTestServer.hpp \
|
|
test/WOPIUploadConflictCommon.hpp \
|
|
test/UnitWSDClient.hpp \
|
|
test/helpers.hpp
|
|
|
|
GIT_BRANCH := $(shell git symbolic-ref --short HEAD)
|
|
GIT_HASH := $(shell git log -1 --format=%h)
|
|
|
|
dist-hook:
|
|
git log -1 --format=%h > $(distdir)/dist_git_hash 2> /dev/null || rm $(distdir)/dist_git_hash
|
|
mkdir -p $(distdir)/bundled/include/LibreOfficeKit/
|
|
cp @LOKIT_PATH@/LibreOfficeKit/LibreOfficeKit.h \
|
|
@LOKIT_PATH@/LibreOfficeKit/LibreOfficeKit.hxx \
|
|
@LOKIT_PATH@/LibreOfficeKit/LibreOfficeKitEnums.h \
|
|
@LOKIT_PATH@/LibreOfficeKit/LibreOfficeKitInit.h \
|
|
@LOKIT_PATH@/LibreOfficeKit/LibreOfficeKitTypes.h \
|
|
$(distdir)/bundled/include/LibreOfficeKit/
|
|
|
|
EXTRA_DIST = discovery.xml \
|
|
favicon.ico \
|
|
coolkitconfig.xcu \
|
|
coolwsd.spec \
|
|
coolwsd.xml.in \
|
|
coolwsd.service \
|
|
debian/compat \
|
|
debian/copyright \
|
|
debian/coolwsd.preinst \
|
|
debian/coolwsd.service \
|
|
debian/rules \
|
|
debian/source/format \
|
|
debian/changelog \
|
|
debian/control \
|
|
debian/coolwsd.postinst \
|
|
debian/coolwsd.postrm \
|
|
etc/key.pem \
|
|
etc/cert.pem \
|
|
etc/ca-chain.cert.pem \
|
|
etc/apache2/coolwsd.conf \
|
|
etc/nginx/coolwsd.conf \
|
|
scripts/unocommands.py \
|
|
scripts/refresh-git-hooks \
|
|
README.md \
|
|
THIRDPARTYLICENSES \
|
|
$(man_MANS)
|
|
|
|
if ENABLE_LIBFUZZER
|
|
CLEANUP_COMMAND=true
|
|
else
|
|
# Use coolwsd to cleanup jails, if any. If it fails, we may have a broken/old coolwsd binary, remove it to rebuild.
|
|
# A CI box may switch branches without cleaning up the binaries, if coolwsd from a broken branch is used here
|
|
# it will fail all subsequent builds, until it's rebuilt from the new branch. So removing coolwsd after failing is needed.
|
|
CLEANUP_COMMAND=if test -s ./coolwsd; then echo "Cleaning up..." && ./coolwsd --disable-cool-user-checking --cleanup --o:logging.level=trace || rm -f ./coolwsd; fi
|
|
endif
|
|
|
|
CLEANUP_COVERAGE=rm -rf ${abs_top_srcdir}/gcov; find . -iname "*.gc??" -delete
|
|
|
|
if HAVE_LO_PATH
|
|
|
|
SYSTEM_STAMP = @SYSTEMPLATE_PATH@/system_stamp
|
|
CAPABILITIES = $(if @ENABLE_SETCAP@,true,false)
|
|
RUN_GDB = $(if $(GDB_FRONTEND),$(GDB_FRONTEND),gdb --tui --args)
|
|
|
|
if ENABLE_LIBFUZZER
|
|
CLEANUP_DEPS=
|
|
else
|
|
CLEANUP_DEPS=coolwsd coolmount coolforkit coolforkitns
|
|
endif
|
|
|
|
# Build coolwsd and coolmount first, so we can cleanup before updating
|
|
# the systemplate directory, which we can't rm if it's mounted.
|
|
$(SYSTEM_STAMP): ${top_srcdir}/coolwsd-systemplate-setup $(CLEANUP_DEPS)
|
|
$(CLEANUP_COMMAND)
|
|
if test "z@SYSTEMPLATE_PATH@" != "z"; then chmod u+w -R --silent "@SYSTEMPLATE_PATH@" ; rm -rf "@SYSTEMPLATE_PATH@" && \
|
|
${top_srcdir}/coolwsd-systemplate-setup "@SYSTEMPLATE_PATH@" "@LO_PATH@" && touch $@; fi
|
|
|
|
@JAILS_PATH@:
|
|
@$(CLEANUP_COMMAND)
|
|
mkdir -p $@
|
|
|
|
cleanup:
|
|
$(CLEANUP_COMMAND)
|
|
|
|
# Always cleanup before removing the binaries.
|
|
# Note: this can break with -j option!
|
|
clean-am: cleanup clean-binPROGRAMS clean-generic clean-libtool clean-local clean-noinstPROGRAMS mostlyclean-am
|
|
|
|
clean-local:
|
|
$(CLEANUP_COMMAND)
|
|
if test "z@SYSTEMPLATE_PATH@" != "z"; then rm -rf "@SYSTEMPLATE_PATH@" || echo "WARNING: failed to remove the systemplate"; fi
|
|
if test "z@JAILS_PATH@" != "z"; then rm -rf "@JAILS_PATH@" || echo "WARNING: failed to remove all jails cleanly"; fi
|
|
rm -rf "${top_srcdir}/loleaflet"
|
|
rm -rf loolconfig loolconvert loolforkit loolmap loolmount # kill old binaries
|
|
rm -rf loolwsd loolwsd_fuzzer coolwsd_fuzzer loolstress loolsocketdump
|
|
$(CLEANUP_COVERAGE)
|
|
|
|
if ENABLE_DEBUG
|
|
# can write to /tmp/coolwsd.log
|
|
OUTPUT_TO_FILE=true
|
|
else
|
|
# can't write to /var/log/coolwsd.log
|
|
OUTPUT_TO_FILE=false
|
|
endif
|
|
|
|
setup-wsd: all @JAILS_PATH@
|
|
@echo "Launching coolwsd"
|
|
@fc-cache "@LO_PATH@"/share/fonts/truetype
|
|
@cp $(abs_top_srcdir)/test/data/hello.odt $(abs_top_srcdir)/test/data/hello-world.odt
|
|
@cp $(abs_top_srcdir)/test/data/hello.ods $(abs_top_srcdir)/test/data/hello-world.ods
|
|
@cp $(abs_top_srcdir)/test/data/hello.odp $(abs_top_srcdir)/test/data/hello-world.odp
|
|
@cp $(abs_top_srcdir)/test/data/hello.odg $(abs_top_srcdir)/test/data/hello-world.odg
|
|
@echo
|
|
|
|
COMMON_PARAMS = \
|
|
--o:sys_template_path="@SYSTEMPLATE_PATH@" \
|
|
--o:child_root_path="@JAILS_PATH@" --o:storage.filesystem[@allow]=true \
|
|
--o:ssl.cert_file_path="$(abs_top_srcdir)/etc/cert.pem" \
|
|
--o:ssl.key_file_path="$(abs_top_srcdir)/etc/key.pem" \
|
|
--o:ssl.ca_file_path="$(abs_top_srcdir)/etc/ca-chain.cert.pem" \
|
|
--o:admin_console.username=admin --o:admin_console.password=admin \
|
|
--o:mount_namespaces[@default]=true
|
|
|
|
run: setup-wsd
|
|
./coolwsd $(COMMON_PARAMS) \
|
|
--o:security.capabilities="$(CAPABILITIES)" \
|
|
--o:logging.file[@enable]=${OUTPUT_TO_FILE} --o:logging.level=trace \
|
|
--o:trace_event[@enable]=true
|
|
|
|
if ENABLE_DEBUG
|
|
run-one: setup-wsd
|
|
./coolwsd $(COMMON_PARAMS) \
|
|
--o:security.capabilities="$(CAPABILITIES)" \
|
|
--o:logging.file[@enable]=true --o:logging.level=trace \
|
|
--singlekit
|
|
|
|
run-inproc: setup-wsd
|
|
@echo "Launching coolwsd-inproc"
|
|
./coolwsd-inproc $(COMMON_PARAMS) \
|
|
--o:logging.file[@enable]=true --o:logging.level=trace
|
|
|
|
run-massif-inproc: setup-wsd
|
|
@echo "Launching coolwsd under valgrind for single process"
|
|
valgrind --tool=massif --num-callers=64 --trace-children=no -v \
|
|
./coolwsd-inproc $(COMMON_PARAMS) \
|
|
--o:logging.file[@enable]=false --o:logging.level=trace
|
|
|
|
run-heaptrack-inproc: setup-wsd
|
|
@echo "Launching coolwsd under heaptrack for single process"
|
|
heaptrack \
|
|
./coolwsd-inproc $(COMMON_PARAMS) \
|
|
--o:logging.file[@enable]=false --o:logging.level=trace
|
|
endif
|
|
|
|
sync-writer:
|
|
browser-sync start --config browsersync-config.js --startPath "browser/96c23f663/cool.html?file_path=file://$(abs_top_srcdir)/test/data/hello-world.odt"
|
|
|
|
sync-calc:
|
|
browser-sync start --config browsersync-config.js --startPath "browser/96c23f663/cool.html?file_path=file://$(abs_top_srcdir)/test/data/hello-world.ods"
|
|
|
|
sync-impress:
|
|
browser-sync start --config browsersync-config.js --startPath "browser/96c23f663/cool.html?file_path=file://$(abs_top_srcdir)/test/data/hello-world.odp"
|
|
|
|
run-trace: setup-wsd
|
|
./coolwsd $(COMMON_PARAMS) \
|
|
--o:logging.file[@enable]=false --o:logging.level=trace \
|
|
--o:trace[@enable]=true --o:trace.path=${builddir}/trace.txt.gz \
|
|
--o:trace.outgoing.record=false
|
|
|
|
run-valgrind: setup-wsd
|
|
@echo "Launching coolwsd under valgrind (but not forkit/coolkit, yet)"
|
|
valgrind --tool=memcheck --trace-children=no -v --read-var-info=yes \
|
|
./coolwsd $(COMMON_PARAMS) \
|
|
--o:logging.file[@enable]=false --o:logging.level=trace
|
|
|
|
run-gdb: setup-wsd
|
|
@echo "Launching coolwsd under gdb"
|
|
$(RUN_GDB) \
|
|
./coolwsd $(COMMON_PARAMS) \
|
|
--o:security.capabilities="false" \
|
|
--o:logging.file[@enable]=false --o:logging.level=error
|
|
|
|
run-callgrind: setup-wsd
|
|
@echo "Launching coolwsd under valgrind's callgrind"
|
|
valgrind --tool=callgrind --simulate-cache=yes --dump-instr=yes --num-callers=50 --error-limit=no --trace-children=yes \
|
|
./coolwsd $(COMMON_PARAMS) \
|
|
--o:security.capabilities="false" \
|
|
--o:logging.file[@enable]=false --o:logging.level=error
|
|
|
|
run-strace: setup-wsd
|
|
@echo "Launching coolwsd under strace"
|
|
strace -o strace.log -f -tt -s 256 \
|
|
./coolwsd $(COMMON_PARAMS) \
|
|
--o:security.capabilities="false" \
|
|
--o:logging.file[@enable]=false --o:logging.level=error
|
|
|
|
else
|
|
|
|
SYSTEM_STAMP =
|
|
|
|
endif
|
|
|
|
.PHONY: cleanup setup-wsd
|
|
|
|
if ENABLE_LIBFUZZER
|
|
ALL_LOCAL_DEPS=
|
|
else
|
|
ALL_LOCAL_DEPS=coolwsd
|
|
endif
|
|
|
|
# After building coolforkit, set its capabilities as required. Do it
|
|
# already after a plain 'make' to allow for testing without
|
|
# installing. When building for packaging, no need for this, as the
|
|
# capabilities won't survive packaging anyway. Instead, handle it when
|
|
# installing the RPM or Debian package.
|
|
all-local: $(ALL_LOCAL_DEPS) @JAILS_PATH@ $(SYSTEM_STAMP)
|
|
@$(abs_top_srcdir)/scripts/refresh-git-hooks
|
|
|
|
# just run the build without any tests
|
|
build-nocheck: all-am
|
|
|
|
endif
|
|
|
|
define file_target
|
|
$(1): $(2)
|
|
|
|
endef
|
|
|
|
define file_targets
|
|
$(foreach file,$(1),$(call file_target,$(file),$(patsubst %.cmd,%.cpp,$(file))))
|
|
endef
|
|
|
|
CLANGXX_COMPILE_FLAGS=clang++ $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
|
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
|
|
|
JSON_COMPILE_FLAGS=$(subst ",\",$(subst \,\\,$(CLANGXX_COMPILE_FLAGS)))
|
|
|
|
JSON_COMPILE_SRC = $(patsubst %.cpp,%.cmd,$(wildcard **/*.cpp))
|
|
|
|
$(eval $(call file_targets,$(JSON_COMPILE_SRC)))
|
|
|
|
.cpp.cmd:
|
|
@echo -n "{\"directory\":\"$(abs_builddir)\",\"command\":\"" > $@
|
|
@echo -n $(JSON_COMPILE_FLAGS) >> $@
|
|
@echo -n "\",\"file\":\"$<\"}" >> $@
|
|
|
|
$(abs_srcdir)/compile_commands.json: $(JSON_COMPILE_SRC)
|
|
@echo -n "[" > $@
|
|
@for file in $(JSON_COMPILE_SRC) ; \
|
|
do \
|
|
cat $$file; \
|
|
echo ","; \
|
|
rm -f $$file; \
|
|
done >> $@
|
|
@echo -n "]" >> $@
|
|
|
|
compile_commands: $(abs_srcdir)/compile_commands.json
|
|
|
|
browser/node_modules: browser/package.json browser/archived-packages
|
|
@cd browser && npm install
|
|
|
|
eslint: browser/node_modules
|
|
@make -C browser eslint
|
|
|
|
prettier: browser/node_modules
|
|
@make -C browser prettier
|
|
|
|
prettier-write: browser/node_modules
|
|
@make -C browser prettier-write
|
|
|
|
install-exec-hook:
|
|
cd $(DESTDIR)$(bindir) && \
|
|
$(LN_S) coolconfig loolconfig && \
|
|
$(LN_S) coolwsd loolwsd && \
|
|
$(LN_S) coolwsd-systemplate-setup loolwsd-systemplate-setup
|
|
|
|
stress_file=$(abs_top_srcdir)/test/data/hello-world.odt
|
|
trace_dir=$(abs_top_srcdir)/test/traces
|
|
stress:
|
|
@cp $(abs_top_srcdir)/test/data/hello.odt $(stress_file)
|
|
@echo "Watch at: https://localhost:9980/browser/12345/cool.html?file_path=$(stress_file)"
|
|
./coolstress wss://localhost:9980 \
|
|
$(stress_file) $(trace_dir)/writer-quick.txt \
|
|
$(stress_file) $(trace_dir)/writer-add-bullet.txt \
|
|
$(stress_file) $(trace_dir)/writer-mash-text-table.txt \
|
|
$(stress_file) $(trace_dir)/writer-document-edit.txt \
|
|
$(stress_file) $(trace_dir)/writer-mash-text-table.txt \
|
|
$(stress_file) $(trace_dir)/writer-hello-shape.txt \
|
|
$(stress_file) $(trace_dir)/writer-quick.txt
|
|
|
|
if ENABLE_CODE_COVERAGE
|
|
GEN_COVERAGE_COMMAND=mkdir -p ${abs_top_srcdir}/gcov && \
|
|
lcov --no-external --capture --rc 'lcov_excl_line=' --rc 'lcov_excl_br_line=LOG_|TST_|LOK_|WSD_|TRANSITION|assert' \
|
|
--compat libtool=on --directory ${abs_top_srcdir}/. --output-file ${abs_top_srcdir}/gcov/cool.coverage.test.info && \
|
|
genhtml --prefix ${abs_top_srcdir}/. --ignore-errors source ${abs_top_srcdir}/gcov/cool.coverage.test.info \
|
|
--legend --title "${GIT_BRANCH} @ ${GIT_HASH}" --output-directory=${abs_top_srcdir}/gcov/html && \
|
|
echo "Code-Coverage report generated in ${abs_top_srcdir}/gcov/html"
|
|
else
|
|
GEN_COVERAGE_COMMAND=true
|
|
endif
|
|
|
|
# typically the system nss won't work in a jail and fail to init which is fatal for
|
|
# exporting to pdf, which is something that gets tested
|
|
check-for-system-nss:
|
|
@if test -e "@LO_PATH@/../config_host.mk"; then \
|
|
if grep -q SYSTEM_NSS=TRUE "@LO_PATH@/../config_host.mk"; then \
|
|
echo make check will fail unless core is configured using --without-system-nss; \
|
|
exit 1; \
|
|
fi \
|
|
fi
|
|
|
|
check-recursive: eslint
|
|
|
|
check: check-for-system-nss prettier eslint check-recursive
|
|
$(GEN_COVERAGE_COMMAND)
|
|
|
|
coverage-report:
|
|
$(GEN_COVERAGE_COMMAND)
|
|
|
|
coverage-clean:
|
|
$(CLEANUP_COVERAGE)
|
|
|
|
czech: check
|
|
@echo "This should do something much cooler"
|