# Copyright 2016 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("../swiftshader.gni")

declare_args() {
  # Subzero produces smaller binaries, but doesn't support ARM64.
  use_swiftshader_with_subzero = (target_cpu != "arm64")
}

# Need a separate config to ensure the warnings are added to the end.
config("swiftshader_subzero_common_private_config") {
  defines = [
    "ALLOW_DUMP=0",
    "ALLOW_TIMERS=0",
    "ALLOW_LLVM_CL=0",
    "ALLOW_LLVM_IR=0",
    "ALLOW_LLVM_IR_AS_INPUT=0",
    "ALLOW_MINIMAL_BUILD=0",
    "ALLOW_WASM=0",
    "ICE_THREAD_LOCAL_HACK=0",
  ]

  if (is_win) {
    defines += [ "SUBZERO_USE_MICROSOFT_ABI" ]
  }

  if (target_cpu == "x64") {
    defines += [
      "SZTARGET=X8664",
      "SUBZERO_TARGET=X8664",
    ]
  } else {
    defines += [
      "SZTARGET=X8632",
      "SUBZERO_TARGET=X8632",
    ]
  }

  include_dirs = [
    "../../third_party/subzero",
    "../../third_party/subzero/pnacl-llvm/include/",
    "../../third_party/llvm-subzero/include/",
  ]

  if (is_win) {
    include_dirs += [ "../../third_party/llvm-subzero/build/Windows/include/" ]
  } else if (is_linux) {
    include_dirs += [ "../../third_party/llvm-subzero/build/Linux/include/" ]
  } else if (is_fuchsia) {
    include_dirs += [ "../../third_party/llvm-subzero/build/Fuchsia/include/" ]
  } else if (is_mac) {
    include_dirs += [ "../../third_party/llvm-subzero/build/MacOS/include/" ]
  }
}

config("swiftshader_subzero_private_config") {
  cflags = []

  if (is_win) {
    cflags += [
      "/wd4005",
      "/wd4018",
      "/wd4141",
      "/wd4146",
      "/wd4245",  # conversion from int to unsigned int (llvm)
      "/wd4267",
      "/wd4291",
      "/wd4310",
      "/wd4334",
      "/wd4389",
      "/wd4701",
      "/wd4702",
      "/wd4703",
      "/wd4706",
      "/wd4800",
    ]

    if (!is_debug) {
      cflags += [ "/wd4718" ]
    }

    if (is_clang) {
      if (is_debug) {
        cflags += [ "-Wno-sign-compare" ]
      }
    }
  } else if (is_linux || is_mac || is_fuchsia) {
    cflags += [ "-Wno-macro-redefined" ]
  }

  if (is_clang) {
    cflags += [ "-Wno-header-hygiene" ]
  }

  if (is_fuchsia) {
    cflags += [ "-Wno-error" ]
  }
}

config("swiftshader_reactor_with_subzero_private_config") {
  cflags = []

  if (is_win) {
    cflags += [
      "/wd4141",
      "/wd4146",
      "/wd4245",  # conversion from int to unsigned int (llvm)
      "/wd4267",
      "/wd4291",
      "/wd4309",
      "/wd4702",
      "/wd4800",
    ]

    if (use_swiftshader_with_subzero) {
      cflags += [
        "/wd4018",  # signed/unsigned mismatch (llvm)
        "/wd4310",  # cast truncates constant value (llvm)
      ]
    }

    if (is_clang) {
      if (is_debug) {
        cflags += [ "-Wno-sign-compare" ]
      }
    }
  }

  if (is_clang) {
    cflags += [ "-Wno-header-hygiene" ]
  }

  if (is_fuchsia) {
    cflags += [ "-Wno-error" ]
  }
}

config("swiftshader_reactor_private_config") {
  if (is_win) {
    cflags = [
      "/wd4201",  # nameless struct/union
      "/wd4245",  # conversion from int to unsigned int (llvm)
    ]
  } else if (target_cpu == "x86" || target_cpu == "x64") {
    cflags = [
      "-Wno-unused-local-typedef",
      "-msse2",
    ]

    defines = [
      "__STDC_CONSTANT_MACROS",
      "__STDC_LIMIT_MACROS",
    ]
  }
}

