blob: 704a28374c94ae2ba7953fc87ebc67a900000041 [file]
{
// Note!
// Set the value used for ${config:chrome.outputDir} in your settings.json
// file with a line like:
// "chrome.outputDir": "/path/to/chromium/src/out/current_link",
// Then run "0-set_chrome_output_directory" to set the `current_link`
// symbolic link (see below).
"version": "2.0.0",
"runner": "terminal",
// The default problem matcher matches build output, which is useful for most tasks.
"problemMatcher": [
{
"owner": "cpp",
"fileLocation": ["relative", "${config:chrome.outputDir}"],
"pattern": {
"regexp": "^(gen/.*):(\\d+):(\\d+):\\s+(warning|\\w*\\s?error):\\s+(.*)$",
"file": 1, "line": 2, "column": 3, "severity": 4, "message": 5
}
},
{
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^../../(.*):(\\d+):(\\d+):\\s+(warning|\\w*\\s?error):\\s+(.*)$",
"file": 1, "line": 2, "column": 3, "severity": 4, "message": 5
}
},
{
"owner": "cpp",
"fileLocation": ["relative", "${config:chrome.outputDir}"],
"pattern": {
"regexp": "^(gen/.*?):(.*):\\s+(warning|\\w*\\s?error):\\s+(.*)$",
"file": 1, "severity": 3, "message": 4
}
},
{
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^../../(.*?):(.*):\\s+(warning|\\w*\\s?error):\\s+(.*)$",
"file": 1, "severity": 3, "message": 4
}
}
],
"options": {
// It's important to set the CWD to the output directory so that file paths
// are linked correctly in the terminal output.
"cwd": "${config:chrome.outputDir}"
},
"inputs": [
{
// See 'Set Chrome Output Directory'.
"type": "pickString",
"id": "chromeOutputDir",
"description": "Chrome output directory:",
// Configure this to point to all the output directories you use.
"options": [
"/path/to/chromium/src/out/pc",
"/path/to/chromium/src/out/Debug",
"/path/to/chromium/src/out/Debug_x86"
]
},
{
"type": "promptString",
"id": "gtestFilter",
"description": "Filter for 4-test_current_file_with_filter",
"default": "*"
}
],
"tasks": [
// Set the Chrome output directory to be used in future task runs.
// This uses a symbolic link to remember the current output directory.
// If you want to use this, make sure chrome.outputDir is configured to
// point to the link created at ${workspaceFolder}/out/current_link.
// Alternatively:
// * If you want to be prompted for the output directory each
// time you run a command, replace
// ${config:chrome.outputDir}
// with
// ${input:chromeOutputDir}
// everywhere in this file.
//
// * If you want to have different tasks for different output directories,
// just create duplicate tasks and hard-code the output directory used.
{
"label": "0-set_chrome_output_directory",
"command": "rm -f ${workspaceFolder}/out/current_link; ln -s ${input:chromeOutputDir} ${workspaceFolder}/out/current_link",
"type": "shell",
// The default problem matcher doesn't make sense here, so remove it.
"problemMatcher": [],
"options": {
"cwd": "${workspaceFolder}"
}
},
// Some general-purpose build and test tasks. These all inherit the
// problemMatcher at the top of the file.
{
"label": "1-build_chrome",
"type": "shell",
"command": "autoninja -C ${config:chrome.outputDir} chrome",
"group": "test"
},
{
"label": "2-build_all",
"type": "shell",
"command": "autoninja -C ${config:chrome.outputDir}"
},
{
"label": "3-test_current_file",
"type": "shell",
"command": "${workspaceFolder}/tools/autotest.py -C ${config:chrome.outputDir} --run-all ${file}"
},
{
"label": "4-test_current_file_with_filter",
"type": "shell",
"command": "${workspaceFolder}/tools/autotest.py -C ${config:chrome.outputDir} --gtest_filter ${input:gtestFilter} ${file}"
},
{
"label": "5-test_current_line",
"type": "shell",
"command": "${workspaceFolder}/tools/autotest.py -C ${config:chrome.outputDir} --line ${lineNumber} ${file}"
},
{
"label": "6-test_current_directory",
"type": "shell",
"command": "${workspaceFolder}/tools/autotest.py -C ${config:chrome.outputDir} --run-all ${fileDirname}"
},
{
"label": "7-build_current_file",
"type": "shell",
"command": "compile_single_file --build-dir=${config:chrome.outputDir} --file-path=${file}"
},
// Some more specific build tasks, which hard-code the output directory.
{
"label": "8-build_chrome_debug",
"type": "shell",
"command": "autoninja -C ${workspaceFolder}/out/Debug chrome"
},
{
"label": "9-build_chrome_release",
"type": "shell",
"command": "autoninja -C ${workspaceFolder}/out/Release chrome"
},
{
"label": "10-build_test_debug",
"type": "shell",
"command": "autoninja -C ${workspaceFolder}/out/Debug unit_tests components_unittests browser_tests"
},
{
"label": "11-generate_compile_commands",
"type": "shell",
"command": "${workspaceFolder}/tools/clang/scripts/generate_compdb.py -p ${config:chrome.outputDir} > ${workspaceFolder}/compile_commands.json"
}
]
}