mirror of
https://github.com/ONLYOFFICE/desktop-apps.git
synced 2026-02-10 18:05:16 +08:00
358 lines
12 KiB
Makefile
358 lines
12 KiB
Makefile
PWD := $(shell pwd)
|
|
|
|
COMPANY_NAME ?= ONLYOFFICE
|
|
PRODUCT_NAME ?= Desktop Editors
|
|
PRODUCT_NAME_SHORT ?= $(subst $(empty) $(empty),,$(PRODUCT_NAME))
|
|
|
|
COMPANY_NAME_LOW = $(shell echo $(COMPANY_NAME) | tr A-Z a-z)
|
|
PRODUCT_NAME_LOW = $(shell echo $(PRODUCT_NAME_SHORT) | tr A-Z a-z)
|
|
|
|
PUBLISHER_NAME ?= Ascensio System SIA
|
|
PUBLISHER_URL ?= http://onlyoffice.com
|
|
SUPPORT_URL ?= http://support.onlyoffice.com
|
|
SUPPORT_MAIL ?= support@onlyoffice.com
|
|
SCHEME_HANDLER ?= oo-office
|
|
|
|
PRODUCT_VERSION ?= 0.0.0
|
|
BUILD_NUMBER ?= 0
|
|
|
|
BRANDING_DIR ?= .
|
|
|
|
PACKAGE_NAME := $(COMPANY_NAME_LOW)-$(PRODUCT_NAME_LOW)
|
|
PACKAGE_OPENSOURCE := $(PACKAGE_NAME)
|
|
PACKAGE_COMMERCIAL := $(PACKAGE_NAME)-enterprise
|
|
PACKAGE_EDITION ?= opensource
|
|
ifeq ($(PACKAGE_EDITION), commercial)
|
|
PACKAGE_NAME := $(PACKAGE_COMMERCIAL)
|
|
endif
|
|
PACKAGE_VERSION := $(PRODUCT_VERSION)-$(BUILD_NUMBER)
|
|
|
|
UNAME_M ?= $(shell uname -m)
|
|
ifeq ($(UNAME_M),x86_64)
|
|
RPM_ARCH = x86_64
|
|
DEB_ARCH = amd64
|
|
TAR_ARCH = x86_64
|
|
PLATFORM = linux_64
|
|
endif
|
|
ifneq ($(filter aarch%,$(UNAME_M)),)
|
|
RPM_ARCH = aarch64
|
|
DEB_ARCH = arm64
|
|
TAR_ARCH = aarch64
|
|
PLATFORM = linux_arm64
|
|
endif
|
|
|
|
RPM_BUILD_DIR = rpm/build
|
|
RPM_SUSE_BUILD_DIR = rpm-suse/build
|
|
|
|
RPM_PACKAGE_DIR = $(RPM_BUILD_DIR)/RPMS/$(RPM_ARCH)
|
|
RPM_SUSE_PACKAGE_DIR = $(RPM_SUSE_BUILD_DIR)/RPMS/$(RPM_ARCH)
|
|
|
|
DEB = deb/$(PACKAGE_NAME)_$(PACKAGE_VERSION)$(DEB_RELEASE_SUFFIX)_$(DEB_ARCH).deb
|
|
RPM = $(RPM_PACKAGE_DIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)$(RPM_RELEASE_SUFFIX).$(RPM_ARCH).rpm
|
|
RPM_SUSE = $(RPM_SUSE_PACKAGE_DIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)$(RPM_SUSE_RELEASE_SUFFIX).$(RPM_ARCH).rpm
|
|
TAR = tar/$(PACKAGE_NAME)-$(PACKAGE_VERSION)$(TAR_RELEASE_SUFFIX)-$(TAR_ARCH).tar.xz
|
|
TAR_HELP = tar/$(PACKAGE_NAME)-help-$(PACKAGE_VERSION)$(TAR_RELEASE_SUFFIX)-any.tar.xz
|
|
|
|
NEWS_RPM = build/main/usr/share/doc/$(PACKAGE_NAME)/NEWS
|
|
CHANGELOG_RPM = build/main/usr/share/doc/$(PACKAGE_NAME)/ChangeLog
|
|
CHANGELOG_DEB = deb/build/debian/changelog
|
|
|
|
DESKTOPEDITORS_PREFIX := $(COMPANY_NAME_LOW)/$(PRODUCT_NAME_LOW)
|
|
DESKTOPEDITORS_EXEC := $(PACKAGE_NAME)
|
|
|
|
BIN_FILES += build/main/usr/bin/$(DESKTOPEDITORS_EXEC)
|
|
DESKTOP_FILES += build/main/usr/share/applications/$(DESKTOPEDITORS_EXEC).desktop
|
|
LINUX_DEPS += $(BIN_FILES)
|
|
LINUX_DEPS += $(DESKTOP_FILES)
|
|
LINUX_DEPS += $(CHANGELOG_RPM)
|
|
LINUX_DEPS += $(patsubst $(BRANDING_DIR)/common/icons/%.png, \
|
|
build/main/usr/share/icons/hicolor/%/apps/$(DESKTOPEDITORS_EXEC).png, \
|
|
$(wildcard $(BRANDING_DIR)/common/icons/*.png))
|
|
LINUX_DEPS += build/main/usr/share/licenses/$(PACKAGE_NAME)/LICENSE
|
|
LINUX_DEPS += build/main/usr/share/licenses/$(PACKAGE_NAME)/3DPARTYLICENSE
|
|
|
|
DEB_DEPS += $(CHANGELOG_DEB)
|
|
DEB_DEPS += deb/build/debian/compat
|
|
DEB_DEPS += deb/build/debian/control
|
|
DEB_DEPS += deb/build/debian/copyright
|
|
DEB_DEPS += deb/build/debian/postrm
|
|
DEB_DEPS += deb/build/debian/rules
|
|
DEB_DEPS += deb/build/debian/source/format
|
|
DEB_DEPS += deb/build/debian/$(PACKAGE_NAME).dirs
|
|
DEB_DEPS += deb/build/debian/$(PACKAGE_NAME).install
|
|
DEB_DEPS += deb/build/debian/$(PACKAGE_NAME).links
|
|
DEB_DEPS += deb/build/debian/$(PACKAGE_NAME)-help.install
|
|
DEB_DEPS += deb/build/package.config
|
|
|
|
SOURCE_DIR := ../../../../build_tools/out/$(PLATFORM)/$(COMPANY_NAME_LOW)
|
|
|
|
M4_PARAMS += -D M4_COMPANY_NAME='$(COMPANY_NAME)'
|
|
M4_PARAMS += -D M4_COMPANY_NAME_LOW='$(COMPANY_NAME_LOW)'
|
|
M4_PARAMS += -D M4_PRODUCT_NAME='$(PRODUCT_NAME)'
|
|
M4_PARAMS += -D M4_PUBLISHER_NAME='$(PUBLISHER_NAME)'
|
|
M4_PARAMS += -D M4_PUBLISHER_URL='$(PUBLISHER_URL)'
|
|
M4_PARAMS += -D M4_SUPPORT_MAIL='$(SUPPORT_MAIL)'
|
|
M4_PARAMS += -D M4_SUPPORT_URL='$(SUPPORT_URL)'
|
|
M4_PARAMS += -D M4_PACKAGE_NAME='$(PACKAGE_NAME)'
|
|
M4_PARAMS += -D M4_PACKAGE_OPENSOURCE='$(PACKAGE_OPENSOURCE)'
|
|
M4_PARAMS += -D M4_PACKAGE_COMMERCIAL='$(PACKAGE_COMMERCIAL)'
|
|
M4_PARAMS += -D M4_PACKAGE_EDITION='$(PACKAGE_EDITION)'
|
|
M4_PARAMS += -D M4_DESKTOPEDITORS_PREFIX='$(DESKTOPEDITORS_PREFIX)'
|
|
M4_PARAMS += -D M4_DESKTOPEDITORS_EXEC='$(DESKTOPEDITORS_EXEC)'
|
|
M4_PARAMS += -D M4_SCHEME_HANDLER='$(SCHEME_HANDLER)'
|
|
M4_PARAMS += -D M4_DEB_ARCH='$(DEB_ARCH)'
|
|
M4_PARAMS += -D M4_CURRENT_YEAR='$(shell date +"%Y")'
|
|
|
|
M4_DEB_PARAMS = $(M4_PARAMS)
|
|
M4_DEB_PARAMS += -D M4_PACKAGE_VERSION='$(PACKAGE_VERSION)$(DEB_RELEASE_SUFFIX)'
|
|
|
|
RPM_PARAMS += --define '_company_name $(COMPANY_NAME)'
|
|
RPM_PARAMS += --define '_product_name $(PRODUCT_NAME)'
|
|
RPM_PARAMS += --define '_publisher_name $(PUBLISHER_NAME)'
|
|
RPM_PARAMS += --define '_publisher_url $(PUBLISHER_URL)'
|
|
RPM_PARAMS += --define '_support_mail $(SUPPORT_MAIL)'
|
|
RPM_PARAMS += --define '_package_name $(PACKAGE_NAME)'
|
|
RPM_PARAMS += --define '_package_opensource $(PACKAGE_OPENSOURCE)'
|
|
RPM_PARAMS += --define '_package_commercial $(PACKAGE_COMMERCIAL)'
|
|
RPM_PARAMS += --define '_package_edition $(PACKAGE_EDITION)'
|
|
RPM_PARAMS += --define '_product_version $(PRODUCT_VERSION)'
|
|
RPM_PARAMS += --define '_desktopeditors_prefix $(DESKTOPEDITORS_PREFIX)'
|
|
RPM_PARAMS += --define '_desktopeditors_exec $(DESKTOPEDITORS_EXEC)'
|
|
RPM_PARAMS += --define '_scheme_handler $(SCHEME_HANDLER)'
|
|
RPM_PARAMS += --define '_binary_payload w7.xzdio'
|
|
|
|
CHANGES_DIR := $(BRANDING_DIR)/../../../common/changes
|
|
CHANGES_HTML := changes.html
|
|
CHANGES_VERSIONS := $(shell echo $(PRODUCT_VERSION); { ls -1 $(CHANGES_DIR) \
|
|
| grep -E '^[0-9]+' | grep -v $(PRODUCT_VERSION) | sort -Vur; })
|
|
|
|
HELP_GLOB := opt/$(DESKTOPEDITORS_PREFIX)/editors/web-apps/apps/*/main/resources/help
|
|
|
|
-include $(BRANDING_DIR)/branding.mk
|
|
|
|
all : deb rpm rpm-suse tar
|
|
deb : $(DEB)
|
|
rpm : $(RPM)
|
|
rpm-suse : $(RPM_SUSE)
|
|
tar : $(TAR) $(TAR_HELP)
|
|
|
|
clean :
|
|
rm -rf \
|
|
build \
|
|
deb*/build \
|
|
deb*/*.buildinfo \
|
|
deb*/*.changes \
|
|
deb*/*.ddeb \
|
|
deb*/*.deb \
|
|
rpm*/build \
|
|
rpm*/$(PACKAGE_NAME).spec \
|
|
tar \
|
|
$(CHANGES_DIR)/*/changes_??? \
|
|
$(CHANGES_DIR)/*/news_???
|
|
|
|
build : $(LINUX_DEPS)
|
|
mkdir -p $@/main/opt/$(DESKTOPEDITORS_PREFIX)
|
|
cp -rft $@/main/opt/$(DESKTOPEDITORS_PREFIX) $(SOURCE_DIR)/desktopeditors/*
|
|
chmod 755 $@/main/opt/$(DESKTOPEDITORS_PREFIX)/DesktopEditors
|
|
|
|
ifneq ($(PACKAGE_EDITION), commercial)
|
|
cp -f $(BRANDING_DIR)/../../../common/package/license/$(PACKAGE_EDITION)/LICENSE.txt \
|
|
$@/main/opt/$(DESKTOPEDITORS_PREFIX)/LICENSE.txt
|
|
else
|
|
cp -f $(BRANDING_DIR)/../../../common/package/license/$(PACKAGE_EDITION)/LICENSE.txt \
|
|
$@/main/opt/$(DESKTOPEDITORS_PREFIX)/EULA.txt
|
|
endif
|
|
|
|
cd $@; \
|
|
for path in main/$(HELP_GLOB); do \
|
|
path_new=$$(echo $$path | sed 's|^main/|help/|'); \
|
|
mkdir -p $$path_new; \
|
|
mv -fT $$path $$path_new; \
|
|
done
|
|
|
|
ifdef MEDIAVIEWER_PREFIX
|
|
mkdir -p $@/main/opt/$(MEDIAVIEWER_PREFIX)
|
|
cp -rft $@/main/opt/$(MEDIAVIEWER_PREFIX) $(SOURCE_DIR)/mediaviewer/*
|
|
chmod 755 $@/main/opt/$(MEDIAVIEWER_PREFIX)/ImageViewer
|
|
chmod 755 $@/main/opt/$(MEDIAVIEWER_PREFIX)/VideoPlayer
|
|
endif
|
|
|
|
$(RPM) : build rpm/$(PACKAGE_NAME).spec
|
|
cd rpm && rpmbuild -bb \
|
|
--define "_topdir $(PWD)/$(RPM_BUILD_DIR)" \
|
|
--define "_build_number $(BUILD_NUMBER)$(RPM_RELEASE_SUFFIX)" \
|
|
--define "_package_arch $(RPM_ARCH)" \
|
|
--target $(RPM_ARCH) \
|
|
$(RPM_PARAMS) \
|
|
$(PACKAGE_NAME).spec
|
|
|
|
build/main/usr/share/icons/hicolor/%/apps/$(DESKTOPEDITORS_EXEC).png : $(BRANDING_DIR)/common/icons/%.png
|
|
install -m 644 -D $< $@
|
|
|
|
build/main/usr/share/licenses/$(PACKAGE_NAME)/LICENSE : $(BRANDING_DIR)/../../../common/package/license/$(PACKAGE_EDITION)/LICENSE.txt
|
|
build/main/usr/share/licenses/$(PACKAGE_NAME)/3DPARTYLICENSE : $(BRANDING_DIR)/../../../common/package/license/3dparty/3DPARTYLICENSE
|
|
|
|
build/main/usr/share/licenses/% :
|
|
install -m 644 -D $< $@
|
|
|
|
deb/build/debian/% : deb/template/%
|
|
mkdir -pv $(@D) && cp -fv $< $@
|
|
|
|
deb/build/debian/% : deb/template/%.m4
|
|
mkdir -pv $(@D) && m4 $(M4_DEB_PARAMS) $< > $@
|
|
|
|
$(CHANGELOG_DEB) :
|
|
mkdir -pv $(@D)
|
|
for v in $(CHANGES_VERSIONS); do \
|
|
if [ -f $(CHANGES_DIR)/$$v/$(CHANGES_HTML) ]; then \
|
|
date=$$(sed -n $(CHANGES_DIR)/$$v/$(CHANGES_HTML) \
|
|
-e 's/{{DATE}}/'$$(date -I)'/' \
|
|
-e 's/.*<span class="releasedate"> - \(.*\)<\/span>.*/\1/p' \
|
|
| date -R -f -); \
|
|
else \
|
|
date=$$(date -R); \
|
|
fi; \
|
|
echo "VERSION: $$v; DATE: $$date"; \
|
|
mkdir -pv $(CHANGES_DIR)/$$v; \
|
|
if [ -f $(CHANGES_DIR)/$$v/$(CHANGES_HTML) ]; then \
|
|
sed $(CHANGES_DIR)/$$v/$(CHANGES_HTML) \
|
|
-e '/DOCTYPE/,/div class/d' \
|
|
-e '/div class/,/html/d' \
|
|
-e '/<h1>/d' \
|
|
-e '/<ul>/d' \
|
|
-e '/<\/ul>/d' \
|
|
-e 's/<\/li>//g' \
|
|
-e 's/<\/h4>/:/g' \
|
|
-e 's/<\/h2>/ ]/g' \
|
|
-e 's/<code>//g' \
|
|
-e 's/<\/code>//g' \
|
|
-e 's/ \{,\}<li>/ - /g' \
|
|
-e 's/ \{,\}<h4>/ * /g' \
|
|
-e 's/ \{,\}<h2>/\n [ /g' \
|
|
-e '/^$$/d' \
|
|
| sed '1{/^$$/d}' \
|
|
> $(CHANGES_DIR)/$$v/changes_deb; \
|
|
else \
|
|
echo " * $(PRODUCT_VERSION)" > $(CHANGES_DIR)/$$v/changes_deb; \
|
|
fi; \
|
|
if [ $$v = $(PRODUCT_VERSION) ]; then \
|
|
m4 $(M4_DEB_PARAMS) -D M4_DATE="$$date" \
|
|
deb/template/changelog.m4 \
|
|
| sed '2r '$(CHANGES_DIR)/$$v/changes_deb >> $@; \
|
|
else \
|
|
m4 $(M4_DEB_PARAMS) -D M4_PACKAGE_VERSION=$$v -D M4_DATE="$$date" \
|
|
deb/template/changelog.m4 \
|
|
| sed '2r '$(CHANGES_DIR)/$$v/changes_deb >> $@; \
|
|
fi; \
|
|
done
|
|
|
|
$(NEWS_RPM) :
|
|
mkdir -pv $(@D)
|
|
for v in $(CHANGES_VERSIONS); do \
|
|
if [ -f $(CHANGES_DIR)/$$v/$(CHANGES_HTML) ]; then \
|
|
date=$$(sed -n $(CHANGES_DIR)/$$v/$(CHANGES_HTML) \
|
|
-e 's/{{DATE}}/'$$(date -I)'/' \
|
|
-e 's/.*<span class="releasedate"> - \(.*\)<\/span>.*/\1/p' \
|
|
| date -I -f -); \
|
|
else \
|
|
date=$$(date -I); \
|
|
fi; \
|
|
echo "VERSION: $$v; DATE: $$date"; \
|
|
mkdir -pv $(CHANGES_DIR)/$$v; \
|
|
if [ -f $(CHANGES_DIR)/$$v/$(CHANGES_HTML) ]; then \
|
|
sed $(CHANGES_DIR)/$$v/$(CHANGES_HTML) \
|
|
-e '/DOCTYPE/,/div class/d' \
|
|
-e '/div class/,/html/d' \
|
|
-e 's/<\/li>//g' \
|
|
-e 's/<\/h4>/:/g' \
|
|
-e 's/<\/h2>//g' \
|
|
-e 's/<code>//g' \
|
|
-e 's/<\/code>//g' \
|
|
-e 's/ \{,\}<li>/ - /g' \
|
|
-e 's/ \{,\}<h4>/- /g' \
|
|
-e 's/ \{,\}<h2>//g' \
|
|
-e '/<ul>/d' \
|
|
-e '/<\/ul>/d' \
|
|
-e '/<h1>/d' \
|
|
-e '/^$$/d' \
|
|
> $(CHANGES_DIR)/$$v/news_rpm; \
|
|
else \
|
|
echo "$(PRODUCT_VERSION)" > $(CHANGES_DIR)/$$v/news_rpm; \
|
|
fi; \
|
|
m4 $(M4_PARAMS) -D M4_VERSION=$$v -D M4_DATE_SHORT="$$date" \
|
|
common/NEWS.m4 \
|
|
| sed '2r '$(CHANGES_DIR)/$$v/news_rpm >> $@; \
|
|
done
|
|
|
|
$(CHANGELOG_RPM) : $(NEWS_RPM)
|
|
mkdir -pv $(@D)
|
|
for v in $(CHANGES_VERSIONS); do \
|
|
if [ -f $(CHANGES_DIR)/$$v/$(CHANGES_HTML) ]; then \
|
|
date=$$(sed -n $(CHANGES_DIR)/$$v/$(CHANGES_HTML) \
|
|
-e 's/{{DATE}}/'$$(date -I)'/' \
|
|
-e 's/.*<span class="releasedate"> - \(.*\)<\/span>.*/\1/p' \
|
|
| date +'%a %b %d %Y' -f -); \
|
|
else \
|
|
date=$$(date +'%a %b %d %Y'); \
|
|
fi; \
|
|
echo "VERSION: $$v; DATE: $$date"; \
|
|
sed $(CHANGES_DIR)/$$v/news_rpm \
|
|
-e 's/^ - / - /' \
|
|
-e 's/^ - / - /' \
|
|
-e 's/^- / - /' \
|
|
-e 's/^[^ *]/- &/' \
|
|
> $(CHANGES_DIR)/$$v/changes_rpm; \
|
|
m4 $(M4_PARAMS) -D M4_VERSION=$$v -D M4_DATE="$$date" \
|
|
common/ChangeLog.m4 \
|
|
| sed '1r '$(CHANGES_DIR)/$$v/changes_rpm >> $@; \
|
|
done
|
|
|
|
deb/build/debian/$(PACKAGE_NAME).% : deb/template/package.%.m4
|
|
mkdir -pv $(@D) && m4 $(M4_DEB_PARAMS) $< > $@
|
|
|
|
deb/build/debian/$(PACKAGE_NAME)-help.% : deb/template/package-help.%.m4
|
|
mkdir -pv $(@D) && m4 $(M4_DEB_PARAMS) $< > $@
|
|
|
|
deb/build/package.config :
|
|
mkdir -p $(@D) && echo "package = deb" > $@
|
|
|
|
$(DEB) : build $(DEB_DEPS)
|
|
cd deb/build && dpkg-buildpackage -b -uc -us -a$(DEB_ARCH)
|
|
|
|
$(RPM_SUSE) : build rpm-suse/$(PACKAGE_NAME).spec
|
|
cd rpm-suse && rpmbuild -bb \
|
|
--define "_topdir $(PWD)/$(RPM_SUSE_BUILD_DIR)" \
|
|
--define "_build_number $(BUILD_NUMBER)$(RPM_SUSE_RELEASE_SUFFIX)" \
|
|
--define "_package_arch $(RPM_ARCH)" \
|
|
--target $(RPM_ARCH) \
|
|
$(RPM_PARAMS) \
|
|
$(PACKAGE_NAME).spec
|
|
|
|
$(TAR) : build
|
|
mkdir -p tar
|
|
tar --create --use-compress-program="xz -9T0" \
|
|
--owner=root --group=root \
|
|
--directory=build/main --file=$@ \
|
|
$(patsubst build/main/%,%,$(wildcard build/main/*))
|
|
|
|
$(TAR_HELP) : build
|
|
mkdir -p tar
|
|
tar --create --use-compress-program="xz -9T0" \
|
|
--owner=root --group=root \
|
|
--directory=build/help --file=$@ \
|
|
$(patsubst build/help/%,%,$(wildcard build/help/*))
|
|
|
|
build/main/usr/bin/$(DESKTOPEDITORS_EXEC) : common/desktopeditors.sh.m4
|
|
build/main/usr/share/applications/$(DESKTOPEDITORS_EXEC).desktop : common/desktopeditors.desktop.m4
|
|
|
|
$(BIN_FILES) $(DESKTOP_FILES) :
|
|
mkdir -p $(@D) && m4 -I "$(BRANDING_DIR)/common" $(M4_PARAMS) $< > $@
|
|
|
|
% : %.m4
|
|
m4 $(M4_PARAMS) $< > $@
|
|
|
|
%/$(PACKAGE_NAME).spec : %/package.spec
|
|
cp $< $@
|
|
|
|
.PHONY : all clean deb rpm rpm-suse tar
|