blob: 06c1fa8b5de636f761acc2abe694a816e3d072b2 [file] [log] [blame]
# 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",
"cvox-common.cti",
"--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/cpp",
"//ppapi/native_client:ppapi_lib",
"//third_party/jsoncpp",
]
}
}