libreoffice-online/loleaflet/Makefile.am
2019-03-15 17:23:28 +01:00

490 lines
14 KiB
Makefile

LANGUAGES = \
ab \
af \
am \
an \
anp \
ar \
as \
ast \
az \
bar \
be \
bg \
bm \
bn_IN \
bn \
bo \
br \
brx \
bs \
ca \
ca-valencia \
ce \
cs \
cy \
da \
de \
dgo \
dsb \
dz \
el \
en_AU \
en_GB \
en_ZA \
eo \
es \
et \
eu \
fa \
fi \
fr \
fur \
fy \
ga \
gbm \
gd \
gl \
gug \
gu \
he \
hi \
hr \
hsb \
hu \
hy \
id \
is \
it \
ja \
jv \
kab \
ka \
kk \
kl \
km \
kmr-Latn \
kn \
kok \
ko \
ks \
ky \
lb \
lo \
lt \
lv \
mai \
mk \
ml \
mni \
ml \
mr \
mt \
my \
nah \
nb \
ne \
nl \
nn \
nqo \
nr \
nso \
oc \
om \
or \
pa_IN \
pap_CW \
pl \
pt_BR \
pt \
ro \
ru \
rw \
sah \
sa_IN \
sat \
sd \
sid \
si \
sk \
sl \
sq \
ss \
st \
sv \
sw_TZ \
ta \
te \
tg \
th \
ti \
tn \
tr \
ts \
tt \
ug \
uk \
ur \
uz \
vec \
ve \
vi \
wo \
xh \
zh_CN \
zh_TW \
zu
if ENABLE_IOSAPP
L10N_IOS_ALL_JS = $(builddir)/dist/l10n-all.js
L10N_JSON = $(L10N_IOS_ALL_JS)
$(L10N_IOS_ALL_JS) : $(wildcard $(srcdir)/po/ui-*.po) $(shell find $(srcdir)/l10n -name '*.*')
for F in $(wildcard $(srcdir)/po/ui-*.po); do \
$(srcdir)/util/po2json.py $$F -o $$F.json; \
done
@mkdir -p $(dir $@)
perl $(srcdir)/util/create-l10n-all-js.pl >$@
for F in $(wildcard $(srcdir)/po/ui-*.po); do \
rm $$F.json; \
done
endif
JQUERY_LIGHTNESS_IMAGE_PATH = node_modules/jquery-ui/themes/ui-lightness/images
JQUERY_LIGHTNESS_IMAGES = $(wildcard $(JQUERY_LIGHTNESS_IMAGE_PATH)/*.png)
JQUERY_LIGHTNESS_DIST_IMAGES = $(patsubst $(JQUERY_LIGHTNESS_IMAGE_PATH)/%.png,$(builddir)/dist/images/%.png,$(JQUERY_LIGHTNESS_IMAGES))
JQUERY_MINIFIED_IMAGE_PATH = node_modules/jquery-ui/themes/base/minified/images
JQUERY_MINIFIED_IMAGES = $(wildcard $(JQUERY_MINIFIED_IMAGE_PATH)/*.png)
JQUERY_MINIFIED_DIST_IMAGES = $(patsubst $(JQUERY_MINIFIED_IMAGE_PATH)/%.png,$(builddir)/dist/images/%.png,$(JQUERY_MINIFIED_IMAGES))
LOLEAFLET_IMAGES_SRC = $(shell find $(srcdir)/images -name '*.*')
LOLEAFLET_IMAGES_DST = $(patsubst $(srcdir)/%,$(builddir)/dist/%,$(LOLEAFLET_IMAGES_SRC))
LOLEAFLET_HTML_SRC = $(shell find $(srcdir)/html -name '*.html')
LOLEAFLET_HTML_DST = $(patsubst $(srcdir)/html/%.html,$(builddir)/dist/%.html,$(LOLEAFLET_HTML_SRC))
LOLEAFLET_ADMIN_SRC = $(shell find $(srcdir)/admin -name '*.html')
LOLEAFLET_ADMIN_ALL = $(shell find $(srcdir)/admin -name '*')
LOLEAFLET_ADMIN_DST = $(patsubst $(srcdir)/admin/%,$(builddir)/dist/admin/%,$(LOLEAFLET_ADMIN_SRC))
define lang_target
$(1):: $(2)
endef
define file_target
$(1): $(2)
@if test -z '$(ENABLE_BROWSERSYNC)'; then \
`cp $$< $$@`; \
else \
`ln -sf ../$$< $$@`; \
fi
endef
define file_targets
$(foreach file,$(1),$(call file_target,\
$(builddir)/dist/$(notdir $(file)),\
$(file)))
endef
LOLEAFLET_CSS =\
$(builddir)/node_modules/select2/dist/css/select2.css \
$(srcdir)/css/w2ui-1.5.rc1.css \
$(srcdir)/css/leaflet.css \
$(srcdir)/css/selectionMarkers.css \
$(srcdir)/css/loleaflet.css \
$(srcdir)/css/toolbar.css \
$(srcdir)/css/partsPreviewControl.css \
$(srcdir)/css/scrollBar.css \
$(srcdir)/css/searchControl.css \
$(srcdir)/css/spreadsheet.css \
$(srcdir)/css/editor.css \
$(srcdir)/css/jquery.mCustomScrollbar.css \
$(builddir)/node_modules/jquery-contextmenu/dist/jquery.contextMenu.css \
$(builddir)/node_modules/vex-js/css/vex.css \
$(builddir)/node_modules/vex-js/css/vex-theme-plain.css \
$(builddir)/node_modules/vex-js/css/vex-theme-bottom-right-corner.css \
$(builddir)/node_modules/smartmenus/dist/css/sm-core-css.css \
$(builddir)/node_modules/smartmenus/dist/css/sm-simple/sm-simple.css \
$(srcdir)/css/menubar.css
LOLEAFLET_CSS_DST = $(foreach file,$(LOLEAFLET_CSS),$(builddir)/dist/$(notdir $(file)))
LOLEAFLET_CSS_M4 = $(strip $(foreach file,$(LOLEAFLET_CSS),$(notdir $(file))))
LOLEAFLET_MO_DST = $(foreach lang,$(LANGUAGES),$(top_builddir)/locale/$(lang)/LC_MESSAGES/loolwsd.mo)
$(eval $(call file_targets,$(LOLEAFLET_CSS)))
$(eval $(foreach lang,$(LANGUAGES), \
$(call lang_target,$(top_builddir)/locale/$(lang)/LC_MESSAGES/loolwsd.mo, \
$(srcdir)/po/help-$(lang).po $(srcdir)/po/ui-$(lang).po \
) \
) \
)
NODE_MODULES_JS =\
node_modules/hammerjs/hammer.min.js \
node_modules/jquery/dist/jquery.js \
node_modules/jquery-mousewheel/jquery.mousewheel.js \
node_modules/jquery-contextmenu/dist/jquery.contextMenu.js \
node_modules/smartmenus/dist/jquery.smartmenus.js \
node_modules/autolinker/dist/Autolinker.js \
node_modules/json-js/json2.js \
node_modules/select2/dist/js/select2.js \
node_modules/vex-js/js/vex.js \
node_modules/vex-js/js/vex.dialog.js
NODE_MODULES_JS_SRC = $(patsubst %.js,$(builddir)/%.js,$(NODE_MODULES_JS))
NODE_MODULES_JS_DST = $(patsubst %.js,$(builddir)/dist/%.js,$(NODE_MODULES_JS))
LOLEAFLET_JS = $(strip $(shell NODE_PATH=$(abs_builddir)/node_modules $(NODE) -e "try {console.log(require('$(1)').getFiles().join(' '))} catch(e) {}"))
LOLEAFLET_JS_SRC = $(shell find $(srcdir)/src -name '*.js')
LOLEAFLET_JS_DST = $(patsubst $(srcdir)/src/%.js,$(builddir)/dist/src/%.js,$(LOLEAFLET_JS_SRC))
COMMA := ,
EMPTY :=
SPACE := $(EMPTY) $(EMPTY)
LOLEAFLET_VERSION = $(shell cd $(srcdir) && git log -1 --pretty=format:"%h")
LOLEAFLET_PREFIX := $(if $(ENABLE_DEBUG),$(abs_builddir),$(abs_builddir)/build)
EXTRA_DIST = $(shell find . -type f -not -path './.git/*' | sed 's/.\///')
all-local:
$(abs_top_srcdir)/scripts/unocommands.py --check $(abs_top_srcdir)
@$(MAKE) node_modules
@$(MAKE) build-loleaflet
if !ENABLE_MOBILEAPP
ADMIN_BUNDLE = $(builddir)/dist/admin-bundle.js
endif
build-loleaflet: | \
$(LOLEAFLET_MO_DST) \
$(LOLEAFLET_IMAGES_DST) \
$(JQUERY_LIGHTNESS_DIST_IMAGES) \
$(JQUERY_MINIFIED_DIST_IMAGES) \
$(LOLEAFLET_PREFIX)/dist/loleaflet-src.js \
$(ADMIN_BUNDLE) \
$(builddir)/dist/bundle.css \
$(builddir)/dist/bundle.js \
$(builddir)/dist/loleaflet.html
@echo "build loleaflet completed"
if ENABLE_ANDROIDAPP
@rm -rf $(abs_top_srcdir)/android/app/src/main/assets/dist
@cp -a $(builddir)/dist $(abs_top_srcdir)/android/app/src/main/assets/
@cp -a $(abs_top_srcdir)/test/data/hello.odt $(abs_top_srcdir)/android/app/src/main/assets/hello-world.odt
@cp -a $(abs_top_srcdir)/test/data/hello.ods $(abs_top_srcdir)/android/app/src/main/assets/hello-world.ods
@cp -a $(abs_top_srcdir)/test/data/hello.odp $(abs_top_srcdir)/android/app/src/main/assets/hello-world.odp
@echo
@echo "Copied JS, HTML and CSS to the Android project (android/app/src/main/assets/dist)."
@echo
@echo " Now you need to build the actual .apk from Android Studio:"
@echo " Just open the 'android' subdir as a project there and build."
@echo
endif
$(builddir)/dist/admin-bundle.js: $(LOLEAFLET_ADMIN_DST) \
$(LOLEAFLET_PREFIX)/dist/admin-src.js
@NODE_PATH=$(abs_builddir)/node_modules:$(LOLEAFLET_PREFIX)/dist $(NODE) node_modules/browserify/bin/cmd.js -g browserify-css $(if $(ENABLE_DEBUG),--debug,-g uglifyify) -o $@ $(srcdir)/admin/main-admin.js
$(LOLEAFLET_PREFIX)/dist/admin-src.js: $(LOLEAFLET_ADMIN_ALL)
@echo "Checking for admin JS errors..."
@NODE_PATH=$(abs_builddir)/node_modules $(NODE) node_modules/eslint/bin/eslint.js $(srcdir)/admin/src --ignore-path $(srcdir)/.eslintignore --config $(srcdir)/.eslintrc
@awk 'FNR == 1 {print ""} 1' $(patsubst %.js,$(srcdir)/%.js,$(call LOLEAFLET_JS,$(srcdir)/admin/build/build.js)) > $@
if ENABLE_DEBUG
$(LOLEAFLET_PREFIX)/dist/loleaflet-src.js: $(LOLEAFLET_JS_DST)
@echo "Checking for loleaflet JS errors..."
@NODE_PATH=$(abs_builddir)/node_modules $(NODE) node_modules/eslint/bin/eslint.js $(srcdir)/src \
$(srcdir)/js --ignore-path $(srcdir)/.eslintignore --config $(srcdir)/.eslintrc
@touch $@
$(builddir)/dist/bundle.css: $(LOLEAFLET_CSS_DST)
@touch $@
$(builddir)/dist/bundle.js: $(NODE_MODULES_JS_DST) \
$(LOLEAFLET_PREFIX)/dist/loleaflet-src.js \
$(builddir)/dist/global.js \
$(builddir)/dist/jquery.mCustomScrollbar.js \
$(builddir)/dist/w2ui-1.5.rc1.js
@touch $@
else
$(LOLEAFLET_PREFIX)/dist/loleaflet-src.js: $(LOLEAFLET_JS_SRC)
@mkdir -p $(dir $@)
@echo "Checking for loleaflet JS errors..."
@NODE_PATH=$(abs_builddir)/node_modules $(NODE) node_modules/eslint/bin/eslint.js $(srcdir)/src \
$(srcdir)/js --ignore-path $(srcdir)/.eslintignore --config $(srcdir)/.eslintrc
@(cat $(srcdir)/src/copyright.js | sed 's/{VERSION}/$(LOLEAFLET_VERSION)/' - \
&& echo "(function (window, document, undefined) {" \
&& awk 'FNR == 1 {print ""} 1' \
$(patsubst %.js,$(srcdir)/%.js,$(call LOLEAFLET_JS,$(srcdir)/build/build.js)) \
&& echo "}(window, document));") > $@
$(builddir)/dist/bundle.css: $(LOLEAFLET_CSS)
@echo "Uglify loleaflet css files..."
@NODE_PATH=$(abs_builddir)/node_modules $(NODE) node_modules/uglifycss/uglifycss $(LOLEAFLET_CSS) > $@
$(builddir)/dist/global.js: $(srcdir)/js/global.js
@echo "Uglify global.js file..."
@NODE_PATH=$(abs_builddir)/node_modules $(NODE) node_modules/uglify-js/bin/uglifyjs $< --output $@
$(builddir)/dist/bundle.js: $(NODE_MODULES_JS_SRC) \
$(LOLEAFLET_PREFIX)/dist/loleaflet-src.js \
$(builddir)/dist/global.js \
$(srcdir)/js/jquery.mCustomScrollbar.js \
$(srcdir)/js/w2ui-1.5.rc1.js
@echo "Uglify loleaflet js files..."
NODE_PATH=$(abs_builddir)/node_modules $(NODE) node_modules/uglify-js/bin/uglifyjs \
$(NODE_MODULES_JS) \
$(srcdir)/js/jquery.mCustomScrollbar.js \
$(srcdir)/js/w2ui-1.5.rc1.js \
$(builddir)/build/dist/loleaflet-src.js \
--output $@
endif
$(builddir)/dist/loleaflet.html: $(srcdir)/html/loleaflet.html.m4 $(LOLEAFLET_HTML_DST) \
$(builddir)/dist/bundle.css $(builddir)/dist/bundle.js
@echo "Generating loleaflet.html..."
@m4 -E -DDEBUG=$(ENABLE_DEBUG) \
-DIOSAPP=$(ENABLE_IOSAPP) \
-DGTKAPP=$(ENABLE_GTKAPP) \
-DANDROIDAPP=$(ENABLE_ANDROIDAPP) \
-DMOBILEAPPNAME="$(MOBILE_APP_NAME)" \
-DLOLEAFLET_CSS="$(subst $(SPACE),$(COMMA),$(LOLEAFLET_CSS_M4))" \
-DBUNDLE_CSS="$(abs_builddir)/dist/bundle.css" \
-DGLOBAL_JS="$(abs_builddir)/dist/global.js" \
-DLOLEAFLET_JS="$(subst $(SPACE),$(COMMA),$(NODE_MODULES_JS) \
jquery.mCustomScrollbar.js \
w2ui-1.5.rc1.js \
$(call LOLEAFLET_JS,$(srcdir)/build/build.js))" \
$(srcdir)/html/loleaflet.html.m4 > $@
node_modules: npm-shrinkwrap.json
@npm install
@touch node_modules
$(builddir)/dist/plugins/%.js: $(srcdir)/plugins/%.js
@mkdir -p $(dir $@)
@if test -z '$(ENABLE_BROWSERSYNC)'; then \
`cp $< $@`; \
else \
`ln -sf $(abs_srcdir)/$< $@`; \
fi
$(builddir)/dist/images/%: $(srcdir)/images/%
@mkdir -p $(dir $@)
@cp $< $@
$(builddir)/dist/%.html: $(srcdir)/html/%.html
@mkdir -p $(dir $@)
@cp $< $@
$(builddir)/dist/src/%.js: $(srcdir)/src/%.js
@mkdir -p $(dir $@)
@if test -z '$(ENABLE_BROWSERSYNC)'; then \
`cp $< $@`; \
else \
`echo $< $@`; \
`ln -sf $(abs_srcdir)/$< $@`; \
fi
$(builddir)/dist/%.js: $(srcdir)/js/%.js
@mkdir -p $(dir $@)
@if test -z '$(ENABLE_BROWSERSYNC)'; then \
`cp $< $@`; \
else \
`ln -sf $(abs_srcdir)/$< $@`; \
fi
$(builddir)/dist/node_modules/%.js: $(builddir)/node_modules/%.js
@mkdir -p $(dir $@)
@cp $< $@
$(builddir)/dist/$(JQUERY_LIGHTNESS_IMAGE_PATH)/%.png: $(JQUERY_LIGHTNESS_IMAGE_PATH)/%.png
@mkdir -p $(dir $@)
@cp $< $@
$(builddir)/dist/images/%.png: $(JQUERY_LIGHTNESS_IMAGE_PATH)/%.png
@mkdir -p $(dir $@)
@cp $< $@
$(builddir)/dist/$(JQUERY_MINIFIED_IMAGE_PATH)/%.png: $(JQUERY_MINIFIED_IMAGE_PATH)/%.png
@mkdir -p $(dir $@)
@cp $< $@
$(builddir)/dist/images/%.png: $(JQUERY_MINIFIED_IMAGE_PATH)/%.png
@mkdir -p $(dir $@)
@cp $< $@
$(top_builddir)/locale/%/LC_MESSAGES/loolwsd.mo: $(srcdir)/po/help-%.po $(srcdir)/po/ui-%.po
@echo "INFO: compiling message catalog $@"
@mkdir -p $(dir $@)
@$(MSGCAT) $^ | $(MSGFMT) -o $@ -
$(builddir)/dist/admin/%: $(srcdir)/admin/%
@mkdir -p $(dir $@)
@cp $< $@
install-data-hook:
mkdir -p $(DESTDIR)$(pkgdatadir)/loleaflet; \
cp -ar dist/ $(DESTDIR)$(pkgdatadir)/loleaflet/;
pot:
xgettext --from-code=UTF-8 --keyword=_ --output=po/templates/loleaflet-ui.pot \
admin/admin.strings.js \
admin/src/AdminSocketAnalytics.js \
admin/src/AdminSocketBase.js \
admin/src/AdminSocketOverview.js \
admin/src/AdminSocketSettings.js \
admin/src/Util.js \
scr/control/toolbar.js \
src/control/Control.AlertDialog.js \
src/control/Control.ContextMenu.js \
src/control/Control.DocumentRepair.js \
src/control/Control.Menubar.js \
src/control/Control.Scroll.Annotation.js \
src/control/Control.Tabs.js \
src/control/Signing.js \
src/control/Ruler.js \
src/control/Toolbar.js \
src/core/Socket.js \
src/errormessages.js \
src/layer/marker/Annotation.js \
src/layer/tile/TileLayer.js \
src/map/Map.js \
src/map/handler/Map.FileInserter.js \
src/map/handler/Map.WOPI.js
html2po --pot --input=html/loleaflet-help.html --output=po/templates/loleaflet-help.pot --duplicates=merge
l10n: pot
for i in po/ui-*.po; do pot2po --input=po/templates/loleaflet-ui.pot --template=$$i --output=$$i.new; mv $$i.new $$i;done
for i in po/help-*.po; do pot2po --input=po/templates/loleaflet-help.pot --template=$$i --output=$$i.new; mv $$i.new $$i;done
clean-local:
rm -rf node_modules
rm -rf $(builddir)/dist
rm -rf $(top_builddir)/locale
rm -rf $(builddir)/build/dist
spec/data/load-test:
if [ ! -d spec/data/load_test ]; then \
mkdir -p spec/data/load_test; \
for i in $$(seq 1 125); \
do \
cp spec/data/eval.odt spec/data/load_test/eval$$i.odt; \
cp spec/data/eval.odp spec/data/load_test/eval$$i.odp; \
cp spec/data/eval.ods spec/data/load_test/eval$$i.ods; \
cp spec/data/eval.odg spec/data/load_test/eval$$i.odg; \
done; \
fi
load-test: spec/data/load-test
rm -rf load_test_out; \
mkdir load_test_out; \
for i in $$(seq 1 20); \
do \
node_modules/.bin/mocha spec/headlessLoadTest.js > load_test_out/$$i.out 2>&1 & \
done;