# Copyright 2009 Google Inc.
#
# 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.

vars = {
  # Note that the chromium_revision should be kept in sync with the
  # one in libpagespeed's DEPS file. Allowing them to drift out of
  # sync means that we will end up linking different versions of code
  # that may be incompatible with each other, which can lead to bugs.
  "chromium_trunk": "http://src.chromium.org/svn/trunk",
  # We don't include @ inside the revision here as is customary since
  # we want to pass this into a -D flag
  "chromium_revision_num": "161115",
  "chromium_deps_root": "src/third_party/chromium_deps",

  # Version of libwebp we use. This should normally match the chromium base,
  # but sometimes it's easier to update it separately.
  "chromium_webp_revision": "@161115",

  "libpagespeed_svn_root": "http://page-speed.googlecode.com/svn",
  "libpagespeed_trunk": "http://page-speed.googlecode.com/svn/lib/trunk",
  "libpagespeed_revision": "@2439",
  "libpagespeed_deps_root": "src/third_party/libpagespeed_deps",

  "modspdy_src": "http://mod-spdy.googlecode.com/svn/trunk/src",
  "modspdy_revision": "@387",

  "serf_src": "http://serf.googlecode.com/svn/tags/1.1.0",
  "serf_revision": "@head",

  "apr_src": "http://svn.apache.org/repos/asf/apr/apr/tags/1.4.2",
  "apr_revision": "@head",

  "aprutil_src": "http://svn.apache.org/repos/asf/apr/apr-util/tags/1.3.9",
  "aprutil_revision": "@head",

  "apache_httpd_src": "http://svn.apache.org/repos/asf/httpd/httpd/tags/2.2.15",
  "apache_httpd_revision": "@head",

  # TOD(morlovich) We can't actually run with 2.4.1; but 2.4.2 isn't tagged yet
  # and the headers are certainly good enough.
  "apache_httpd24_src":
    "http://svn.apache.org/repos/asf/httpd/httpd/tags/2.4.1",
  "apache_httpd24_revision": "@head",

  # Using the official github mirror of the opencv repo because it is much
  # faster to clone than the official opencv.org repo.
  "opencv_src": "http://github.com/Itseez/opencv.git",
  "opencv_revision": "@2.3.1",

  "jsoncpp_src": "https://jsoncpp.svn.sourceforge.net/svnroot/jsoncpp/trunk/",
  "jsoncpp_revision": "@247",

  "gflags_root": "http://google-gflags.googlecode.com/svn/tags/gflags-1.5/src",
  "gflags_revision": "@head",

  "google_sparsehash_root": "http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.8.1/src",
  "google_sparsehash_revision": "@head",

  "re2_src": "http://re2-svn.googlecode.com/svn/trunk/",
  "re2_revision": "@2",

  # Uncomment to enable HTTPS fetching via serf.  See also commented out
  # references in src/third_party/serf/serf.gyp.
  #
  # TODO(jmarantz): create an easy way to choose this option from the
  # 'gclient' command, without having to edit the gyp & DEPS files.
  #
  # "openssl_src": "http://git.chromium.org/chromium/deps/openssl.git",
}

