{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Assemble",
            "type": "shell",
            "args": [
                "/c",
                "/Cp",
                "${fileBasenameNoExtension}.asm"
            ],
            "command": "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/ml64.exe",
            "problemMatcher": {
                "owner": "masm",
                "fileLocation": [
                    "relative",
                    "${workspaceFolder}"
                ],
                "pattern": {
                    "regexp": "^(.*)\\((\\d*)\\)\\s+:?\\s+(error|warning)\\s+([A-z]+\\d+):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "severity": 3,
                    "code": 4,
                    "message": 5,
                    "loop": true
                }
            },
            "group": "build"
        },
        {
            "label": "link",
            "type": "shell",
            "args": [
                "/LIBPATH:/includes",
                "/SUBSYSTEM:WINDOWS",
                "/entry:WinMain",
                "/LARGEADDRESSAWARE:NO",
                "${fileBasenameNoExtension}.obj"
            ],
            "command": "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/link.exe",
            "dependsOn": "Assemble"
        },
        {
            "label": "execute",
            "type": "shell",
            "command": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "dependsOn": "link",
            "problemMatcher":[]
        },
        {
            "label": "AssembleLib",
            "type": "shell",
            "args": [
                "/c", // Только ассемблирование, без сборки
                "/Cp", // Сохраняет регистр пользовательских символов (делает разницу между строчными и заглавными символами)
                ///Zi", // Отладочная информация
                "${fileBasenameNoExtension}.asm"
            ],
            "command": "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/ml64.exe",
            "problemMatcher": {
                "owner": "masm",
                "fileLocation": [
                    "relative",
                    "${workspaceFolder}"
                ],
                "pattern": {
                    "regexp": "^(.*)\\((\\d*)\\)\\s+:?\\s+(error|warning)\\s+([A-z]+\\d+):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "severity": 3,
                    "code": 4,
                    "message": 5,
                    "loop": true
                }
            },
            "group": "build"
        },
        {
            "label": "linkDLL",
            "type": "shell",
            "args": [
                "/DLL",
                "/SUBSYSTEM:WINDOWS",
                "/DEF:sha-256.def",
                "/LIBPATH:C:/repo/SHA-256/includes/",
                "/entry:DllMain",
                "${fileBasenameNoExtension}.obj"
            ],
            "command": "C:/Program Files (x86)/Microsoft Visual Studio/2019/BuildTools/VC/Tools/MSVC/14.28.29333/bin/Hostx64/x64/link.exe",
            "dependsOn": "AssembleLib"
        }
    ]
}
