# 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/components.gni")
import("//build/go/go_binary.gni")
import("//build/go/go_library.gni")

_default_syzkaller_dir = "//third_party/syzkaller"

declare_args() {
  # Used by syz-ci to build with own syz-executor source.
  syzkaller_dir = _default_syzkaller_dir
}

group("syzkaller") {
  testonly = true
  deps = [ ":tests" ]
}

group("tests") {
  testonly = true
  deps = [ ":syz-executor-pkg" ]
}

fuchsia_shell_package("syz-executor-pkg") {
  deps = [ ":syz-executor" ]
}

src = rebase_path(syzkaller_dir)

if (target_cpu == "x64") {
  GOARCH = "amd64"
} else {
  GOARCH = target_cpu
}

GOOS = "fuchsia"
HOSTGOOS = "linux"

# Like "git rev-parse HEAD", but without needing a Python script wrapper.
GIT_REVISION = read_file("${src}/.git/HEAD", "trim string")
GIT_BRANCH = string_replace(GIT_REVISION, "ref: ", "", 1)
if (GIT_BRANCH != GIT_REVISION) {
  GIT_REVISION = read_file("${src}/.git/${GIT_BRANCH}", "trim string")
}

compiled_action("generate-syscall-definitions") {
  tool = ":syz-sysgen"
  outputs = [
    "$target_gen_dir/sysgen/executor/defs.h",
    "$target_gen_dir/sysgen/executor/syscalls.h",
  ]
  args = [
    "--src",
    src,
    "--out",
    rebase_path("$target_gen_dir/sysgen", root_build_dir),
  ]
}

executable("syz-executor") {
  sources = [
    "${src}/executor/common.h",
    "${src}/executor/common_bsd.h",
    "${src}/executor/common_fuchsia.h",
    "${src}/executor/common_kvm_amd64.h",
    "${src}/executor/common_kvm_arm64.h",
    "${src}/executor/common_linux.h",
    "${src}/executor/common_test.h",
    "${src}/executor/common_usb.h",
    "${src}/executor/common_windows.h",
    "${src}/executor/executor.cc",
    "${src}/executor/executor_bsd.h",
    "${src}/executor/executor_fuchsia.h",
    "${src}/executor/executor_linux.h",
    "${src}/executor/executor_test.h",
    "${src}/executor/executor_windows.h",
    "${src}/executor/kvm.h",
    "${src}/executor/kvm_amd64.S.h",
    "${src}/executor/nocover.h",
    "${src}/executor/test.h",
    "${src}/executor/test_linux.h",
  ]
  sources += get_target_outputs(":generate-syscall-definitions")
  defines = [
    "GOOS_${GOOS}=1",
    "GOARCH_${GOARCH}=1",
    "HOSTGOOS_${HOSTGOOS}=1",
    "GIT_REVISION=\"${GIT_REVISION}\"",
  ]
  generated_syscalls_dir =
      rebase_path(
          get_label_info(":generate-syscall-definitions", "target_gen_dir"),
          root_build_dir)
  cflags = [ "-I$generated_syscalls_dir/sysgen/executor" ]
  configs -= [ "//build/config:default_warnings" ]
  configs += [ ":warnings" ]
  deps = [
    ":generate-syscall-definitions",
    "//sdk/lib/fdio",
    "//src/devices/lib/driver",
    "//src/lib/ddk",
  ]
}

# Match the warnings enabled for Fuchsia builds in syzkaller/sys/targets/targets.go.
config("warnings") {
  cflags = [
    "-Wall",
    "-Werror",
    "-Wparentheses",
    "-Wunused-const-variable",
    "-Wframe-larger-than=16384",
    "-Wunused-const-variable",
    "-Wno-deprecated",
  ]
}

