13eca8620a
The Viewer app is intended to eventually resemble the experimental Android DocumentLoader app. Build using the gbuild mechanism, which is also invoked from an Xcode project. This seems to work out fine, the resulting app installs at least on the simulator, and you can debug all the LO code involved even if Xcode (obviously) has no knowledge of the LO source files/classes/etc. Change-Id: Ic96178d80b8d6467cac969b29e37f0d39513acf9
439 lines
14 KiB
Makefile
439 lines
14 KiB
Makefile
# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
|
|
#
|
|
# Copyright 2012 LibreOffice contributors.
|
|
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
#
|
|
|
|
.PHONY : all bootstrap build check clean clean-build clean-host dev-install distclean distro-pack-install docs download fetch findunusedcode get-submodules help id install install-strip install-tb subsequentcheck tags
|
|
|
|
ifeq ($(MAKECMDGOALS),)
|
|
MAKECMDGOALS:=all
|
|
endif
|
|
|
|
SHELL=/usr/bin/env bash
|
|
SRCDIR := @SRC_ROOT@
|
|
BUILDDIR := @BUILDDIR@
|
|
|
|
# Next 'if' means:
|
|
# If you want to make something more than help clean distclean,
|
|
# and make has not yet restarted itself..
|
|
# ..run autogen.sh if needed and force make to restart itself.
|
|
ifeq (,$(MAKE_RESTARTS)$(if $(filter help clean distclean,$(MAKECMDGOALS)),T))
|
|
|
|
.PHONY : force-restart
|
|
Makefile: $(BUILDDIR)/config_host.mk force-restart
|
|
@touch $@
|
|
|
|
# run configure in an environment not polluted by config_host.mk
|
|
$(BUILDDIR)/config_host.mk : \
|
|
$(SRCDIR)/config_host.mk.in \
|
|
$(SRCDIR)/Makefile.in \
|
|
$(SRCDIR)/configure.ac \
|
|
$(BUILDDIR)/autogen.lastrun
|
|
$(SRCDIR)/autogen.sh
|
|
|
|
# dummy rule in case autogen.lastrun does not exist
|
|
$(BUILDDIR)/autogen.lastrun:
|
|
@true
|
|
|
|
else # MAKE_RESTARTS
|
|
|
|
all: build
|
|
|
|
ifeq ($(gb_Side),)
|
|
gb_Side:=host
|
|
endif
|
|
|
|
include $(BUILDDIR)/config_$(gb_Side).mk
|
|
SRCDIR:=$(SRC_ROOT)
|
|
|
|
ifeq ($(GMAKE_OPTIONS),)
|
|
ifeq ($(verbose)$(VERBOSE),)
|
|
export GMAKE_OPTIONS:=-rs
|
|
else
|
|
export GMAKE_OPTIONS:=-r
|
|
endif
|
|
endif
|
|
|
|
# This list tells which modules are gbuild ones. It does *not* tell which modules to build. That is directed
|
|
# by the module being mentioned in postprocess/prj/build.lst, etc, recursively.
|
|
$(WORKDIR)/modules.mk: $(wildcard */Module_*.mk) $(wildcard */prj/dmake) $(BUILDDIR)/config_host.mk
|
|
mkdir -p $(dir $@)
|
|
echo "gbuild_modules:= tail_build \\" > $@
|
|
for m in */Module_*.mk; do echo $$m | sed -e 's/\/.*$$/ \\/'; done >> $@
|
|
echo >> $@
|
|
echo -n "dmake_modules:= " >> $@
|
|
for m in */prj/dmake; do echo $$m | sed -e 's/\/.*$$/ \\/'; done >> $@
|
|
echo >> $@
|
|
|
|
-include $(WORKDIR)/modules.mk
|
|
include $(SRCDIR)/solenv/gbuild/Output.mk
|
|
$(if $(filter $(gbuild_modules),$(dmake_modules)),$(eval $(call gb_Output_warn,The following modules claim to be both dmake and gbuild: $(filter $(gbuild_modules),$(dmake_modules)))))
|
|
|
|
export gb_TAILBUILDTARGET=all slowcheck
|
|
|
|
define gbuild_module_rules
|
|
.PHONY: $(1) $(1).all $(1).build $(1).check $(1).clean $(1).subsequentcheck $(1).deliver
|
|
|
|
$(1): bootstrap fetch
|
|
cd $(1) && $(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS) gb_PARTIALBUILD=T
|
|
|
|
$(1).all: bootstrap fetch
|
|
$$(if $$(filter $(1),$$(shell $(GNUMAKE) -r -f $(SRCDIR)/tail_build/Makefile showmodules)), \
|
|
cd $(SRC_ROOT)/tail_build && unset MAKEFLAGS && \
|
|
export gb_TAILBUILDTARGET="$(WORKDIR)/Module/$(1) $(WORKDIR)/Module/check/$(1) $(WORKDIR)/Module/slowcheck/$(1)" && \
|
|
, \
|
|
cd $(SRC_ROOT)/$(1) && unset MAKEFLAGS && \
|
|
) \
|
|
$(SOLARENV)/bin/build.pl -P$(PARALLELISM) --all -- -P$(PARALLELISM)
|
|
|
|
$(1).build $(1).check $(1).clean:
|
|
cd $(1) && $(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS) $$(patsubst $(1).%,%,$$@) gb_PARTIALBUILD=T
|
|
|
|
$(1).subsequentcheck:
|
|
cd $(1) && $(GNUMAKE) -j $(CHECK_PARALLELISM) $(GMAKE_OPTIONS) subsequentcheck gb_PARTIALBUILD=T
|
|
|
|
$(1).deliver:
|
|
@true
|
|
|
|
endef
|
|
|
|
define gbuild_modules_rules
|
|
$(foreach m,$(1),$(call gbuild_module_rules,$(m)))
|
|
endef
|
|
|
|
define dmake_module_rules
|
|
.PHONY: $(1) $(1).all $(1).deliver $(1).clean
|
|
|
|
$(1): bootstrap fetch
|
|
cd $(SRC_ROOT)/$(1) && unset MAKEFLAGS && \
|
|
$(SOLARENV)/bin/build.pl -P$(PARALLELISM) -- -P$(PARALLELISM)
|
|
|
|
$(1).all: bootstrap fetch
|
|
cd $(SRC_ROOT)/$(1) && unset MAKEFLAGS && \
|
|
$(SOLARENV)/bin/build.pl -P$(PARALLELISM) --all -- -P$(PARALLELISM)
|
|
|
|
$(1).deliver: $(1)
|
|
cd $(SRC_ROOT)/$(1) && $(SOLARENV)/bin/deliver.pl
|
|
|
|
$(1).clean:
|
|
cd $(SRC_ROOT)/$(1) && $(SOLARENV)/bin/deliver.pl -delete
|
|
rm -fr $(1)/$(INPATH)
|
|
|
|
endef
|
|
|
|
define dmake_modules_rules
|
|
$(foreach m,$(1),$(call dmake_module_rules,$(m)))
|
|
endef
|
|
|
|
#
|
|
# Partial Build
|
|
#
|
|
$(eval $(call gbuild_modules_rules,$(gbuild_modules)))
|
|
|
|
$(eval $(call dmake_modules_rules,$(dmake_modules)))
|
|
|
|
# run a JunitTest - relies on naming convention (module prefix)
|
|
$(WORKDIR)/JunitTest/%/done :
|
|
cd $(firstword $(subst _, ,$*)) && $(GNUMAKE) $(GMAKE_OPTIONS) $@ gb_PARTIALBUILD=T
|
|
|
|
# run a CppunitTest - relies on naming convention (module prefix)
|
|
$(WORKDIR)/CppunitTest/%.test :
|
|
cd $(firstword $(subst _, ,$*)) && $(GNUMAKE) $(GMAKE_OPTIONS) $@ gb_PARTIALBUILD=T
|
|
|
|
#
|
|
# Help
|
|
#
|
|
help:
|
|
@cat $(SRCDIR)/solenv/gbuild/gbuild.help.txt
|
|
|
|
#
|
|
# Clean
|
|
#
|
|
clean: clean-host clean-build
|
|
|
|
clean-host:
|
|
ifeq ($(BUILD_DMAKE),YES)
|
|
if [ -f dmake/Makefile ] ; then $(GNUMAKE) -j $(PARALLELISM) -C dmake clean; fi
|
|
endif
|
|
rm -fr $(DEVINSTALLDIR)
|
|
rm -fr $(OUTDIR)
|
|
rm -fr $(WORKDIR)
|
|
rm -fr $(SRCDIR)/*/$(INPATH)
|
|
rm -fr $(SRCDIR)/solenv/$(OUTPATH)
|
|
rm -fr install
|
|
|
|
clean-build:
|
|
ifeq ($(CROSS_COMPILING),YES)
|
|
rm -rf $(SOLARVER)/$(INPATH_FOR_BUILD) # not necessarily below SRCDIR
|
|
rm -rf $(SRCDIR)/*/$(INPATH_FOR_BUILD)
|
|
endif
|
|
|
|
include $(SRCDIR)/compilerplugins/Makefile.mk
|
|
|
|
#
|
|
# Distclean
|
|
#
|
|
distclean : clean compilerplugins-clean
|
|
ifeq ($(BUILD_DMAKE),YES)
|
|
(if [ -f dmake/Makefile ] ; then $(GNUMAKE) -j $(PARALLELISM) -C dmake distclean; fi) && \
|
|
rm -f solenv/*/bin/dmake*
|
|
endif
|
|
rm -fr \
|
|
$(BUILDDIR)/Makefile \
|
|
$(BUILDDIR)/aclocal.m4 \
|
|
$(BUILDDIR)/autom4te.cache \
|
|
$(BUILDDIR)/config.log \
|
|
$(BUILDDIR)/config.status \
|
|
$(BUILDDIR)/config/*.h \
|
|
$(BUILDDIR)/config_build.mk \
|
|
$(BUILDDIR)/config_host.mk \
|
|
$(BUILDDIR)/config_host.mk.last \
|
|
$(BUILDDIR)/config_host.mk.stamp \
|
|
$(BUILDDIR)/configure \
|
|
$(BUILDDIR)/warn
|
|
find $(SOLARENV)/gdb -name "*.pyc" -exec rm {} \;
|
|
|
|
#
|
|
# custom command
|
|
#
|
|
ifneq ( $(MAKECMDGOALS),cmd)
|
|
cmd:
|
|
echo "custom cmd" && ( $(cmd) )
|
|
|
|
endif
|
|
|
|
ifneq ($(filter-out clean distclean,$(MAKECMDGOALS)),)
|
|
#
|
|
# Fetch
|
|
#
|
|
ifneq ($(DO_FETCH_TARBALLS),NO)
|
|
include $(SRCDIR)/Makefile.fetch
|
|
fetch: download
|
|
fetch: get-submodules
|
|
|
|
ifneq (,$(wildcard $(SRCDIR)/.git))
|
|
get-submodules:
|
|
ifneq ($(foreach i,$(GIT_NEEDED_SUBMODULES),$(i)/.git),$(wildcard $(foreach i,$(GIT_NEEDED_SUBMODULES),$(i)/.git)))
|
|
ifeq (,$(GIT_LINK_SRC))
|
|
cd $(SRCDIR) && ./g -f clone
|
|
else # space-saving clone from another local workdir
|
|
@echo "FIXME: GIT_LINK_SRC method is not yet implemented with submodules" 1>&2
|
|
true $(foreach i,$(GIT_NEEDED_SUBMODULES),\
|
|
&& rm -r $(i) && cp -R $(GIT_LINK_SRC)/$(i) $(i))
|
|
# bin/git-new-workdir $GIT_LINK_SRC/$i $i
|
|
git submodule update $(GIT_NEEDED_SUBMODULES)
|
|
endif
|
|
endif
|
|
|
|
else # these sources are from a tarball, so get the other source tarballs
|
|
gb_LO_VER := $(shell . $(SRCDIR)/sources.ver && echo $$lo_sources_ver)
|
|
$(if $(gb_LO_VER),,$(error Error while retrieving $$lo_sources_ver from $(SRCDIR)/sources.ver))
|
|
|
|
get-submodules: | download
|
|
ifneq ($(foreach i,$(subst helpcontent2,help,$(GIT_NEEDED_SUBMODULES)),$(SRCDIR)/src/libreoffice-$(i)-$(gb_LO_VER)),$(wildcard $(foreach i,$(subst helpcontent2,help,$(GIT_NEEDED_SUBMODULES)),$(SRCDIR)/src/libreoffice-$(i)-$(gb_LO_VER))))
|
|
$(foreach i,$(subst helpcontent2,help,$(GIT_NEEDED_SUBMODULES)),\
|
|
$(call fetch_Download_item,http://download.documentfoundation.org/libreoffice/src/$(shell echo $(gb_LO_VER) | sed -e "s/\([0-9]*\.[0-9]*\.[0-9]*\).*/\1/"),libreoffice-$(i)-$(gb_LO_VER).tar.xz,no-check))
|
|
$(SRCDIR)/bin/unpack-sources $(SRCDIR) $(foreach i,$(subst helpcontent2,help,$(GIT_NEEDED_SUBMODULES)),\
|
|
$(TARFILE_LOCATION)/libreoffice-$(i)-$(gb_LO_VER).tar.xz)
|
|
endif
|
|
|
|
endif
|
|
|
|
else
|
|
fetch:
|
|
@echo "Automatic fetching of external tarballs is disabled."
|
|
|
|
endif
|
|
|
|
#
|
|
# Bootstap
|
|
#
|
|
bootstrap: $(WORKDIR)/bootstrap compilerplugins
|
|
|
|
$(WORKDIR)/bootstrap:
|
|
@cd $(SRCDIR) && ./bootstrap
|
|
@mkdir -p $(dir $@) && touch $@
|
|
|
|
#
|
|
# Build
|
|
#
|
|
build-postprocess: bootstrap fetch $(if $(filter $(INPATH),$(INPATH_FOR_BUILD)),,cross-toolset)
|
|
ifeq ($(DISABLE_SCRIPTING),TRUE)
|
|
# We must get the headers from vbahelper "delivered" because
|
|
# as we don't link to any libs from there they won't otherwise be, or
|
|
# something. And we still do include those headers always even if the
|
|
# libs aren't built in the --disable-scripting case. (Ifdefs for
|
|
# DISABLE_SCRIPTING will be added to the code later as necessary.)
|
|
$(GNUMAKE) vbahelper
|
|
endif
|
|
ifeq ($(DISABLE_DBCONNECTIVITY),TRUE)
|
|
# Ditto for dbconnectivity in the --disable-database-connectivity case
|
|
$(GNUMAKE) connectivity
|
|
endif
|
|
cd $(SRC_ROOT)/postprocess && unset MAKEFLAGS && \
|
|
$(SOLARENV)/bin/build.pl -P$(PARALLELISM) --all -- -P$(PARALLELISM)
|
|
|
|
build: build-postprocess
|
|
ifeq ($(OS_FOR_BUILD),WNT)
|
|
cd $(SRC_ROOT)/instsetoo_native && unset MAKEFLAGS && $(SOLARENV)/bin/build.pl
|
|
else
|
|
cd $(SRC_ROOT)/instsetoo_native && unset MAKEFLAGS && \
|
|
$(SOLARENV)/bin/build.pl -P$(PARALLELISM) -- -P$(PARALLELISM)
|
|
endif
|
|
ifeq ($(OS),ANDROID)
|
|
cd android && $(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS)
|
|
endif
|
|
ifeq ($(OS),IOS)
|
|
cd ios && $(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS)
|
|
endif
|
|
|
|
build-nocheck : export SKIP_TESTS := YES
|
|
build-nocheck : build
|
|
|
|
cross-toolset: bootstrap fetch
|
|
# We need to build icu for the build platform, as building icu for the host
|
|
# platform requires tools built as part of icu that can run on the build
|
|
# platform. see --with-cross-build in icu/ExternalProject_icu.mk
|
|
$(GNUMAKE) gb_Side=build icu
|
|
#
|
|
cd cross_toolset && $(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS)
|
|
#
|
|
ifneq (,$(filter DESKTOP,$(BUILD_TYPE)))
|
|
ifneq (WNT,$(OS))
|
|
# We need to build nss for nsinstall... See NSINSTALL=... in nss/makefile.mk
|
|
$(GNUMAKE) gb_Side=build nss
|
|
endif
|
|
endif
|
|
|
|
#
|
|
# Install
|
|
#
|
|
|
|
install:
|
|
echo "Installing in $(INSTALLDIR)..." && \
|
|
ooinstall "$(INSTALLDIR)" && \
|
|
echo "" && \
|
|
echo "Installation finished, you can now execute:" && \
|
|
echo "$(INSTALLDIR)/program/soffice"
|
|
|
|
install-strip:
|
|
echo "Installing and stripping binaries in $(INSTALLDIR)..." && \
|
|
ooinstall --strip "$(INSTALLDIR)" && \
|
|
echo "" && \
|
|
echo "Installation finished, you can now execute:" && \
|
|
echo "$(INSTALLDIR)/program/soffice"
|
|
|
|
dev-install: build
|
|
@rm -rf $(DEVINSTALLDIR)
|
|
@mkdir $(DEVINSTALLDIR)
|
|
ifeq ($(OS_FOR_BUILD),WNT)
|
|
cd $(SRC_ROOT)/instsetoo_native && unset MAKEFLAGS && $(SOLARENV)/bin/build.pl LIBO_DEV_INSTALL=TRUE
|
|
unzip -q -d "$(DEVINSTALLDIR)" "$(SRCDIR)/instsetoo_native/$(INPATH)/LibreOffice/archive/install/en-US/LibO*_install-arc_en-US.zip"
|
|
mv "$(DEVINSTALLDIR)"/LibO*_install-arc_en-US/* "$(DEVINSTALLDIR)"/opt
|
|
else
|
|
ifeq ($(DISABLE_LINKOO),TRUE)
|
|
@ooinstall $(DEVINSTALLDIR)/opt
|
|
@install-gdb-printers -L
|
|
else
|
|
@ooinstall -l $(DEVINSTALLDIR)/opt
|
|
endif
|
|
endif
|
|
@rm -f $(SRCDIR)/install && ln -s $(DEVINSTALLDIR)/opt/ $(SRCDIR)/install
|
|
|
|
dev-install-nocheck : export SKIP_TESTS := YES
|
|
dev-install-nocheck : dev-install
|
|
|
|
dev-update:
|
|
ifeq ($(DISABLE_LINKOO),TRUE)
|
|
@linkoo --copy $(DEVINSTALLDIR)/opt $(SRCDIR)
|
|
else
|
|
@linkoo $(DEVINSTALLDIR)/opt $(SRCDIR)
|
|
endif
|
|
|
|
install-tb:
|
|
@rm -rf $(DEVINSTALLDIR)
|
|
@mkdir $(DEVINSTALLDIR)
|
|
ifeq ($(OS_FOR_BUILD),WNT)
|
|
cd $(SRC_ROOT)/instsetoo_native && unset MAKEFLAGS && $(SOLARENV)/bin/build.pl LIBO_DEV_INSTALL=TRUE
|
|
unzip -q -d "$(DEVINSTALLDIR)" "$(SRCDIR)/instsetoo_native/$(INPATH)/LibreOffice/archive/install/en-US/LibO*_install-arc_en-US.zip"
|
|
mv "$(DEVINSTALLDIR)"/LibO*_install-arc_en-US/* "$(DEVINSTALLDIR)"/opt
|
|
else
|
|
@ooinstall $(DEVINSTALLDIR)/opt
|
|
@install-gdb-printers
|
|
endif
|
|
@rm -f $(SRCDIR)/install && ln -s $(DEVINSTALLDIR)/opt/ $(SRCDIR)/install
|
|
|
|
distro-pack-install: install
|
|
$(SRCDIR)/bin/distro-install-clean-up
|
|
$(SRCDIR)/bin/distro-install-desktop-integration
|
|
$(SRCDIR)/bin/distro-install-sdk
|
|
$(SRCDIR)/bin/distro-install-file-lists
|
|
|
|
id:
|
|
@create-ids
|
|
|
|
tags:
|
|
@create-tags
|
|
|
|
docs:
|
|
@mkdocs.sh $(SRCDIR)/docs $(SOLARENV)/inc/doxygen.cfg
|
|
|
|
findunusedcode:
|
|
@which callcatcher > /dev/null 2>&1 || \
|
|
(echo "callcatcher not installed" && false)
|
|
@sed -e s,$$INPATH,callcatcher,g config_host.mk | sed -e s,"export OOO_JUNIT_JAR=.*","export OOO_JUNIT_JAR=",g > $(SRCDIR)/config_host_callcatcher.mk
|
|
@echo unexport ARCH_FLAGS >> $(SRCDIR)/config_host_callcatcher.mk
|
|
@echo unexport CFLAGS >> $(SRCDIR)/config_host_callcatcher.mk
|
|
@echo unexport CXXFLAGS >> $(SRCDIR)/config_host_callcatcher.mk
|
|
@mkdir -p $(SRCDIR)/solenv/callcatcher/bin && \
|
|
ln -sf $(SRCDIR)/solenv/$(INPATH)/bin/dmake \
|
|
$(SRCDIR)/solenv/callcatcher/bin/dmake
|
|
@$(GNUMAKE) -f $(SOLARENV)/bin/callcatcher.Makefile findunusedcode
|
|
@grep ::.*\( unusedcode.all \
|
|
| grep -v ^Atom \
|
|
| grep -v ^atom:: \
|
|
| grep -v ^boost:: \
|
|
| grep -v ^CIcc \
|
|
| grep -v ^CLuceneError:: \
|
|
| grep -v ^cppu:: \
|
|
| grep -v ^Dde \
|
|
| grep -v ^graphite2:: \
|
|
| grep -v ^jvmaccess:: \
|
|
| grep -v ^libcdr:: \
|
|
| grep -v ^libcmis:: \
|
|
| grep -v ^libmspub:: \
|
|
| grep -v ^libvisio:: \
|
|
| grep -v ^libwpg:: \
|
|
| grep -v ^libwps_tools_win:: \
|
|
| grep -v ^lucene:: \
|
|
| grep -v ^Matrix3d:: \
|
|
| grep -v ^RelatedMultipart:: \
|
|
| grep -v ^salhelper:: \
|
|
| grep -v ^VSDInternalStream:: \
|
|
| grep -v ^WP1 \
|
|
| grep -v ^WP3 \
|
|
| grep -v ^WP42 \
|
|
| grep -v ^WP6 \
|
|
| grep -v ^WPG \
|
|
| grep -v ^WPS \
|
|
| grep -v WPX \
|
|
| grep -v ^WSObject \
|
|
> unusedcode.easy
|
|
|
|
check: dev-install subsequentcheck
|
|
|
|
subsequentcheck :| $(if $(filter-out subsequentcheck,$(MAKECMDGOALS)),dev-install)
|
|
$(GNUMAKE) -j $(CHECK_PARALLELISM) $(GMAKE_OPTIONS) -f $(SRC_ROOT)/Makefile.post $@
|
|
|
|
unitcheck slowcheck debugrun:
|
|
$(GNUMAKE) -j $(PARALLELISM) $(GMAKE_OPTIONS) -f $(SRC_ROOT)/Makefile.post $@
|
|
|
|
endif # not clean or distclean
|
|
|
|
endif # MAKE_RESTARTS
|
|
|
|
# vim: set noet sw=4 ts=4:
|