{
  "description": "Compile a Pascal source file with fpc. Options are written attached to their value (-O2, -Mdelphi, -FEdir). Target selection, linking and assembler options are left out.",
  "options": [
    {
      "names": [
        "-o"
      ],
      "description": "Output file name",
      "args": {
        "name": "output",
        "isOptional": false
      },
      "isDangerous": true
    },
    {
      "names": [
        "-M"
      ],
      "description": "Language mode",
      "args": {
        "name": "mode",
        "isOptional": false,
        "suggestions": [
          {
            "name": "fpc",
            "description": "FPC (default)"
          },
          {
            "name": "objfpc",
            "description": "Object Pascal"
          },
          {
            "name": "delphi",
            "description": "Delphi"
          },
          {
            "name": "tp",
            "description": "Turbo Pascal"
          },
          {
            "name": "macpas",
            "description": "Mac Pascal"
          }
        ]
      }
    },
    {
      "names": [
        "-O"
      ],
      "description": "Optimization level",
      "args": {
        "name": "optimize",
        "isOptional": false,
        "suggestions": [
          {
            "name": "1",
            "description": "Level 1 (quick)"
          },
          {
            "name": "2",
            "description": "Level 2"
          },
          {
            "name": "3",
            "description": "Level 3"
          }
        ]
      }
    },
    {
      "names": [
        "-g"
      ],
      "description": "Debug info (GDB)"
    },
    {
      "names": [
        "-d"
      ],
      "description": "Define symbols",
      "args": {
        "name": "defines",
        "isOptional": false,
        "isVariadic": true
      },
      "isRepeatable": true
    },
    {
      "names": [
        "-Fu"
      ],
      "description": "Unit search paths",
      "args": {
        "name": "unit_paths",
        "isOptional": false,
        "isVariadic": true,
        "template": "folders"
      },
      "isRepeatable": true
    },
    {
      "names": [
        "-Fi"
      ],
      "description": "Include search paths",
      "args": {
        "name": "include_paths",
        "isOptional": false,
        "isVariadic": true,
        "template": "folders"
      },
      "isRepeatable": true
    },
    {
      "names": [
        "-FE"
      ],
      "description": "Executable output directory",
      "args": {
        "name": "exe_dir",
        "isOptional": false,
        "template": "folders"
      }
    },
    {
      "names": [
        "-FU"
      ],
      "description": "Unit output directory",
      "args": {
        "name": "unit_dir",
        "isOptional": false,
        "template": "folders"
      }
    },
    {
      "names": [
        "-n"
      ],
      "description": "Ignore fpc.cfg"
    }
  ],
  "args": [
    {
      "name": "source",
      "isOptional": false,
      "template": "filepaths"
    }
  ],
  "name": "fpc",
  "aliases": [
    "ppcx64",
    "ppcarm"
  ]
}