deps = {

  # Fetch dependent DEPS so we can sync our other dependencies relative
  # to them.
  Var("chromium_deps_root"):
    File(Var("chromium_trunk") + "/src/DEPS@" + Var("chromium_revision_num")),

  Var("libpagespeed_deps_root"):
    File(Var("libpagespeed_trunk") + "/src/DEPS" +
      Var("libpagespeed_revision")),

  # Other dependencies.
  "src/base":
    Var("libpagespeed_trunk") + "/src/base" + Var("libpagespeed_revision"),

  "src/build/temp_gyp":
    Var("libpagespeed_trunk") + "/src/build/temp_gyp" +
      Var("libpagespeed_revision"),

  "src/build/ios": From(Var("libpagespeed_deps_root")),
  "src/build/internal": From(Var("libpagespeed_deps_root")),
  "src/build/linux": From(Var("libpagespeed_deps_root")),
  "src/build/mac": From(Var("libpagespeed_deps_root")),
  "src/build/win": From(Var("libpagespeed_deps_root")),

  "src/third_party/icu": Var("libpagespeed_svn_root") + "/deps/icu461",
  "src/third_party/libjpeg": Var("libpagespeed_svn_root") + "/deps/jpeg-8c",
  "src/third_party/zlib": Var("libpagespeed_svn_root") + "/deps/zlib-1.2.5",

  "src/googleurl": From(Var("chromium_deps_root")),

  "src/googleurl_noconv":
    (Var("libpagespeed_trunk") + "/src/googleurl_noconv" +
     Var("libpagespeed_revision")),

  "src/testing": From(Var("libpagespeed_deps_root")),
  "src/testing/gtest": From(Var("chromium_deps_root")),
  "src/testing/gmock": From(Var("chromium_deps_root")),

  "src/third_party/apr/src":
    Var("apr_src") + Var("apr_revision"),

  "src/third_party/aprutil/src":
    Var("aprutil_src") + Var("aprutil_revision"),

  "src/third_party/httpd/src/include":
    Var("apache_httpd_src") + "/include" + Var("apache_httpd_revision"),

  "src/third_party/httpd/src/os":
    Var("apache_httpd_src") + "/os" + Var("apache_httpd_revision"),

  "src/third_party/httpd24/src/include":
    Var("apache_httpd24_src") + "/include" + Var("apache_httpd24_revision"),

  "src/third_party/httpd24/src/os":
    Var("apache_httpd24_src") + "/os" + Var("apache_httpd24_revision"),

  "src/third_party/chromium/src/base": From(Var("libpagespeed_deps_root")),

  "src/third_party/chromium/src/build": From(Var("libpagespeed_deps_root")),
  "src/third_party/chromium/src/chrome/tools/build":
    File(Var("chromium_trunk") + "/src/chrome/tools/build/version.py@" +
         Var("chromium_revision_num")),

  "src/third_party/chromium/src/net/base":
     Var("chromium_trunk") + "/src/net/base@" +
     Var("chromium_revision_num"),

  "src/third_party/gflags/src": Var("gflags_root") + Var("gflags_revision"),
  "src/third_party/google-sparsehash/src":
    Var("google_sparsehash_root") + Var("google_sparsehash_revision"),

  "src/third_party/libpagespeed/src/build":
    (Var("libpagespeed_trunk") + "/src/build" +
     Var("libpagespeed_revision")),

  "src/third_party/libpagespeed/src/build/internal":
    Var("chromium_trunk") + "/src/build/internal@" +
    Var("chromium_revision_num"),

  "src/third_party/libpagespeed/src/pagespeed/core":
    (Var("libpagespeed_trunk") + "/src/pagespeed/core" +
     Var("libpagespeed_revision")),

  "src/third_party/libpagespeed/src/pagespeed/image_compression":
    (Var("libpagespeed_trunk") + "/src/pagespeed/image_compression" +
     Var("libpagespeed_revision")),

  "src/third_party/libpagespeed/src/pagespeed/js":
    (Var("libpagespeed_trunk") + "/src/pagespeed/js" +
     Var("libpagespeed_revision")),

  "src/third_party/libpagespeed/src/pagespeed/l10n":
    (Var("libpagespeed_trunk") + "/src/pagespeed/l10n" +
     Var("libpagespeed_revision")),

  "src/third_party/libpagespeed/src/pagespeed/proto":
    (Var("libpagespeed_trunk") + "/src/pagespeed/proto" +
     Var("libpagespeed_revision")),

  "src/third_party/libpagespeed/src/third_party":
    (Var("libpagespeed_trunk") + "/src/third_party" +
     Var("libpagespeed_revision")),

  "src/third_party/protobuf": From(Var("libpagespeed_deps_root")),

  "src/third_party/opencv/src/opencv/":
    Var("opencv_src") + Var("opencv_revision"),

  # Json cpp.
  "src/third_party/jsoncpp/src":
    Var("jsoncpp_src") + "/jsoncpp/src" + Var("jsoncpp_revision"),

  "src/third_party/jsoncpp/include":
    Var("jsoncpp_src") + "/jsoncpp/include" + Var("jsoncpp_revision"),

  # Serf
  "src/third_party/serf/src": Var("serf_src") + Var("serf_revision"),

  "src/third_party/mod_spdy/src": Var("modspdy_src") + Var("modspdy_revision"),

  # We check libwebp out of Chromium repo to get the .gyp file.
  "src/third_party/libwebp":
     Var("chromium_trunk") + "/src/third_party/libwebp" +
     Var("chromium_webp_revision"),

  "src/tools/clang":From(Var("libpagespeed_deps_root")),
  "src/tools/grit": From(Var("libpagespeed_deps_root")),
  "src/tools/gyp": From(Var("chromium_deps_root")),

  "src/third_party/modp_b64": From(Var("libpagespeed_deps_root")),

  "src/third_party/domain_registry_provider/src":
    From(Var("libpagespeed_deps_root")),

  # RE2.
  "src/third_party/re2/src":
    Var("re2_src") + "/src/re2" + Var("re2_revision"),

  # Uncomment to enable HTTPS fetching via serf.  See also commented out
  # references in src/third_party/serf/serf.gyp.
  #
  # "src/third_party/openssl": Var("openssl_src"),
}


deps_os = {
  "win": {
    "src/third_party/cygwin": From(Var("chromium_deps_root")),
    "src/third_party/python_26": From(Var("chromium_deps_root")),
  },
  "mac": {
  },
  "unix": {
  },
}


include_rules = [
  # Everybody can use some things.
  "+base",
  "+build",
]


# checkdeps.py shouldn't check include paths for files in these dirs:
skip_child_includes = [
   "testing",
]


hooks = [
   {
    # Pull clang on mac. If nothing changed, or on non-mac platforms, this takes
    # zero seconds to run. If something changed, it downloads a prebuilt clang,
    # which takes ~20s, but clang speeds up builds by more than 20s.
    "pattern": ".",
    "action": ["python", "src/tools/clang/scripts/update.py", "--mac-only"],
  },
  {
    # A change to a .gyp, .gypi, or to GYP itself should run the generator.
    "pattern": ".",
    "action": ["python", "src/build/gyp_chromium",
               "-Dchromium_revision=" + Var("chromium_revision_num")],
  },
]
