# Copyright 2021 The Cobalt Authors. All Rights Reserved.
#
# 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
#
#     http://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.

static_library("script") {
  sources = [
    "array_buffer.h",
    "array_buffer_view.h",
    "call_frame.h",
    "callback_function.h",
    "callback_interface_traits.h",
    "data_view.h",
    "environment_settings.h",
    "error_report.h",
    "exception_message.cc",
    "exception_message.h",
    "execution_state.cc",
    "execution_state.h",
    "fake_global_environment.h",
    "fake_script_runner.h",
    "global_environment.h",
    "javascript_engine.h",
    "logging_exception_state.h",
    "promise.h",
    "property_enumerator.h",
    "scope.h",
    "script_debugger.h",
    "script_exception.h",
    "script_runner.cc",
    "script_runner.h",
    "script_value.h",
    "script_value_factory.h",
    "script_value_factory_instantiations.h",
    "sequence.h",
    "source_code.h",
    "source_provider.h",
    "stack_frame.cc",
    "stack_frame.h",
    "tracer.h",
    "typed_arrays.h",
    "union_type.h",
    "union_type_internal.h",
    "util/stack_trace_helpers.h",
    "value_handle.h",
    "wrappable.h",
  ]

  deps = [
    "//cobalt/base",
    "//nb",
    "//starboard:starboard_headers_only",
  ]
}

static_library("standalone_javascript_runner") {
  sources = [
    "standalone_javascript_runner.cc",
    "standalone_javascript_runner.h",
  ]

  deps = [
    ":script",
    "//base",
  ]
}

# Target that represents the JavaScript engine implementation and an
# interface to create a new engine instance.
source_set("engine") {
  sources = [ "javascript_engine.h" ]

  deps = [
    "v8c:engine",
    "//cobalt/base",
  ]
}

group("engine_shell") {
  deps = [ "v8c" ]
}
