Also build with static_library version of libchromiumcontent

This commit is contained in:
Cheng Zhao 2015-04-02 23:03:23 +08:00
parent ca161e29ce
commit dab9e9be67
5 changed files with 102 additions and 69 deletions

View file

@ -392,12 +392,16 @@
# Rules for excluding e.g. foo_win.cc from the build on non-Windows. # Rules for excluding e.g. foo_win.cc from the build on non-Windows.
'filename_rules.gypi', 'filename_rules.gypi',
], ],
'configurations': { 'conditions': [
'Debug': { ['libchromiumcontent_component', {
'defines': [ 'DEBUG' ], 'configurations': {
'cflags': [ '-g', '-O0' ], 'Debug': {
}, 'defines': [ 'DEBUG' ],
}, 'cflags': [ '-g', '-O0' ],
},
},
}],
],
}, },
'targets': [ 'targets': [
{ {
@ -494,16 +498,16 @@
{ {
'destination': '<(PRODUCT_DIR)', 'destination': '<(PRODUCT_DIR)',
'files': [ 'files': [
'<(libchromiumcontent_library_dir)/chromiumcontent.dll', '<(libchromiumcontent_dir)/chromiumcontent.dll',
'<(libchromiumcontent_library_dir)/ffmpegsumo.dll', '<(libchromiumcontent_dir)/ffmpegsumo.dll',
'<(libchromiumcontent_library_dir)/libEGL.dll', '<(libchromiumcontent_dir)/libEGL.dll',
'<(libchromiumcontent_library_dir)/libGLESv2.dll', '<(libchromiumcontent_dir)/libGLESv2.dll',
'<(libchromiumcontent_resources_dir)/icudtl.dat', '<(libchromiumcontent_dir)/icudtl.dat',
'<(libchromiumcontent_resources_dir)/content_resources_200_percent.pak', '<(libchromiumcontent_dir)/content_resources_200_percent.pak',
'<(libchromiumcontent_resources_dir)/content_shell.pak', '<(libchromiumcontent_dir)/content_shell.pak',
'<(libchromiumcontent_resources_dir)/ui_resources_200_percent.pak', '<(libchromiumcontent_dir)/ui_resources_200_percent.pak',
'<(libchromiumcontent_resources_dir)/natives_blob.bin', '<(libchromiumcontent_dir)/natives_blob.bin',
'<(libchromiumcontent_resources_dir)/snapshot_blob.bin', '<(libchromiumcontent_dir)/snapshot_blob.bin',
'external_binaries/d3dcompiler_47.dll', 'external_binaries/d3dcompiler_47.dll',
'external_binaries/msvcp120.dll', 'external_binaries/msvcp120.dll',
'external_binaries/msvcr120.dll', 'external_binaries/msvcr120.dll',
@ -524,12 +528,12 @@
{ {
'destination': '<(PRODUCT_DIR)', 'destination': '<(PRODUCT_DIR)',
'files': [ 'files': [
'<(libchromiumcontent_library_dir)/libchromiumcontent.so', '<(libchromiumcontent_dir)/libchromiumcontent.so',
'<(libchromiumcontent_library_dir)/libffmpegsumo.so', '<(libchromiumcontent_dir)/libffmpegsumo.so',
'<(libchromiumcontent_resources_dir)/icudtl.dat', '<(libchromiumcontent_dir)/icudtl.dat',
'<(libchromiumcontent_resources_dir)/content_shell.pak', '<(libchromiumcontent_dir)/content_shell.pak',
'<(libchromiumcontent_resources_dir)/natives_blob.bin', '<(libchromiumcontent_dir)/natives_blob.bin',
'<(libchromiumcontent_resources_dir)/snapshot_blob.bin', '<(libchromiumcontent_dir)/snapshot_blob.bin',
], ],
}, },
{ {
@ -716,7 +720,7 @@
'--build-dir=<(PRODUCT_DIR)', '--build-dir=<(PRODUCT_DIR)',
'--binary=<(PRODUCT_DIR)/<(product_name).app/Contents/MacOS/<(product_name)', '--binary=<(PRODUCT_DIR)/<(product_name).app/Contents/MacOS/<(product_name)',
'--symbols-dir=<(PRODUCT_DIR)/Atom-Shell.breakpad.syms', '--symbols-dir=<(PRODUCT_DIR)/Atom-Shell.breakpad.syms',
'--libchromiumcontent-dir=<(libchromiumcontent_library_dir)', '--libchromiumcontent-dir=<(libchromiumcontent_dir)',
'--clear', '--clear',
'--jobs=16', '--jobs=16',
], ],
@ -739,7 +743,7 @@
'--symbols-dir=<(PRODUCT_DIR)/Atom-Shell.breakpad.syms', '--symbols-dir=<(PRODUCT_DIR)/Atom-Shell.breakpad.syms',
'--jobs=16', '--jobs=16',
'<(PRODUCT_DIR)', '<(PRODUCT_DIR)',
'<(libchromiumcontent_library_dir)', '<(libchromiumcontent_dir)',
], ],
}, },
], ],
@ -763,7 +767,7 @@
'--build-dir=<(PRODUCT_DIR)', '--build-dir=<(PRODUCT_DIR)',
'--binary=<(PRODUCT_DIR)/<(project_name)', '--binary=<(PRODUCT_DIR)/<(project_name)',
'--symbols-dir=<(PRODUCT_DIR)/Atom-Shell.breakpad.syms', '--symbols-dir=<(PRODUCT_DIR)/Atom-Shell.breakpad.syms',
'--libchromiumcontent-dir=<(libchromiumcontent_library_dir)', '--libchromiumcontent-dir=<(libchromiumcontent_dir)',
'--clear', '--clear',
'--jobs=16', '--jobs=16',
], ],
@ -808,7 +812,7 @@
], ],
}, },
'inputs': [ 'inputs': [
'<(libchromiumcontent_library_dir)/<(chromedriver_binary)', '<(libchromiumcontent_dir)/<(chromedriver_binary)',
], ],
'outputs': [ 'outputs': [
'<(PRODUCT_DIR)/<(chromedriver_binary)', '<(PRODUCT_DIR)/<(chromedriver_binary)',
@ -839,7 +843,7 @@
'include_dirs': [ 'include_dirs': [
'.', '.',
'vendor', 'vendor',
'<(libchromiumcontent_include_dir)', '<(libchromiumcontent_src_dir)',
], ],
'defines': [ 'defines': [
'PRODUCT_NAME="<(product_name)"', 'PRODUCT_NAME="<(product_name)"',
@ -859,10 +863,10 @@
'mac_bundle': 1, 'mac_bundle': 1,
'mac_bundle_resources': [ 'mac_bundle_resources': [
'atom/common/resources/mac/MainMenu.xib', 'atom/common/resources/mac/MainMenu.xib',
'<(libchromiumcontent_resources_dir)/content_shell.pak', '<(libchromiumcontent_dir)/content_shell.pak',
'<(libchromiumcontent_resources_dir)/icudtl.dat', '<(libchromiumcontent_dir)/icudtl.dat',
'<(libchromiumcontent_resources_dir)/natives_blob.bin', '<(libchromiumcontent_dir)/natives_blob.bin',
'<(libchromiumcontent_resources_dir)/snapshot_blob.bin', '<(libchromiumcontent_dir)/snapshot_blob.bin',
], ],
'xcode_settings': { 'xcode_settings': {
'INFOPLIST_FILE': 'atom/common/resources/mac/Info.plist', 'INFOPLIST_FILE': 'atom/common/resources/mac/Info.plist',
@ -879,7 +883,7 @@
'destination': '<(PRODUCT_DIR)/<(product_name) Framework.framework/Versions/A/Libraries', 'destination': '<(PRODUCT_DIR)/<(product_name) Framework.framework/Versions/A/Libraries',
'files': [ 'files': [
'<@(libchromiumcontent_shared_libraries)', '<@(libchromiumcontent_shared_libraries)',
'<(libchromiumcontent_library_dir)/ffmpegsumo.so', '<(libchromiumcontent_dir)/ffmpegsumo.so',
'<(PRODUCT_DIR)/libnode.dylib', '<(PRODUCT_DIR)/libnode.dylib',
], ],
}, },
@ -974,7 +978,7 @@
'action_name': 'Create node.lib', 'action_name': 'Create node.lib',
'inputs': [ 'inputs': [
'<(PRODUCT_DIR)/node.dll.lib', '<(PRODUCT_DIR)/node.dll.lib',
'<(libchromiumcontent_library_dir)/chromiumcontent.dll.lib', '<(libchromiumcontent_dir)/chromiumcontent.dll.lib',
], ],
'outputs': [ 'outputs': [
'<(PRODUCT_DIR)/node.lib', '<(PRODUCT_DIR)/node.lib',

View file

@ -107,23 +107,42 @@
], ],
}], }],
['_target_name=="node"', { ['_target_name=="node"', {
'conditions': [ 'variables': {
['OS=="linux"', { 'conditions': [
'libraries': [ ['OS=="linux" and libchromiumcontent_component==1', {
'<(libchromiumcontent_library_dir)/libv8.so', 'v8_libs': ['<(libchromiumcontent_dir)/libv8.so']
], }],
}], ['OS=="mac" and libchromiumcontent_component==1', {
['OS=="win"', { 'v8_libs': ['<(libchromiumcontent_dir)/libv8.dylib']
'libraries': [ }],
'<(libchromiumcontent_library_dir)/v8.dll.lib', ['OS=="win" and libchromiumcontent_component==1', {
], 'v8_libs': ['<(libchromiumcontent_dir)/v8.dll.lib']
}], }],
['OS=="mac"', { ['OS in ["linux", "mac"] and libchromiumcontent_component==0', {
'libraries': [ 'v8_libs': [
'<(libchromiumcontent_library_dir)/libv8.dylib', '<(libchromiumcontent_dir)/libv8_base.a',
], '<(libchromiumcontent_dir)/libv8_external_snapshot.a',
}], '<(libchromiumcontent_dir)/libv8_libbase.a',
], '<(libchromiumcontent_dir)/libv8_libplatform.a',
'<(libchromiumcontent_dir)/libicudata.a',
'<(libchromiumcontent_dir)/libicui18n.a',
'<(libchromiumcontent_dir)/libicuuc.a',
],
}],
['OS=="win" and libchromiumcontent_component==0', {
'v8_libs': [
'<(libchromiumcontent_dir)/v8_base.lib',
'<(libchromiumcontent_dir)/v8_external_snapshot.lib',
'<(libchromiumcontent_dir)/v8_libbase.lib',
'<(libchromiumcontent_dir)/v8_libplatform.lib',
'<(libchromiumcontent_dir)/icudata.lib',
'<(libchromiumcontent_dir)/icui18n.lib',
'<(libchromiumcontent_dir)/icuuc.lib',
],
}],
],
},
'libraries': ['<@(v8_libs)']
}], }],
['_target_name=="libuv"', { ['_target_name=="libuv"', {
'conditions': [ 'conditions': [

View file

@ -19,7 +19,7 @@ def main():
args = parse_args() args = parse_args()
for config in args.configuration: for config in args.configuration:
build_path = os.path.join('out', config) build_path = os.path.join('out', 'Real' + config)
ret = subprocess.call([ninja, '-C', build_path, args.target]) ret = subprocess.call([ninja, '-C', build_path, args.target])
if ret != 0: if ret != 0:
sys.exit(ret) sys.exit(ret)

View file

@ -14,7 +14,7 @@ def main():
os.chdir(SOURCE_ROOT) os.chdir(SOURCE_ROOT)
update_external_binaries() update_external_binaries()
update_gyp() return update_gyp()
def update_external_binaries(): def update_external_binaries():
@ -23,27 +23,37 @@ def update_external_binaries():
def update_gyp(): def update_gyp():
gyp = os.path.join('vendor', 'brightray', 'vendor', 'gyp', 'gyp_main.py') target_arch = DIST_ARCH
python = sys.executable
arch = DIST_ARCH
if sys.platform == 'darwin': if sys.platform == 'darwin':
# Only have 64bit build on OS X. # Only have 64bit build on OS X.
arch = 'x64' target_arch = 'x64'
elif sys.platform in ['cygwin', 'win32']: elif sys.platform in ['cygwin', 'win32']:
# Only have 32bit build on Windows. # Only have 32bit build on Windows.
arch = 'ia32' target_arch = 'ia32'
if sys.platform == 'cygwin':
# Force using win32 python on cygwin.
python = os.path.join('vendor', 'python_26', 'python.exe')
ret = subprocess.call([python, gyp, # Since gyp doesn't support specify link_settings for each configuration,
'-f', 'ninja', '--depth', '.', 'atom.gyp', # we are not able to link to different libraries in "Debug" and "Release"
'-Icommon.gypi', # configurations.
'-Dlinux_clang=0', # Disable brightray's clang setting # In order to work around this, we decided to generate the configuration
'-Dtarget_arch={0}'.format(arch), # for twice, one is to generate "Debug" config, the other one to generate
'-Dlibrary=static_library']) # the "Release" config. And the settings are controlled by the variable
if ret != 0: # "libchromiumcontent_component" which is defined before running gyp.
sys.exit(ret) return (run_gyp(target_arch, 0) or run_gyp(target_arch, 1))
def run_gyp(target_arch, component):
python = sys.executable
if sys.platform == 'cygwin':
# Force using win32 python on cygwin.
python = os.path.join('vendor', 'python_26', 'python.exe')
gyp = os.path.join('vendor', 'brightray', 'vendor', 'gyp', 'gyp_main.py')
return subprocess.call([python, gyp,
'-f', 'ninja', '--depth', '.', 'atom.gyp',
'-Icommon.gypi',
'-Dlibchromiumcontent_component={0}'.format(component),
'-Dlinux_clang=0', # FIXME remove me.
'-Dtarget_arch={0}'.format(target_arch),
'-Dlibrary=static_library'])
if __name__ == '__main__': if __name__ == '__main__':

2
vendor/brightray vendored

@ -1 +1 @@
Subproject commit a430d8f653602fd108094398b2ef79dc7126c819 Subproject commit 09c73a0e615807fe238f74b697e60696d6451bd1