# Copyright 2015 Google Inc.
#
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
{
  'variables': {
    'skia_warnings_as_errors': 0,
    'conditions': [
      [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris"]', {
        # Use the systemwide Qt libs by default
        'variables': {
          'qt_sdk%': '/usr',
        },
        'qt_sdk': '<(qt_sdk)',
        'qt_moc%': 'moc',
        'qt_includes': [
          '<(qt_sdk)/include',
          '<(qt_sdk)/include/QtCore',
          '<(qt_sdk)/include/QtGui',
          '<(qt_sdk)/include/QtOpenGL',

          # Systemwide Qt libs are not contained under a single tree,
          # so we're adding package-qualified paths as a fallback.
          '<(qt_sdk)/include/qt4',
          '<(qt_sdk)/include/qt4/QtCore',
          '<(qt_sdk)/include/qt4/QtGui',
          '<(qt_sdk)/include/qt4/QtOpenGL',
        ],
        'qt_libs': [
          '-lQtCore',
          '-lQtGui',
          '-lQtOpenGL'
        ],
      }],
      [ 'skia_os == "mac"', {
        # Use the systemwide Qt libs by default
        'variables': {
          'qt_sdk%': '/Library/Frameworks',
        },
        'qt_sdk': '<(qt_sdk)',
        'qt_moc%': 'moc',
        'qt_includes': [
          '<(qt_sdk)/QtCore.framework/Headers/',
          '<(qt_sdk)/QtGui.framework/Headers/',
          '<(qt_sdk)/QtOpenGL.framework/Headers/',
        ],
        'qt_libs': [
          '<(qt_sdk)/QtCore.framework',
          '<(qt_sdk)/QtGui.framework',
          '<(qt_sdk)/QtOpenGL.framework',
        ],
      }],
      [ 'skia_os == "win"', {
        'variables': {
          # This is the default location for the version of Qt current on 10/11/12
          'qt_sdk%': 'C:/Qt/4.8.6/',
        },
        'qt_sdk': '<(qt_sdk)',
        'qt_moc%': '<(qt_sdk)/bin/moc',
        'qt_includes': [
          '<(qt_sdk)/include',
          '<(qt_sdk)/include/QtCore',
          '<(qt_sdk)/include/QtGui',
          '<(qt_sdk)/include/QtOpenGL',
        ],
        'qt_libs': [
          '<(qt_sdk)/lib/QtCore4.lib',
          '<(qt_sdk)/lib/QtGui4.lib',
          '<(qt_sdk)/lib/QtOpenGL4.lib',
        ],
      }],
    ],
    'moc_src_dir': '../debugger/QT',
    'moc_gen_dir': '<(SHARED_INTERMEDIATE_DIR)/debugger/QT',
  },
  'targets': [
    {
      'target_name': 'debugger',
      'type': 'executable',
      'mac_bundle': 1,
      'mac_framework_dirs': [
        '/Library/Frameworks',
      ],
      'include_dirs' : [
        '../include/private',
        '../src/core',
        '../tools/debugger',
        '../debugger',      # To pull SkDebugger.h
        '../src/gpu',       # To pull gl/GrGLUtil.h
        '../src/ports',     # To pull SkFontDescriptor.h
        '../bench',
        '../tools',
        '../debugger/QT',   # For all the QT UI Goodies
        '<@(qt_includes)',
      ],
      'sources': [
        '../debugger/SkDebugger.cpp',
        '../tools/debugger/SkDebugCanvas.h',
        '../tools/debugger/SkDebugCanvas.cpp',
        '../tools/debugger/SkDrawCommand.h',
        '../tools/debugger/SkDrawCommand.cpp',
        '../tools/debugger/SkJsonWriteBuffer.h',
        '../tools/debugger/SkJsonWriteBuffer.cpp',
        '../tools/debugger/SkObjectParser.h',
        '../tools/debugger/SkObjectParser.cpp',
        '../tools/debugger/SkOverdrawMode.h',
        '../tools/debugger/SkOverdrawMode.cpp',
        '../debugger/debuggermain.cpp',
        '../debugger/QT/SkDebuggerGUI.cpp',
        '../debugger/QT/SkDebuggerGUI.h',
        '../debugger/QT/SkDrawCommandGeometryWidget.h',
        '../debugger/QT/SkDrawCommandGeometryWidget.cpp',
        '../debugger/QT/SkCanvasWidget.cpp',
        '../debugger/QT/SkCanvasWidget.h',
        '../debugger/QT/SkInspectorWidget.h',
        '../debugger/QT/SkInspectorWidget.cpp',
        '../debugger/QT/SkListWidget.h',
        '../debugger/QT/SkListWidget.cpp',
        '../debugger/QT/SkSettingsWidget.h',
        '../debugger/QT/SkSettingsWidget.cpp',
        '../debugger/QT/SkGLWidget.h',
        '../debugger/QT/SkGLWidget.cpp',
        '../debugger/QT/SkRasterWidget.h',
        '../debugger/QT/SkRasterWidget.cpp',

        # To update this file edit SkIcons.qrc and rerun rcc to generate cpp
        '../debugger/QT/qrc_SkIcons.cpp',

        # Generated MOC files
        '<(moc_gen_dir)/moc_SkCanvasWidget.cpp',
        '<(moc_gen_dir)/moc_SkDebuggerGUI.cpp',
        '<(moc_gen_dir)/moc_SkDrawCommandGeometryWidget.cpp',
        '<(moc_gen_dir)/moc_SkInspectorWidget.cpp',
        '<(moc_gen_dir)/moc_SkSettingsWidget.cpp',
        '<(moc_gen_dir)/moc_SkRasterWidget.cpp',
        '<(moc_gen_dir)/moc_SkGLWidget.cpp',
      ],
      'dependencies': [
        'debugger_qt_mocs',
        'skia_lib.gyp:skia_lib',
        'jsoncpp.gyp:jsoncpp',
        'libpng.gyp:libpng',
        'tools.gyp:picture_utils',
        'tools.gyp:url_data_manager',
      ],
      'cflags': [
        # Clang gets confused by QWeakPointer, see http://llvm.org/bugs/show_bug.cgi?id=13127
        '-Wno-uninitialized',
      ],
      'link_settings': {
        'libraries': [
          '<@(qt_libs)',
        ],
      },
    },
    {
      'target_name': 'debugger_qt_mocs',
      'type': 'none',
      'sources': [
        '<(moc_src_dir)/SkCanvasWidget.h',
        '<(moc_src_dir)/SkDebuggerGUI.h',
        '<(moc_src_dir)/SkDrawCommandGeometryWidget.h',
        '<(moc_src_dir)/SkInspectorWidget.h',
        '<(moc_src_dir)/SkSettingsWidget.h',
        '<(moc_src_dir)/SkRasterWidget.h',
        '<(moc_src_dir)/SkGLWidget.h',
      ],
      'rules': [
        {
          'rule_name': 'generate_moc',
          'extension': 'h',
          'outputs': [ '<(moc_gen_dir)/moc_<(RULE_INPUT_ROOT).cpp' ],
          'action': [ '<(qt_moc)', '-DSK_SUPPORT_GPU=<(skia_gpu)',
                      '<(RULE_INPUT_PATH)',
                      '-o', '<(moc_gen_dir)/moc_<(RULE_INPUT_ROOT).cpp' ],
          'message': 'Generating <(RULE_INPUT_ROOT).cpp.',
        },
      ],
    },
  ],
}
