| { | |
| // Note! | |
| // Set the "chromeOutputDir" input string below, 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": [ | |
| // Matches output from clang. | |
| { | |
| "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", "${workspaceFolder}"], | |
| "pattern": { | |
| "regexp": "^../../(.*):(\\d+):(\\d+):\\s+(warning|\\w*\\s?error):\\s+(.*)$", | |
| "file": 1, "line": 2, "column": 3, "severity": 4, "message": 5 | |
| } | |
| }, | |
| // Matches output from clang-cl / msvc. | |
| { | |
| "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", | |
| "${workspaceFolder}" | |
| ], | |
| "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", "${workspaceFolder}"], | |
| "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}", | |
| "env": { | |
| // If depot_tools aren't already available in the PATH provided to vscode, | |
| // you can configure it in the next line. | |
| // "PATH": "<DEPOT_TOOLS_LOCATION>:${env:PATH}" | |
| // Alternatively, if you have configured depot_tools for ChromiumIDE, you | |
| // can just uncomment the following line: | |
| // "PATH": "${config:chromiumide.paths.depotTools}:${env:PATH}" | |
| } | |
| }, | |
| "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 (as a | |
| // relative path from ${workspaceFolder}). | |
| "options": [ | |
| "out/Debug", | |
| "out/Release" | |
| ] | |
| }, | |
| { | |
| "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 ${workspaceFolder}/${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", | |
| "args": ["-C", "${config:chrome.outputDir}", "chrome"], | |
| "group": "test" | |
| }, | |
| { | |
| "label": "2-build_all", | |
| "type": "shell", | |
| "command": "autoninja", | |
| "args": ["-C", "${config:chrome.outputDir}"] | |
| }, | |
| { | |
| "label": "3-test_current_file", | |
| "type": "shell", | |
| "command": "${workspaceFolder}/tools/autotest.py", | |
| "args": ["-C", "${config:chrome.outputDir}", "--run-all", "${file}"] | |
| }, | |
| { | |
| "label": "4-test_current_file_with_filter", | |
| "type": "shell", | |
| "command": "${workspaceFolder}/tools/autotest.py", | |
| "args": ["-C", "${config:chrome.outputDir}", "--gtest_filter", "${input:gtestFilter}", "${file}"] | |
| }, | |
| { | |
| "label": "5-test_current_line", | |
| "type": "shell", | |
| "command": "${workspaceFolder}/tools/autotest.py", | |
| "args": ["-C", "${config:chrome.outputDir}", "--line", "${lineNumber}", "${file}"] | |
| }, | |
| { | |
| "label": "6-test_current_directory", | |
| "type": "shell", | |
| "command": "${workspaceFolder}/tools/autotest.py", | |
| "args": ["-C", "${config:chrome.outputDir}", "--run-all", "${fileDirname}"] | |
| }, | |
| { | |
| "label": "7-build_current_file", | |
| "type": "shell", | |
| "command": "compile_single_file", | |
| "args": ["--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", | |
| "args": ["-C", "${workspaceFolder}/out/Debug", "chrome"] | |
| }, | |
| { | |
| "label": "9-build_chrome_release", | |
| "type": "shell", | |
| "command": "autoninja", | |
| "args": ["-C", "${workspaceFolder}/out/Release", "chrome"] | |
| }, | |
| { | |
| "label": "10-build_test_debug", | |
| "type": "shell", | |
| "command": "autoninja", | |
| "args": ["-C", "${workspaceFolder}/out/Debug", "unit_tests", "components_unittests", "browser_tests", "extensions_unittests", "ash_unittests"] | |
| }, | |
| { | |
| "label": "11-generate_compile_commands", | |
| "type": "shell", | |
| "command": "${workspaceFolder}/tools/clang/scripts/generate_compdb.py", | |
| "args": ["-p", "${config:chrome.outputDir}", ">", "${workspaceFolder}/compile_commands.json"] | |
| } | |
| ] | |
| } |