Index: third_party/liblouis/BUILD.gn |
diff --git a/third_party/liblouis/BUILD.gn b/third_party/liblouis/BUILD.gn |
index 85e452c2d3c60fc4c579c07ef1d6dd84acbe72b7..634ec1aae2f8e110e23e9d6a8e9263f645950ae0 100644 |
--- a/third_party/liblouis/BUILD.gn |
+++ b/third_party/liblouis/BUILD.gn |
@@ -2,46 +2,202 @@ |
# Use of this source code is governed by a BSD-style license that can be |
# found in the LICENSE file. |
-chromevox_braille_out_dir = "$root_out_dir/resources/chromeos/chromevox/braille" |
+import("//build/config/nacl/config.gni") |
+import("//build/config/nacl/rules.gni") |
-group("liblouis") { |
- data_deps = [ |
- ":liblouis_tables", |
- ":liblouis_tables_json", |
- ] |
-} |
+if (current_toolchain == default_toolchain) { |
+ chromevox_test_data_dir = "$root_build_dir/chromevox_test_data/braille" |
+ |
+ # Build Liblouis library |
+ # |
+ # This target is used to build and assemble Liblouis braille translator |
+ # including Native Client executable, manifest and translation tables. |
+ # |
+ # Variables: |
+ # dest_dir: destination path for all translator files |
+ # deps: private linked dependencies |
+ # testonly: a target must only be used for testing |
+ template("liblouis_library") { |
+ assert(defined(invoker.dest_dir), "Must define dest_dir") |
+ forward_variables_from(invoker, [ "dest_dir" ]) |
+ |
+ tables_target_name = "${target_name}_tables" |
+ tables_json_target_name = "${target_name}_tables_json" |
+ nexe_target_name = "${target_name}_nexe" |
+ nmf_target_name = "${target_name}_nmf" |
+ final_target_name = target_name |
+ |
+ action(tables_target_name) { |
+ forward_variables_from(invoker, [ "testonly" ]) |
+ visibility = [ ":$final_target_name" ] |
+ script = "copy_tables.py" |
+ inputs = [ |
+ "liblouis_list_tables.py", |
+ ] |
+ depfile = "$target_gen_dir/$target_name.d" |
+ sources = [ |
+ "tables.json", |
+ ] |
+ outputs = [ |
+ "$depfile.stamp", |
+ ] |
+ args = [ |
+ "-D", |
+ rebase_path(".", root_build_dir), |
+ "-D", |
+ rebase_path("src/tables", root_build_dir), |
+ "-d", |
+ rebase_path("$dest_dir/tables", root_build_dir), |
+ "-e", |
+ rebase_path("cvox-common.cti", root_build_dir), |
+ "--depfile", |
+ rebase_path(depfile, root_build_dir), |
+ ] + rebase_path(sources, root_build_dir) |
+ } |
+ |
+ copy(tables_json_target_name) { |
+ forward_variables_from(invoker, [ "testonly" ]) |
+ visibility = [ ":$final_target_name" ] |
+ sources = [ |
+ "tables.json", |
+ ] |
+ outputs = [ |
+ "$dest_dir/{{source_file_part}}", |
+ ] |
+ } |
+ |
+ copy(nexe_target_name) { |
+ forward_variables_from(invoker, [ "testonly" ]) |
+ visibility = [ |
+ ":$final_target_name", |
+ ":$nmf_target_name", |
+ ] |
+ nacl_wrapper = "liblouis_nacl_wrapper(//build/toolchain/nacl:clang_newlib_${target_cpu})" |
+ path = get_label_info(":$nacl_wrapper", "root_out_dir") |
+ sources = [ |
+ "${path}/liblouis_nacl.nexe", |
+ ] |
+ |
+ if (current_cpu == "x86") { |
+ nmf_cpu = "x86_32" |
+ } else if (current_cpu == "x64") { |
+ nmf_cpu = "x86_64" |
+ } else { |
+ nmf_cpu = current_cpu |
+ } |
+ outputs = [ |
+ "$dest_dir/{{source_name_part}}_${nmf_cpu}.nexe", |
+ ] |
+ deps = [ |
+ ":$nacl_wrapper", |
+ ] |
+ } |
+ |
+ generate_nmf(nmf_target_name) { |
+ forward_variables_from(invoker, [ "testonly" ]) |
+ visibility = [ ":$final_target_name" ] |
+ executables = get_target_outputs(":$nexe_target_name") |
+ nmf = "$dest_dir/liblouis_nacl.nmf" |
+ deps = [ |
+ ":$nexe_target_name", |
+ ] |
+ } |
-action("liblouis_tables") { |
- script = "copy_tables.py" |
- inputs = [ |
- "liblouis_list_tables.py", |
- ] |
- depfile = "$target_gen_dir/tables.d" |
- sources = [ |
- "tables.json", |
- ] |
- outputs = [ |
- "$depfile.stamp", |
- ] |
- args = [ |
- "-D", |
- rebase_path(".", root_build_dir), |
- "-D", |
- rebase_path("src/tables", root_build_dir), |
- "-d", |
- rebase_path("$chromevox_braille_out_dir/tables", root_build_dir), |
- "-e", |
- rebase_path("cvox-common.cti", root_build_dir), |
- "--depfile", |
- rebase_path(depfile, root_build_dir), |
- ] + rebase_path(sources, root_build_dir) |
+ group(target_name) { |
+ forward_variables_from(invoker, [ "testonly" ]) |
+ deps = [ |
+ ":$nexe_target_name", |
+ ":$nmf_target_name", |
+ ":$tables_json_target_name", |
+ ":$tables_target_name", |
+ ] |
+ if (defined(invoker.deps)) { |
+ deps += invoker.deps |
+ } |
+ } |
+ } |
+ |
+ liblouis_library("liblouis") { |
+ dest_dir = "$root_build_dir/resources/chromeos/chromevox/braille" |
+ } |
+ |
+ liblouis_library("liblouis_test_data") { |
+ testonly = true |
+ dest_dir = chromevox_test_data_dir |
+ deps = [ |
+ ":liblouis_test_files", |
+ ] |
+ } |
+ |
+ copy("liblouis_test_files") { |
+ visibility = [ ":liblouis_test_data" ] |
+ testonly = true |
+ sources = [ |
+ "//chrome/test/data/chromeos/liblouis_nacl/manifest.json", |
+ "//chrome/test/data/chromeos/liblouis_nacl/test.js", |
+ ] |
+ outputs = [ |
+ "${chromevox_test_data_dir}/{{source_file_part}}", |
+ ] |
+ } |
} |
-copy("liblouis_tables_json") { |
- sources = [ |
- "tables.json", |
- ] |
- outputs = [ |
- "$chromevox_braille_out_dir/{{source_file_part}}", |
- ] |
+if (is_nacl) { |
+ config("liblouis_nacl_config") { |
+ cflags = [ |
+ "-Wno-sign-compare", |
+ |
+ # Needed for target_arch=mipsel |
+ # src/liblouis/compileTranslationTable.c:1414 |
+ "-Wno-tautological-compare", |
+ |
+ # Needed for target_arch=mipsel |
+ # src/liblouis/logging.c:58 |
+ "-Wno-non-literal-null-conversion", |
+ ] |
+ } |
+ |
+ source_set("liblouis_nacl") { |
+ visibility = [ ":liblouis_nacl_wrapper" ] |
+ sources = [ |
+ "overrides/liblouis/config.h", |
+ "overrides/liblouis/liblouis.h", |
+ "src/liblouis/compileTranslationTable.c", |
+ "src/liblouis/logging.c", |
+ "src/liblouis/lou_backTranslateString.c", |
+ "src/liblouis/lou_translateString.c", |
+ "src/liblouis/transcommon.ci", |
+ "src/liblouis/wrappers.c", |
+ ] |
+ include_dirs = [ |
+ "overrides/liblouis", |
+ "src/liblouis", |
+ ".", |
+ "../..", |
+ ] |
+ configs += [ ":liblouis_nacl_config" ] |
+ } |
+ |
+ executable("liblouis_nacl_wrapper") { |
+ visibility = [ ":*" ] |
+ output_name = "liblouis_nacl" |
+ sources = [ |
+ "nacl_wrapper/liblouis_instance.cc", |
+ "nacl_wrapper/liblouis_instance.h", |
+ "nacl_wrapper/liblouis_module.cc", |
+ "nacl_wrapper/liblouis_module.h", |
+ "nacl_wrapper/liblouis_wrapper.cc", |
+ "nacl_wrapper/liblouis_wrapper.h", |
+ "nacl_wrapper/translation_params.h", |
+ "nacl_wrapper/translation_result.h", |
+ ] |
+ deps = [ |
+ ":liblouis_nacl", |
+ "//native_client/src/untrusted/nacl", |
+ "//native_client_sdk/src/libraries/nacl_io", |
+ "//ppapi:ppapi_cpp_lib", |
+ "//ppapi/native_client:ppapi_lib", |
+ "//third_party/jsoncpp", |
+ ] |
+ } |
} |