# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Note that this build file assumes rlz_use_chrome_net which is a condition in
# the GYP file, but is always true for Chrome builds.

config("rlz_config") {
  defines = [ "RLZ_NETWORK_IMPLEMENTATION_CHROME_NET" ]
}

source_set("rlz_lib") {
  sources = [
    "chromeos/lib/machine_id_chromeos.cc",
    "chromeos/lib/rlz_value_store_chromeos.cc",
    "chromeos/lib/rlz_value_store_chromeos.h",
    "ios/lib/machine_id_ios.cc",
    "lib/assert.cc",
    "lib/assert.h",
    "lib/crc32.h",
    "lib/crc32_wrapper.cc",
    "lib/crc8.h",
    "lib/crc8.cc",
    "lib/financial_ping.cc",
    "lib/financial_ping.h",
    "lib/lib_values.cc",
    "lib/machine_id.cc",
    "lib/machine_id.h",
    "lib/recursive_cross_process_lock_posix.cc",
    "lib/recursive_cross_process_lock_posix.h",
    "lib/rlz_enums.h",
    "lib/rlz_lib.cc",
    "lib/rlz_lib.h",
    "lib/rlz_lib_clear.cc",
    "lib/lib_values.h",
    "lib/rlz_value_store.h",
    "lib/string_utils.cc",
    "lib/string_utils.h",
    "mac/lib/machine_id_mac.cc",
    "mac/lib/rlz_value_store_mac.mm",
    "mac/lib/rlz_value_store_mac.h",
    "win/lib/lib_mutex.cc",
    "win/lib/lib_mutex.h",
    "win/lib/machine_deal.cc",
    "win/lib/machine_deal.h",
    "win/lib/machine_id_win.cc",
    "win/lib/process_info.cc",
    "win/lib/process_info.h",
    "win/lib/registry_util.cc",
    "win/lib/registry_util.h",
    "win/lib/rlz_lib_win.cc",
    "win/lib/rlz_value_store_registry.cc",
    "win/lib/rlz_value_store_registry.h",
  ]

  direct_dependent_configs = [ ":rlz_config" ]

  deps = [
    "//base",
    "//base/third_party/dynamic_annotations",
    "//net",
  ]

  if (is_ios) {
    # These _mac files are also used on iOS.
    set_sources_assignment_filter([])
    sources += [
      "mac/lib/rlz_value_store_mac.mm",
      "mac/lib/rlz_value_store_mac.h",
    ]
    set_sources_assignment_filter(sources_assignment_filter)
  } else if (is_win) {
    # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    cflags = [ "/wd4267" ]
  }
}

source_set("test_support") {
  sources = [
    "test/rlz_test_helpers.cc",
    "test/rlz_test_helpers.h",
  ]
  deps = [
    ":rlz_lib",
    "//base",
    "//base/test:test_support",
    "//testing/gtest",
  ]
}

test("rlz_unittests") {
  sources = [
    "lib/crc32_unittest.cc",
    "lib/crc8_unittest.cc",
    "lib/financial_ping_test.cc",
    "lib/lib_values_unittest.cc",
    "lib/machine_id_unittest.cc",
    "lib/rlz_lib_test.cc",
    "lib/string_utils_unittest.cc",
    "test/rlz_unittest_main.cc",
    "win/lib/machine_deal_test.cc",
  ]

  deps = [
    ":rlz_lib",
    ":test_support",
    "//base",
    "//base:prefs",
    "//net:test_support",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/zlib",
  ]
}

executable("rlz_id") {
  sources = [
    "examples/rlz_id.cc",
  ]
  deps = [
    ":rlz_lib",
  ]
}

if (is_win) {
  shared_library("rlz") {
    sources = [
      "win/dll/dll_main.cc",
      "win/dll/exports.cc",
    ]
    deps = [
      ":rlz_lib",
      "//third_party/zlib",
    ]
  }
}