Bug 1110760 - Build and Package Chromium Sandbox wow_helper. r=gps

This commit is contained in:
Mike Hommey 2014-12-24 17:13:42 +09:00
parent 30b698ea5e
commit 16878fb907
5 changed files with 87 additions and 0 deletions

View File

@ -147,6 +147,14 @@ endif
ifdef CLANG_CL
DEFINES += -DCLANG_CL
endif
ifeq (x86,$(CPU_ARCH))
ifdef _MSC_VER
ifndef CLANG_CL
DEFINES += -DWOW_HELPER
endif
endif
endif
libs::
$(MAKE) -C $(DEPTH)/browser/locales langpack

View File

@ -783,6 +783,9 @@
#if defined(MOZ_SANDBOX)
#if defined(XP_WIN)
@BINPATH@/@DLL_PREFIX@sandboxbroker@DLL_SUFFIX@
#if defined(WOW_HELPER)
@BINPATH@/wow_helper.exe
#endif
#endif
#endif

View File

@ -18,6 +18,10 @@ elif CONFIG['OS_ARCH'] == 'WINNT':
'win/src/sandboxtarget',
]
if (CONFIG['CPU_ARCH'] == 'x86' and CONFIG['_MSC_VER'] and not
CONFIG['CLANG_CL']):
DIRS += ['win/wow_helper']
EXPORTS.mozilla.sandboxing += [
'win/src/logging/loggingCallbacks.h',
'win/src/logging/loggingTypes.h',

View File

@ -0,0 +1,42 @@
# 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/.
# We need to build a 64-bits binary during a 32-bits build. This requires
# a different compiler and different library paths. Until the build system
# supports this natively.
# Some Make magic to avoid CXX and LIB being evaluated when nothing
# is built in this directory
lazy = $(if $(___$(1)),,$(eval ___$(1) := $(2)))$(___$(1))
# We could use the `which` python module, but it needs more code to handle
# the situation where CXX points to an absolute path. But using the shell
# which returns a msys path, while we need a windows path. So force msys
# to do the conversion for us by calling python with an environment variable
# with the result of the call to `which`. Then munge that path to add the
# x64 cross-compiler path.
ifdef MOZ_USING_COMPILER_WRAPPER
ORIG_CXX := cl
else
ORIG_CXX := $(CXX)
endif
CXX = $(call lazy,CXX,"$$(subst amd64_x86/x86_amd64/,amd64/,$$(shell CL=`which "$(ORIG_CXX)"` $(PYTHON) -c 'import os; print os.path.dirname(os.environ["CL"])')/x86_amd64/cl.exe)")
MOZ_WINCONSOLE = 0
include $(topsrcdir)/config/config.mk
# Munge the LIB variable to contain paths to the x64 CRT and system libraries.
# Unconveniently, none of the paths have the same convention, including the
# compiler path above.
LIB = $(call lazy,LIB,$$(shell python -c 'import os; print ";".join(s.lower().replace(os.sep, "/").replace("/vc/lib", "/vc/lib/amd64").replace("/um/x86", "/um/x64") for s in os.environ["LIB"].split(";"))'))
CXXFLAGS := $(filter-out -arch:IA32,$(CXXFLAGS))
# OS_COMPILE_CXXFLAGS includes mozilla-config.h, which contains x86-specific
# defines breaking the build.
OS_COMPILE_CXXFLAGS :=
# LNK1246: '/SAFESEH' not compatible with 'x64' target machine
LDFLAGS := $(filter-out -SAFESEH,$(LDFLAGS))

View File

@ -0,0 +1,30 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
# vim: set filetype=python:
# 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/.
Program('wow_helper')
SOURCES += [ '../../chromium/sandbox/win/wow_helper/' + f for f in (
'service64_resolver.cc',
'target_code.cc',
'wow_helper.cc',
)]
LOCAL_INCLUDES += [
'../../',
'../../../',
'../../chromium/',
]
DISABLE_STL_WRAPPING = True
DEFINES['UNICODE'] = True
USE_STATIC_LIBS = True
# The rules in Makefile.in only force the use of the 64-bits compiler, not
# the 64-bits linker, and the 32-bits linker can't do 64-bits compilation for
# PGO, so disable PGO, which is not interesting for this small binary anyways.
NO_PGO = True