# Copyright 2023 The Pigweed Authors
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may not
# use this file except in compliance with the License. You may obtain a copy of
# the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations under
# the License.

import("//build_overrides/pigweed.gni")

import("$dir_pigweed_experimental/third_party/imgui/imgui.gni")
import("$dir_pw_system/system_target.gni")
import("$dir_pw_toolchain/generate_toolchain.gni")

if (current_toolchain != default_toolchain) {
  pw_source_set("boot") {
    deps = [
      "$dir_pw_log",
      "$dir_pw_system",
      "$dir_pw_thread:sleep",
    ]
    sources = [ "boot.cc" ]
  }
}

pw_system_target("host_device_simulator") {
  cpu = PW_SYSTEM_CPU.NATIVE
  scheduler = PW_SYSTEM_SCHEDULER.NATIVE
  link_deps = [ "//targets/host:boot" ]
  build_args = {
    pw_sys_io_BACKEND = dir_pw_sys_io_stdio

    app_common_BACKEND = "//applications/app_common_impl:host_null"
    pw_app_common_DISPLAY_WIDTH = "320"
    pw_app_common_DISPLAY_HEIGHT = "240"

    if (dir_pw_third_party_imgui != "") {
      app_common_BACKEND = "//applications/app_common_impl:host_imgui"
    }
  }
}
