Home | History | Annotate | Download | only in ppapi
      1 # Copyright (c) 2013 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 {
      6   'includes': [
      7     '../build/common_untrusted.gypi',
      8   ],
      9   'target_defaults': {
     10     # We need to override the variables in untrusted.gypi outside of a
     11     # target_condition block because the target_condition block in
     12     # untrusted gypi is fully evaluated and interpolated before any of the
     13     # target_condition blocks in this file are expanded.  This means that any
     14     # variables overriden inside a target_condition block in this file will not
     15     # affect the values in untrusted.gypi.
     16     'variables': {
     17       'test_files': [],
     18       'generate_nmf%': 1,
     19       'nacl_newlib_out_dir': '<(PRODUCT_DIR)/>(nexe_destination_dir)/newlib',
     20       'nacl_glibc_out_dir': '<(PRODUCT_DIR)/>(nexe_destination_dir)/glibc',
     21       'nacl_pnacl_newlib_out_dir': '<(PRODUCT_DIR)/>(nexe_destination_dir)/pnacl',
     22       'nacl_pnacl_newlib_nonsfi_out_dir': '<(PRODUCT_DIR)/>(nexe_destination_dir)/nonsfi',
     23       'target_conditions': [
     24         ['nexe_target!=""', {
     25           # These variables are used for nexe building and for library building.
     26           'out_newlib32%': '>(nacl_newlib_out_dir)/>(nexe_target)_newlib_x86_32.nexe',
     27           'out_newlib64%': '>(nacl_newlib_out_dir)/>(nexe_target)_newlib_x86_64.nexe',
     28           'out_newlib_arm%': '>(nacl_newlib_out_dir)/>(nexe_target)_newlib_arm.nexe',
     29           'out_newlib_mips%': '>(nacl_newlib_out_dir)/>(nexe_target)_newlib_mips32.nexe',
     30           'nmf_newlib%': '>(nacl_newlib_out_dir)/>(nexe_target).nmf',
     31           'out_glibc32%': '>(nacl_glibc_out_dir)/>(nexe_target)_glibc_x86_32.nexe',
     32           'out_glibc64%': '>(nacl_glibc_out_dir)/>(nexe_target)_glibc_x86_64.nexe',
     33           'out_glibc_arm%': '>(nacl_glibc_out_dir)/>(nexe_target)_glibc_arm.nexe',
     34           'nmf_glibc%': '>(nacl_glibc_out_dir)/>(nexe_target).nmf',
     35           'out_pnacl_newlib%': '>(nacl_pnacl_newlib_out_dir)/>(nexe_target)_newlib_pnacl.pexe',
     36           'nmf_pnacl_newlib%': '>(nacl_pnacl_newlib_out_dir)/>(nexe_target).nmf',
     37           'out_pnacl_newlib_x86_32_nonsfi_nexe': '>(nacl_pnacl_newlib_nonsfi_out_dir)/>(nexe_target)_pnacl_newlib_x32_nonsfi.nexe',
     38           'nmf_pnacl_newlib_nonsfi%': '>(nacl_pnacl_newlib_nonsfi_out_dir)/>(nexe_target).nmf',
     39         }],
     40       ],
     41     },
     42     'dependencies': [
     43        '<(DEPTH)/native_client/src/untrusted/nacl/nacl.gyp:nacl_lib',
     44        '<(DEPTH)/native_client/src/untrusted/pthread/pthread.gyp:pthread_lib',
     45        '<(DEPTH)/ppapi/ppapi_nacl.gyp:ppapi_cpp_lib',
     46        '<(DEPTH)/ppapi/native_client/native_client.gyp:ppapi_lib',
     47     ],
     48     'target_conditions': [
     49       ['test_files!=[] and build_newlib==1', {
     50         'copies': [
     51           {
     52             'destination': '>(nacl_newlib_out_dir)',
     53             'files': [
     54               '>@(test_files)',
     55             ],
     56           },
     57         ],
     58       }],
     59       ['test_files!=[] and "<(target_arch)"!="arm" and "<(target_arch)"!="mipsel" and disable_glibc==0 and build_glibc==1', {
     60         'copies': [
     61           {
     62             'destination': '>(nacl_glibc_out_dir)',
     63             'files': [
     64               '>@(test_files)',
     65             ],
     66           },
     67         ],
     68       }],
     69       # Nonsfi pnacl copy is covered below.
     70       ['test_files!=[] and build_pnacl_newlib==1 and disable_pnacl==0', {
     71         'copies': [
     72           {
     73             'destination': '>(nacl_pnacl_newlib_out_dir)',
     74             'files': [
     75               '>@(test_files)',
     76             ],
     77           },
     78         ],
     79       }],
     80       ['test_files!=[] and build_pnacl_newlib==1 and enable_x86_32_nonsfi==1', {
     81         'copies': [
     82           {
     83             'destination': '>(nacl_pnacl_newlib_nonsfi_out_dir)',
     84             'files': [
     85               '>@(test_files)',
     86             ],
     87           },
     88         ],
     89       }],
     90       ['nexe_target!=""', {
     91         'variables': {
     92           # Patch over the fact that untrusted.gypi doesn't define these in all
     93           # cases.
     94           'enable_x86_64%': 0,
     95           'enable_x86_32%': 0,
     96           'enable_arm%': 0,
     97           'enable_mips%': 0,
     98           'include_dirs': [
     99             '<(DEPTH)',
    100           ],
    101           'link_flags': [
    102             '-lppapi_cpp',
    103             '-lppapi',
    104             '-pthread',
    105           ],
    106           'extra_args': [
    107             '--strip-all',
    108           ],
    109           'create_nmf': '<(DEPTH)/native_client_sdk/src/tools/create_nmf.py',
    110           'create_nmf_args_portable%': [],
    111           'create_nonsfi_test_nmf': '<(DEPTH)/ppapi/tests/create_nonsfi_test_nmf.py',
    112         },
    113         'target_conditions': [
    114           ['generate_nmf==1 and build_newlib==1', {
    115             'actions': [
    116               {
    117                 'action_name': 'Generate NEWLIB NMF',
    118                 'inputs': ['>(create_nmf)'],
    119                 'outputs': ['>(nmf_newlib)'],
    120                 'action': [
    121                   'python',
    122                   '>(create_nmf)',
    123                   '--output=>(nmf_newlib)',
    124                   '>@(create_nmf_args_portable)',
    125                 ],
    126                 'target_conditions': [
    127                   ['enable_x86_64==1', {
    128                     'inputs': ['>(out_newlib64)'],
    129                     'action': ['>(out_newlib64)'],
    130                   }],
    131                   ['enable_x86_32==1', {
    132                     'inputs': ['>(out_newlib32)'],
    133                     'action': ['>(out_newlib32)'],
    134                   }],
    135                   ['enable_arm==1', {
    136                     'inputs': ['>(out_newlib_arm)'],
    137                     'action': ['>(out_newlib_arm)'],
    138                   }],
    139                   ['enable_mips==1', {
    140                     'inputs': ['>(out_newlib_mips)'],
    141                     'action': ['>(out_newlib_mips)'],
    142                   }],
    143                 ],
    144               },
    145             ],
    146           }],
    147           ['"<(target_arch)"!="arm" and "<(target_arch)"!="mipsel" and generate_nmf==1 and disable_glibc==0 and build_glibc==1', {
    148             'variables': {
    149               # NOTE: Use /lib, not /lib64 here; it is a symbolic link which
    150               # doesn't work on Windows.
    151               'libdir_glibc64': '>(nacl_glibc_tc_root)/x86_64-nacl/lib',
    152               'libdir_glibc32': '>(nacl_glibc_tc_root)/x86_64-nacl/lib32',
    153               'nacl_objdump': '>(nacl_glibc_tc_root)/bin/x86_64-nacl-objdump',
    154             },
    155             'actions': [
    156               {
    157                 'action_name': 'Generate GLIBC NMF and copy libs',
    158                 'inputs': ['>(create_nmf)'],
    159                 # NOTE: There is no explicit dependency for the lib32
    160                 # and lib64 directories created in the PRODUCT_DIR.
    161                 # They are created as a side-effect of NMF creation.
    162                 'outputs': ['>(nmf_glibc)'],
    163                 'action': [
    164                   'python',
    165                   '>(create_nmf)',
    166                   '--objdump=>(nacl_objdump)',
    167                   '--output=>(nmf_glibc)',
    168                   '--path-prefix=>(nexe_target)_libs',
    169                   '--stage-dependencies=<(nacl_glibc_out_dir)',
    170                   '>@(create_nmf_args_portable)',
    171                 ],
    172                 'target_conditions': [
    173                   ['enable_x86_64==1', {
    174                     'inputs': ['>(out_glibc64)'],
    175                     'action': [
    176                       '>(out_glibc64)',
    177                       '--library-path=>(libdir_glibc64)',
    178                       '--library-path=>(tc_lib_dir_glibc64)',
    179                     ],
    180                   }],
    181                   ['enable_x86_32==1', {
    182                     'inputs': ['>(out_glibc32)'],
    183                     'action': [
    184                       '>(out_glibc32)',
    185                       '--library-path=>(libdir_glibc32)',
    186                       '--library-path=>(tc_lib_dir_glibc32)',
    187                     ],
    188                   }],
    189                   # TODO(ncbray) handle arm case.  We don't have ARM glibc yet.
    190                 ],
    191               },
    192             ],
    193           }],
    194           ['generate_nmf==1 and build_pnacl_newlib==1 and disable_pnacl==0', {
    195             'actions': [
    196               {
    197                 'action_name': 'Generate PNACL NEWLIB NMF',
    198                 # NOTE: create_nmf must be first, it is the script python
    199                 # executes below.
    200                 'inputs': ['>(create_nmf)', '>(out_pnacl_newlib)'],
    201                 'outputs': ['>(nmf_pnacl_newlib)'],
    202                 'action': [
    203                   'python',
    204                   '>(create_nmf)',
    205                   '--output=>(nmf_pnacl_newlib)',
    206                   '>(out_pnacl_newlib)',
    207                   '>@(create_nmf_args_portable)',
    208                 ],
    209               },
    210             ],
    211           }],
    212           ['generate_nmf==1 and build_pnacl_newlib==1 and disable_pnacl==0 and enable_x86_32_nonsfi==1', {
    213             'actions': [
    214               {
    215                 'action_name': 'Generate PNACL NEWLIB nonsfi NMF',
    216                 # If we add support for ARM, we should split the dependency on
    217                 # out_pnacl_newlib_x86_32_nonsfi_nexe to 'target_conditions',
    218                 # similar to build_newlib=1 config declared above.
    219                 'inputs': ['>(create_nonsfi_test_nmf)',
    220                            '>(out_pnacl_newlib_x86_32_nonsfi_nexe)'],
    221                 'outputs': ['>(nmf_pnacl_newlib_nonsfi)'],
    222                 'action': [
    223                   'python',
    224                   '>(create_nonsfi_test_nmf)',
    225                   '--output=>(nmf_pnacl_newlib_nonsfi)',
    226                   '--program=>(out_pnacl_newlib_x86_32_nonsfi_nexe)',
    227                   '>@(create_nmf_args_portable)'
    228                 ],
    229               },
    230             ],
    231           }],
    232         ],
    233       }],
    234     ],
    235   },
    236 }
    237