if (is_host) {
  go_library("syzkaller-go") {
    name = "github.com/google/syzkaller/..."
    source_dir = syzkaller_dir
    if (source_dir != _default_syzkaller_dir) {
      # TODO(https://fxbug.dev/42160667): Figure out a way to support building
      # syzkaller-go without globbing.
      allow_globbing = true
    } else {
      sources = [
        "dashboard/app/access.go",
        "dashboard/app/admin.go",
        "dashboard/app/api.go",
        "dashboard/app/config.go",
        "dashboard/app/dashboard.go",
        "dashboard/app/entities.go",
        "dashboard/app/handler.go",
        "dashboard/app/jobs.go",
        "dashboard/app/main.go",
        "dashboard/app/reporting.go",
        "dashboard/app/reporting_email.go",
        "dashboard/app/reporting_external.go",
        "dashboard/dashapi/dashapi.go",
        "executor/gen.go",
        "executor/stub.go",
        "pkg/ast/ast.go",
        "pkg/ast/clone.go",
        "pkg/ast/filter.go",
        "pkg/ast/format.go",
        "pkg/ast/parser.go",
        "pkg/ast/scanner.go",
        "pkg/ast/test_util.go",
        "pkg/ast/walk.go",
        "pkg/bisect/bisect.go",
        "pkg/build/build.go",
        "pkg/build/freebsd.go",
        "pkg/build/fuchsia.go",
        "pkg/build/gvisor.go",
        "pkg/build/linux.go",
        "pkg/build/linux_generated.go",
        "pkg/build/netbsd.go",
        "pkg/build/openbsd.go",
        "pkg/build/test.go",
        "pkg/cmdprof/cmdprof.go",
        "pkg/compiler/attrs.go",
        "pkg/compiler/check.go",
        "pkg/compiler/compiler.go",
        "pkg/compiler/consts.go",
        "pkg/compiler/fuzz.go",
        "pkg/compiler/gen.go",
        "pkg/compiler/types.go",
        "pkg/config/config.go",
        "pkg/cover/cover.go",
        "pkg/cover/report.go",
        "pkg/csource/build.go",
        "pkg/csource/common.go",
        "pkg/csource/csource.go",
        "pkg/csource/gen.go",
        "pkg/csource/generated.go",
        "pkg/csource/options.go",
        "pkg/db/db.go",
        "pkg/email/parser.go",
        "pkg/email/patch.go",
        "pkg/email/reply.go",
        "pkg/gce/gce.go",
        "pkg/gcs/gcs.go",
        "pkg/hash/hash.go",
        "pkg/host/features.go",
        "pkg/host/features_linux.go",
        "pkg/host/host_darwin.go",
        "pkg/host/host_freebsd.go",
        "pkg/host/host_fuchsia.go",
        "pkg/host/host_netbsd.go",
        "pkg/host/host_openbsd.go",
        "pkg/host/host_windows.go",
        "pkg/host/syscalls.go",
        "pkg/host/syscalls_linux.go",
        "pkg/html/generated.go",
        "pkg/html/html.go",
        "pkg/ifuzz/decode.go",
        "pkg/ifuzz/encode.go",
        "pkg/ifuzz/gen/gen.go",
        "pkg/ifuzz/generated/empty.go",
        "pkg/ifuzz/generated/insns.go",
        "pkg/ifuzz/ifuzz.go",
        "pkg/ifuzz/pseudo.go",
        "pkg/ifuzz/xed.go",
        "pkg/instance/instance.go",
        "pkg/ipc/gate.go",
        "pkg/ipc/ipc.go",
        "pkg/ipc/ipcconfig/ipcconfig.go",
        "pkg/kd/kd.go",
        "pkg/log/log.go",
        "pkg/mgrconfig/config.go",
        "pkg/mgrconfig/load.go",
        "pkg/osutil/fileutil.go",
        "pkg/osutil/osutil.go",
        "pkg/osutil/osutil_appengine.go",
        "pkg/osutil/osutil_bsd.go",
        "pkg/osutil/osutil_darwin.go",
        "pkg/osutil/osutil_fuchsia.go",
        "pkg/osutil/osutil_linux.go",
        "pkg/osutil/osutil_unix.go",
        "pkg/osutil/osutil_windows.go",
        "pkg/report/freebsd.go",
        "pkg/report/fuchsia.go",
        "pkg/report/fuzz.go",
        "pkg/report/gvisor.go",
        "pkg/report/linux.go",
        "pkg/report/netbsd.go",
        "pkg/report/openbsd.go",
        "pkg/report/report.go",
        "pkg/report/stub.go",
        "pkg/repro/repro.go",
        "pkg/rpctype/rpc.go",
        "pkg/rpctype/rpctype.go",
        "pkg/runtest/run.go",
        "pkg/serializer/serializer.go",
        "pkg/signal/signal.go",
        "pkg/symbolizer/nm.go",
        "pkg/symbolizer/symbolizer.go",
        "pkg/vcs/freebsd.go",
        "pkg/vcs/fuchsia.go",
        "pkg/vcs/git.go",
        "pkg/vcs/git_test_util.go",
        "pkg/vcs/linux.go",
        "pkg/vcs/netbsd.go",
        "pkg/vcs/openbsd.go",
        "pkg/vcs/testos.go",
        "pkg/vcs/vcs.go",
        "prog/alloc.go",
        "prog/analysis.go",
        "prog/any.go",
        "prog/checksum.go",
        "prog/clone.go",
        "prog/decodeexec.go",
        "prog/encoding.go",
        "prog/encodingexec.go",
        "prog/generation.go",
        "prog/hints.go",
        "prog/meta.go",
        "prog/minimization.go",
        "prog/mutation.go",
        "prog/parse.go",
        "prog/prio.go",
        "prog/prog.go",
        "prog/rand.go",
        "prog/resources.go",
        "prog/rotation.go",
        "prog/size.go",
        "prog/target.go",
        "prog/test/fuzz.go",
        "prog/test_util.go",
        "prog/types.go",
        "prog/validation.go",
        "sys/freebsd/init.go",
        "sys/fuchsia/fidlgen/main.go",
        "sys/fuchsia/init.go",
        "sys/fuchsia/layout/fidl_mappings.go",
        "sys/linux/init.go",
        "sys/linux/init_alg.go",
        "sys/linux/init_iptables.go",
        "sys/linux/init_vusb.go",
        "sys/linux/init_vusb_ids.go",
        "sys/netbsd/init.go",
        "sys/openbsd/init.go",
        "sys/sys.go",
        "sys/syz-extract/extract.go",
        "sys/syz-extract/fetch.go",
        "sys/syz-extract/freebsd.go",
        "sys/syz-extract/fuchsia.go",
        "sys/syz-extract/linux.go",
        "sys/syz-extract/netbsd.go",
        "sys/syz-extract/openbsd.go",
        "sys/syz-extract/trusty.go",
        "sys/syz-extract/windows.go",
        "sys/syz-sysgen/sysgen.go",
        "sys/targets/common.go",
        "sys/targets/targets.go",
        "sys/test/init.go",
        "sys/trusty/init.go",
        "sys/windows/init.go",
        "syz-ci/jobs.go",
        "syz-ci/manager.go",
        "syz-ci/managercmd.go",
        "syz-ci/syz-ci.go",
        "syz-ci/updater.go",
        "syz-fuzzer/fuzzer.go",
        "syz-fuzzer/proc.go",
        "syz-fuzzer/testing.go",
        "syz-fuzzer/workqueue.go",
        "syz-hub/http.go",
        "syz-hub/hub.go",
        "syz-hub/state/state.go",
        "syz-manager/cover.go",
        "syz-manager/html.go",
        "syz-manager/hub.go",
        "syz-manager/manager.go",
        "syz-manager/rpc.go",
        "syz-manager/stats.go",
        "tools/syz-benchcmp/benchcmp.go",
        "tools/syz-bisect/bisect.go",
        "tools/syz-check/check.go",
        "tools/syz-check/dwarf.go",
        "tools/syz-cover/syz-cover.go",
        "tools/syz-crush/crush.go",
        "tools/syz-db/syz-db.go",
        "tools/syz-execprog/execprog.go",
        "tools/syz-expand/expand.go",
        "tools/syz-fmt/syz-fmt.go",
        "tools/syz-imagegen/imagegen.go",
        "tools/syz-make/make.go",
        "tools/syz-mutate/mutate.go",
        "tools/syz-prog2c/prog2c.go",
        "tools/syz-repro/repro.go",
        "tools/syz-reprolist/reprolist.go",
        "tools/syz-runtest/runtest.go",
        "tools/syz-showprio/showprio.go",
        "tools/syz-stress/stress.go",
        "tools/syz-symbolize/symbolize.go",
        "tools/syz-testbuild/testbuild.go",
        "tools/syz-trace2syz/parser/intermediate_types.go",
        "tools/syz-trace2syz/parser/lex.go",
        "tools/syz-trace2syz/parser/parser.go",
        "tools/syz-trace2syz/parser/strace.go",
        "tools/syz-trace2syz/proggen/call_selector.go",
        "tools/syz-trace2syz/proggen/fuzz.go",
        "tools/syz-trace2syz/proggen/generate_unions.go",
        "tools/syz-trace2syz/proggen/proggen.go",
        "tools/syz-trace2syz/proggen/return_cache.go",
        "tools/syz-trace2syz/proggen/unsupported_calls.go",
        "tools/syz-trace2syz/trace2syz.go",
        "tools/syz-tty/syz-tty.go",
        "tools/syz-upgrade/upgrade.go",
        "tools/syz-usbgen/usbgen.go",
        "vm/adb/adb.go",
        "vm/adb/adb_ppc64le.go",
        "vm/bhyve/bhyve.go",
        "vm/gce/gce.go",
        "vm/gce/tar_go1.10.go",
        "vm/gce/tar_go1.9.go",
        "vm/gvisor/gvisor.go",
        "vm/isolated/isolated.go",
        "vm/kvm/kvm.go",
        "vm/odroid/empty.go",
        "vm/odroid/odroid.go",
        "vm/qemu/qemu.go",
        "vm/vm.go",
        "vm/vmimpl/console.go",
        "vm/vmimpl/console_darwin.go",
        "vm/vmimpl/console_freebsd.go",
        "vm/vmimpl/console_linux_386.go",
        "vm/vmimpl/console_linux_amd64.go",
        "vm/vmimpl/console_linux_arm.go",
        "vm/vmimpl/console_linux_arm64.go",
        "vm/vmimpl/console_linux_ppc64le.go",
        "vm/vmimpl/console_netbsd.go",
        "vm/vmimpl/console_openbsd.go",
        "vm/vmimpl/freebsd.go",
        "vm/vmimpl/merger.go",
        "vm/vmimpl/openbsd.go",
        "vm/vmimpl/util.go",
        "vm/vmimpl/vmimpl.go",
        "vm/vmm/vmm.go",
      ]
    }
    deps = [ "//third_party/golibs:golang.org/x/sys" ]
  }

  syz_ldflags = [
    "-s",
    "-w",
    "-X github.com/google/syzkaller/sys.GitRevision=${GIT_REVISION}",
    "-X 'github.com/google/syzkaller/sys.gitRevisionDate=Sun Jan 10 11:00:00 1970 -0700'",
  ]

  go_binary("syz-sysgen") {
    gopackage = "github.com/google/syzkaller/sys/syz-sysgen"
    ldflags = syz_ldflags
    deps = [ ":syzkaller-go" ]
  }
}
