mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 15:55:36 +00:00
![Mike Hommey](/assets/img/avatar_default.png)
Since python creates little-endian utf-16 consistently whether cross-compiling from Linux or compiling natively on macOS, we could write a small script that essentially replaces iconv. On the other hand, we're also doing some manual preprocessing on the InfoPlist.strings.in files, and we might as well use the preprocessor for that. So, we augment the preprocessor to allow an explicit output encoding other than utf-8, and use the preprocessor instead of `sed | iconv`. Differential Revision: https://phabricator.services.mozilla.com/D96013
107 lines
4.4 KiB
Makefile
107 lines
4.4 KiB
Makefile
# 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/.
|
|
|
|
dist_dest = $(DIST)/$(MOZ_MACBUNDLE_NAME)
|
|
|
|
# hardcode en-US for the moment
|
|
AB_CD = en-US
|
|
|
|
# Build a binary bootstrapping with XRE_main
|
|
|
|
ifndef MOZ_WINCONSOLE
|
|
ifneq (,$(MOZ_DEBUG)$(MOZ_ASAN))
|
|
MOZ_WINCONSOLE = 1
|
|
else
|
|
MOZ_WINCONSOLE = 0
|
|
endif
|
|
endif
|
|
|
|
include $(topsrcdir)/config/config.mk
|
|
|
|
# If we are trying to show an error dialog about the lack of SSE2 support,
|
|
# make sure that code itself doesn't use SSE2.
|
|
ifdef MOZ_LINUX_32_SSE2_STARTUP_ERROR
|
|
CXX := $(filter-out -march=% -msse -msse2 -mfpmath=sse,$(CXX))
|
|
CXX += -march=pentiumpro
|
|
endif
|
|
|
|
ifeq ($(OS_ARCH),WINNT)
|
|
# Rebuild firefox.exe if the manifest changes - it's included by splash.rc.
|
|
# (this dependency should really be just for firefox.exe, not other targets)
|
|
# Note the manifest file exists in the tree, so we use the explicit filename
|
|
# here.
|
|
EXTRA_DEPS += $(srcdir)/firefox.exe.manifest
|
|
endif
|
|
|
|
PROGRAMS_DEST = $(DIST)/bin
|
|
objdir = $(topobjdir)/browser/app
|
|
|
|
include $(topsrcdir)/config/rules.mk
|
|
|
|
ifneq (,$(filter-out WINNT,$(OS_ARCH)))
|
|
|
|
ifdef COMPILE_ENVIRONMENT
|
|
ifndef MOZ_NO_PIE_COMPAT
|
|
libs::
|
|
cp -p $(DIST)/bin/$(MOZ_APP_NAME)$(BIN_SUFFIX) $(DIST)/bin/$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)
|
|
endif
|
|
endif
|
|
|
|
endif
|
|
|
|
# channel-prefs.js is handled separate from other prefs due to bug 756325
|
|
# DO NOT change the content of channel-prefs.js without taking the appropriate
|
|
# steps. See bug 1431342.
|
|
libs:: $(srcdir)/profile/channel-prefs.js
|
|
$(NSINSTALL) -D $(DIST)/bin/defaults/pref
|
|
$(call py_action,preprocessor,-Fsubstitution $(PREF_PPFLAGS) $(ACDEFINES) $^ -o $(DIST)/bin/defaults/pref/channel-prefs.js)
|
|
|
|
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
|
|
|
|
MAC_APP_NAME = $(MOZ_APP_DISPLAYNAME)
|
|
|
|
ifdef MOZ_DEBUG
|
|
MAC_APP_NAME := $(MAC_APP_NAME)Debug
|
|
endif
|
|
|
|
AB_CD = $(MOZ_UI_LOCALE)
|
|
|
|
ifeq (zh-TW,$(AB_CD))
|
|
LPROJ_ROOT := $(subst -,_,$(AB_CD))
|
|
else
|
|
LPROJ_ROOT := $(firstword $(subst -, ,$(AB_CD)))
|
|
endif
|
|
LPROJ := Contents/Resources/$(LPROJ_ROOT).lproj
|
|
|
|
repackage::
|
|
$(RM) -r $(dist_dest)
|
|
|
|
MAC_BUNDLE_VERSION = $(shell $(PYTHON3) $(srcdir)/macversion.py --version=$(MOZ_APP_VERSION) --buildid=$(DEPTH)/buildid.h)
|
|
|
|
.PHONY: repackage
|
|
tools repackage:: $(DIST)/bin/$(MOZ_APP_NAME) $(objdir)/macbuild/Contents/MacOS-files.txt
|
|
rm -rf $(dist_dest)
|
|
$(MKDIR) -p '$(dist_dest)/Contents/MacOS'
|
|
$(MKDIR) -p '$(dist_dest)/$(LPROJ)'
|
|
rsync -a --exclude '*.in' $(srcdir)/macbuild/Contents '$(dist_dest)' --exclude English.lproj
|
|
rsync -a --exclude '*.in' $(srcdir)/macbuild/Contents/Resources/English.lproj/ '$(dist_dest)/$(LPROJ)'
|
|
$(call py_action,preprocessor,-Fsubstitution -DAPP_VERSION='$(MOZ_APP_VERSION)' -DMOZ_APP_NAME='$(MOZ_APP_NAME)' -DMAC_APP_NAME='$(MAC_APP_NAME)' -DMOZ_MACBUNDLE_ID='$(MOZ_MACBUNDLE_ID)' -DMAC_BUNDLE_VERSION='$(MAC_BUNDLE_VERSION)' -DMOZ_DEVELOPER_REPO_PATH='$(topsrcdir)' -DMOZ_DEVELOPER_OBJ_PATH='$(topobjdir)' $(srcdir)/macbuild/Contents/Info.plist.in -o '$(dist_dest)/Contents/Info.plist')
|
|
$(call py_action,preprocessor,-Fsubstitution --output-encoding utf-16 -DMAC_APP_NAME='$(MAC_APP_NAME)' $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in -o '$(dist_dest)/$(LPROJ)/InfoPlist.strings')
|
|
rsync -a --exclude-from='$(objdir)/macbuild/Contents/MacOS-files.txt' $(DIST)/bin/ '$(dist_dest)/Contents/Resources'
|
|
rsync -a --include-from='$(objdir)/macbuild/Contents/MacOS-files.txt' --exclude '*' $(DIST)/bin/ '$(dist_dest)/Contents/MacOS'
|
|
# MacOS-files-copy.in is a list of files that should be copies rather
|
|
# than symlinks and placed in .app/Contents/MacOS.
|
|
rsync -aL --include-from='$(srcdir)/macbuild/Contents/MacOS-files-copy.in' --exclude '*' $(DIST)/bin/ '$(dist_dest)/Contents/MacOS'
|
|
$(RM) '$(dist_dest)/Contents/MacOS/$(MOZ_APP_NAME)'
|
|
rsync -aL $(DIST)/bin/$(MOZ_APP_NAME) '$(dist_dest)/Contents/MacOS'
|
|
cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/firefox.icns '$(dist_dest)/Contents/Resources/firefox.icns'
|
|
cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/document.icns '$(dist_dest)/Contents/Resources/document.icns'
|
|
$(MKDIR) -p '$(dist_dest)/Contents/Library/LaunchServices'
|
|
ifdef MOZ_UPDATER
|
|
mv -f '$(dist_dest)/Contents/MacOS/updater.app/Contents/MacOS/org.mozilla.updater' '$(dist_dest)/Contents/Library/LaunchServices'
|
|
ln -s ../../../../Library/LaunchServices/org.mozilla.updater '$(dist_dest)/Contents/MacOS/updater.app/Contents/MacOS/org.mozilla.updater'
|
|
endif
|
|
printf APPLMOZB > '$(dist_dest)/Contents/PkgInfo'
|
|
endif
|