pjs/camino/Makefile.in

282 строки
11 KiB
Makefile

# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications.
# Portions created by the Initial Developer are Copyright (C) 2003
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
# Brian Ryner <bryner@brianryner.com>
# Mark Mentovai <mark@moxienet.com>
# Smokey Ardisson <alqahira@ardisson.org>
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
DEPTH = ..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = \
feedhandlers \
flashblock \
idl \
striptease \
$(NULL)
APP_NAME = Camino
RSYNC_ALL = rsync -aC --exclude .cvsignore --delete
CM_APP_VERSION_FILE = $(srcdir)/config/version.txt
CM_APP_VERSION := $(shell cat $(CM_APP_VERSION_FILE))
CM_COPYRIGHT_YEAR_FILE = $(srcdir)/config/year.txt
CM_COPYRIGHT_YEAR := $(shell cat $(CM_COPYRIGHT_YEAR_FILE))
FOX_APP_VERSION_FILE = $(topsrcdir)/browser/config/version.txt
FOX_APP_VERSION := $(shell cat $(FOX_APP_VERSION_FILE))
PLATFORM_VERSION_FILE = $(topsrcdir)/config/milestone.txt
PLATFORM_VERSION := $(shell egrep "^[^\#]+" $(PLATFORM_VERSION_FILE))
PLATFORM_BUILD_ID_FILE = $(DEPTH)/config/buildid
PLATFORM_BUILD_ID := $(shell cat $(PLATFORM_BUILD_ID_FILE))
PLATFORM_INI_FILE = ../toolkit/xre/platform.ini
ifdef MOZILLA_OFFICIAL
APP_UPDATE_URL = https://caminobrowser.org/update-check
endif
# For Launch Services compatibility, CFBundleVersion can be at most three
# .-separated integers, aaaaaa.bb.cc, with a maximum of 429496.99.99. Use
# Camino's major and minor version number and the build date as the basis for
# CFBundleVersion. This transforms version a.b (and any alphas, betas,
# prereleases, and bug-fix versions) built on date 20yy.mm.dd into
# CFBundleVersion abyy.mm.dd. Only a and b from the version need to be
# significant, since any further updates (a.b.c) will necessarily be built on
# future dates, and will have larger CFBundleVersion values. This mapping
# assumes 0 <= b <= 9 and is not year 2100-compliant. There is currently no
# CM_APP_VERSION_CFBUNDLE_FILE to depend on; any rule that uses this value
# should depend on CM_APP_VERSION_FILE and PLATFORM_BUILD_ID_FILE.
CM_APP_VERSION_CFBUNDLE := $(shell echo $(CM_APP_VERSION)@$(PLATFORM_BUILD_ID) | \
sed -E -e 's/^([0-9]+)\.([0-9]).*@[02]0([0-9]{2})([0-9]{2})([0-9]{2})[0-9]{2}$$/\1\2\3.\4.\5/')
# Info.plist needs to have keys for some values removed, instead of placing
# empty values. Start out with a pattern that doesn't exist to give something
# to append "or" regex clauses to.
GREP_V_PATTERN = __dummy__
# If a CVS tag (or branch) can be determined, use it as the CVS tag name in
# Info.plist. If no tag can be found, set up to remove the relevant key from
# Info.plist.
CVS_TAG_FILE = generated/cvs_tag
CVS_TAG := $(shell if [ -d $(srcdir)/CVS ] ; then \
if [ -f $(srcdir)/CVS/Tag ] ; then \
sed -e 's/^D.*/HEAD/' -e 's/^[NT]//' $(srcdir)/CVS/Tag ; \
else \
echo HEAD ; \
fi \
fi)
ifdef CVS_TAG
SED_ARGS += -e "s/%CVS_TAG%/$(CVS_TAG)/"
else # CVS_TAG
# Add the extra dummy pattern to ensure that make can't add whitespace to the
# strings we care about.
GREP_V_PATTERN += \|MozillaCVSTag\|%CVS_TAG%\|__dummy__
endif # CVS_TAG
# If MOZ_CO_DATE is set, use it as the CVS time in Info.plist. If it doesn't
# exist, set up to remove the relevant key from Info.plist.
CVS_TIME_FILE = generated/cvs_time
ifdef MOZ_CO_DATE
CVS_TIME := $(shell $(PERL) $(srcdir)/config/mozcodate2iso8601 "$(MOZ_CO_DATE)")
ifndef CVS_TIME
# Fail if the MOZ_CO_DATE format ever changes.
CVS_TIME := $(error mozcodate2iso8601)
endif # !CVS_TIME
SED_ARGS += -e "s/%CVS_TIME%/$(CVS_TIME)/"
else # MOZ_CO_DATE
# Add the extra dummy pattern to ensure that make can't add whitespace to the
# strings we care about.
GREP_V_PATTERN += \|MozillaCVSTime\|%CVS_TIME%\|__dummy__
endif # MOZ_CO_DATE
STRINGS_FILES = \
resources/localized/English.lproj/CertificateDialogs.strings \
resources/localized/English.lproj/Localizable.strings \
PreferencePanes/Appearance/English.lproj/Localizable.strings \
PreferencePanes/Appearance/English.lproj/RegionNames.strings \
PreferencePanes/Downloads/English.lproj/Localizable.strings \
PreferencePanes/General/English.lproj/Localizable.strings \
PreferencePanes/History/English.lproj/Localizable.strings \
PreferencePanes/Privacy/English.lproj/Localizable.strings \
PreferencePanes/Security/English.lproj/Localizable.strings \
PreferencePanes/Tabs/English.lproj/Localizable.strings \
PreferencePanes/WebFeatures/English.lproj/Localizable.strings \
$(NULL)
GENERATED_STRINGS_FILES = $(patsubst %,generated/%,$(STRINGS_FILES))
ifdef MOZ_DEBUG
BUILDSTYLE = Development
else
BUILDSTYLE = Deployment
endif
ifdef BUILD_STATIC_LIBS
TARGET = CaminoStatic
else
TARGET = Camino
endif
GARBAGE += \
$(PLATFORM_INI_FILE) \
$(DIST)/bin/platform.ini \
$(NULL)
GARBAGE_DIRS += \
build \
$(DIST)/$(APP_NAME).app \
embed-replacements.tmp \
generated \
sharedmenuscocoa/build \
sparkle/build \
$(NULL)
include $(topsrcdir)/config/rules.mk
unexport CC CXX
ABS_topsrcdir := $(shell cd $(topsrcdir); pwd)
export::
mkdir -p wallet/tables
ln -fs $(ABS_topsrcdir)/extensions/wallet/src/*.tbl wallet/tables
ifneq ($(ABS_topsrcdir),$(MOZ_BUILD_ROOT))
$(RSYNC_ALL) $(srcdir)/Camino.xcodeproj .
ln -fs $(srcdir)/src
ln -fs $(srcdir)/resources
ln -fs $(srcdir)/config
ln -fs $(srcdir)/PreferencePanes
ln -fs $(srcdir)/Info-*.plist .
mkdir -p sharedmenuscocoa sparkle
bash -O extglob -c \
"ln -fs $(ABS_topsrcdir)/camino/sharedmenuscocoa/!(CVS|*.xcodeproj|build) sharedmenuscocoa"
$(RSYNC_ALL) $(ABS_topsrcdir)/camino/sharedmenuscocoa/*.xcodeproj sharedmenuscocoa
bash -O extglob -c \
"ln -fs $(ABS_topsrcdir)/camino/sparkle/!(CVS|*.xcodeproj|build) sparkle"
$(RSYNC_ALL) $(ABS_topsrcdir)/camino/sparkle/*.xcodeproj sparkle
endif
# Generate files which need to pull version numbers or dates from other files
# in the tree
generated/resources/application/all-camino.js: \
$(srcdir)/resources/application/all-camino.js.in \
$(FOX_APP_VERSION_FILE) \
$(CM_APP_VERSION_FILE)
mkdir -p $(dir $@)
sed -e "s/%FOX_APP_VERSION%/$(FOX_APP_VERSION)/" \
-e "s/%CM_APP_VERSION%/$(CM_APP_VERSION)/" \
-e "s@%APP_UPDATE_URL%@$(APP_UPDATE_URL)@" $< > $@
generated/Info-Camino.plist: \
$(srcdir)/Info-Camino.plist.in \
$(CM_APP_VERSION_FILE) \
$(CM_COPYRIGHT_YEAR_FILE) \
$(PLATFORM_BUILD_ID_FILE) \
$(PLATFORM_VERSION_FILE) \
$(CVS_TAG_FILE) \
$(CVS_TIME_FILE)
mkdir -p $(dir $@)
sed -e "s/%CM_APP_VERSION%/$(CM_APP_VERSION)/" \
-e "s/%CM_APP_VERSION_CFBUNDLE%/$(CM_APP_VERSION_CFBUNDLE)/" \
-e "s/%CM_COPYRIGHT_YEAR%/$(CM_COPYRIGHT_YEAR)/" \
-e "s/%PLATFORM_BUILD_ID%/$(PLATFORM_BUILD_ID)/" \
-e "s/%PLATFORM_VERSION%/$(PLATFORM_VERSION)/" \
$(SED_ARGS) $< | \
grep -v "$(GREP_V_PATTERN)" > $@
generated/resources/localized/English.lproj/InfoPlist.strings: \
$(srcdir)/resources/localized/English.lproj/InfoPlist.strings.in \
$(CM_APP_VERSION_FILE) \
$(CM_COPYRIGHT_YEAR_FILE)
mkdir -p $(dir $@)
sed -e "s/%CM_APP_VERSION%/$(CM_APP_VERSION)/" \
-e "s/%CM_COPYRIGHT_YEAR%/$(CM_COPYRIGHT_YEAR)/" $< | \
iconv -f UTF-8 -t UTF-16 > $@
# Generate UTF-16 with BOM strings files from UTF-8 strings.in files. On Mac
# OS X, iconv seems always to output big-endian when asked for UTF-16 with a
# BOM, which is what AppleGlot seems to require.
$(GENERATED_STRINGS_FILES): \
generated/%.strings: $(srcdir)/%.strings.in
mkdir -p $(dir $@)
iconv -f UTF-8 -t UTF-16 $< > $@
# The "grep -lFx" construct in these rules will only touch the file if the
# contents are changing. The file's timestamp will be preserved when the
# contents aren't changing, reducing unnecessary build activity.
$(CVS_TAG_FILE): FORCE
grep -lFx "$(CVS_TAG)" $@ >& /dev/null || \
(mkdir -p $(dir $@) && echo "$(CVS_TAG)" > $@)
$(CVS_TIME_FILE): FORCE
grep -lFx "$(CVS_TIME)" $@ >& /dev/null || \
(mkdir -p $(dir $@) && echo "$(CVS_TIME)" > $@)
# Put platform.ini into toolkit/xre and dist/bin, because that's where
# Tinderbox looks to figure out the build ID. It currently doesn't need
# to be distributed with the application.
$(PLATFORM_INI_FILE): $(PLATFORM_BUILD_ID_FILE) $(PLATFORM_VERSION_FILE)
mkdir -p $(dir $@)
echo [Build] > $@
echo BuildID=$(PLATFORM_BUILD_ID) >> $@
echo Milestone=$(PLATFORM_VERSION) >> $@
$(INSTALL) $@ $(DIST)/bin
# The embed-replacements rsync is done for both srcdir and objdir builds
# to avoid adding CVS stuff to embed.jar.
libs:: \
generated/resources/application/all-camino.js \
generated/Info-Camino.plist \
generated/resources/localized/English.lproj/InfoPlist.strings \
$(GENERATED_STRINGS_FILES) \
$(PLATFORM_INI_FILE)
$(RSYNC_ALL) $(srcdir)/embed-replacements/ embed-replacements.tmp
cd embed-replacements.tmp && \
$(ZIP) -r0DX ../../dist/Embed/chrome/embed.jar *
$(PBBUILD) -project Camino.xcodeproj -target $(TARGET) \
-configuration $(BUILDSTYLE) $(PBBUILD_SETTINGS)
$(RSYNC_ALL) --copy-unsafe-links \
$(XCODE_PRODUCT_DIR)/Camino.app/ $(DIST)/$(APP_NAME).app
$(RM) $(DIST)/$(APP_NAME).app/Contents/MacOS/components/camino.xpt
$(XPIDL_LINK) $(DIST)/$(APP_NAME).app/Contents/MacOS/camino.xpt \
$(DIST)/$(APP_NAME).app/Contents/MacOS/components/*.xpt
$(RM) $(DIST)/$(APP_NAME).app/Contents/MacOS/components/*.xpt
mv $(DIST)/$(APP_NAME).app/Contents/MacOS/camino.xpt \
$(DIST)/$(APP_NAME).app/Contents/MacOS/components/camino.xpt