# Copyright 2015 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//build/config/nacl/config.gni") import("//build/config/nacl/rules.gni") 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", ] } 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}}", ] } } 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_sdk/src/libraries/nacl_io", "//ppapi:ppapi_cpp_lib", "//ppapi/native_client:ppapi_lib", "//third_party/jsoncpp", ] } }