gecko-dev/browser/app/Makefile.in

105 строки
4.1 KiB
Makefile
Исходник Обычный вид История

2012-05-21 15:12:37 +04:00
# 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)
2002-09-29 22:16:54 +04:00
# 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 += firefox.exe.manifest
endif
PROGRAMS_DEST = $(DIST)/bin
include $(topsrcdir)/config/rules.mk
ifneq (,$(filter-out WINNT,$(OS_ARCH)))
ifdef COMPILE_ENVIRONMENT
Bug 1079662 - Always enable PIE. r=froydnj Last attempt, a few years ago, blatantly failed because nautilus (the GNOME file manager) can't start PIE executables, which look like shared libraries, and that it thus considers not being executables. Downstreams don't actually have the problem, because users won't be launching Firefox from a file manager, but for mozilla.org builds, it is a problem because users would download, then extract, and then likely try to run the Firefox executable from a file manager. So for mozilla.org builds, we still need to find a way around the nautilus problem. A .desktop file could be a solution, but .desktop files have not actually been designed for this use case, which leads to: - having to use an awful one-liner shell wrapper to derive the path to the executable from that of the .desktop file, - not even being able to associate an icon, - the .desktop file not being copiable to a location where .desktop files would normally go, because it would then fail to find the executable. Another possibility is to go back to using a shell wrapper, but that's not entirely appealing. What we chose here is similar, where we have a small `firefox` wrapper that launches the real `firefox-bin` (which is still leftover from those old times where we had a shell wrapper, for reasons). The small `firefox` wrapper is a minimalist C executable that just finds the path to the `firefox-bin` executable and executes it with the same args it was called with. The wrapper is only enabled when the MOZ_NO_PIE_COMPAT environment variable is set, which we only take into account on Linux. The variable is only really meant to be used for mozilla.org builds, for the nautilus problem. Downstreams will just pick the default, which is changed to build PIE. On other platforms, PIE was already enabled by default, so we just remove the --enable-pie configure flag. Differential Revision: https://phabricator.services.mozilla.com/D5109
2018-09-06 07:27:49 +03:00
ifndef MOZ_NO_PIE_COMPAT
libs::
cp -p $(DIST)/bin/$(MOZ_APP_NAME)$(BIN_SUFFIX) $(DIST)/bin/$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)
endif
Bug 1079662 - Always enable PIE. r=froydnj Last attempt, a few years ago, blatantly failed because nautilus (the GNOME file manager) can't start PIE executables, which look like shared libraries, and that it thus considers not being executables. Downstreams don't actually have the problem, because users won't be launching Firefox from a file manager, but for mozilla.org builds, it is a problem because users would download, then extract, and then likely try to run the Firefox executable from a file manager. So for mozilla.org builds, we still need to find a way around the nautilus problem. A .desktop file could be a solution, but .desktop files have not actually been designed for this use case, which leads to: - having to use an awful one-liner shell wrapper to derive the path to the executable from that of the .desktop file, - not even being able to associate an icon, - the .desktop file not being copiable to a location where .desktop files would normally go, because it would then fail to find the executable. Another possibility is to go back to using a shell wrapper, but that's not entirely appealing. What we chose here is similar, where we have a small `firefox` wrapper that launches the real `firefox-bin` (which is still leftover from those old times where we had a shell wrapper, for reasons). The small `firefox` wrapper is a minimalist C executable that just finds the path to the `firefox-bin` executable and executes it with the same args it was called with. The wrapper is only enabled when the MOZ_NO_PIE_COMPAT environment variable is set, which we only take into account on Linux. The variable is only really meant to be used for mozilla.org builds, for the nautilus problem. Downstreams will just pick the default, which is changed to build PIE. On other platforms, PIE was already enabled by default, so we just remove the --enable-pie configure flag. Differential Revision: https://phabricator.services.mozilla.com/D5109
2018-09-06 07:27:49 +03:00
endif
GARBAGE += $(addprefix $(FINAL_TARGET)/defaults/pref/, firefox.js)
endif
2003-04-03 06:33:34 +04:00
# 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))
2003-04-03 06:33:34 +04:00
MAC_APP_NAME = $(MOZ_APP_DISPLAYNAME)
2003-04-03 06:33:34 +04:00
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
clean clobber repackage::
$(RM) -r $(dist_dest)
MAC_BUNDLE_VERSION = $(shell $(PYTHON) $(srcdir)/macversion.py --version=$(MOZ_APP_VERSION) --buildid=$(DEPTH)/buildid.h)
.PHONY: repackage
tools repackage:: $(DIST)/bin/$(MOZ_APP_NAME)
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)'
sed -e 's/%APP_VERSION%/$(MOZ_APP_VERSION)/' -e 's/%MAC_APP_NAME%/$(MAC_APP_NAME)/' -e 's/%MOZ_MACBUNDLE_ID%/$(MOZ_MACBUNDLE_ID)/' -e 's/%MAC_BUNDLE_VERSION%/$(MAC_BUNDLE_VERSION)/' -e 's|%MOZ_DEVELOPER_REPO_PATH%|$(topsrcdir)|' -e 's|%MOZ_DEVELOPER_OBJ_PATH%|$(topobjdir)|' $(srcdir)/macbuild/Contents/Info.plist.in > '$(dist_dest)/Contents/Info.plist'
sed -e 's/%MAC_APP_NAME%/$(MAC_APP_NAME)/' $(srcdir)/macbuild/Contents/Resources/English.lproj/InfoPlist.strings.in | iconv -f UTF-8 -t UTF-16 > '$(dist_dest)/$(LPROJ)/InfoPlist.strings'
rsync -a --exclude-from='$(srcdir)/macbuild/Contents/MacOS-files.in' $(DIST)/bin/ '$(dist_dest)/Contents/Resources'
rsync -a --include-from='$(srcdir)/macbuild/Contents/MacOS-files.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'
2003-04-03 06:33:34 +04:00
endif