Commit 94974227 authored by ncbray@chromium.org's avatar ncbray@chromium.org

Refactor the GYP build for the NaCl smoke test.

This change should eliminate a lot of the cruft needed to build nexes for
browser tests. This change also cleans up how browser_tests depends on the
IRT.

BUG= http://code.google.com/p/nativeclient/issues/detail?id=2959
TEST= none


Review URL: https://chromiumcodereview.appspot.com/10828376

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@152231 0039d316-1c4b-4281-b951-d872f2087c98
parent 36f06bc9
......@@ -3111,6 +3111,7 @@
],
'dependencies': [
'test/data/nacl/nacl_test_data.gyp:nacl_tests',
'../ppapi/native_client/native_client.gyp:nacl_irt',
'../ppapi/ppapi_untrusted.gyp:ppapi_nacl_tests',
],
}],
......
# Copyright (c) 2012 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
{
'includes': [
'../../../../native_client/build/untrusted.gypi',
],
'target_defaults': {
# We need to override the variables in untrusted.gypi outside of a
# target_condition block because the target_condition block in
# untrusted gypi is fully evaluated and interpolated before any of the
# target_condition blocks in this file are expanded. This means that any
# variables overriden inside a target_condition block in this file will not
# affect the values in untrusted.gypi.
'variables': {
'test_files': [],
'nacl_newlib_out_dir': '<(PRODUCT_DIR)/nacl_test_data/newlib',
'out_newlib32': '>(nacl_newlib_out_dir)/>(nexe_target)_newlib_x86_32.nexe',
'out_newlib64': '>(nacl_newlib_out_dir)/>(nexe_target)_newlib_x86_64.nexe',
'out_newlib_arm': '>(nacl_newlib_out_dir)/>(nexe_target)_newlib_arm.nexe',
'nmf_newlib': '>(nacl_newlib_out_dir)/>(nexe_target).nmf',
'nacl_glibc_out_dir': '<(PRODUCT_DIR)/nacl_test_data/glibc',
'out_glibc32': '>(nacl_glibc_out_dir)/>(nexe_target)_glibc_x86_32.nexe',
'out_glibc64': '>(nacl_glibc_out_dir)/>(nexe_target)_glibc_x86_64.nexe',
'out_glibc_arm': '>(nacl_glibc_out_dir)/>(nexe_target)_glibc_arm.nexe',
'nmf_glibc': '>(nacl_glibc_out_dir)/>(nexe_target).nmf',
},
'dependencies': [
'<(DEPTH)/ppapi/ppapi_untrusted.gyp:ppapi_cpp_lib',
'<(DEPTH)/ppapi/native_client/native_client.gyp:ppapi_lib',
],
'target_conditions': [
['test_files!=[] and build_newlib==1', {
'copies': [
{
'destination': '>(nacl_newlib_out_dir)',
'files': [
'>@(test_files)',
],
},
],
}],
['test_files!=[] and "<(target_arch)"!="arm" and disable_glibc==0 and build_glibc==1', {
'copies': [
{
'destination': '>(nacl_glibc_out_dir)',
'files': [
'>@(test_files)',
],
},
],
}],
['nexe_target!=""', {
'variables': {
# Patch over the fact that untrusted.gypi doesn't define these in all
# cases.
'enable_x86_64%': 0,
'enable_x86_32%': 0,
'enable_arm%': 0,
'include_dirs': [
'<(DEPTH)',
],
'link_flags': [
'-lppapi_cpp',
'-lppapi',
'-lpthread',
],
},
'target_conditions': [
['build_newlib==1', {
'actions': [
{
'action_name': 'Generate NEWLIB NMF',
# Unlike glibc, nexes are not actually inputs - only the names matter.
# We don't have the nexes as inputs because the ARM nexe may not
# exist. However, VS 2010 seems to blackhole this entire target if
# there are no inputs to this action. To work around this we add a
# bogus input.
'inputs': [],
'outputs': ['>(nmf_newlib)'],
'action': [
'python',
'<(DEPTH)/native_client_sdk/src/tools/create_nmf.py',
'>@(_inputs)',
'--output=>(nmf_newlib)',
'--toolchain=newlib',
],
'target_conditions': [
['enable_x86_64==1', {
'inputs': ['>(out_newlib64)'],
}],
['enable_x86_32==1', {
'inputs': ['>(out_newlib32)'],
}],
['enable_arm==1', {
'inputs': ['>(out_newlib_arm)'],
}],
],
},
],
}],
['"<(target_arch)"!="arm" and disable_glibc==0 and build_glibc==1', {
'variables': {
# NOTE: Use /lib, not /lib64 here; it is a symbolic link which
# doesn't work on Windows.
'libdir_glibc64': '>(nacl_glibc_tc_root)/x86_64-nacl/lib',
'libdir_glibc32': '>(nacl_glibc_tc_root)/x86_64-nacl/lib32',
'nacl_objdump': '>(nacl_glibc_tc_root)/bin/x86_64-nacl-objdump',
},
'actions': [
{
'action_name': 'Generate GLIBC NMF and copy libs',
'inputs': [],
# NOTE: There is no explicit dependency for the lib32
# and lib64 directories created in the PRODUCT_DIR.
# They are created as a side-effect of NMF creation.
'outputs': ['>(nmf_glibc)'],
'action': [
'python',
'<(DEPTH)/native_client_sdk/src/tools/create_nmf.py',
'>@(_inputs)',
'--objdump=>(nacl_objdump)',
'--output=>(nmf_glibc)',
'--stage-dependencies=<(nacl_glibc_out_dir)',
'--toolchain=glibc',
],
'target_conditions': [
['enable_x86_64==1', {
'inputs': ['>(out_glibc64)'],
'action': ['--library-path=>(libdir_glibc64)'],
}],
['enable_x86_32==1', {
'inputs': ['>(out_glibc32)'],
'action': ['--library-path=>(libdir_glibc32)'],
}],
# TODO(ncbray) handle arm case. We don't have ARM glibc yet.
],
},
],
}],
],
}],
],
},
}
\ No newline at end of file
......@@ -4,109 +4,23 @@
{
'includes': [
'../../../../native_client/build/untrusted.gypi',
'nacl_browser_test.gypi',
],
# TODO(ncbray) factor nexe building code into a common file.
'targets': [
{
'target_name': 'nacl_tests',
'type': 'none',
'dependencies': [
'../../../../ppapi/ppapi_untrusted.gyp:ppapi_cpp_lib',
'../../../../ppapi/native_client/native_client.gyp:ppapi_lib',
'../../../../ppapi/native_client/native_client.gyp:nacl_irt',
],
'copies': [
{
'destination': '<(PRODUCT_DIR)/nacl_test_data/newlib',
'files': [
'nacl_load_test.html',
],
},
{
'destination': '<(PRODUCT_DIR)/nacl_test_data/glibc',
'files': [
'nacl_load_test.html',
],
},
],
'variables': {
'nexe_target': 'simple',
'build_newlib': 1,
'out_newlib32': '<(PRODUCT_DIR)/nacl_test_data/newlib/>(nexe_target)_newlib_x86_32.nexe',
'out_newlib64': '<(PRODUCT_DIR)/nacl_test_data/newlib/>(nexe_target)_newlib_x86_64.nexe',
'out_newlib_arm': '<(PRODUCT_DIR)/nacl_test_data/newlib/>(nexe_target)_newlib_arm.nexe',
'out_glibc32': '<(PRODUCT_DIR)/nacl_test_data/glibc/>(nexe_target)_glibc_x86_32.nexe',
'out_glibc64': '<(PRODUCT_DIR)/nacl_test_data/glibc/>(nexe_target)_glibc_x86_64.nexe',
'out_glibc_arm': '<(PRODUCT_DIR)/nacl_test_data/glibc/>(nexe_target)_glibc_arm.nexe',
'nmf_newlib%': '<(PRODUCT_DIR)/nacl_test_data/newlib/>(nexe_target).nmf',
'include_dirs': [
'../../../..',
],
'link_flags': [
'-lppapi_cpp',
'-lppapi',
'-lpthread',
],
'build_glibc': 1,
'sources': [
'simple.cc',
],
'test_files': [
'nacl_load_test.html',
],
},
'actions': [
{
'action_name': 'Generate NEWLIB NMF',
# Unlike glibc, nexes are not actually inputs - only the names matter.
# We don't have the nexes as inputs because the ARM nexe may not
# exist. However, VS 2010 seems to blackhole this entire target if
# there are no inputs to this action. To work around this we add a
# bogus input.
'inputs': ['nacl_test_data.gyp'],
'outputs': ['>(nmf_newlib)'],
'action': [
'python',
'<(DEPTH)/native_client_sdk/src/tools/create_nmf.py',
'>(out_newlib64)', '>(out_newlib32)', '>(out_newlib_arm)',
'--output=>(nmf_newlib)',
'--toolchain=newlib',
],
},
],
'conditions': [
['target_arch!="arm" and disable_glibc==0', {
'variables': {
'build_glibc': 1,
# NOTE: Use /lib, not /lib64 here; it is a symbolic link which
# doesn't work on Windows.
'libdir_glibc64': '>(nacl_glibc_tc_root)/x86_64-nacl/lib',
'libdir_glibc32': '>(nacl_glibc_tc_root)/x86_64-nacl/lib32',
'nacl_objdump': '>(nacl_glibc_tc_root)/bin/x86_64-nacl-objdump',
'nmf_glibc%': '<(PRODUCT_DIR)/nacl_test_data/glibc/>(nexe_target).nmf',
},
'actions': [
{
'action_name': 'Generate GLIBC NMF and copy libs',
'inputs': ['>(out_glibc64)', '>(out_glibc32)'],
# NOTE: There is no explicit dependency for the lib32
# and lib64 directories created in the PRODUCT_DIR.
# They are created as a side-effect of NMF creation.
'outputs': ['>(nmf_glibc)'],
'action': [
'python',
'<(DEPTH)/native_client_sdk/src/tools/create_nmf.py',
'>@(_inputs)',
'--objdump=>(nacl_objdump)',
'--library-path=>(libdir_glibc64)',
'--library-path=>(libdir_glibc32)',
'--output=>(nmf_glibc)',
'--stage-dependencies=<(PRODUCT_DIR)/nacl_test_data/glibc',
'--toolchain=glibc',
],
},
],
}],
],
},
],
}
}
\ No newline at end of file
......@@ -35,7 +35,6 @@
'dependencies': [
'ppapi_cpp_lib',
'native_client/native_client.gyp:ppapi_lib',
'native_client/native_client.gyp:nacl_irt',
],
'variables': {
# TODO(bradnelson): Remove this compile flag once new nacl_rev is
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment