Index: ppapi/BUILD.gn |
diff --git a/ppapi/BUILD.gn b/ppapi/BUILD.gn |
index 926630d039efd9663eb6e096dfb58da36353912c..dc3f2e2f345b7501e0c182770d63585520ea906a 100644 |
--- a/ppapi/BUILD.gn |
+++ b/ppapi/BUILD.gn |
@@ -28,6 +28,7 @@ copy("copy_test_files2") { |
} |
import("//build/config/features.gni") |
+import("//build/config/nacl/config.gni") |
import("//ppapi/ppapi_sources.gni") |
import("//testing/test.gni") |
@@ -150,6 +151,9 @@ source_set("ppapi_cpp_lib") { |
"cpp/module_embedder.h", |
"cpp/ppp_entrypoints.cc", |
] |
+ deps = [ |
+ "//build/config/nacl:nacl_base", |
+ ] |
} |
source_set("ppapi_gles2_lib") { |
@@ -166,39 +170,118 @@ source_set("ppapi_gles2_lib") { |
if (enable_nacl) { |
if (is_nacl) { |
- executable("ppapi_nacl_tests_newlib") { |
- include_dirs = [ |
- "lib/gl/include", |
- "..", |
+ shared_library("ppapi_cpp_lib_shared") { |
+ # When using gcc, we hide all symbols by default, but that breaks at |
+ # link time as the test executable requires symbols defined in the |
+ # shared library. |
+ if (is_nacl_glibc) { |
+ configs -= [ "//build/config/gcc:symbol_visibility_hidden" ] |
+ } |
+ |
+ sources = ppapi_sources.cpp_source_files |
+ sources += [ |
+ "cpp/module_embedder.h", |
+ "cpp/ppp_entrypoints.cc", |
+ ] |
+ cflags = [ "-fPIC" ] |
+ deps = [ |
+ "//build/config/nacl:nacl_base", |
] |
+ } |
+ executable("ppapi_nacl_tests") { |
+ include_dirs = [ "lib/gl/include" ] |
sources = ppapi_sources.test_common_source_files + |
ppapi_sources.test_nacl_source_files |
- |
- defines = [ "GL_GLEXT_PROTOTYPES" ] |
- |
+ defines = [ |
+ "GL_GLEXT_PROTOTYPES", |
+ "PPAPI_TEST_IMPLEMENTATION", |
+ ] |
+ ldflags = [ "-pthread" ] |
deps = [ |
- ":ppapi_cpp_lib", |
+ "//build/config/nacl:nacl_base", |
"//ppapi/native_client:ppapi_lib", |
] |
+ if (is_nacl_glibc) { |
+ deps += [ ":ppapi_cpp_lib_shared" ] |
+ } else { |
+ deps += [ ":ppapi_cpp_lib" ] |
+ } |
} |
copy("nacl_tests_copy") { |
sources = [ |
- "${root_out_dir}/ppapi_nacl_tests_newlib.nexe", |
+ "${root_out_dir}/ppapi_nacl_tests.nexe", |
] |
+ if (is_nacl_glibc) { |
+ suffix = "glibc" |
+ } else { |
+ suffix = "newlib" |
+ } |
outputs = [ |
- "${root_build_dir}/{{source_name_part}}_${target_cpu}.nexe", |
+ "${root_build_dir}/{{source_name_part}}_${suffix}_${target_cpu}.nexe", |
] |
deps = [ |
- ":ppapi_nacl_tests_newlib", |
+ ":ppapi_nacl_tests", |
] |
} |
+ |
+ action("generate_nmf") { |
+ nacl_toolchain_dir = rebase_path("//native_client/toolchain") |
+ os_toolchain_dir = "${nacl_toolchain_dir}/${host_os}_x86" |
+ if (is_nacl_glibc) { |
+ toolchain_dir = "${os_toolchain_dir}/nacl_x86_glibc" |
+ nmf = "${root_build_dir}/ppapi_nacl_tests_glibc.nmf" |
+ } else { |
+ toolchain_dir = "${os_toolchain_dir}/nacl_x86_newlib" |
+ nmf = "${root_build_dir}/ppapi_nacl_tests_newlib.nmf" |
+ } |
+ script = "//native_client_sdk/src/tools/create_nmf.py" |
+ sources = get_target_outputs(":nacl_tests_copy") |
+ outputs = [ |
+ nmf, |
+ ] |
+ nmf_flags = [] |
+ if (is_nacl_glibc) { |
+ nmf_flags += [ "--library-path=" + rebase_path(root_out_dir) ] |
+ if (current_cpu == "x86") { |
+ nmf_flags += [ "--library-path=" + |
+ rebase_path("${toolchain_dir}/x86_64-nacl/lib32", |
+ root_build_dir) ] |
+ data = [ |
+ "$root_build_dir/lib32/", |
+ ] |
+ } |
+ if (target_cpu == "x64" || (target_cpu == "x86" && is_win)) { |
+ nmf_flags += [ "--library-path=" + |
+ rebase_path("${toolchain_dir}/x86_64-nacl/lib", |
+ root_build_dir) ] |
+ data = [ |
+ "$root_build_dir/lib64/", |
+ ] |
+ } |
+ } |
+ args = [ |
+ "--no-default-libpath", |
+ "--objdump=${toolchain_dir}/bin/x86_64-nacl-objdump", |
+ "--output=" + rebase_path(nmf, root_build_dir), |
+ "--stage-dependencies=" + rebase_path(root_build_dir), |
+ ] + nmf_flags + rebase_path(sources, root_build_dir) |
+ deps = [ |
+ ":nacl_tests_copy", |
+ ] |
+ data_deps = [ ":nacl_tests_copy" ] |
+ } |
} |
- group("ppapi_nacl_tests") { |
- deps = [ |
- ":nacl_tests_copy(//build/toolchain/nacl:clang_newlib_${target_cpu})", |
- ] |
+ group("ppapi_nacl_tests_all") { |
+ data_deps = [] |
+ if (target_cpu == "x86" || target_cpu == "x64") { |
+ data_deps += [ |
+ ":copy_test_files", |
+ ":nacl_tests_copy(//build/toolchain/nacl:clang_newlib_${target_cpu})", |
+ ":generate_nmf(//build/toolchain/nacl:glibc_${target_cpu})", |
+ ] |
+ } |
} |
} |