# 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" ]
  }
}
