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