{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "NASM-Compile",
            "command": "${workspaceFolder}/bin/nasm.exe",
            "args": [
                "-felf32",
                "-F", "dwarf",
                "-g",
                "-i", "${workspaceFolder}",
                "-o", "${workspaceFolder}/build/${fileBasenameNoExtension}.obj",
                "${file}"
            ],
            "linux": {
                "command": "nasm",
                "args": [
                    "-felf32",
                    "-F", "dwarf",
                    "-g",
                    "-i", "${workspaceFolder}",
                    "-o", "${workspaceFolder}/build/${fileBasenameNoExtension}.o",
                    "${file}"
                ]
            },
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "presentation": {
                "focus": true,
                "reveal": "silent",
                "revealProblems": "onProblem",
                "panel": "shared",
            },
            "problemMatcher": {
                "owner": "asm",
                "fileLocation": ["autodetect", "${workspaceFolder}"],
                "pattern": {
                    "regexp": "^(.*):(\\d+):\\s+(warning|error|fatal):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "severity": 3,
                    "message": 4
                }
            }
        },
        {
            "label": "LD-link",
            "command": "${workspaceFolder}/bin/ld/ld.exe",
            "args": [
                "-g",
                "-o", "${workspaceFolder}/build/${fileBasenameNoExtension}.exe",
                "-estart",
                "${workspaceFolder}/build/${fileBasenameNoExtension}.obj",
                "${workspaceFolder}/bin/ld/libmsvcrt.a",
                "${workspaceFolder}/bin/ld/libkernel32.a"
            ],
            "linux": {
                "command": "gcc",
                "args": [
                    "-m32",
                    "-g",
                    "-o", "${workspaceFolder}/build/${fileBasenameNoExtension}",
                    "${workspaceFolder}/build/${fileBasenameNoExtension}.o"
                ]
            },
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "dependsOn": [ "NASM-Compile" ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": {
                "owner": "asm",
                "fileLocation": ["autodetect", "${workspaceFolder}"],
                "pattern": {
                    "regexp": "^(.*):(\\d+):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "message": 3
                }
            },
            "presentation": {
                "focus": true,
                "panel": "shared",
                "reveal": "silent",
                "revealProblems": "onProblem",
                "close": false,
            }
        },
        {
            "label": "gcc",
            "command": "gcc",
            "args": [
                "-g", "-m32", "-Og", "-O0",
                "-o", "${workspaceFolder}/build/${fileBasenameNoExtension}",
                "${workspaceFolder}/${fileBasename}"
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "group": "build",
            "problemMatcher": {
                "pattern": {
                    "regexp": "error"
                }
            },
            "presentation": {
                "focus": true,
                "panel": "shared",
                "reveal": "silent",
                "revealProblems": "onProblem",
                "close": false,
            }
        }
    ]
}