# 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.

component("mozilla") {
  sources = [
    "MozillaExport.h",
    "NSPasteboard+Utils.h",
    "NSPasteboard+Utils.mm",
    "NSString+Utils.h",
    "NSString+Utils.mm",
    "NSURL+Utils.h",
    "NSURL+Utils.m",
    "NSWorkspace+Utils.h",
    "NSWorkspace+Utils.m",
  ]

  defines = [ "MOZILLA_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//url",
  ]

  if (is_component_build && (is_mac || is_ios)) {
    # Needed to link to Obj-C static libraries.
    ldflags = [ "-Wl,-ObjC" ]
  }

  libs = [
    "AppKit.framework",
    "ApplicationServices.framework",
    "Carbon.framework",
  ]
}
