blob: 55da36bcfa3a149dc2eedce94f7bc5334fd2d513 [file] [log] [blame]
# Copyright (c) 2011 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': [
'build/common.gypi',
],
######################################################################
'variables': {
'disable_glibc%': 0,
'disable_newlib%': 0,
'disable_pnacl%': 0,
'disable_arm%': 0,
'disable_glibc_untar%': 0,
'disable_newlib_untar%': 0,
'disable_arm_untar%': 0,
'disable_pnacl_untar%': 0,
'nacl_x86_newlib_toolchain%': "",
'nacl_x86_newlib_stamp%': "nacl_x86_newlib.json",
'nacl_arm_newlib_toolchain%': "",
'nacl_arm_newlib_stamp%': "nacl_arm_newlib.json",
'nacl_x86_glibc_toolchain%': "",
'nacl_x86_glibc_stamp%': "nacl_x86_glibc.json",
'pnacl_newlib_toolchain%': "",
'pnacl_newlib_stamp%': "pnacl_newlib.json",
'conditions': [
['OS=="android"', {
'TOOLCHAIN_OS': 'linux',
}, {
'TOOLCHAIN_OS': '<(OS)',
}],
]
},
'targets' : [
{
'target_name': 'prep_toolchain',
'type': 'none',
'dependencies': [
'untar_toolchains',
'prep_nacl_sdk',
],
'conditions': [
['target_arch=="ia32" or target_arch=="x64"', {
'dependencies': [
'crt_init_32',
'crt_fini_32',
'crt_init_64',
'crt_fini_64',
],
}],
['target_arch=="arm"', {
'dependencies': [
'crt_init_arm',
'crt_fini_arm',
]
}],
],
},
{
'target_name': 'untar_toolchains',
'type': 'none',
'conditions': [
['nacl_x86_newlib_toolchain=="" and disable_newlib==0 and disable_newlib_untar==0', {
'actions': [
{
'action_name': 'Untar x86 newlib toolchain',
'msvs_cygwin_shell': 0,
'description': 'Untar x86 newlib toolchain',
'inputs': [
'<(DEPTH)/native_client/build/package_version/package_version.py',
'<(DEPTH)/native_client/toolchain/.tars/<(TOOLCHAIN_OS)_x86/nacl_x86_newlib.json',
],
'outputs': ['<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_x86_newlib/nacl_x86_newlib.json'],
'action': [
'python',
'<(DEPTH)/native_client/build/package_version/package_version.py',
'--quiet',
'--packages', 'nacl_x86_newlib',
'--tar-dir', '<(DEPTH)/native_client/toolchain/.tars',
'--dest-dir', '<(SHARED_INTERMEDIATE_DIR)/sdk',
'extract',
],
},
],
}],
['nacl_x86_newlib_toolchain!="" and disable_newlib==0 and disable_newlib_untar==0', {
'actions': [
{
'action_name': 'Copy x86 newlib toolchain',
'msvs_cygwin_shell': 0,
'description': 'Copy x86 newlib toolchain',
'inputs': [
'<(DEPTH)/native_client/build/copy_directory.py',
'<(nacl_x86_newlib_toolchain)/<(nacl_x86_newlib_stamp)',
],
'outputs': ['<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_x86_newlib/<(nacl_x86_newlib_stamp)'],
'action': [
'python',
'<(DEPTH)/native_client/build/copy_directory.py',
'--quiet',
'--stamp-arg', 'nacl_x86_newlib_stamp',
'--stamp-file', '<(nacl_x86_newlib_stamp)',
'<(nacl_x86_newlib_toolchain)',
'<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_x86_newlib',
],
},
],
}],
['nacl_x86_glibc_toolchain=="" and disable_glibc==0 and disable_glibc_untar==0', {
'actions': [
{
'action_name': 'Untar x86 glibc toolchain',
'msvs_cygwin_shell': 0,
'description': 'Untar x86 glibc toolchain',
'inputs': [
'<(DEPTH)/native_client/build/package_version/package_version.py',
'<(DEPTH)/native_client/toolchain/.tars/<(TOOLCHAIN_OS)_x86/nacl_x86_glibc.json',
],
'outputs': ['<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_x86_glibc/nacl_x86_glibc.json'],
'action': [
'python',
'<(DEPTH)/native_client/build/package_version/package_version.py',
'--quiet',
'--packages', 'nacl_x86_glibc',
'--tar-dir', '<(DEPTH)/native_client/toolchain/.tars',
'--dest-dir', '<(SHARED_INTERMEDIATE_DIR)/sdk',
'extract',
],
},
],
}],
['nacl_x86_glibc_toolchain!="" and disable_newlib==0 and disable_newlib_untar==0', {
'actions': [
{
'action_name': 'Copy x86 glibc toolchain',
'msvs_cygwin_shell': 0,
'description': 'Copy x86 glibc toolchain',
'inputs': [
'<(DEPTH)/native_client/build/copy_directory.py',
'<(nacl_x86_glibc_toolchain)/<(nacl_x86_glibc_stamp)',
],
'outputs': ['<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_x86_glibc/<(nacl_x86_glibc_stamp)'],
'action': [
'python',
'<(DEPTH)/native_client/build/copy_directory.py',
'--quiet',
'--stamp-arg', 'nacl_x86_glibc_stamp',
'--stamp-file', '<(nacl_x86_glibc_stamp)',
'<(nacl_x86_glibc_toolchain)',
'<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_x86_glibc',
],
},
],
}],
['pnacl_newlib_toolchain=="" and disable_pnacl==0 and disable_pnacl_untar==0', {
'actions': [
{
'action_name': 'Untar pnacl toolchain',
'msvs_cygwin_shell': 0,
'description': 'Untar pnacl toolchain',
'inputs': [
'<(DEPTH)/native_client/build/package_version/package_version.py',
'<(DEPTH)/native_client/toolchain/.tars/<(TOOLCHAIN_OS)_x86/pnacl_newlib.json',
],
'outputs': ['<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/pnacl_newlib/pnacl_newlib.json'],
'action': [
'python',
'<(DEPTH)/native_client/build/package_version/package_version.py',
'--quiet',
'--packages', 'pnacl_newlib',
'--tar-dir', '<(DEPTH)/native_client/toolchain/.tars',
'--dest-dir', '<(SHARED_INTERMEDIATE_DIR)/sdk',
'extract',
],
},
],
}],
['pnacl_newlib_toolchain!="" and disable_newlib==0 and disable_newlib_untar==0', {
'actions': [
{
'action_name': 'Copy pnacl toolchain',
'msvs_cygwin_shell': 0,
'description': 'Copy pnacl toolchain',
'inputs': [
'<(DEPTH)/native_client/build/copy_directory.py',
'<(pnacl_newlib_toolchain)/<(pnacl_newlib_stamp)',
],
'outputs': ['<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/pnacl_newlib/<(pnacl_newlib_stamp)'],
'action': [
'python',
'<(DEPTH)/native_client/build/copy_directory.py',
'--quiet',
'--stamp-arg', 'pnacl_newlib_stamp',
'--stamp-file', '<(pnacl_newlib_stamp)',
'<(pnacl_newlib_toolchain)',
'<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/pnacl_newlib',
],
},
],
}],
['nacl_arm_newlib_toolchain=="" and target_arch=="arm" and disable_arm==0 and disable_arm_untar==0', {
'actions': [
{
'action_name': 'Untar arm toolchain',
'msvs_cygwin_shell': 0,
'description': 'Untar arm toolchain',
'inputs': [
'<(DEPTH)/native_client/build/package_version/package_version.py',
'<(DEPTH)/native_client/toolchain/.tars/<(TOOLCHAIN_OS)_x86/nacl_arm_newlib.json',
],
'outputs': ['<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_arm_newlib/nacl_arm_newlib.json'],
'action': [
'python',
'<(DEPTH)/native_client/build/package_version/package_version.py',
'--quiet',
'--packages', 'nacl_arm_newlib',
'--tar-dir', '<(DEPTH)/native_client/toolchain/.tars',
'--dest-dir', '<(SHARED_INTERMEDIATE_DIR)/sdk',
'extract',
],
},
],
}],
['nacl_arm_newlib_toolchain!="" and disable_newlib==0 and disable_newlib_untar==0', {
'actions': [
{
'action_name': 'Copy arm toolchain',
'msvs_cygwin_shell': 0,
'description': 'Copy arm toolchain',
'inputs': [
'<(DEPTH)/native_client/build/copy_directory.py',
'<(nacl_arm_newlib_toolchain)/<(nacl_arm_newlib_stamp)',
],
'outputs': ['<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_arm_newlib/<(nacl_arm_newlib_stamp)'],
'action': [
'python',
'<(DEPTH)/native_client/build/copy_directory.py',
'--quiet',
'--stamp-arg', 'nacl_arm_newlib_stamp',
'--stamp-file', '<(nacl_arm_newlib_stamp)',
'<(nacl_arm_newlib_toolchain)',
'<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_arm_newlib',
],
},
],
}],
]
},
{
'target_name': 'prep_nacl_sdk',
'type': 'none',
'dependencies': [
'untar_toolchains',
],
'variables': {
'newlib_dir': '<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_x86_newlib',
'glibc_dir': '<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_x86_glibc',
'pnacl_dir': '<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/pnacl_newlib',
'arm_dir': '<(SHARED_INTERMEDIATE_DIR)/sdk/<(TOOLCHAIN_OS)_x86/nacl_arm_newlib',
},
'conditions': [
['disable_newlib==0', {
'actions': [
{
'action_name': 'Prep x86 newlib toolchain',
'msvs_cygwin_shell': 0,
'description': 'Prep x86 newlib toolchain',
'inputs': [
'<(newlib_dir)/<(nacl_x86_newlib_stamp)',
'>!@pymod_do_main(prep_nacl_sdk --inputs --tool x86_newlib)',
],
'outputs': ['<(newlib_dir)/stamp.prep'],
'action': [
'python',
'<(DEPTH)/native_client/build/prep_nacl_sdk.py',
'--tool', 'x86_newlib',
'--path', '<(newlib_dir)',
],
},
]
}],
['disable_glibc==0', {
'actions': [
{
'action_name': 'Prep x86 glibc toolchain',
'msvs_cygwin_shell': 0,
'description': 'Prep x86 glibc toolchain',
'inputs': [
'<(glibc_dir)/<(nacl_x86_glibc_stamp)',
'>!@pymod_do_main(prep_nacl_sdk --inputs --tool x86_glibc)',
],
'outputs': ['<(glibc_dir)/stamp.prep'],
'action': [
'python',
'<(DEPTH)/native_client/build/prep_nacl_sdk.py',
'--tool', 'x86_glibc',
'--path', '<(glibc_dir)',
],
},
]
}],
['target_arch=="arm" and disable_arm==0', {
'actions': [
{
'action_name': 'Prep arm toolchain',
'msvs_cygwin_shell': 0,
'description': 'Prep arm toolchain',
'inputs': [
'<(arm_dir)/<(nacl_arm_newlib_stamp)',
'>!@pymod_do_main(prep_nacl_sdk --inputs --tool arm_newlib)',
],
'outputs': ['<(arm_dir)/stamp.prep'],
'action': [
'python',
'<(DEPTH)/native_client/build/prep_nacl_sdk.py',
'--tool', 'arm_newlib',
'--path', '<(arm_dir)',
],
},
]
}],
['disable_pnacl==0', {
'actions': [
{
'action_name': 'Prep pnacl toolchain',
'msvs_cygwin_shell': 0,
'description': 'Prep pnacl toolchain',
'inputs': [
'<(pnacl_dir)/<(pnacl_newlib_stamp)',
'>!@pymod_do_main(prep_nacl_sdk --inputs --tool pnacl)',
],
'outputs': ['<(pnacl_dir)/stamp.prep'],
'action': [
'python',
'<(DEPTH)/native_client/build/prep_nacl_sdk.py',
'--tool', 'pnacl',
'--path', '<(pnacl_dir)',
],
},
]
}],
]
},
],
# The crt_init_* targets only need to be built for non-pnacl newlib-based
# toolchains (and for the IRT if the IRT is built with such a toolchain).
'conditions': [
['target_arch=="ia32" or target_arch=="x64"', {
'targets' : [
{
'target_name': 'crt_init_64',
'type': 'none',
'dependencies': [
'untar_toolchains',
'prep_nacl_sdk'
],
'variables': {
'nlib_target': 'crti.o',
'windows_asm_rule': 0,
'build_glibc': 0,
'build_newlib': 1,
'build_irt': 0,
'enable_x86_32': 0,
'extra_args': [
'--compile',
'--no-suffix',
'--strip=_x86_64'
],
},
'sources': [
'src/untrusted/stubs/crti_x86_64.S',
]
},
{
'target_name': 'crt_fini_64',
'type': 'none',
'dependencies': [
'untar_toolchains',
'prep_nacl_sdk'
],
'variables': {
'nlib_target': 'crtn.o',
'windows_asm_rule': 0,
'build_glibc': 0,
'build_newlib': 1,
'build_irt': 0,
'enable_x86_32': 0,
'extra_args': [
'--compile',
'--no-suffix',
'--strip=_x86_64'
],
},
'sources': [
'src/untrusted/stubs/crtn_x86_64.S'
],
}
],
}],
['target_arch=="ia32" or target_arch=="x64"', {
'targets' : [
{
'target_name': 'crt_init_32',
'type': 'none',
'dependencies': [
'untar_toolchains',
'prep_nacl_sdk'
],
'variables': {
'nlib_target': 'crti.o',
'windows_asm_rule': 0,
'build_glibc': 0,
'build_newlib': 1,
'build_irt': 0,
'enable_x86_64': 0,
'extra_args': [
'--compile',
'--no-suffix',
'--strip=_x86_32'
],
},
'sources': [
'src/untrusted/stubs/crti_x86_32.S',
],
},
{
'target_name': 'crt_fini_32',
'type': 'none',
'dependencies': [
'untar_toolchains',
'prep_nacl_sdk'
],
'variables': {
'nlib_target': 'crtn.o',
'windows_asm_rule': 0,
'build_glibc': 0,
'build_newlib': 1,
'build_irt': 0,
'enable_x86_64': 0,
'extra_args': [
'--compile',
'--no-suffix',
'--strip=_x86_32'
],
},
'sources': [
'src/untrusted/stubs/crtn_x86_32.S'
],
}
],
}],
['target_arch=="arm"', {
'targets' : [
{
'target_name': 'crt_init_arm',
'type': 'none',
'dependencies': [
'untar_toolchains',
'prep_nacl_sdk'
],
'variables': {
'nlib_target': 'crti.o',
'windows_asm_rule': 0,
'build_glibc': 0,
'build_newlib': 1,
'build_irt': 1,
'extra_args': [
'--compile',
'--no-suffix',
'--strip=_arm'
],
},
'sources': [
'src/untrusted/stubs/crti_arm.S',
],
},
{
'target_name': 'crt_fini_arm',
'type': 'none',
'dependencies': [
'untar_toolchains',
'prep_nacl_sdk'
],
'variables': {
'nlib_target': 'crtn.o',
'windows_asm_rule': 0,
'build_glibc': 0,
'build_newlib': 1,
'build_irt': 1,
'extra_args': [
'--compile',
'--no-suffix',
'--strip=_arm'
],
},
'sources': [
'src/untrusted/stubs/crtn_arm.S'
],
}
],
}],
],
}