Home | History | Annotate | Download | only in ppapi
      1 # Copyright 2014 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 # This GYP file defines untrusted (NaCl) targets.  All targets in this
      6 # file should be conditionally depended upon via 'disable_nacl!=1' to avoid
      7 # requiring NaCl sources for building.
      8 
      9 {
     10   'includes': [
     11     '../native_client/build/untrusted.gypi',
     12     'ppapi_sources.gypi',
     13   ],
     14   'targets': [
     15     {
     16       'target_name': 'ppapi_cpp_lib',
     17       'type': 'none',
     18       'variables': {
     19         'nlib_target': 'libppapi_cpp.a',
     20         'nso_target': 'libppapi_cpp.so',
     21         'build_glibc': 1,
     22         'build_newlib': 1,
     23         'build_pnacl_newlib': 1,
     24         'sources': [
     25           '<@(cpp_source_files)',
     26           'cpp/module_embedder.h',
     27           'cpp/ppp_entrypoints.cc',
     28         ],
     29       },
     30       'dependencies': [
     31         '<(DEPTH)/native_client/tools.gyp:prep_toolchain',
     32       ],
     33     },
     34     {
     35       'target_name': 'ppapi_gles2_lib',
     36       'type': 'none',
     37       'variables': {
     38         'nlib_target': 'libppapi_gles2.a',
     39         'nso_target': 'libppapi_gles2.so',
     40         'build_glibc': 1,
     41         'build_newlib': 1,
     42         'build_pnacl_newlib': 1,
     43         'include_dirs': [
     44           'lib/gl/include',
     45         ],
     46         'sources': [
     47           'lib/gl/gles2/gl2ext_ppapi.c',
     48           'lib/gl/gles2/gl2ext_ppapi.h',
     49           'lib/gl/gles2/gles2.c',
     50         ],
     51       },
     52       'dependencies': [
     53         '<(DEPTH)/native_client/tools.gyp:prep_toolchain',
     54       ],
     55     },
     56     {
     57       'target_name': 'ppapi_nacl_tests',
     58       'type': 'none',
     59       'dependencies': [
     60          '<(DEPTH)/native_client/src/untrusted/nacl/nacl.gyp:nacl_lib',
     61          'ppapi_cpp_lib',
     62          'native_client/native_client.gyp:ppapi_lib',
     63       ],
     64       'variables': {
     65         # This is user code (vs IRT code), so tls accesses do not
     66         # need to be indirect through a function call.
     67         'newlib_tls_flags=': [],
     68         # TODO(bradnelson): Remove this compile flag once new nacl_rev is
     69         # above 9362.
     70         'compile_flags': [
     71           '-DGL_GLEXT_PROTOTYPES',
     72         ],
     73         # Speed up pnacl linking by not generating debug info for tests.
     74         # We compile with --strip-all under extra_args so debug info is
     75         # discarded anyway.  Remove this and the --strip-all flag if
     76         # debug info is really needed.
     77         'compile_flags!': [
     78           '-g',
     79         ],
     80         'defines': [
     81           'GL_GLEXT_PROTOTYPES',
     82         ],
     83         'nexe_target': 'ppapi_nacl_tests',
     84         'build_newlib': 1,
     85         'include_dirs': [
     86           'lib/gl/include',
     87           '..',
     88         ],
     89         'link_flags': [
     90           '-lppapi_cpp',
     91           '-lppapi',
     92           '-pthread',
     93         ],
     94         'link_flags!': [
     95           '-O3',
     96         ],
     97         'translate_flags': [
     98           '-O0',
     99         ],
    100         'conditions': [
    101           ['target_arch=="ia32" or target_arch=="x64"', {
    102             'extra_deps_newlib64': [
    103               '>(tc_lib_dir_newlib64)/libppapi_cpp.a',
    104               '>(tc_lib_dir_newlib64)/libppapi.a',
    105             ],
    106             'extra_deps_newlib32': [
    107               '>(tc_lib_dir_newlib32)/libppapi_cpp.a',
    108               '>(tc_lib_dir_newlib32)/libppapi.a',
    109             ],
    110             'extra_deps_glibc64': [
    111               '>(tc_lib_dir_glibc64)/libppapi_cpp.so',
    112               '>(tc_lib_dir_glibc64)/libppapi.so',
    113             ],
    114             'extra_deps_glibc32': [
    115               '>(tc_lib_dir_glibc32)/libppapi_cpp.so',
    116               '>(tc_lib_dir_glibc32)/libppapi.so',
    117             ],
    118           }],
    119           ['target_arch=="arm"', {
    120             'extra_deps_arm': [
    121               '>(tc_lib_dir_newlib_arm)/libppapi_cpp.a',
    122               '>(tc_lib_dir_newlib_arm)/libppapi.a',
    123             ],
    124           }],
    125         ],
    126         'extra_deps_pnacl_newlib': [
    127           '>(tc_lib_dir_pnacl_newlib)/libppapi_cpp.a',
    128           '>(tc_lib_dir_pnacl_newlib)/libppapi.a',
    129         ],
    130         'sources': [
    131           '<@(test_common_source_files)',
    132           '<@(test_nacl_source_files)',
    133         ],
    134         'extra_args': [
    135           '--strip-all',
    136         ],
    137         'create_nmf': '<(DEPTH)/native_client_sdk/src/tools/create_nmf.py',
    138         'create_nonsfi_test_nmf': 'tests/create_nonsfi_test_nmf.py',
    139       },
    140       'conditions': [
    141         ['target_arch!="arm" and target_arch!="mipsel" and disable_glibc==0', {
    142           'variables': {
    143             'build_glibc': 1,
    144             # NOTE: Use /lib, not /lib64 here; it is a symbolic link which
    145             # doesn't work on Windows.
    146             'libdir_glibc64': '>(nacl_glibc_tc_root)/x86_64-nacl/lib',
    147             'libdir_glibc32': '>(nacl_glibc_tc_root)/x86_64-nacl/lib32',
    148             'nacl_objdump': '>(nacl_glibc_tc_root)/bin/x86_64-nacl-objdump',
    149             'nmf_glibc%': '<(PRODUCT_DIR)/>(nexe_target)_glibc.nmf',
    150           },
    151           'actions': [
    152           {
    153             'action_name': 'Generate GLIBC NMF and copy libs',
    154             # NOTE: create_nmf must be first, it is the script python executes
    155             # below.
    156             'inputs': ['>(create_nmf)', '>(out_glibc64)', '>(out_glibc32)'],
    157             # NOTE: There is no explicit dependency for the lib32
    158             # and lib64 directories created in the PRODUCT_DIR.
    159             # They are created as a side-effect of NMF creation.
    160             'outputs': ['>(nmf_glibc)'],
    161             'action': [
    162               'python',
    163               '>@(_inputs)',
    164               '--objdump=>(nacl_objdump)',
    165               '--library-path=>(libdir_glibc64)',
    166               '--library-path=>(libdir_glibc32)',
    167               '--library-path=>(tc_lib_dir_glibc32)',
    168               '--library-path=>(tc_lib_dir_glibc64)',
    169               '--output=>(nmf_glibc)',
    170               '--stage-dependencies=<(PRODUCT_DIR)',
    171             ],
    172           },
    173         ],
    174         }],
    175         # Test PNaCl pre-translated code (pre-translated to save bot time).
    176         # We only care about testing that code generation is correct,
    177         # and in-browser translation is tested elsewhere.
    178         # NOTE: native_client/build/untrusted.gypi dictates that
    179         # PNaCl only generate x86-32 and x86-64 on x86 platforms,
    180         # ARM on ARM platforms, or MIPS on MIPS platforms, not all
    181         # versions always.
    182         # The same goes for the PNaCl shims. So, we have two variations here.
    183         ['disable_pnacl==0 and (target_arch=="ia32" or target_arch=="x64")', {
    184           'variables': {
    185             'build_pnacl_newlib': 1,
    186             'nmf_pnacl%': '<(PRODUCT_DIR)/>(nexe_target)_pnacl.nmf',
    187           },
    188           # Shim is a dependency for the nexe because we pre-translate.
    189           'dependencies': [
    190             '<(DEPTH)/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_irt_shim.gyp:shim_aot',
    191           ],
    192           'actions': [
    193             {
    194               'action_name': 'Generate PNACL NEWLIB NMF',
    195               # NOTE: create_nmf must be first, it is the script python executes
    196               # below.
    197               'inputs': [
    198                 '>(create_nmf)',
    199                 '>(out_pnacl_newlib_x86_32_nexe)',
    200                 '>(out_pnacl_newlib_x86_64_nexe)'
    201               ],
    202               'outputs': ['>(nmf_pnacl)'],
    203               'action': [
    204                 'python',
    205                 '>@(_inputs)',
    206                 '--output=>(nmf_pnacl)',
    207               ],
    208             },
    209           ],
    210         }],
    211         ['disable_pnacl==0 and target_arch=="ia32" and OS=="linux"', {
    212           # In addition to above configuration, build x86-32-nonsfi .nexe file
    213           # by translating from .pexe binary, for non-SFI mode PPAPI testing.
    214           'variables': {
    215             'enable_x86_32_nonsfi': 1,
    216             'nmf_nonsfi%': '<(PRODUCT_DIR)/>(nexe_target)_pnacl_nonsfi.nmf',
    217           },
    218           'actions': [
    219             {
    220               'action_name': 'Generate PNACL NEWLIB NONSFI NMF',
    221               'inputs': ['>(create_nonsfi_test_nmf)'],
    222               'outputs': ['>(nmf_nonsfi)'],
    223               'action': [
    224                 'python',
    225                 '>(create_nonsfi_test_nmf)',
    226                 '--output=>(nmf_nonsfi)',
    227                 '--program=>(out_pnacl_newlib_x86_32_nonsfi_nexe)',
    228               ],
    229             },
    230           ],
    231         }],
    232         ['disable_pnacl==0 and target_arch=="arm"', {
    233           'variables': {
    234             'build_pnacl_newlib': 1,
    235             'nmf_pnacl%': '<(PRODUCT_DIR)/>(nexe_target)_pnacl.nmf',
    236           },
    237           # Shim is a dependency for the nexe because we pre-translate.
    238           'dependencies': [
    239             '<(DEPTH)/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_irt_shim.gyp:shim_aot',
    240           ],
    241           'actions': [
    242             {
    243               'action_name': 'Generate PNACL NEWLIB NMF',
    244               # NOTE: create_nmf must be first, it is the script python executes
    245               # below.
    246               'inputs': ['>(create_nmf)', '>(out_pnacl_newlib_arm_nexe)'],
    247               'outputs': ['>(nmf_pnacl)'],
    248               'action': [
    249                 'python',
    250                 '>@(_inputs)',
    251                 '--output=>(nmf_pnacl)',
    252               ],
    253             },
    254           ],
    255         }],
    256         ['disable_pnacl==0 and target_arch=="mipsel"', {
    257           'variables': {
    258             'build_pnacl_newlib': 1,
    259             'nmf_pnacl%': '<(PRODUCT_DIR)/>(nexe_target)_pnacl.nmf',
    260           },
    261           # Shim is a dependency for the nexe because we pre-translate.
    262           'dependencies': [
    263             '<(DEPTH)/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_irt_shim.gyp:shim_aot',
    264           ],
    265           'actions': [
    266             {
    267               'action_name': 'Generate PNACL NEWLIB NMF',
    268               'inputs': ['>(create_nmf)', '>(out_pnacl_newlib_mips_nexe)'],
    269               'outputs': ['>(nmf_pnacl)'],
    270               'action': [
    271                 'python',
    272                 '>@(_inputs)',
    273                 '--output=>(nmf_pnacl)',
    274               ],
    275             },
    276           ],
    277         }],
    278       ],
    279     },
    280   ],
    281 }
    282