# Copyright 2022 The Pigweed Authors
#
# 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
#
#     https://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("//build_overrides/pigweed.gni")

import("$dir_pw_build/target_types.gni")

declare_args() {
  # Location of glfw download.
  # Install with: pw package install glfw
  dir_pw_third_party_glfw = ""
}

config("default_config") {
  if (host_os == "linux") {
    libs = [
      # pkg-config --static --libs gl
      "GL",

      # pkg-config --static --libs glfw3
      "glfw",
      "rt",
      "m",
      "dl",
    ]
    include_dirs = [
      "$dir_pw_third_party_glfw/include",
      "/usr/include",
    ]
    lib_dirs = [
      "/usr/lib/x86_64-linux-gnu",
      "/usr/lib",
    ]
  } else if (host_os == "mac") {
    ldflags = [
      "-framework",
      "OpenGL",
      "-framework",
      "Cocoa",
      "-framework",
      "IOKit",
      "-framework",
      "CoreVideo",
    ]
    libs = [ "glfw3" ]
    lib_dirs = [
      "$dir_pw_third_party_glfw/lib-universal",
      "/usr/local/lib",
    ]
    include_dirs = [
      "$dir_pw_third_party_glfw/include",
      "/usr/local/include",
    ]
  } else if (host_os == "win") {
    libs = [
      "glfw3",
      "gdi32",
      "opengl32",
      "imm32",
    ]
    include_dirs = [ "$dir_pw_third_party_glfw/include" ]
    lib_dirs = [ "$dir_pw_third_party_glfw/lib-mingw-w64" ]
  }
}

pw_source_set("glfw") {
  # public_configs *should* work, but ldflags was not being passed along to
  # downstream targets.
  all_dependent_configs = [ ":default_config" ]
}
