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