blob: 339d59645e8fe3ff591ecddf8d25debc7ff5dfeb [file] [log] [blame]
# Copyright 2019 The Fuchsia 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/compiled_action.gni")
import("//build/host.gni")
import("//build/package.gni")
import("//build/test.gni")
import("//build/test/test_package.gni")
config("qjs-config") {
version_lines = read_file("VERSION", "list lines")
defines = [
"_GNU_SOURCE",
"CONFIG_VERSION=\"" + version_lines[0] + "\"",
]
cflags = [
"-Wno-sign-compare",
"-Wno-unused-variable",
"-funsigned-char",
]
}
source_set("qjs-lib") {
# based on QJS_LIB_OBJS
sources = [
"cutils.c",
"libbf.c",
"libbf.h",
"libregexp.c",
"libunicode.c",
"quickjs-libc.c",
"quickjs.c",
]
if (is_fuchsia) {
deps = [
"//zircon/public/lib/fdio",
]
}
public_configs = [ ":qjs-config" ]
}
executable("qjsc") {
sources = [
"qjsc.c",
]
deps = [
":qjs-lib",
]
}
template("compiled_js") {
generate_target = "${target_name}_gen"
generated_file = "${target_gen_dir}/${target_name}.c"
compiled_action(generate_target) {
tool = ":qjsc"
inputs = [
invoker.source,
]
outputs = [
generated_file,
]
args = [
"-c",
"-o",
rebase_path(generated_file),
]
if (defined(invoker.module) && invoker.module) {
args += [ "-m" ]
}
args += [ rebase_path(invoker.source) ]
}
source_set(target_name) {
sources = [
generated_file,
]
deps = [
":${generate_target}",
]
}
}
compiled_js("repl") {
source = "repl.js"
module = true
}
executable("qjs") {
# based on QJS_OBJS
sources = [
"qjs.c",
]
deps = [
":qjs-lib",
":repl",
]
if (is_fuchsia) {
libs = [ "zircon" ]
}
}
package("quickjs") {
deps = [
":qjs",
]
binaries = [
{
name = "qjs"
shell = true
},
]
}
test("qjs_test") {
sources = [
"basic_test.cc",
]
deps = [
":qjs-lib",
"//third_party/googletest:gtest",
"//src/lib/fxl/test:gtest_main",
]
if (is_fuchsia) {
libs = [ "zircon" ]
}
}
unittest_package("qjs_tests") {
deps = [ ":qjs_test" ]
tests = [
{
name = "qjs_test"
environments = basic_envs
},
]
}
install_host_tools("quickjs_host") {
deps = [
":qjs",
]
outputs = [
"qjs",
]
}