| Index: ppapi/native_client/nacl_test_data.gni
|
| diff --git a/ppapi/native_client/nacl_test_data.gni b/ppapi/native_client/nacl_test_data.gni
|
| index 74c0c2b75b41e4b1271470c3cf34ae3d7a6a8492..398645c7b0d82f3c4c3c6c44fa023f362eabb529 100644
|
| --- a/ppapi/native_client/nacl_test_data.gni
|
| +++ b/ppapi/native_client/nacl_test_data.gni
|
| @@ -53,21 +53,62 @@ template("nacl_test_data") {
|
| } else {
|
| nmf_cpu = current_cpu
|
| }
|
| - if (is_nacl_glibc) {
|
| - suffix = "glibc_${nmf_cpu}"
|
| - } else {
|
| - suffix = "newlib_${nmf_cpu}"
|
| - }
|
| - suffixed_output_name = "${output_name}_${suffix}"
|
| +
|
| if (current_cpu == "pnacl") {
|
| if (defined(invoker.pretranslate_pexe)) {
|
| pretranslate_pexe = invoker.pretranslate_pexe
|
| } else {
|
| pretranslate_pexe = is_nacl_nonsfi
|
| }
|
| - if (pretranslate_pexe) {
|
| - pexe_translate_target_name = target_name + "_translate_pexe"
|
| + } else {
|
| + pretranslate_pexe = false
|
| + }
|
| +
|
| + # Note this can't test "is_win" because it's evaluated in the NaCl
|
| + # toolchain context where is_win==false because current_os=="nacl".
|
| + # It tests target_cpu rather than current_cpu because it's also
|
| + # needed in the current_cpu=="pnacl" && pretranslate_pexe case.
|
| + if (target_os == "win" && target_cpu == "x86" && !is_nacl_nonsfi &&
|
| + (current_cpu == "x86" || pretranslate_pexe)) {
|
| + # x86 Windows builds of Chrome run on both x86 Windows and x64
|
| + # Windows. On x64 Windows, only x64 NaCl is supported, so those
|
| + # tests are needed too.
|
| + extra_tc_cpu = "x64"
|
| + if (current_cpu == "x86") {
|
| + extra_nmf_cpu = "x86_64"
|
| + }
|
| + }
|
| +
|
| + if (is_nacl_glibc) {
|
| + suffix = "glibc_${nmf_cpu}"
|
| + if (defined(extra_nmf_cpu)) {
|
| + extra_suffix = "glibc_${extra_nmf_cpu}"
|
| + glibc_tc = "//build/toolchain/nacl:glibc"
|
| + assert(current_toolchain == "${glibc_tc}_${current_cpu}")
|
| + extra_toolchain = "${glibc_tc}_${extra_tc_cpu}"
|
| + }
|
| + } else {
|
| + suffix = "newlib_${nmf_cpu}"
|
| + if (defined(extra_nmf_cpu)) {
|
| + extra_suffix = "newlib_${extra_nmf_cpu}"
|
| + newlib_tc = "//build/toolchain/nacl:clang_newlib"
|
| + assert(current_toolchain == "${newlib_tc}_${current_cpu}")
|
| + extra_toolchain = "${newlib_tc}_${extra_tc_cpu}"
|
| + }
|
| + }
|
| + suffixed_output_name = "${output_name}_${suffix}"
|
| + if (defined(extra_nmf_cpu)) {
|
| + extra_suffixed_output_name = "${output_name}_${extra_suffix}"
|
| + }
|
| + if (pretranslate_pexe) {
|
| + pexe_translate_target_name = target_name + "_translate_pexe_"
|
| + if (defined(extra_tc_cpu)) {
|
| + # There will be an extra pretranslation done below for the
|
| + # extra CPU (i.e. for x64 on x86 Windows).
|
| + extra_pexe_translate_target_name =
|
| + pexe_translate_target_name + extra_tc_cpu
|
| }
|
| + pexe_translate_target_name += target_cpu
|
| }
|
| if (defined(invoker.generate_nmf)) {
|
| generate_nmf = invoker.generate_nmf
|
| @@ -136,80 +177,96 @@ template("nacl_test_data") {
|
| }
|
|
|
| if (current_cpu == "pnacl" && pretranslate_pexe) {
|
| - action(pexe_translate_target_name) {
|
| - visibility = [ ":$nexe_copy_target_name" ]
|
| + # This is a template so it can be invoked twice in the
|
| + # defined(extra_tc_cpu) case below.
|
| + template("nacl_test_data_pretranslate_pexe") {
|
| + action(target_name) {
|
| + translate_cpu = invoker.translate_cpu
|
|
|
| - # We specify the toolchain explicitly because in the Non-SFI case, we
|
| - # still want to use the pexe built using the newlib_pnacl toolchain.
|
| - tests = ":ppapi_nacl_tests_nexe(//build/toolchain/nacl:newlib_pnacl)"
|
| + visibility = [ ":$nexe_copy_target_name" ]
|
|
|
| - pexe = get_label_info(tests, "root_out_dir") +
|
| - "/${suffixed_output_name}.pexe"
|
| - if (target_cpu == "x86" ||
|
| - (is_nacl_nonsfi && (target_cpu == "x86" || target_cpu == "x64"))) {
|
| - nmf_cpu = "x32"
|
| - } else {
|
| - nmf_cpu = target_cpu
|
| - }
|
| - if (is_nacl_nonsfi) {
|
| - suffix = "pnacl_newlib_${nmf_cpu}_nonsfi"
|
| - } else {
|
| - suffix = "pnacl_newlib_${nmf_cpu}"
|
| - }
|
| - nexe = "${root_out_dir}/${output_name}_${suffix}.nexe"
|
| + # We specify the toolchain explicitly because in the Non-SFI case, we
|
| + # still want to use the pexe built using the newlib_pnacl toolchain.
|
| + tests = ":ppapi_nacl_tests_nexe(//build/toolchain/nacl:newlib_pnacl)"
|
|
|
| - script = "${nacl_toolchain_bindir}/pydir/loader.py"
|
| - sources = [
|
| - pexe,
|
| - ]
|
| - outputs = [
|
| - nexe,
|
| - ]
|
| + pexe = get_label_info(tests, "root_out_dir") +
|
| + "/${suffixed_output_name}.pexe"
|
| + if (translate_cpu == "x86" ||
|
| + (is_nacl_nonsfi &&
|
| + (translate_cpu == "x86" || translate_cpu == "x64"))) {
|
| + nmf_cpu = "x32"
|
| + } else {
|
| + nmf_cpu = translate_cpu
|
| + }
|
| + if (is_nacl_nonsfi) {
|
| + suffix = "pnacl_newlib_${nmf_cpu}_nonsfi"
|
| + } else {
|
| + suffix = "pnacl_newlib_${nmf_cpu}"
|
| + }
|
| + nexe = "${root_out_dir}/${output_name}_${suffix}.nexe"
|
|
|
| - if (is_nacl_nonsfi) {
|
| - if (target_cpu == "x86" || target_cpu == "x64") {
|
| - arch = "x86-32-nonsfi"
|
| - } else if (target_cpu == "arm") {
|
| - arch = "arm-nonsfi"
|
| + script = "${nacl_toolchain_bindir}/pydir/loader.py"
|
| + sources = [
|
| + pexe,
|
| + ]
|
| + outputs = [
|
| + nexe,
|
| + ]
|
| +
|
| + if (is_nacl_nonsfi) {
|
| + if (translate_cpu == "x86" || translate_cpu == "x64") {
|
| + arch = "x86-32-nonsfi"
|
| + } else if (translate_cpu == "arm") {
|
| + arch = "arm-nonsfi"
|
| + }
|
| + } else {
|
| + # TODO(phosek): remove the following once change 1360243003 is rolled
|
| + # into Chrome and use translate_cpu directly.
|
| + if (translate_cpu == "x86") {
|
| + arch = "i686"
|
| + } else if (translate_cpu == "x64") {
|
| + arch = "x86-64"
|
| + } else if (translate_cpu == "arm") {
|
| + arch = "armv7"
|
| + }
|
| }
|
| - } else {
|
| - # TODO(phosek): remove the following once change 1360243003 is rolled
|
| - # into Chrome and use $target_cpu directly.
|
| - if (target_cpu == "x86") {
|
| - arch = "i686"
|
| - } else if (target_cpu == "x64") {
|
| - arch = "x86-64"
|
| - } else if (target_cpu == "arm") {
|
| - arch = "armv7"
|
| +
|
| + # The pre-translated object file has to be linked with an IRT shim to
|
| + # get a runnable nexe. This is handled by pnacl-translate, which passes
|
| + # -l:libpnacl_irt_shim.a to native linker, and we need to ensure the
|
| + # linker can find the correct library.
|
| + if (is_nacl_nonsfi) {
|
| + pnacl_irt_shim = "//ppapi/native_client/src/untrusted/pnacl_irt_shim:aot(//build/toolchain/nacl:newlib_pnacl_nonsfi)"
|
| + } else {
|
| + pnacl_irt_shim = "//ppapi/native_client/src/untrusted/pnacl_irt_shim:aot(//build/toolchain/nacl:clang_newlib_${translate_cpu})"
|
| }
|
| - }
|
|
|
| - # The pre-translated object file has to be linked with an IRT shim to
|
| - # get a runnable nexe. This is handled by pnacl-translate, which passes
|
| - # -l:libpnacl_irt_shim.a to native linker, and we need to ensure the
|
| - # linker can find the correct library.
|
| - if (is_nacl_nonsfi) {
|
| - pnacl_irt_shim = "//ppapi/native_client/src/untrusted/pnacl_irt_shim:aot(//build/toolchain/nacl:newlib_pnacl_nonsfi)"
|
| - } else {
|
| - pnacl_irt_shim = "//ppapi/native_client/src/untrusted/pnacl_irt_shim:aot(//build/toolchain/nacl:clang_newlib_${target_cpu})"
|
| + args = [
|
| + "pnacl-translate",
|
| + rebase_path(pexe, root_build_dir),
|
| + "-o",
|
| + rebase_path(nexe, root_build_dir),
|
| + "-arch",
|
| + arch,
|
| + "-Wl,-L" +
|
| + rebase_path(get_label_info(pnacl_irt_shim, "target_out_dir")),
|
| + ]
|
| + deps = [
|
| + ":$nexe_target_name(//build/toolchain/nacl:newlib_pnacl)",
|
| + ]
|
| + data_deps = [
|
| + pnacl_irt_shim,
|
| + ]
|
| }
|
| + }
|
|
|
| - args = [
|
| - "pnacl-translate",
|
| - rebase_path(pexe, root_build_dir),
|
| - "-o",
|
| - rebase_path(nexe, root_build_dir),
|
| - "-arch",
|
| - arch,
|
| - "-Wl,-L" +
|
| - rebase_path(get_label_info(pnacl_irt_shim, "target_out_dir")),
|
| - ]
|
| - deps = [
|
| - ":$nexe_target_name(//build/toolchain/nacl:newlib_pnacl)",
|
| - ]
|
| - data_deps = [
|
| - pnacl_irt_shim,
|
| - ]
|
| + nacl_test_data_pretranslate_pexe(pexe_translate_target_name) {
|
| + translate_cpu = target_cpu
|
| + }
|
| + if (defined(extra_tc_cpu)) {
|
| + nacl_test_data_pretranslate_pexe(extra_pexe_translate_target_name) {
|
| + translate_cpu = extra_tc_cpu
|
| + }
|
| }
|
| }
|
|
|
| @@ -221,6 +278,9 @@ template("nacl_test_data") {
|
| if (current_cpu == "pnacl") {
|
| if (pretranslate_pexe) {
|
| sources = get_target_outputs(":${pexe_translate_target_name}")
|
| + if (defined(extra_tc_cpu)) {
|
| + sources += get_target_outputs(":${extra_pexe_translate_target_name}")
|
| + }
|
| } else if (defined(invoker.nonstable_pexe) && invoker.nonstable_pexe) {
|
| sources = [
|
| "${root_out_dir}/exe.unstripped/${suffixed_output_name}.pexe",
|
| @@ -234,6 +294,13 @@ template("nacl_test_data") {
|
| sources = [
|
| "${root_out_dir}/${suffixed_output_name}.nexe",
|
| ]
|
| + if (defined(extra_nmf_cpu)) {
|
| + extra_root_out_dir =
|
| + get_label_info(":${nexe_target_name}(${extra_toolchain})",
|
| + "root_out_dir")
|
| + sources +=
|
| + [ "${extra_root_out_dir}/${extra_suffixed_output_name}.nexe" ]
|
| + }
|
| }
|
| outputs = [
|
| "${target_dir}/{{source_file_part}}",
|
| @@ -242,10 +309,16 @@ template("nacl_test_data") {
|
| deps = [
|
| ":$pexe_translate_target_name",
|
| ]
|
| + if (defined(extra_tc_cpu)) {
|
| + deps += [ ":$extra_pexe_translate_target_name" ]
|
| + }
|
| } else {
|
| deps = [
|
| ":$nexe_target_name",
|
| ]
|
| + if (defined(extra_nmf_cpu)) {
|
| + deps += [ ":${nexe_target_name}(${extra_toolchain})" ]
|
| + }
|
| }
|
| }
|
|
|
|
|