1 # GYP file to build various tools. 2 # 3 # To build on Linux: 4 # ./gyp_skia tools.gyp && make tools 5 # 6 { 7 'includes': [ 8 'apptype_console.gypi', 9 ], 10 'targets': [ 11 { 12 # Build all executable targets defined below. 13 'target_name': 'tools', 14 'type': 'none', 15 'dependencies': [ 16 'bbh_shootout', 17 'bench_pictures', 18 'bench_record', 19 'bench_playback', 20 'dump_record', 21 'filter', 22 'gpuveto', 23 'lua_app', 24 'lua_pictures', 25 'pinspect', 26 'render_pdfs', 27 'render_pictures', 28 'skdiff', 29 'skhello', 30 'skpdiff', 31 'skpinfo', 32 'skpmaker', 33 'skimage', 34 'test_image_decoder', 35 ], 36 'conditions': [ 37 ['skia_shared_lib', 38 { 39 'dependencies': [ 40 'sklua', # This can only be built if skia is built as a shared library 41 ], 42 }, 43 ], 44 ], 45 }, 46 { # This would go in gm.gyp, but it's also used by skimage below. 47 'target_name': 'gm_expectations', 48 'type': 'static_library', 49 'include_dirs' : [ '../src/utils/' ], 50 'sources': [ 51 '../gm/gm_expectations.cpp', 52 '../tools/sk_tool_utils.cpp', 53 ], 54 'dependencies': [ 55 'jsoncpp.gyp:jsoncpp', 56 'skia_lib.gyp:skia_lib', 57 ], 58 'direct_dependent_settings': { 59 'include_dirs': [ '../gm/' ], 60 }, 61 }, 62 { 63 'target_name': 'crash_handler', 64 'type': 'static_library', 65 'sources': [ '../tools/CrashHandler.cpp' ], 66 'dependencies': [ 'skia_lib.gyp:skia_lib' ], 67 'direct_dependent_settings': { 68 'include_dirs': [ '../tools' ], 69 }, 70 'all_dependent_settings': { 71 'msvs_settings': { 72 'VCLinkerTool': { 73 'AdditionalDependencies': [ 'Dbghelp.lib' ], 74 } 75 }, 76 } 77 }, 78 { 79 'target_name': 'resources', 80 'type': 'static_library', 81 'sources': [ '../tools/Resources.cpp' ], 82 'dependencies': [ 83 'flags.gyp:flags', 84 'skia_lib.gyp:skia_lib', 85 ], 86 'direct_dependent_settings': { 87 'include_dirs': [ '../tools/', ], 88 }, 89 }, 90 { 91 'target_name' : 'timer', 92 'type': 'static_library', 93 'sources': [ 94 '../tools/timer/Timer.cpp', 95 '../tools/timer/TimerData.cpp', 96 ], 97 'include_dirs': [ 98 '../src/core', 99 '../src/gpu', 100 ], 101 'direct_dependent_settings': { 102 'include_dirs': ['../tools/timer'], 103 }, 104 'dependencies': [ 105 'skia_lib.gyp:skia_lib', 106 'jsoncpp.gyp:jsoncpp', 107 ], 108 'conditions': [ 109 ['skia_gpu == 1', { 110 'sources': [ '../tools/timer/GpuTimer.cpp' ], 111 }], 112 [ 'skia_os in ["mac", "ios"]', { 113 'sources': [ '../tools/timer/SysTimer_mach.cpp' ], 114 }], 115 [ 'skia_os == "win"', { 116 'sources': [ '../tools/timer/SysTimer_windows.cpp' ], 117 }], 118 [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "android", "chromeos"]', { 119 'sources': [ '../tools/timer/SysTimer_posix.cpp' ], 120 }], 121 [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "chromeos"]', { 122 'link_settings': { 'libraries': [ '-lrt' ] }, 123 }], 124 ], 125 }, 126 { 127 'target_name': 'skdiff', 128 'type': 'executable', 129 'sources': [ 130 '../tools/skdiff.cpp', 131 '../tools/skdiff.h', 132 '../tools/skdiff_html.cpp', 133 '../tools/skdiff_html.h', 134 '../tools/skdiff_main.cpp', 135 '../tools/skdiff_utils.cpp', 136 '../tools/skdiff_utils.h', 137 ], 138 'dependencies': [ 139 'skia_lib.gyp:skia_lib', 140 ], 141 }, 142 { 143 'target_name': 'skpdiff', 144 'type': 'executable', 145 'sources': [ 146 '../tools/skpdiff/skpdiff_main.cpp', 147 '../tools/skpdiff/SkDiffContext.cpp', 148 '../tools/skpdiff/SkImageDiffer.cpp', 149 '../tools/skpdiff/SkPMetric.cpp', 150 '../tools/skpdiff/skpdiff_util.cpp', 151 '../tools/flags/SkCommandLineFlags.cpp', 152 ], 153 'include_dirs': [ 154 '../tools/flags', 155 '../src/core/', # needed for SkTLList.h 156 ], 157 'dependencies': [ 158 'skia_lib.gyp:skia_lib', 159 ], 160 'cflags': [ 161 '-O3', 162 ], 163 'conditions': [ 164 [ 'skia_os in ["linux", "freebsd", "openbsd", "solaris", "chromeos"]', { 165 'link_settings': { 166 'libraries': [ 167 '-lrt', 168 ], 169 }, 170 }], 171 ['skia_opencl', { 172 'sources': [ 173 '../tools/skpdiff/SkCLImageDiffer.cpp', 174 '../tools/skpdiff/SkDifferentPixelsMetric_opencl.cpp', 175 ], 176 'conditions': [ 177 [ 'skia_os == "mac"', { 178 'link_settings': { 179 'libraries': [ 180 '$(SDKROOT)/System/Library/Frameworks/OpenCL.framework', 181 ] 182 } 183 }, { 184 'link_settings': { 185 'libraries': [ 186 '-lOpenCL', 187 ], 188 }, 189 }], 190 ], 191 }, { # !skia_opencl 192 'sources': [ 193 '../tools/skpdiff/SkDifferentPixelsMetric_cpu.cpp', 194 ], 195 }], 196 ], 197 }, 198 { 199 'target_name': 'skpmaker', 200 'type': 'executable', 201 'sources': [ 202 '../tools/skpmaker.cpp', 203 ], 204 'include_dirs': [ 205 '../src/core', 206 ], 207 'dependencies': [ 208 'flags.gyp:flags', 209 'skia_lib.gyp:skia_lib', 210 ], 211 }, 212 { 213 'target_name': 'skimagediff', 214 'type': 'executable', 215 'sources': [ 216 '../tools/skdiff.cpp', 217 '../tools/skdiff.h', 218 '../tools/skdiff_html.cpp', 219 '../tools/skdiff_html.h', 220 '../tools/skdiff_image.cpp', 221 '../tools/skdiff_utils.cpp', 222 '../tools/skdiff_utils.h', 223 ], 224 'dependencies': [ 225 'skia_lib.gyp:skia_lib', 226 ], 227 }, 228 { 229 'target_name': 'skhello', 230 'type': 'executable', 231 'dependencies': [ 232 'skia_lib.gyp:skia_lib', 233 ], 234 'conditions': [ 235 [ 'skia_os == "nacl"', { 236 'sources': [ 237 '../platform_tools/nacl/src/nacl_hello.cpp', 238 ], 239 }, { 240 'sources': [ 241 '../tools/skhello.cpp', 242 ], 243 'dependencies': [ 244 'flags.gyp:flags', 245 'pdf.gyp:pdf', 246 ], 247 }], 248 ], 249 }, 250 { 251 'target_name': 'skimage', 252 'type': 'executable', 253 'sources': [ 254 '../tools/skimage_main.cpp', 255 ], 256 'include_dirs': [ 257 # For SkBitmapHasher.h 258 '../src/utils/', 259 ], 260 'dependencies': [ 261 'gm_expectations', 262 'flags.gyp:flags', 263 'jsoncpp.gyp:jsoncpp', 264 'skia_lib.gyp:skia_lib', 265 ], 266 }, 267 { 268 'target_name': 'skpinfo', 269 'type': 'executable', 270 'sources': [ 271 '../tools/skpinfo.cpp', 272 ], 273 'include_dirs': [ 274 '../tools/flags', 275 '../src/core/', 276 ], 277 'dependencies': [ 278 'flags.gyp:flags', 279 'skia_lib.gyp:skia_lib', 280 ], 281 }, 282 { 283 'target_name': 'gpuveto', 284 'type': 'executable', 285 'sources': [ 286 '../tools/gpuveto.cpp', 287 '../tools/LazyDecodeBitmap.cpp', 288 ], 289 'include_dirs': [ 290 '../src/core/', 291 '../src/images', 292 '../src/lazy', 293 '../tools/flags', 294 ], 295 'dependencies': [ 296 'flags.gyp:flags', 297 'skia_lib.gyp:skia_lib', 298 ], 299 }, 300 { 301 'target_name': 'lua_app', 302 'type': 'executable', 303 'sources': [ 304 '../tools/lua/lua_app.cpp', 305 '../src/utils/SkLua.cpp', 306 ], 307 'include_dirs': [ 308 # Lua exposes GrReduceClip which in turn requires src/core for SkTLList 309 '../src/gpu/', 310 '../src/core/', 311 ], 312 'dependencies': [ 313 'effects.gyp:effects', 314 'images.gyp:images', 315 'lua.gyp:lua', 316 'pdf.gyp:pdf', 317 'ports.gyp:ports', 318 'skia_lib.gyp:skia_lib', 319 ], 320 }, 321 { 322 'target_name': 'lua_pictures', 323 'type': 'executable', 324 'sources': [ 325 '../tools/lua/lua_pictures.cpp', 326 '../src/utils/SkLuaCanvas.cpp', 327 '../src/utils/SkLua.cpp', 328 ], 329 'include_dirs': [ 330 # Lua exposes GrReduceClip which in turn requires src/core for SkTLList 331 '../src/gpu/', 332 '../src/core/', 333 ], 334 'dependencies': [ 335 'effects.gyp:effects', 336 'flags.gyp:flags', 337 'images.gyp:images', 338 'lua.gyp:lua', 339 'tools.gyp:picture_renderer', 340 'tools.gyp:picture_utils', 341 'pdf.gyp:pdf', 342 'ports.gyp:ports', 343 'skia_lib.gyp:skia_lib', 344 ], 345 }, 346 { 347 'target_name': 'render_pictures', 348 'type': 'executable', 349 'sources': [ 350 '../tools/render_pictures_main.cpp', 351 ], 352 'include_dirs': [ 353 '../src/core', 354 '../src/images', 355 '../src/lazy', 356 '../src/pipe/utils/', 357 ], 358 'dependencies': [ 359 'flags.gyp:flags', 360 'skia_lib.gyp:skia_lib', 361 'tools.gyp:picture_renderer', 362 'tools.gyp:picture_utils', 363 ], 364 }, 365 { 366 'target_name': 'bench_pictures', 367 'type': 'executable', 368 'sources': [ 369 '../bench/BenchLogger.cpp', 370 '../bench/BenchLogger.h', 371 '../bench/ResultsWriter.cpp', 372 '../tools/PictureBenchmark.cpp', 373 '../tools/PictureResultsWriter.h', 374 '../tools/bench_pictures_main.cpp', 375 ], 376 'include_dirs': [ 377 '../src/core/', 378 '../bench', 379 '../src/lazy/', 380 ], 381 'dependencies': [ 382 'timer', 383 'crash_handler', 384 'flags.gyp:flags', 385 'jsoncpp.gyp:jsoncpp', 386 'skia_lib.gyp:skia_lib', 387 'tools.gyp:picture_renderer', 388 'tools.gyp:picture_utils', 389 ], 390 }, 391 { 392 'target_name': 'bench_record', 393 'type': 'executable', 394 'sources': [ 395 '../tools/bench_record.cpp', 396 '../tools/LazyDecodeBitmap.cpp', 397 ], 398 'include_dirs': [ 399 '../src/core/', 400 '../src/images', 401 '../src/lazy', 402 ], 403 'dependencies': [ 404 'timer', 405 'flags.gyp:flags', 406 'skia_lib.gyp:skia_lib', 407 ], 408 }, 409 { 410 'target_name': 'bench_playback', 411 'type': 'executable', 412 'sources': [ 413 '../tools/bench_playback.cpp', 414 ], 415 'include_dirs': [ 416 '../src/core/', 417 '../src/images', 418 ], 419 'dependencies': [ 420 'timer', 421 'flags.gyp:flags', 422 'skia_lib.gyp:skia_lib', 423 ], 424 }, 425 { 426 'target_name': 'dump_record', 427 'type': 'executable', 428 'sources': [ 429 '../tools/dump_record.cpp', 430 '../tools/DumpRecord.cpp', 431 '../tools/LazyDecodeBitmap.cpp', 432 ], 433 'include_dirs': [ 434 '../src/core/', 435 '../src/images', 436 '../src/lazy', 437 ], 438 'dependencies': [ 439 'timer', 440 'flags.gyp:flags', 441 'skia_lib.gyp:skia_lib', 442 ], 443 }, 444 { 445 'target_name': 'picture_renderer', 446 'type': 'static_library', 447 'sources': [ 448 '../tools/image_expectations.h', 449 '../tools/image_expectations.cpp', 450 '../tools/LazyDecodeBitmap.cpp', 451 '../tools/PictureRenderer.h', 452 '../tools/PictureRenderer.cpp', 453 '../tools/PictureRenderingFlags.h', 454 '../tools/PictureRenderingFlags.cpp', 455 '../tools/CopyTilesRenderer.h', 456 '../tools/CopyTilesRenderer.cpp', 457 '../src/pipe/utils/SamplePipeControllers.h', 458 '../src/pipe/utils/SamplePipeControllers.cpp', 459 ], 460 'include_dirs': [ 461 '../src/core', 462 '../src/images', 463 '../src/lazy', 464 '../src/pipe/utils/', 465 '../src/utils/', 466 ], 467 'direct_dependent_settings': { 468 'include_dirs': [ 469 # needed for JSON headers used within image_expectations.h 470 '../third_party/externals/jsoncpp-chromium/overrides/include/', 471 '../third_party/externals/jsoncpp/include/', 472 ], 473 }, 474 'dependencies': [ 475 'flags.gyp:flags', 476 'jsoncpp.gyp:jsoncpp', 477 'skia_lib.gyp:skia_lib', 478 'tools.gyp:picture_utils', 479 ], 480 'conditions': [ 481 ['skia_gpu == 1', 482 { 483 'include_dirs' : [ 484 '../src/gpu', 485 ], 486 'dependencies': [ 487 'gputest.gyp:skgputest', 488 ], 489 }, 490 ], 491 ], 492 }, 493 { 494 'target_name': 'render_pdfs', 495 'type': 'executable', 496 'sources': [ 497 '../tools/render_pdfs_main.cpp', 498 '../tools/PdfRenderer.cpp', 499 '../tools/PdfRenderer.h', 500 ], 501 'include_dirs': [ 502 '../src/pipe/utils/', 503 '../src/utils/', 504 ], 505 'dependencies': [ 506 'pdf.gyp:pdf', 507 'skia_lib.gyp:skia_lib', 508 'tools.gyp:picture_utils', 509 ], 510 'conditions': [ 511 ['skia_win_debuggers_path and skia_os == "win"', 512 { 513 'dependencies': [ 514 'tools.gyp:win_dbghelp', 515 ], 516 }, 517 ], 518 # VS static libraries don't have a linker option. We must set a global 519 # project linker option, or add it to each executable. 520 ['skia_win_debuggers_path and skia_os == "win" and ' 521 'skia_arch_width == 64', 522 { 523 'msvs_settings': { 524 'VCLinkerTool': { 525 'AdditionalDependencies': [ 526 '<(skia_win_debuggers_path)/x64/DbgHelp.lib', 527 ], 528 }, 529 }, 530 }, 531 ], 532 ['skia_win_debuggers_path and skia_os == "win" and ' 533 'skia_arch_width == 32', 534 { 535 'msvs_settings': { 536 'VCLinkerTool': { 537 'AdditionalDependencies': [ 538 '<(skia_win_debuggers_path)/DbgHelp.lib', 539 ], 540 }, 541 }, 542 }, 543 ], 544 ], 545 }, 546 { 547 'target_name': 'picture_utils', 548 'type': 'static_library', 549 'sources': [ 550 '../tools/picture_utils.cpp', 551 '../tools/picture_utils.h', 552 ], 553 'dependencies': [ 554 'skia_lib.gyp:skia_lib', 555 ], 556 'direct_dependent_settings': { 557 'include_dirs': [ 558 '../tools/', 559 ], 560 }, 561 }, 562 { 563 'target_name': 'pinspect', 564 'type': 'executable', 565 'sources': [ 566 '../tools/pinspect.cpp', 567 ], 568 'dependencies': [ 569 'flags.gyp:flags', 570 'skia_lib.gyp:skia_lib', 571 'tools.gyp:picture_renderer', 572 ], 573 }, 574 { 575 'target_name': 'bbh_shootout', 576 'type': 'executable', 577 'include_dirs': [ 578 '../bench', 579 '../tools/' 580 ], 581 'sources': [ 582 '../tools/bbh_shootout.cpp', 583 584 # Bench code: 585 ], 586 'dependencies': [ 587 'timer', 588 'flags.gyp:flags', 589 'skia_lib.gyp:skia_lib', 590 'tools.gyp:picture_renderer', 591 'tools.gyp:picture_utils', 592 ], 593 }, 594 { 595 'target_name': 'filter', 596 'type': 'executable', 597 'include_dirs' : [ 598 '../src/core', 599 '../src/utils/debugger', 600 ], 601 'sources': [ 602 '../tools/filtermain.cpp', 603 '../src/utils/debugger/SkDrawCommand.h', 604 '../src/utils/debugger/SkDrawCommand.cpp', 605 '../src/utils/debugger/SkDebugCanvas.h', 606 '../src/utils/debugger/SkDebugCanvas.cpp', 607 '../src/utils/debugger/SkObjectParser.h', 608 '../src/utils/debugger/SkObjectParser.cpp', 609 ], 610 'dependencies': [ 611 'skia_lib.gyp:skia_lib', 612 'tools.gyp:picture_utils', 613 ], 614 }, 615 { 616 'target_name': 'test_image_decoder', 617 'type': 'executable', 618 'sources': [ 619 '../tools/test_image_decoder.cpp', 620 ], 621 'dependencies': [ 622 'skia_lib.gyp:skia_lib', 623 ], 624 }, 625 ], 626 'conditions': [ 627 ['skia_shared_lib', 628 { 629 'targets': [ 630 { 631 'target_name': 'sklua', 632 'product_name': 'skia', 633 'product_prefix': '', 634 'product_dir': '<(PRODUCT_DIR)/', 635 'type': 'shared_library', 636 'sources': [ 637 '../src/utils/SkLuaCanvas.cpp', 638 '../src/utils/SkLua.cpp', 639 ], 640 'include_dirs': [ 641 # Lua exposes GrReduceClip which in turn requires src/core for SkTLList 642 '../src/gpu/', 643 '../src/core/', 644 '../third_party/lua/src/', 645 ], 646 'dependencies': [ 647 'lua.gyp:lua', 648 'pdf.gyp:pdf', 649 'skia_lib.gyp:skia_lib', 650 ], 651 'conditions': [ 652 ['skia_os != "win"', 653 { 654 'ldflags': [ 655 '-Wl,-rpath,\$$ORIGIN,--enable-new-dtags', 656 ], 657 }, 658 ], 659 ], 660 }, 661 ], 662 }, 663 ], 664 ['skia_win_debuggers_path and skia_os == "win"', 665 { 666 'targets': [ 667 { 668 'target_name': 'win_dbghelp', 669 'type': 'static_library', 670 'defines': [ 671 'SK_CDB_PATH="<(skia_win_debuggers_path)"', 672 ], 673 'sources': [ 674 '../tools/win_dbghelp.h', 675 '../tools/win_dbghelp.cpp', 676 ], 677 }, 678 ], 679 }, 680 ], 681 ['skia_os == "win"', 682 { 683 'targets': [ 684 { 685 'target_name': 'win_lcid', 686 'type': 'executable', 687 'sources': [ 688 '../tools/win_lcid.cpp', 689 ], 690 }, 691 ], 692 }, 693 ], 694 ], 695 } 696