# Copyright (c) 2009 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.

{
  'includes': [
    '../third_party/WebKit/WebKit/chromium/features.gypi',
    '../third_party/WebKit/WebCore/WebCore.gypi',
  ],
  'variables': {
    # TODO: remove this helper when we have loops in GYP
    'apply_locales_cmd': ['python', '../chrome/tools/build/apply_locales.py',],

    # We can't turn on warnings on Windows and Linux until we upstream the
    # WebKit API.
    'conditions': [
      ['OS=="mac"', {
        'chromium_code': 1,
      }],
    ],

    # List of DevTools source files, ordered by dependencies. It is used both
    # for copying them to resource dir, and for generating 'devtools.html' file.
    'devtools_files': [
      'glue/devtools/js/devtools.css',
      'glue/devtools/js/base.js',
      'glue/devtools/js/inspector_controller_impl.js',
      'glue/devtools/js/debugger_agent.js',
      '../v8/tools/codemap.js',
      '../v8/tools/consarray.js',
      '../v8/tools/csvparser.js',
      '../v8/tools/logreader.js',
      '../v8/tools/profile.js',
      '../v8/tools/profile_view.js',
      '../v8/tools/splaytree.js',
      'glue/devtools/js/profiler_agent.js',
      'glue/devtools/js/profiler_processor.js',
      'glue/devtools/js/heap_profiler_panel.js',
      'glue/devtools/js/devtools.js',
      'glue/devtools/js/devtools_host_stub.js',
      'glue/devtools/js/tests.js',
    ],

    'debug_devtools%': 0,
  },
  'targets': [
    {
      # Currently, builders assume webkit.sln builds test_shell on windows.
      # We should change this, but for now allows trybot runs.
      # for now.
      'target_name': 'pull_in_test_shell',
      'type': 'none',
      'conditions': [
        ['OS=="win"', {
          'dependencies': [
            'tools/test_shell/test_shell.gyp:*',
          ],
        }],
      ],
    },
    {
      'target_name': 'webkit_resources',
      'type': 'none',
      'msvs_guid': '0B469837-3D46-484A-AFB3-C5A6C68730B9',
      'variables': {
        'grit_path': '../tools/grit/grit.py',
        'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/webkit',
      },
      'actions': [
        {
          'action_name': 'webkit_resources',
          'variables': {
            'input_path': 'glue/webkit_resources.grd',
          },
          'inputs': [
            '<(input_path)',
          ],
          'outputs': [
            '<(grit_out_dir)/grit/webkit_resources.h',
            '<(grit_out_dir)/webkit_resources.pak',
            '<(grit_out_dir)/webkit_resources.rc',
          ],
          'action': ['python', '<(grit_path)', '-i', '<(input_path)', 'build', '-o', '<(grit_out_dir)'],
          'message': 'Generating resources from <(input_path)',
        },
      ],
      'direct_dependent_settings': {
        'include_dirs': [
          '<(SHARED_INTERMEDIATE_DIR)/webkit',
        ],
      },
      'conditions': [
        ['OS=="win"', {
          'dependencies': ['../build/win/system.gyp:cygwin'],
        }],
      ],
    },
    {
      'target_name': 'webkit_strings',
      'type': 'none',
      'msvs_guid': '60B43839-95E6-4526-A661-209F16335E0E',
      'variables': {
        'grit_path': '../tools/grit/grit.py',
        'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/webkit',
      },
      'actions': [
        {
          'action_name': 'webkit_strings',
          'variables': {
            'input_path': 'glue/webkit_strings.grd',
          },
          'inputs': [
            '<(input_path)',
          ],
          'outputs': [
            '<(grit_out_dir)/grit/webkit_strings.h',
            # TODO: remove this helper when we have loops in GYP
            '>!@(<(apply_locales_cmd) \'<(grit_out_dir)/webkit_strings_ZZLOCALE.pak\' <(locales))',
          ],
          'action': ['python', '<(grit_path)', '-i', '<(input_path)', 'build', '-o', '<(grit_out_dir)'],
          'message': 'Generating resources from <(input_path)',
        },
      ],
      'direct_dependent_settings': {
        'include_dirs': [
          '<(SHARED_INTERMEDIATE_DIR)/webkit',
        ],
      },
      'conditions': [
        ['OS=="win"', {
          'dependencies': ['../build/win/system.gyp:cygwin'],
        }],
      ],
    },
    {
      'target_name': 'appcache',
      'type': '<(library)',
      'msvs_guid': '0B945915-31A7-4A07-A5B5-568D737A39B1',
      'dependencies': [
        '../app/app.gyp:app_base',
        '../net/net.gyp:net',
        '../third_party/WebKit/WebKit/chromium/WebKit.gyp:webkit',
      ],
      'sources': [
        # This list contains all .h and .cc in appcache except for test code.
        'appcache/appcache.cc',
        'appcache/appcache.h',
        'appcache/appcache_backend_impl.cc',
        'appcache/appcache_backend_impl.h',
        'appcache/appcache_database.cc',
        'appcache/appcache_database.h',
        'appcache/appcache_entry.h',
        'appcache/appcache_frontend_impl.cc',
        'appcache/appcache_frontend_impl.h',
        'appcache/appcache_group.cc',
        'appcache/appcache_group.h',
        'appcache/appcache_host.cc',
        'appcache/appcache_host.h',
        'appcache/appcache_interceptor.cc',
        'appcache/appcache_interceptor.h',
        'appcache/appcache_interfaces.cc',
        'appcache/appcache_interfaces.h',
        'appcache/appcache_request_handler.cc',
        'appcache/appcache_request_handler.h',
        'appcache/appcache_response.cc',
        'appcache/appcache_response.h',
        'appcache/appcache_service.cc',
        'appcache/appcache_service.h',
        'appcache/appcache_storage.cc',
        'appcache/appcache_storage.h',
        'appcache/appcache_storage_impl.cc',
        'appcache/appcache_storage_impl.h',
        'appcache/appcache_thread.cc',
        'appcache/appcache_thread.h',
        'appcache/appcache_working_set.cc',
        'appcache/appcache_working_set.h',
        'appcache/appcache_update_job.cc',
        'appcache/appcache_update_job.h',
        'appcache/appcache_url_request_job.cc',
        'appcache/appcache_url_request_job.h',
        'appcache/manifest_parser.cc',
        'appcache/manifest_parser.h',
        'appcache/mock_appcache_storage.cc',
        'appcache/mock_appcache_storage.h',
        'appcache/web_application_cache_host_impl.cc',
        'appcache/web_application_cache_host_impl.h',
      ],
    },
    {
      'target_name': 'database',
      'type': '<(library)',
      'msvs_guid': '1DA00DDD-44E5-4C56-B2CC-414FB0164492',
      'dependencies': [
        '../app/app.gyp:app_base',
        '../base/base.gyp:base',
        '../third_party/sqlite/sqlite.gyp:sqlite',
      ],
      'sources': [
        'database/databases_table.cc',
        'database/databases_table.h',
        'database/database_connections.cc',
        'database/database_connections.h',
        'database/database_tracker.cc',
        'database/database_tracker.h',
        'database/database_util.cc',
        'database/database_util.h',
        'database/quota_table.cc',
        'database/quota_table.h',
        'database/vfs_backend.cc',
        'database/vfs_backend.h',
      ],
    },
    {
      'target_name': 'glue',
      'type': '<(library)',
      'msvs_guid': 'C66B126D-0ECE-4CA2-B6DC-FA780AFBBF09',
      'dependencies': [
        '../app/app.gyp:app_base',
        '../net/net.gyp:net',
        'inspector_resources',
        '../third_party/WebKit/WebCore/WebCore.gyp/WebCore.gyp:webcore',
        '../third_party/WebKit/WebKit/chromium/WebKit.gyp:webkit',
        'webkit_resources',
        'webkit_strings',
      ],
      'actions': [
        {
          'action_name': 'webkit_version',
          'inputs': [
            'build/webkit_version.py',
            '../third_party/WebKit/WebCore/Configurations/Version.xcconfig',
          ],
          'outputs': [
            '<(INTERMEDIATE_DIR)/webkit_version.h',
          ],
          'action': ['python', '<@(_inputs)', '<(INTERMEDIATE_DIR)'],
        },
      ],
      'include_dirs': [
        '<(INTERMEDIATE_DIR)',
        '<(SHARED_INTERMEDIATE_DIR)/webkit',
      ],
      'sources': [
        # This list contains all .h, .cc, and .mm files in glue except for
        # those in the test subdirectory and those with unittest in in their
        # names.
        'glue/devtools/apu_agent_delegate.h',
        'glue/devtools/bound_object.cc',
        'glue/devtools/bound_object.h',
        'glue/devtools/debugger_agent.h',
        'glue/devtools/debugger_agent_impl.cc',
        'glue/devtools/debugger_agent_impl.h',
        'glue/devtools/debugger_agent_manager.cc',
        'glue/devtools/debugger_agent_manager.h',
        'glue/devtools/devtools_message_data.cc',
        'glue/devtools/devtools_message_data.h',
        'glue/devtools/devtools_rpc.h',
        'glue/devtools/devtools_rpc_js.h',
        'glue/devtools/profiler_agent.h',
        'glue/devtools/profiler_agent_impl.cc',
        'glue/devtools/profiler_agent_impl.h',
        'glue/devtools/tools_agent.h',
        'glue/media/buffered_data_source.cc',
        'glue/media/buffered_data_source.h',
        'glue/media/media_resource_loader_bridge_factory.cc',
        'glue/media/media_resource_loader_bridge_factory.h',
        'glue/media/simple_data_source.cc',
        'glue/media/simple_data_source.h',
        'glue/media/video_renderer_impl.cc',
        'glue/media/video_renderer_impl.h',
        'glue/plugins/coregraphics_private_symbols_mac.h',
        'glue/plugins/nphostapi.h',
        'glue/plugins/fake_plugin_window_tracker_mac.h',
        'glue/plugins/fake_plugin_window_tracker_mac.cc',
        'glue/plugins/gtk_plugin_container.h',
        'glue/plugins/gtk_plugin_container.cc',
        'glue/plugins/gtk_plugin_container_manager.h',
        'glue/plugins/gtk_plugin_container_manager.cc',
        'glue/plugins/npapi_extension_thunk.cc',
        'glue/plugins/npapi_extension_thunk.h',
        'glue/plugins/plugin_constants_win.h',
        'glue/plugins/plugin_host.cc',
        'glue/plugins/plugin_host.h',
        'glue/plugins/plugin_instance.cc',
        'glue/plugins/plugin_instance.h',
        'glue/plugins/plugin_instance_mac.mm',
        'glue/plugins/plugin_lib.cc',
        'glue/plugins/plugin_lib.h',
        'glue/plugins/plugin_lib_linux.cc',
        'glue/plugins/plugin_lib_mac.mm',
        'glue/plugins/plugin_lib_win.cc',
        'glue/plugins/plugin_list.cc',
        'glue/plugins/plugin_list.h',
        'glue/plugins/plugin_list_linux.cc',
        'glue/plugins/plugin_list_mac.mm',
        'glue/plugins/plugin_list_win.cc',
        'glue/plugins/plugin_stream.cc',
        'glue/plugins/plugin_stream.h',
        'glue/plugins/plugin_stream_posix.cc',
        'glue/plugins/plugin_stream_url.cc',
        'glue/plugins/plugin_stream_url.h',
        'glue/plugins/plugin_stream_win.cc',
        'glue/plugins/plugin_string_stream.cc',
        'glue/plugins/plugin_string_stream.h',
        'glue/plugins/plugin_stubs.cc',
        'glue/plugins/webplugin_2d_device_delegate.h',
        'glue/plugins/webplugin_3d_device_delegate.h',
        'glue/plugins/webplugin_delegate_impl.cc',
        'glue/plugins/webplugin_delegate_impl.h',
        'glue/plugins/webplugin_delegate_impl_gtk.cc',
        'glue/plugins/webplugin_delegate_impl_mac.mm',
        'glue/plugins/webplugin_delegate_impl_win.cc',
        'glue/alt_error_page_resource_fetcher.cc',
        'glue/alt_error_page_resource_fetcher.h',
        'glue/context_menu.h',
        'glue/cpp_binding_example.cc',
        'glue/cpp_binding_example.h',
        'glue/cpp_bound_class.cc',
        'glue/cpp_bound_class.h',
        'glue/cpp_variant.cc',
        'glue/cpp_variant.h',
        'glue/dom_operations.cc',
        'glue/dom_operations.h',
        'glue/form_data.h',
        'glue/form_field.cc',
        'glue/form_field.h',
        'glue/form_field_values.cc',
        'glue/form_field_values.h',
        'glue/ftp_directory_listing_response_delegate.cc',
        'glue/ftp_directory_listing_response_delegate.h',
        'glue/glue_serialize.cc',
        'glue/glue_serialize.h',
        'glue/glue_util.cc',
        'glue/glue_util.h',
        'glue/image_decoder.cc',
        'glue/image_decoder.h',
        'glue/image_resource_fetcher.cc',
        'glue/image_resource_fetcher.h',
        'glue/multipart_response_delegate.cc',
        'glue/multipart_response_delegate.h',
        'glue/npruntime_util.cc',
        'glue/npruntime_util.h',
        'glue/password_form.h',
        'glue/password_form_dom_manager.cc',
        'glue/password_form_dom_manager.h',
        'glue/resource_fetcher.cc',
        'glue/resource_fetcher.h',
        'glue/resource_loader_bridge.cc',
        'glue/resource_loader_bridge.h',
        'glue/resource_type.h',
        'glue/scoped_clipboard_writer_glue.h',
        'glue/simple_webmimeregistry_impl.cc',
        'glue/simple_webmimeregistry_impl.h',
        'glue/webaccessibility.cc',
        'glue/webaccessibility.h',
        'glue/webclipboard_impl.cc',
        'glue/webclipboard_impl.h',
        'glue/webcookie.h',
        'glue/webcursor.cc',
        'glue/webcursor.h',
        'glue/webcursor_gtk.cc',
        'glue/webcursor_gtk_data.h',
        'glue/webcursor_mac.mm',
        'glue/webcursor_win.cc',
        'glue/webdevtoolsagent_impl.cc',
        'glue/webdevtoolsagent_impl.h',
        'glue/webdevtoolsfrontend_impl.cc',
        'glue/webdevtoolsfrontend_impl.h',
        'glue/webdropdata.cc',
        'glue/webdropdata_win.cc',
        'glue/webdropdata.h',
        'glue/webkit_glue.cc',
        'glue/webkit_glue.h',
        'glue/webkitclient_impl.cc',
        'glue/webkitclient_impl.h',
        'glue/webmediaplayer_impl.h',
        'glue/webmediaplayer_impl.cc',
        'glue/webmenuitem.h',
        'glue/webmenurunner_mac.h',
        'glue/webmenurunner_mac.mm',
        'glue/webpasswordautocompletelistener_impl.cc',
        'glue/webpasswordautocompletelistener_impl.h',
        'glue/webplugin.h',
        'glue/webplugin_delegate.h',
        'glue/webplugin_impl.cc',
        'glue/webplugin_impl.h',
        'glue/webplugininfo.h',
        'glue/webpreferences.cc',
        'glue/webpreferences.h',
        'glue/websocketstreamhandle_bridge.h',
        'glue/websocketstreamhandle_delegate.h',
        'glue/websocketstreamhandle_impl.cc',
        'glue/websocketstreamhandle_impl.h',
        'glue/webthemeengine_impl_win.cc',
        'glue/weburlloader_impl.cc',
        'glue/weburlloader_impl.h',
        'glue/window_open_disposition.h',
        'glue/window_open_disposition.cc',

        # These files used to be built in the webcore target, but moved here
        # since part of glue.
        'extensions/v8/benchmarking_extension.cc',
        'extensions/v8/benchmarking_extension.h',
        'extensions/v8/gc_extension.cc',
        'extensions/v8/gc_extension.h',
        'extensions/v8/gears_extension.cc',
        'extensions/v8/gears_extension.h',
        'extensions/v8/heap_profiler_extension.cc',
        'extensions/v8/heap_profiler_extension.h',
        'extensions/v8/interval_extension.cc',
        'extensions/v8/interval_extension.h',
        'extensions/v8/playback_extension.cc',
        'extensions/v8/playback_extension.h',
        'extensions/v8/profiler_extension.cc',
        'extensions/v8/profiler_extension.h',

      ],
      # When glue is a dependency, it needs to be a hard dependency.
      # Dependents may rely on files generated by this target or one of its
      # own hard dependencies.
      'hard_dependency': 1,
      'conditions': [
        ['OS=="linux" or OS=="freebsd"', {
          'dependencies': [
            '../build/linux/system.gyp:gtk',
            '../base/base.gyp:linux_versioninfo',
          ],
          'sources!': [
            'glue/plugins/plugin_stubs.cc',
          ],
        }, { # else: OS!="linux" and OS!="freebsd"
          'sources/': [['exclude', '_(linux|gtk)(_data)?\\.cc$'],
                       ['exclude', r'/gtk_']],
        }],
        ['OS!="mac"', {
          'sources/': [['exclude', '_mac\\.(cc|mm)$']],
        }],
        ['OS=="win" or (OS=="linux" and target_arch!="arm")', {
          'dependencies': [
            '../gpu/gpu.gyp:gpu_plugin',
          ],
        }],
        ['OS!="win"', {
          'sources/': [['exclude', '_win\\.cc$']],
          'sources!': [
            # These files are Windows-only now but may be ported to other
            # platforms.
            'glue/webaccessibility.cc',
            'glue/webaccessibility.h',
            'glue/webthemeengine_impl_win.cc',
          ],
        }, {  # else: OS=="win"
          'sources/': [['exclude', '_posix\\.cc$']],
          'include_dirs': [
            '../chrome/third_party/wtl/include',
          ],
          'dependencies': [
            '../build/win/system.gyp:cygwin',
            'default_plugin/default_plugin.gyp:default_plugin',
          ],
          'sources!': [
            'glue/plugins/plugin_stubs.cc',
          ],
        }],
      ],
    },
    {
      'target_name': 'inspector_resources',
      'type': 'none',
      'msvs_guid': '5330F8EE-00F5-D65C-166E-E3150171055D',
      'dependencies': [
        'devtools_html',
      ],
      'conditions': [
        ['debug_devtools==0', {
          'dependencies+': [
            'concatenated_devtools_js',
          ],
        }],
      ],
      'copies': [
        {
          'destination': '<(PRODUCT_DIR)/resources/inspector',
          'files': [
            '<@(devtools_files)',
            '<@(webinspector_files)',
          ],
          'conditions': [
            ['debug_devtools==0', {
              'files/': [['exclude', '\\.js$']],
            }],
          ],
        },
        {
          'destination': '<(PRODUCT_DIR)/resources/inspector/Images',
          'files': [

            '<@(webinspector_image_files)',

            'glue/devtools/js/Images/segmentChromium.png',
            'glue/devtools/js/Images/segmentHoverChromium.png',
            'glue/devtools/js/Images/segmentHoverEndChromium.png',
            'glue/devtools/js/Images/segmentSelectedChromium.png',
            'glue/devtools/js/Images/segmentSelectedEndChromium.png',
            'glue/devtools/js/Images/statusbarBackgroundChromium.png',
            'glue/devtools/js/Images/statusbarBottomBackgroundChromium.png',
            'glue/devtools/js/Images/statusbarButtonsChromium.png',
            'glue/devtools/js/Images/statusbarMenuButtonChromium.png',
            'glue/devtools/js/Images/statusbarMenuButtonSelectedChromium.png',
          ],
        },
      ],
    },
    {
      'target_name': 'devtools_html',
      'type': 'none',
      'msvs_guid': '9BE5D4D5-E800-44F9-B6C0-27DF15A9D817',
      'sources': [
        '<(PRODUCT_DIR)/resources/inspector/devtools.html',
      ],
      'actions': [
        {
          'action_name': 'devtools_html',
          'inputs': [
            'build/generate_devtools_html.py',
            # See issue 29695: webkit.gyp is a source file for devtools.html.
            'webkit.gyp',
            '../third_party/WebKit/WebCore/inspector/front-end/inspector.html',
          ],
          'outputs': [
            '<(PRODUCT_DIR)/resources/inspector/devtools.html',
          ],
          'action': ['python', '<@(_inputs)', '<@(_outputs)', '<@(devtools_files)'],
        },
      ],
    },
    {
      'target_name': 'concatenated_devtools_js',
      'type': 'none',
      'msvs_guid': '8CCFDF4A-B702-4988-9207-623D1477D3E7',
      'dependencies': [
        'devtools_html',
      ],
      'sources': [
        '<(PRODUCT_DIR)/resources/inspector/devtools.js',
      ],
      'actions': [
        {
          'action_name': 'concatenate_devtools_js',
          'inputs': [
            'build/concatenate_js_files.py',
            '<(PRODUCT_DIR)/resources/inspector/devtools.html',
            '<@(webinspector_files)',
            '<@(devtools_files)',
          ],
          'outputs': [
            '<(PRODUCT_DIR)/resources/inspector/devtools.js',
          ],
          'action': ['python', '<@(_inputs)', '<@(_outputs)'],
        },
      ],
    },
  ], # targets
}

# Local Variables:
# tab-width:2
# indent-tabs-mode:nil
# End:
# vim: set expandtab tabstop=2 shiftwidth=2:
