{
    "variables": {
        "conditions": [
            ["OS=='win' and target_arch=='ia32'", {
                "yealinklibfolder": "libyealink/windows/x86",
                "yealinklibfile": "libyealinkusbsdk.dll",
                "yealinkliblibrary": "libyealinkusbsdk.lib"
            }],
            ["OS=='win' and target_arch=='x64'", {
                "yealinklibfolder": "libyealink/windows/x64",
                "yealinklibfile": "libyealinkusbsdk.dll",
                "yealinkliblibrary": "libyealinkusbsdk.lib"
            }],
            ["OS=='mac' and target_arch=='x64'", {
                "yealinklibfolder": "libyealink/mac/x64",
                "yealinklibfile": "libyealinkusbsdk.dylib"
            }],
            ["OS=='mac' and target_arch=='arm64'", {
                "yealinklibfolder": "libyealink/mac/arm64",
                "yealinklibfile": "libyealinkusbsdk.dylib"
            }],
        ],
    },
    "targets": [
        {
            "target_name": "sdkinterface",
            "cflags_cc": [
                "-std=c++14"
            ],
            "sources": ["<!@(node -p \"require('fs').readdirSync('./src/main/cpp').filter(f => /\.cc$/.test(f)).map(f=>'src/main/cpp/'+f).join(' ')\")"],
            "include_dirs": [
                "libyealink/headers",
                ".",
                "<!@(node -p \"require('node-addon-api').include\")",
            ],
            'defines': ['NAPI_CPP_EXCEPTIONS'],
            'link_settings': {
                'library_dirs': [
                    '.',
                ],
            },
            'conditions': [
                ['OS=="win"', {
                    'conditions': [
                        ['target_arch=="ia32"', {
                            'libraries': ['<(yealinklibfolder)/<(yealinkliblibrary)'],
                            "copies":
                          [
                              {
                                  'destination': '<(PRODUCT_DIR)',
                                  'files': ['<(module_root_dir)/<(yealinklibfolder)/<(yealinklibfile)']
                              }
                            ]
                        }],
                        ['target_arch=="x64"', {
                            'libraries': ['<(yealinklibfolder)/<(yealinkliblibrary)'],
                            "copies":
                            [
                                {
                                    'destination': '<(PRODUCT_DIR)',
                                    'files': ['<(module_root_dir)/<(yealinklibfolder)/<(yealinklibfile)']
                                }
                            ]
                        }]
                    ],
                    'defines': ['_HAS_EXCEPTIONS=1'],
                    'msvs_settings': {
                        'VCCLCompilerTool': {'ExceptionHandling': 1},
                    },
                }],
                ['OS=="mac"', {
                    'libraries': ['../<(yealinklibfolder)/<(yealinklibfile)'],
                    'xcode_settings': {
                        'ld_version_details': 'true',
                        'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
                        'CLANG_CXX_LIBRARY': 'libc++',
                        'MACOSX_DEPLOYMENT_TARGET': '10.7',
                        'WARNING_CFLAGS': [
                            '-Wall',
                            '-Wendif-labels',
                            '-W',
                            '-Wno-unused-variable',
                            '-Wno-unused-lambda-capture',
                            '-Wno-unused-parameter',
                            '-Wno-dangling-else'
                        ],
                    },
                    "copies":
                    [
                        {
                            'destination': '<(PRODUCT_DIR)',
                            'files': ['<(module_root_dir)/<(yealinklibfolder)/<(yealinklibfile)']
                        }
                    ],
                    'postbuilds': [
                        {
                            'postbuild_name': 'fix relative dylib lookup',
                            'action': [
                                'install_name_tool',
                                '-change',
                                '@rpath/libyealinkusbsdk.dylib',
                                '@loader_path/libyealinkusbsdk.dylib',
                                '${BUILT_PRODUCTS_DIR}/sdkinterface.node',
                            ],
                        },
                    ]
                }],
            ]
        }
    ]
}