if (use_swiftshader_with_subzero) {
  swiftshader_source_set("swiftshader_subzero") {
    subzero_dir = "../../third_party/subzero"
    subzero_llvm_dir = "../../third_party/llvm-subzero"

    sources = [
      "$subzero_dir/src/IceAssembler.cpp",
      "$subzero_dir/src/IceCfg.cpp",
      "$subzero_dir/src/IceCfgNode.cpp",
      "$subzero_dir/src/IceClFlags.cpp",
      "$subzero_dir/src/IceELFObjectWriter.cpp",
      "$subzero_dir/src/IceELFSection.cpp",
      "$subzero_dir/src/IceFixups.cpp",
      "$subzero_dir/src/IceGlobalContext.cpp",
      "$subzero_dir/src/IceGlobalInits.cpp",
      "$subzero_dir/src/IceInst.cpp",
      "$subzero_dir/src/IceInstrumentation.cpp",
      "$subzero_dir/src/IceIntrinsics.cpp",
      "$subzero_dir/src/IceLiveness.cpp",
      "$subzero_dir/src/IceLoopAnalyzer.cpp",
      "$subzero_dir/src/IceMangling.cpp",
      "$subzero_dir/src/IceMemory.cpp",
      "$subzero_dir/src/IceOperand.cpp",
      "$subzero_dir/src/IceRNG.cpp",
      "$subzero_dir/src/IceRangeSpec.cpp",
      "$subzero_dir/src/IceRegAlloc.cpp",
      "$subzero_dir/src/IceRevision.cpp",
      "$subzero_dir/src/IceSwitchLowering.cpp",
      "$subzero_dir/src/IceTargetLowering.cpp",
      "$subzero_dir/src/IceTargetLoweringX86.cpp",
      "$subzero_dir/src/IceThreading.cpp",
      "$subzero_dir/src/IceTimerTree.cpp",
      "$subzero_dir/src/IceTypes.cpp",
      "$subzero_dir/src/IceVariableSplitting.cpp",
      "$subzero_llvm_dir/lib/Demangle/ItaniumDemangle.cpp",
      "$subzero_llvm_dir/lib/Support/APInt.cpp",
      "$subzero_llvm_dir/lib/Support/Atomic.cpp",
      "$subzero_llvm_dir/lib/Support/CommandLine.cpp",
      "$subzero_llvm_dir/lib/Support/ConvertUTF.cpp",
      "$subzero_llvm_dir/lib/Support/ConvertUTFWrapper.cpp",
      "$subzero_llvm_dir/lib/Support/Debug.cpp",
      "$subzero_llvm_dir/lib/Support/Errno.cpp",
      "$subzero_llvm_dir/lib/Support/ErrorHandling.cpp",
      "$subzero_llvm_dir/lib/Support/FoldingSet.cpp",
      "$subzero_llvm_dir/lib/Support/Hashing.cpp",
      "$subzero_llvm_dir/lib/Support/Host.cpp",
      "$subzero_llvm_dir/lib/Support/ManagedStatic.cpp",
      "$subzero_llvm_dir/lib/Support/MemoryBuffer.cpp",
      "$subzero_llvm_dir/lib/Support/Mutex.cpp",
      "$subzero_llvm_dir/lib/Support/NativeFormatting.cpp",
      "$subzero_llvm_dir/lib/Support/Path.cpp",
      "$subzero_llvm_dir/lib/Support/Process.cpp",
      "$subzero_llvm_dir/lib/Support/Program.cpp",
      "$subzero_llvm_dir/lib/Support/Regex.cpp",
      "$subzero_llvm_dir/lib/Support/Signals.cpp",
      "$subzero_llvm_dir/lib/Support/SmallPtrSet.cpp",
      "$subzero_llvm_dir/lib/Support/SmallVector.cpp",
      "$subzero_llvm_dir/lib/Support/StringExtras.cpp",
      "$subzero_llvm_dir/lib/Support/StringMap.cpp",
      "$subzero_llvm_dir/lib/Support/StringRef.cpp",
      "$subzero_llvm_dir/lib/Support/StringSaver.cpp",
      "$subzero_llvm_dir/lib/Support/TargetParser.cpp",
      "$subzero_llvm_dir/lib/Support/Threading.cpp",
      "$subzero_llvm_dir/lib/Support/Timer.cpp",
      "$subzero_llvm_dir/lib/Support/Triple.cpp",
      "$subzero_llvm_dir/lib/Support/Twine.cpp",
      "$subzero_llvm_dir/lib/Support/circular_raw_ostream.cpp",
      "$subzero_llvm_dir/lib/Support/raw_os_ostream.cpp",
      "$subzero_llvm_dir/lib/Support/raw_ostream.cpp",
      "$subzero_llvm_dir/lib/Support/regcomp.c",
      "$subzero_llvm_dir/lib/Support/regerror.c",
      "$subzero_llvm_dir/lib/Support/regexec.c",
      "$subzero_llvm_dir/lib/Support/regfree.c",
      "$subzero_llvm_dir/lib/Support/regstrlcpy.c",
    ]

    if (target_cpu == "x64") {
      sources += [
        "$subzero_dir/src/IceInstX8664.cpp",
        "$subzero_dir/src/IceTargetLoweringX8664.cpp",
      ]
    } else {
      sources += [
        "$subzero_dir/src/IceInstX8632.cpp",
        "$subzero_dir/src/IceTargetLoweringX8632.cpp",
      ]
    }

    configs = [
      ":swiftshader_subzero_common_private_config",
      ":swiftshader_subzero_private_config",
    ]
  }
}

swiftshader_source_set("swiftshader_reactor") {
  deps = [
    "../OpenGL/common:swiftshader_opengl_common",
  ]

  sources = [
    "Routine.cpp",
    "Debug.cpp",
    "ExecutableMemory.cpp",
  ]

  if (use_swiftshader_with_subzero) {
    deps += [ ":swiftshader_subzero" ]

    sources += [
      "Optimizer.cpp",
      "SubzeroReactor.cpp",
    ]

    configs = [
      ":swiftshader_subzero_common_private_config",
      ":swiftshader_reactor_with_subzero_private_config",
    ]

    include_dirs = [
    ]
  } else {
    llvm7_dir = "../../third_party/llvm-7.0"

    deps += [ "$llvm7_dir:swiftshader_llvm" ]

    defines = [ "REACTOR_LLVM_VERSION=7" ]

    sources += [
      "LLVMReactor.cpp",
      "LLVMRoutine.cpp",
      "LLVMRoutineManager.cpp",
      "CPUID.cpp",
    ]

    configs = [ ":swiftshader_reactor_private_config" ]

    include_dirs = [
      "$llvm7_dir/llvm/include/",
      "$llvm7_dir/configs/common/include/",
    ]

    if (is_linux) {
      include_dirs += [ "$llvm7_dir/configs/linux/include/" ]
    } else if (is_windows) {
      include_dirs += [ "$llvm7_dir/configs/windows/include/" ]
    } else if (is_android) {
      include_dirs += [ "$llvm7_dir/configs/android/include/" ]
    } else {
      assert(false, "llvm-7.0 not configured for target platform")
    }
  }
}
