# Copyright 2019 The SwiftShader 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.

import("//testing/test.gni")

test("swiftshader_vulkan_unittests") {
  deps = [
    "//base",
    "//base/test:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/SPIRV-Tools/src:SPIRV-Tools",
    "//third_party/swiftshader/src/Vulkan:swiftshader_libvulkan",
  ]

  sources = [
    "//gpu/swiftshader_tests_main.cc",
    "BasicTests.cpp"
    "ComputeTests.cpp"
    "Device.cpp"
    "DrawTests.cpp"
    "Driver.cpp"
    "main.cpp"
  ]

  include_dirs = [
    "//third_party/SPIRV-Tools/src/include",
    "../../include", # Khronos headers
  ]

  if (is_win) {
    ldflags = [
      "/DELAYLOAD:libvulkan.dll",
    ]
  } else if (is_mac) {
    ldflags = [
      "-rpath",
      "@executable_path/",
    ]
  } else {
    ldflags = [ "-Wl,-rpath=\$ORIGIN/swiftshader" ]
  }
}
