office-gobmx/ios/CustomTarget_Viewer_app.mk

153 lines
4.8 KiB
Makefile
Raw Normal View History

# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# 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/.
$(eval $(call gb_CustomTarget_CustomTarget,ios/Viewer_app))
# We distinguish between builds for the simulator and device by
# looking for the "iarmv7" or "i386" in the -arch option that is part
# of $(CC)
ifneq ($(filter i386,$(CC)),)
xcode_sdk=iphonesimulator
xcode_arch=i386
else
xcode_sdk=iphoneos
xcode_arch=armv7
endif
ifeq ($(debug),)
xcode_config := Release
else
xcode_config := Debug
endif
# If run from Xcode, check that its configuration (device or
# simulator) matches that of gbuild. We detect being run from Xcode by
# looking for $(SCRIPT_OUTPUT_FILE_0). The Run Script build phase in
# our project has as its (single) output file the location of the app
# executable in its app bundle.
ifneq ($(SCRIPT_OUTPUT_FILE_0),)
export CCACHE_CPP2=y
ifneq ($(CURRENT_ARCH),$(xcode_arch))
$(error Xcode platform (device or simulator) does not match that of this build tree)
endif
ifneq ($(CONFIGURATION),$(xcode_config))
$(error Xcode configuration (release or debug) does not match that of this build tree)
endif
endif
ifneq ($(SCRIPT_OUTPUT_FILE_0),)
ifeq ($(EXECUTABLE_NAME),Viewer)
# When run from Xcode, we move the Viewer executable from solver into
# the Viewer.app directory that Xcode uses. We also set up/copy all
# the run-time configuration etc files that the app needs.
$(call gb_CustomTarget_get_target,ios/Viewer_app) : $(SCRIPT_OUTPUT_FILE_0)
appdir=$(dir $(SCRIPT_OUTPUT_FILE_0))
buildid=$(shell git log -1 --format=%H)
$(SCRIPT_OUTPUT_FILE_0) : $(call gb_Executable_get_target,Viewer)
$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),$(true),APP,2)
mkdir -p $(appdir)/ure
mv $(call gb_Executable_get_target,Viewer) $(SCRIPT_OUTPUT_FILE_0)
#
# Copy rdb files
#
cp $(OUTDIR)/bin/types.rdb $(appdir)
cp $(OUTDIR)/bin/ure/types.rdb $(appdir)/ure
cp $(OUTDIR)/bin/offapi.rdb $(appdir)
cp $(OUTDIR)/xml/services.rdb $(appdir)
cp $(OUTDIR)/xml/ure/services.rdb $(appdir)/ure
#
# Copy "registry" files
#
mkdir -p $(appdir)/registry/modules $(appdir)/registry/res
cp $(OUTDIR)/xml/*.xcd $(appdir)/registry
mv $(appdir)/registry/fcfg_langpack_en-US.xcd $(appdir)/registry/res
cp -R $(OUTDIR)/xml/registry/* $(appdir)/registry
#
# Copy .res files
#
# program/resource is hardcoded in tools/source/rc/resmgr.cxx. Sure,
# we could set STAR_RESOURCE_PATH instead. sigh...
#
mkdir -p $(appdir)/program/resource
cp $(OUTDIR)/bin/*en-US.res $(appdir)/program/resource
#
# Set up rc, the "inifile". See getIniFileName_Impl().
#
( \
echo '[Bootstrap]' && \
echo 'URE_BOOTSTRAP=file://$$APP_DATA_DIR/fundamentalrc' && \
echo 'HOME=$$APP_DATA_DIR/tmp' && \
: ) > $(appdir)/rc
#
# Set up fundamentalrc, unorc, bootstraprc and versionrc.
#
# Do we really need all these?
#
( \
echo '[Bootstrap]' && \
echo 'BRAND_BASE_DIR=file://$$APP_DATA_DIR' && \
echo 'CONFIGURATION_LAYERS=xcsxcu:$${BRAND_BASE_DIR}/registry module:$${BRAND_BASE_DIR}/registry/modules res:$${BRAND_BASE_DIR}/registry' && \
: ) > $(appdir)/fundamentalrc
#
( \
echo '[Bootstrap]' && \
: UNO_TYPES and UNO_SERVICES are set up in lo-viewer.mm, is that sane? && \
: ) > $(appdir)/unorc
#
# bootstraprc must be in $BRAND_BASE_DIR/program
#
mkdir -p $(appdir)/program
( \
echo '[Bootstrap]' && \
echo 'InstallMode=<installmode>' && \
echo 'ProductKey=LibreOffice Viewer $(PRODUCTVERSION)' && \
echo 'UserInstallation=file://$$APP_DATA_DIR/../Library/Application%20Support' && \
: ) > $(appdir)/program/bootstraprc
#
# Is this really needed?
#
( \
echo '[Version]' && \
echo 'AllLanguages=en-US' && \
echo 'BuildVersion=' && \
echo 'buildid=$(buildid)' && \
echo 'ProductMajor=360' && \
echo 'ProductMinor=1' && \
: ) > $(appdir)/program/versionrc
#
# Copy a sample document... good old test1.odt...
#
cp $(SRC_ROOT)/odk/examples/java/DocumentHandling/test/test1.odt $(appdir)
endif
else
# When run just from the command line, we don't have any app bundle to
# copy or move the executable to. So do nothing. Except one trick:
# Copy the Xcode project to BUILDDIR if SRCDIR!=BUILDDIR, so that one
# can then open it from there in Xcode.
$(call gb_CustomTarget_get_target,ios/Viewer_app) : $(gb_Helper_PHONY)
if test $(SRCDIR) != $(BUILDDIR); then \
(cd $(SRCDIR) && tar cf - ios/experimental/Viewer/Viewer.xcodeproj/project.pbxproj) | (cd $(BUILDDIR) && tar xf -); \
fi
$(call gb_CustomTarget_get_clean_target,ios/Viewer_app) :
$(call gb_Output_announce,$(subst $(WORKDIR)/Clean/,,$@),$(false),APP,2)
# Here we just assume that Xcode's settings are default, or something
rm -rf experimental/Viewer/build
endif
# vim: set noet sw=4 ts=4: