| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 | {  'conditions': [    ['OS=="win"', {      'variables': {        'GTK_Root%': 'C:/GTK',  # Set the location of GTK all-in-one bundle        'with_jpeg%': 'false',        'with_gif%': 'false',        'with_rsvg%': 'false',        'variables': { # Nest jpeg_root to evaluate it before with_jpeg          'jpeg_root%': '<!(node ./util/win_jpeg_lookup)'        },        'jpeg_root%': '<(jpeg_root)', # Take value of nested variable        'conditions': [          ['jpeg_root==""', {            'with_jpeg%': 'false'          }, {            'with_jpeg%': 'true'          }]        ]      }    }, {  # 'OS!="win"'      'variables': {        'with_jpeg%': '<!(node ./util/has_lib.js jpeg)',        'with_gif%': '<!(node ./util/has_lib.js gif)',        'with_rsvg%': '<!(node ./util/has_lib.js rsvg)'      }    }]  ],  'targets': [    {      'target_name': 'canvas-postbuild',      'dependencies': ['canvas'],      'conditions': [        ['OS=="win"', {          'copies': [{            'destination': '<(PRODUCT_DIR)',            'files': [              '<(GTK_Root)/bin/zlib1.dll',              '<(GTK_Root)/bin/libintl-8.dll',              '<(GTK_Root)/bin/libpng14-14.dll',              '<(GTK_Root)/bin/libpangocairo-1.0-0.dll',              '<(GTK_Root)/bin/libpango-1.0-0.dll',              '<(GTK_Root)/bin/libpangoft2-1.0-0.dll',              '<(GTK_Root)/bin/libpangowin32-1.0-0.dll',              '<(GTK_Root)/bin/libcairo-2.dll',              '<(GTK_Root)/bin/libfontconfig-1.dll',              '<(GTK_Root)/bin/libfreetype-6.dll',              '<(GTK_Root)/bin/libglib-2.0-0.dll',              '<(GTK_Root)/bin/libgobject-2.0-0.dll',              '<(GTK_Root)/bin/libgmodule-2.0-0.dll',              '<(GTK_Root)/bin/libgthread-2.0-0.dll',              '<(GTK_Root)/bin/libexpat-1.dll'            ]          }]        }]      ]    },    {      'target_name': 'canvas',      'include_dirs': ["<!(node -e \"require('nan')\")"],      'sources': [        'src/backend/Backend.cc',        'src/backend/ImageBackend.cc',        'src/backend/PdfBackend.cc',        'src/backend/SvgBackend.cc',        'src/bmp/BMPParser.cc',        'src/Backends.cc',        'src/Canvas.cc',        'src/CanvasGradient.cc',        'src/CanvasPattern.cc',        'src/CanvasRenderingContext2d.cc',        'src/closure.cc',        'src/color.cc',        'src/Image.cc',        'src/ImageData.cc',        'src/init.cc',        'src/register_font.cc'      ],      'conditions': [        ['OS=="win"', {          'libraries': [            '-l<(GTK_Root)/lib/cairo.lib',            '-l<(GTK_Root)/lib/libpng.lib',            '-l<(GTK_Root)/lib/pangocairo-1.0.lib',            '-l<(GTK_Root)/lib/pango-1.0.lib',            '-l<(GTK_Root)/lib/freetype.lib',            '-l<(GTK_Root)/lib/glib-2.0.lib',            '-l<(GTK_Root)/lib/gobject-2.0.lib'          ],          'include_dirs': [            '<(GTK_Root)/include',            '<(GTK_Root)/include/cairo',            '<(GTK_Root)/include/pango-1.0',            '<(GTK_Root)/include/glib-2.0',            '<(GTK_Root)/include/freetype2',            '<(GTK_Root)/lib/glib-2.0/include'          ],          'defines': [            '_USE_MATH_DEFINES',  # for M_PI            'NOMINMAX' # allow std::min/max to work          ],          'configurations': {            'Debug': {              'msvs_settings': {                'VCCLCompilerTool': {                  'WarningLevel': 4,                  'ExceptionHandling': 1,                  'DisableSpecificWarnings': [                    4100, 4611                  ]                }              }            },            'Release': {              'msvs_settings': {                'VCCLCompilerTool': {                  'WarningLevel': 4,                  'ExceptionHandling': 1,                  'DisableSpecificWarnings': [                    4100, 4611                  ]                }              }            }          }        }, {  # 'OS!="win"'          'libraries': [            '<!@(pkg-config pixman-1 --libs)',            '<!@(pkg-config cairo --libs)',            '<!@(pkg-config libpng --libs)',            '<!@(pkg-config pangocairo --libs)',            '<!@(pkg-config freetype2 --libs)'          ],          'include_dirs': [            '<!@(pkg-config cairo --cflags-only-I | sed s/-I//g)',            '<!@(pkg-config libpng --cflags-only-I | sed s/-I//g)',            '<!@(pkg-config pangocairo --cflags-only-I | sed s/-I//g)',            '<!@(pkg-config freetype2 --cflags-only-I | sed s/-I//g)'          ],          'cflags': ['-Wno-cast-function-type'],          'cflags!': ['-fno-exceptions'],          'cflags_cc!': ['-fno-exceptions']        }],        ['OS=="mac"', {          'xcode_settings': {            'GCC_ENABLE_CPP_EXCEPTIONS': 'YES'          }        }],        ['with_jpeg=="true"', {          'defines': [            'HAVE_JPEG'          ],          'conditions': [            ['OS=="win"', {              'copies': [{                'destination': '<(PRODUCT_DIR)',                'files': [                  '<(jpeg_root)/bin/jpeg62.dll',                ]              }],              'include_dirs': [                '<(jpeg_root)/include'              ],              'libraries': [                '-l<(jpeg_root)/lib/jpeg.lib',              ]            }, {              'include_dirs': [                '<!@(pkg-config libjpeg --cflags-only-I | sed s/-I//g)'              ],              'libraries': [                '<!@(pkg-config libjpeg --libs)'              ]            }]          ]        }],        ['with_gif=="true"', {          'defines': [            'HAVE_GIF'          ],          'conditions': [            ['OS=="win"', {              'libraries': [                '-l<(GTK_Root)/lib/gif.lib'              ]            }, {              'include_dirs': [                '/opt/homebrew/include'              ],              'libraries': [                '-L/opt/homebrew/lib',                '-lgif'              ]            }]          ]        }],        ['with_rsvg=="true"', {          'defines': [            'HAVE_RSVG'          ],          'conditions': [            ['OS=="win"', {              'copies': [{                'destination': '<(PRODUCT_DIR)',                'files': [                  '<(GTK_Root)/bin/librsvg-2-2.dll',                  '<(GTK_Root)/bin/libgdk_pixbuf-2.0-0.dll',                  '<(GTK_Root)/bin/libgio-2.0-0.dll',                  '<(GTK_Root)/bin/libcroco-0.6-3.dll',                  '<(GTK_Root)/bin/libgsf-1-114.dll',                  '<(GTK_Root)/bin/libxml2-2.dll'                ]              }],              'libraries': [                '-l<(GTK_Root)/lib/librsvg-2-2.lib'              ]            }, {              'include_dirs': [                '<!@(pkg-config librsvg-2.0 --cflags-only-I | sed s/-I//g)'              ],              'libraries': [                '<!@(pkg-config librsvg-2.0 --libs)'              ]            }]          ]        }]      ]    }  ]}
 |