{
  "targets": [
    {
      "target_name": "hal_addon",
      "sources": [
        "src/cpp/hal_addon.cc",
        "src/cpp/hal_component.cc"
      ],
      "include_dirs": [
        "<!@(node -p \"require('node-addon-api').include\")"
      ],
      "dependencies": [
        "<!(node -p \"require('node-addon-api').gyp\")"
      ],
      "cflags!": [ "-fno-exceptions" ],
      "cflags_cc!": [ "-fno-exceptions" ],
      "conditions": [
        ["OS=='linux'", {
          "variables": {
            "linuxcnc_rip_dir": "<!(node -p \"process.env.EMC2_HOME || process.env.LINUXCNC_HOME || ''\")",
            "linuxcnc_lib_dir": "<!(node -p \"process.env.LINUXCNC_LIB || ''\")"
          },
          "include_dirs": [
            "./include/linuxcnc",
            "/usr/include/linuxcnc", 
            "/usr/local/include/linuxcnc",
            "<!(echo ${LINUXCNC_INCLUDE:-})"
          ],
          "conditions": [
            ["linuxcnc_rip_dir!=''", {
              "include_dirs": [
                "<(linuxcnc_rip_dir)/include",
                "<(linuxcnc_rip_dir)/src",
                "<(linuxcnc_rip_dir)/src/hal",
                "<(linuxcnc_rip_dir)/src/rtapi"
              ]
            }],
            ["linuxcnc_lib_dir!=''", {
              "ldflags": [
                "-Wl,-rpath,<(linuxcnc_lib_dir)"
              ]
            }]
          ],
          "libraries": [
            "-llinuxcnchal"
          ],
          "library_dirs": [
            "/usr/lib",
            "/usr/local/lib", 
            "/usr/lib/x86_64-linux-gnu",
            "<!(echo ${LINUXCNC_LIB:-})"
          ],
          "cflags_cc": [ 
            "-std=c++17",
            "-DULAPI"
          ],
          "defines": []
        }]
      ],
      "defines": [ 
        "NAPI_CPP_EXCEPTIONS"
      ]
    }
  ]
}
