1 # Copyright (c) 2012 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!="arm"', { 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 }, 139 'conditions': [ 140 ['target_arch!="arm" and disable_glibc==0', { 141 'variables': { 142 'build_glibc': 1, 143 # NOTE: Use /lib, not /lib64 here; it is a symbolic link which 144 # doesn't work on Windows. 145 'libdir_glibc64': '>(nacl_glibc_tc_root)/x86_64-nacl/lib', 146 'libdir_glibc32': '>(nacl_glibc_tc_root)/x86_64-nacl/lib32', 147 'nacl_objdump': '>(nacl_glibc_tc_root)/bin/x86_64-nacl-objdump', 148 'nmf_glibc%': '<(PRODUCT_DIR)/>(nexe_target)_glibc.nmf', 149 }, 150 'actions': [ 151 { 152 'action_name': 'Generate GLIBC NMF and copy libs', 153 # NOTE: create_nmf must be first, it is the script python executes 154 # below. 155 'inputs': ['>(create_nmf)', '>(out_glibc64)', '>(out_glibc32)'], 156 # NOTE: There is no explicit dependency for the lib32 157 # and lib64 directories created in the PRODUCT_DIR. 158 # They are created as a side-effect of NMF creation. 159 'outputs': ['>(nmf_glibc)'], 160 'action': [ 161 'python', 162 '>@(_inputs)', 163 '--objdump=>(nacl_objdump)', 164 '--library-path=>(libdir_glibc64)', 165 '--library-path=>(libdir_glibc32)', 166 '--library-path=>(tc_lib_dir_glibc32)', 167 '--library-path=>(tc_lib_dir_glibc64)', 168 '--output=>(nmf_glibc)', 169 '--stage-dependencies=<(PRODUCT_DIR)', 170 ], 171 'msvs_cygwin_shell': 1, 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 # or ARM on ARM platforms, not all versions always. 181 # The same goes for the PNaCl shims. So, we have two variations here. 182 ['disable_pnacl==0 and target_arch!="arm"', { 183 'variables': { 184 'build_pnacl_newlib': 1, 185 'nmf_pnacl%': '<(PRODUCT_DIR)/>(nexe_target)_pnacl.nmf', 186 }, 187 # Shim is a dependency for the nexe because we pre-translate. 188 'dependencies': [ 189 '<(DEPTH)/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_irt_shim.gyp:pnacl_irt_shim', 190 ], 191 'actions': [ 192 { 193 'action_name': 'Generate PNACL NEWLIB NMF', 194 # NOTE: create_nmf must be first, it is the script python executes 195 # below. 196 'inputs': [ 197 '>(create_nmf)', 198 '>(out_pnacl_newlib_x86_32_nexe)', 199 '>(out_pnacl_newlib_x86_64_nexe)' 200 ], 201 'outputs': ['>(nmf_pnacl)'], 202 'action': [ 203 'python', 204 '>@(_inputs)', 205 '--output=>(nmf_pnacl)', 206 ], 207 }, 208 ], 209 }], 210 ['disable_pnacl==0 and target_arch=="arm"', { 211 'variables': { 212 'build_pnacl_newlib': 1, 213 'nmf_pnacl%': '<(PRODUCT_DIR)/>(nexe_target)_pnacl.nmf', 214 }, 215 # Shim is a dependency for the nexe because we pre-translate. 216 'dependencies': [ 217 '<(DEPTH)/ppapi/native_client/src/untrusted/pnacl_irt_shim/pnacl_irt_shim.gyp:pnacl_irt_shim', 218 ], 219 'actions': [ 220 { 221 'action_name': 'Generate PNACL NEWLIB NMF', 222 # NOTE: create_nmf must be first, it is the script python executes 223 # below. 224 'inputs': ['>(create_nmf)', '>(out_pnacl_newlib_arm_nexe)'], 225 'outputs': ['>(nmf_pnacl)'], 226 'action': [ 227 'python', 228 '>@(_inputs)', 229 '--output=>(nmf_pnacl)', 230 ], 231 }, 232 ], 233 }], 234 ], 235 }, 236 ], 237 } 238