# 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.cc",
    "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",
    "//url",
  ]
}

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

  deps = [
    ":script",
    "//base",
    "//cobalt/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" ]
}
