Merge pull request #1 from microsoft/dev/andris/ConfigAndBuild1

First iteration of build and custom configuration provider
This commit is contained in:
Bob Brown 2020-06-26 13:33:42 -07:00 коммит произвёл GitHub
Родитель 19fddb2bc6 6cc3e047ce
Коммит 16fcdc5965
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
48 изменённых файлов: 24110 добавлений и 1056 удалений

44
.vscode/launch.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,44 @@
// A launch configuration that compiles the extension and then opens it inside a new window
{
"version": "0.1.0",
"configurations": [
{
"name": "Launch Tests",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"${workspaceFolder}/src/test/fakeSuite/Repros",
"--extensionDevelopmentPath=${workspaceFolder}",
"--extensionTestsPath=${workspaceFolder}/out/src/test/fakeSuite/index"
],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/out/src/test/**/*.js"
],
"preLaunchTask": "mycompile",
},
{
"name": "Launch Extension",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}",
],
"stopOnEntry": false,
"sourceMaps": true,
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"preLaunchTask": "mycompile",
},
{
"name": "Node Attach",
"type": "node",
"request": "attach",
"port": 5858
}
]
}

11
.vscode/settings.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,11 @@
// Place your settings in this file to overwrite default and user settings.
{
"files.exclude": {
"out": false // set this to true to hide the "out" folder with the compiled JS files
},
"search.exclude": {
"out": true // set this to false to include "out" folder in search results
},
"typescript.tsdk": "./node_modules/typescript/lib",
"editor.detectIndentation": false // we want to use the TS server from our node_modules folder to control its version
}

14
.vscode/tasks.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,14 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "mycompile",
"type": "npm",
"script": "mycompile",
"problemMatcher": [
"$tsc-watch"
],
"isBackground": true
}
]
}

Просмотреть файл

@ -1,21 +1,21 @@
MIT License
Copyright (c) Microsoft Corporation. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE
MIT License
Copyright (c) Microsoft Corporation. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE

Двоичные данные
MakefileTools.png Normal file

Двоичный файл не отображается.

После

Ширина:  |  Высота:  |  Размер: 8.0 KiB

Просмотреть файл

@ -1,4 +1,4 @@
First packaging
# Contributing
This project welcomes contributions and suggestions. Most contributions require you to agree to a
@ -14,8 +14,6 @@ For more information see the [Code of Conduct FAQ](https://opensource.microsoft.
contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
# vscode-makefile-tools README
This is the README for your extension "vscode-makefile-tools". After writing up a brief description, we recommend including the following sections.
## Features
Describe specific features of your extension including screenshots of your extension in action. Image paths are relative to this README file.

1886
package-lock.json сгенерированный

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -1,41 +1,179 @@
{
"name": "vscode-makefile-tools",
"displayName": "vscode-makefile-tools",
"description": "Provide makefile integration in VSCode",
"version": "0.0.1",
"engines": {
"vscode": "^1.35.0"
},
"categories": [
"Other"
],
"activationEvents": [
"onCommand:extension.helloWorld"
],
"main": "./out/extension.js",
"contributes": {
"commands": [
{
"command": "extension.helloWorld",
"title": "Hello World"
}
]
},
"scripts": {
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"postinstall": "node ./node_modules/vscode/bin/install",
"test": "npm run compile && node ./node_modules/vscode/bin/test"
},
"devDependencies": {
"typescript": "^3.3.1",
"vscode": "^1.1.28",
"tslint": "^5.12.1",
"@types/node": "^10.12.21",
"@types/mocha": "^2.2.42"
},
"dependencies": {
"vscode-cpptools": "^2.1.2"
}
"name": "makefile-tools",
"displayName": "Makefile Tools",
"description": "Provide makefile support in VS Code: C/C++ IntelliSense, build, debug/run.",
"version": "0.1.0",
"publisher": "ms-vscode",
"preview": true,
"icon": "MakefileTools.png",
"readme": "README.md",
"author": {
"name": "Microsoft Corporation"
},
"license": "SEE LICENSE IN LICENSE.txt",
"engines": {
"vscode": "^1.30.0"
},
"bugs": {
"url": "https://github.com/Microsoft/vscode-makefile-tools/issues",
"email": "c_cpp_support@microsoft.com"
},
"repository": {
"type": "git",
"url": "https://github.com/Microsoft/vscode-makefile-tools.git"
},
"homepage": "https://github.com/Microsoft/vscode-makefile-tools",
"qna": "https://github.com/Microsoft/vscode-makefile-tools/issues",
"keywords": [
"C",
"C++",
"IntelliSense",
"Microsoft",
"Makefile"
],
"categories": [
"Programming Languages",
"Debuggers",
"Formatters",
"Linters",
"Other",
"Snippets"
],
"activationEvents": [
"onCommand:Makefile.setBuildConfiguration",
"onCommand:Makefile.setBuildTarget",
"onCommand:Makefile.buildTarget",
"onCommand:Makefile.setLaunchConfiguration",
"onCommand:Makefile.launchDebug",
"onCommand:Makefile.launchRun",
"workspaceContains:**/makefile",
"workspaceContains:**/Makefile"
],
"main": "./out/src/extension.js",
"contributes": {
"commands": [
{
"command": "Makefile.buildTarget",
"title": "Make: Build the makefile target of the current build configuration"
},
{
"command": "Makefile.launchDebug",
"title": "Make: Debug the selected binary target"
},
{
"command": "Makefile.launchRun",
"title": "Make: Run the selected binary target in the terminal"
},
{
"command": "Makefile.setBuildConfiguration",
"title": "Make: Set the current build configuration"
},
{
"command": "Makefile.setBuildTarget",
"title": "Make: Set the target to be built by make"
},
{
"command": "Makefile.setLaunchConfiguration",
"title": "Make: Set the make launch configuration"
}
],
"configuration": {
"type": "object",
"title": "Makefile",
"properties": {
"Makefile.buildConfiguration": {
"type": [
"string",
"null"
],
"default": null,
"description": "The makefile current configuration",
"scope": "resource"
},
"Makefile.buildTarget": {
"type": [
"string",
"null"
],
"default": null,
"description": "The current target to be run by make",
"scope": "resource"
},
"Makefile.launchConfiguration": {
"type": [
"object",
null
],
"default": null,
"description": "The configuration to use when running or debugging a target",
"properties": {
"binary": {
"type": "string",
"description": "The full path to the binary to run or debug"
},
"args": {
"type": "array",
"description": "Arguments to pass to program command line",
"items": {
"type": "string"
},
"default": []
},
"cwd": {
"type": "string",
"description": "Set the working directory for the program"
}
},
"scope": "resource"
},
"Makefile.loggingLevel": {
"type": [
"string",
"null"
],
"enum": [
"Normal",
"Verbose"
],
"default": "Normal",
"description": "The logging level for the makefile tools extension",
"scope": "resource"
},
"Makefile.makePath": {
"type": "string"
},
"Makefile.buildLog": {
"type": "string"
},
"Makefile.extensionLog": {
"type": "string"
}
}
}
},
"scripts": {
"vscode:prepublish": "npm run mycompile",
"mycompile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"pretest": "npm run mycompile",
"test": "node ./out/src/test/runTest.js"
},
"devDependencies": {
"@types/mocha": "^2.2.42",
"@types/node": "^10.17.17",
"tslint": "^5.20.1",
"tslint-microsoft-contrib": "^6.2.0",
"tslint-no-unused-expression-chai": "^0.1.4",
"typescript": "^3.8.3",
"vrsource-tslint-rules": "^6.0.0",
"vscode": "^1.1.36",
"vscode-test": "^0.4.1"
},
"dependencies": {
"@types/glob": "^7.1.1",
"glob": "^7.1.6",
"module-alias": "^2.2.2",
"vscode-cpptools": "^2.1.2",
"vscode-jsonrpc": "^3.6.2"
}
}

717
src/configuration.ts Normal file
Просмотреть файл

@ -0,0 +1,717 @@
// Configuration support
import * as child_process from 'child_process';
import * as fs from 'fs';
import * as logger from './logger';
import * as make from './make';
import * as parser from './parser';
import * as ui from './ui';
import * as util from './util';
import * as vscode from 'vscode';
import * as path from 'path';
let statusBar: ui.UI = ui.getUI();
// Each different scenario of building the same makefile, in the same environment, represents a configuration.
// Example: "make BUILD_TYPE=Debug" and "make BUILD_TYPE=Release" can be the debug and release configurations.
// The user can save several different such configurations in .vscode\make_configurations.json,
// from which one can be picked via this extension and saved in settings.
// Priority rules for where is the Makefile Tools extension parsing the needed information from:
// 1. configuration build log (defined in make_configurations.json)
// 2. build log (defined in settings)
// 3. make command and args (defined in make_configurations.json)
// 4. make (defined in settings) and default args
// 5. default make tool and args
export interface MakeConfiguration {
// A name associated with a particular build command process and args/options
name: string;
// make, nmake, specmake...
// This is sent to spawnChildProcess as process name
// It can have full path, relative path or only tool name
// Don't include args in commandName
commandName?: string;
// options used in the build invocation
// don't use more than one argument in a string
commandArgs?: string[];
// a pre-generated build log, from which it is preffered to parse from,
// instead of the dry-run output of the make tool
buildLog?: string;
// TODO: investigate how flexible this is to integrate with other build systems than the MAKE family
// (basically anything that can produce a dry-run output is sufficient)
// Implement set-able dry-run, verbose, change-directory and always-make switches
// since different tools may use different arguments for the same behavior
}
// Last configuration name picked from the set defined in .vscode\make_configurations.json.
// Saved into the settings storage. Also reflected in the configuration status bar button.
// If no particular current configuration is defined in settings, set to 'Default'.
let currentMakeConfiguration: string;
export function getCurrentMakeConfiguration(): string { return currentMakeConfiguration; }
export function setCurrentMakeConfiguration(configuration: string): void {
currentMakeConfiguration = configuration;
statusBar.setConfiguration(currentMakeConfiguration);
logger.message("Setting configuration - " + currentMakeConfiguration);
getCommandForConfiguration(currentMakeConfiguration);
getBuildLogForConfiguration(currentMakeConfiguration);
}
// Read the current configuration from settings storage, update status bar item
function readCurrentMakeConfiguration(): void {
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
let buildConfiguration : string | undefined = workspaceConfiguration.get<string>("buildConfiguration");
if (!buildConfiguration) {
logger.message("No current configuration is defined in the settings file");
currentMakeConfiguration = "Default";
} else {
currentMakeConfiguration = buildConfiguration;
}
statusBar.setConfiguration(currentMakeConfiguration);
}
let makePath: string | undefined;
export function getMakePath(): string | undefined { return makePath; }
export function setMakePath(path: string): void { makePath = path; }
// Read the path (full or directory only) of the make tool if defined in settings.
// It represents a default to look for if no other path is already included
// in make_configurations.json, with commandName.
function readMakePath(): void {
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
makePath = workspaceConfiguration.get<string>("makePath");
if (!makePath) {
logger.message("No path to the make tool is defined in the settings file");
}
}
let buildLog: string | undefined;
export function getBuildLog(): string | undefined { return buildLog; }
export function setBuildLog(path: string): void { buildLog = path; }
// Read from settings the path of the build log that is desired to be parsed
// instead of a dry-run command output.
// Useful for complex, tricky and corner case repos for which make --dry-run
// is not working as the extension expects.
// Example: --dry-run actually running configure commands, instead of only displaying them,
// possibly changing unexpectedly a previous configuration set by the repo developer.
// This scenario may also result in infinite loop, depending on how the makefile
// and the configuring process are written, thus making the extension unusable.
// Defining a build log to be parsed instead of a dry-run output represents a good alternative.
// Also useful for developing unit tests based on real world code,
// that would not clone a whole repo for testing.
// It is recommended to produce the build log with all the following commands,
// so that the extension has the best content to operate on.
// --always-make (to make sure no target is skipped because it is up to date)
// --keep-going (to not stumble on the first error)
// --print-data-base (special verbose printing which this extension is using for parsing the makefile targets)
// If any of the above switches is missing, the extension may have less log to parse from,
// therefore offering less intellisense information for source files,
// identifying less possible binaries to debug or not providing any makefile targets (other than the 'all' default).
function readBuildLog(): void {
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
buildLog = workspaceConfiguration.get<string>("buildLog");
if (buildLog) {
logger.message('Found build log path setting "' + buildLog + '"');
if (!path.isAbsolute(buildLog)) {
buildLog = path.join(vscode.workspace.rootPath || "", buildLog);
logger.message('Resolving build log path to "' + buildLog + '"');
}
if (!util.checkFileExistsSync(buildLog)) {
logger.message("Build log not found. Remove the build log setting or provide a build log file on disk at the given location.");
}
}
}
let loggingLevel: string | undefined;
export function getLoggingLevel(): string | undefined { return loggingLevel; }
export function setLoggingLevel(logLevel: string): void { loggingLevel = logLevel; }
// Read from settings the desired logging level for the Makefile Tools extension.
export function readLoggingLevel(): void {
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
loggingLevel = workspaceConfiguration.get<string>("loggingLevel");
if (!loggingLevel) {
loggingLevel = "Normal";
}
}
let extensionLog: string | undefined;
export function getExtensionLog(): string | undefined { return extensionLog; }
export function setExtensionLog(path: string): void { extensionLog = path; }
// Read from settings the path to a log file capturing all the "Makefile Tools" output channel content.
// Useful for very large repos, which would produce with a single command a log larger
// than the "Makefile Tools" output channel capacity.
// Also useful for developing unit tests based on real world code,
// that would not clone a whole repo for testing.
// If an extension log is specified, its content is cleared during activation.
// Any messages that are being logged throughout the lifetime of the extension
// are going to be appended to this file.
export function readExtensionLog(): void {
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
extensionLog = workspaceConfiguration.get<string>("extensionLog");
if (extensionLog) {
logger.message('Found extension log path setting "' + extensionLog + '"');
if (!path.isAbsolute(extensionLog)) {
extensionLog = path.join(vscode.workspace.rootPath || "", extensionLog);
logger.message('Resolving extension log path to "' + extensionLog + '"');
}
}
}
// Currently, the makefile extension supports debugging only an executable.
// TODO: support dll debugging.
export interface LaunchConfiguration {
// todo: add symbol search paths
binary: string; // full path
cwd: string; // execution path
args: string[]; // arguments
}
export function launchConfigurationToString(configuration: LaunchConfiguration): string {
let str: string = configuration.cwd;
str += ">";
str += util.makeRelPath(configuration.binary, configuration.cwd);
str += "(";
str += configuration.args.join(",");
str += ")";
return str;
}
export function stringToLaunchConfiguration(str: string): LaunchConfiguration | undefined {
let regexp: RegExp = /(.*)\>(.*)\((.*)\)/mg;
let match: RegExpExecArray | null = regexp.exec(str);
if (match) {
let fullPath: string = util.makeFullPath(match[2], match[1]);
let splitArgs: string[] = match[3].split(",");
return {
cwd: match[1],
binary: fullPath,
args: splitArgs
};
} else {
return undefined;
}
}
let currentLaunchConfiguration: LaunchConfiguration | undefined;
export function getCurrentLaunchConfiguration(): LaunchConfiguration | undefined { return currentLaunchConfiguration; }
export function setCurrentLaunchConfiguration(configuration: LaunchConfiguration): void {
currentLaunchConfiguration = configuration;
statusBar.setLaunchConfiguration(launchConfigurationToString(currentLaunchConfiguration));
}
// Read the current launch configuration from settings storage, update status bar item
function readCurrentLaunchConfiguration(): void {
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
currentLaunchConfiguration = workspaceConfiguration.get<LaunchConfiguration>("launchConfiguration");
if (currentLaunchConfiguration) {
statusBar.setLaunchConfiguration(launchConfigurationToString(currentLaunchConfiguration));
} else {
statusBar.setLaunchConfiguration("No launch configuration set");
}
}
// Command name and args are used when building from within the VS Code Makefile Tools Extension,
// when parsing all the targets that exist and when updating the cpptools configuration provider
// for IntelliSense.
let configurationCommandName: string;
export function getConfigurationCommandName(): string { return configurationCommandName; }
export function setConfigurationCommandName(name: string): void { configurationCommandName = name; }
let configurationCommandArgs: string[] = [];
export function getConfigurationCommandArgs(): string[] { return configurationCommandArgs; }
export function setConfigurationCommandArgs(args: string[]): void { configurationCommandArgs = args; }
let configurationBuildLog: string | undefined;
export function getConfigurationBuildLog(): string | undefined { return configurationBuildLog; }
export function setConfigurationBuildLog(name: string): void { configurationBuildLog = name; }
// Read from settings storage, update status bar item
// Current make configuration command = process name + arguments
function readCurrentMakeConfigurationCommand(): void {
// Read from disk instead of from the MakeConfiguration array, to get up to date content
readMakeConfigurations();
getCommandForConfiguration(currentMakeConfiguration);
getBuildLogForConfiguration(currentMakeConfiguration);
}
// Helper to find in the array of MakeConfiguration which command/args correspond to a configuration name
export function getCommandForConfiguration(configuration: string | undefined): void {
let makeConfiguration: MakeConfiguration | undefined = makeConfigurations.find(k => {
if (k.name === configuration) {
return { ...k, keep: true };
}
});
let makeParsedPathSettings: path.ParsedPath | undefined = makePath ? path.parse(makePath) : undefined;
let makeParsedPathConfigurations: path.ParsedPath | undefined = makeConfiguration?.commandName ? path.parse(makeConfiguration?.commandName) : undefined;
// Arguments for the make tool can be defined as commandArgs in make_configurations.json.
// When not defined, default to empty array.
configurationCommandArgs = makeConfiguration?.commandArgs || [];
// Name of the make tool can be defined as commandName in make_configurations.json or as Makefile.makePath setting.
// When none defined, default to "make".
configurationCommandName = makeParsedPathConfigurations?.name || makeParsedPathSettings?.name || "make";
// Prepend the directory path, if defined in either make_configurations.json or settings (first has priority).
let configurationCommandPath: string = makeParsedPathConfigurations?.dir || makeParsedPathSettings?.dir || "";
configurationCommandName = path.join(configurationCommandPath, configurationCommandName);
if (makeConfiguration?.commandName) {
logger.message("Found command '" + configurationCommandName + " " + configurationCommandArgs.join(" ") + "' for configuration " + configuration);
}
// Some useful warnings about properly defining the make tool (file name, path and arguments),
// unless a build log is provided.
let buildLog: string | undefined = getConfigurationBuildLog();
let buildLogContent: string | undefined = buildLog ? util.readFile(buildLog) : undefined;
if (!buildLogContent) {
if ((!makeParsedPathSettings || makeParsedPathSettings.name === "") &&
(!makeParsedPathConfigurations || makeParsedPathConfigurations.name === "")) {
logger.message("Could not find any make tool file name in make_configurations.json, nor in settings. Assuming make.");
}
if ((!makeParsedPathSettings || makeParsedPathSettings?.dir === "") &&
(!makeParsedPathConfigurations || makeParsedPathConfigurations?.dir === "")) {
logger.message("For the extension to work, make must be on the path.");
}
if (!makeParsedPathSettings && !makeParsedPathConfigurations) {
logger.message("It is recommended to define the full path of the make tool in settings (via Makefile.makePath) OR define commandName/commandArgs in make_configurations.json.");
}
}
}
// Helper to find in the array of MakeConfiguration which buildLog correspond to a configuration name
export function getBuildLogForConfiguration(configuration: string | undefined): void {
let makeConfiguration: MakeConfiguration | undefined = makeConfigurations.find(k => {
if (k.name === configuration) {
return { ...k, keep: true };
}
});
configurationBuildLog = makeConfiguration?.buildLog;
if (configurationBuildLog) {
logger.message('Found build log path setting "' + configurationBuildLog + '" defined for configuration "' + configuration);
if (!path.isAbsolute(configurationBuildLog)) {
configurationBuildLog = path.join(vscode.workspace.rootPath || "", configurationBuildLog);
logger.message('Resolving build log path to "' + configurationBuildLog + '"');
}
if (!util.checkFileExistsSync(configurationBuildLog)) {
logger.message("Build log not found. Remove the build log setting or provide a build log file on disk at the given location.");
}
} else {
// Default to an eventual build log defined in settings
// If that one is not found on disk, the setting getter already warned about it.
configurationBuildLog = buildLog;
}
}
// The data type mapping to the content of .vscode\make_configurations.json.
// The file is allowed to be missing, in which case the MakeConfiguration array remains empty.
let makeConfigurations: MakeConfiguration[] = [];
export function getMakeConfigurations(): MakeConfiguration[] { return makeConfigurations; }
export function setMakeConfigurations(configurations: MakeConfiguration[]): void { makeConfigurations = configurations; }
let configurationsJsonPath: string = vscode.workspace.rootPath + "\/.vscode\/make_configurations.json";
// TODOs:
// - add a schema for make_configurations.json
// - assist the user with UI for creating this file
// - more type validation for reading the json
// - add optional configure parameters: configure command and configure command args
// for when the code base needs a specific workflow to run before the make invocation
function readMakeConfigurations(): void {
if (util.checkFileExistsSync(configurationsJsonPath)) {
logger.message("Reading configurations from file \/.vscode\/make_configurations.json");
const jsonConfigurationsContent: Buffer = fs.readFileSync(configurationsJsonPath);
try {
makeConfigurations = JSON.parse(jsonConfigurationsContent.toString());
} catch (error) {
vscode.window.showErrorMessage("Failed to parse make_configurations.json");
}
} else {
logger.message("Configurations file \/.vscode\/make_configurations.json not found");
}
}
// Last target picked from the set of targets that are run by the makefiles
// when building for the current configuration.
// Saved into the settings storage. Also reflected in the configuration status bar button
let currentTarget: string | undefined;
export function getCurrentTarget(): string | undefined { return currentTarget; }
export function setCurrentTarget(target: string | undefined): void { currentTarget = target; }
// Read current target from settings storage, update status bar item
function readCurrentTarget(): void {
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
let buildTarget : string | undefined = workspaceConfiguration.get<string>("buildTarget");
if (!buildTarget) {
logger.message("No target defined in the settings file");
statusBar.setTarget("Default");
// If no particular target is defined in settings, use 'Default' for the button
// but keep the variable empty, to not append it to the make command.
currentTarget = "";
} else {
currentTarget = buildTarget;
statusBar.setTarget(currentTarget);
}
}
// There are situations when the extension should ignore the settings changes
// and not trigger re-read and updates.
// Example: cleanup phase of extension tests, which removes settings.
let ignoreSettingsChanged: boolean = false;
export function startListeningToSettingsChanged(): void {
ignoreSettingsChanged = false;
}
export function stopListeningToSettingsChanged(): void {
ignoreSettingsChanged = true;
}
// Initialization from settings (or backup default rules), done at activation time
export function initFromSettings(): void {
readLoggingLevel();
readExtensionLog();
readMakePath();
readBuildLog();
readCurrentMakeConfiguration();
readCurrentMakeConfigurationCommand();
readCurrentTarget();
readCurrentLaunchConfiguration();
// Listen to changes in settings and in make_configurations.json for prompter updates of the extension
vscode.workspace.onDidSaveTextDocument(e => {
if (path.normalize(e.fileName) === path.normalize(configurationsJsonPath) && !ignoreSettingsChanged) {
logger.message("Changes detected in make_configurations.json and triggering update");
readCurrentMakeConfigurationCommand();
make.parseBuildOrDryRun();
}
});
vscode.workspace.onDidChangeConfiguration(e => {
if (vscode.workspace.workspaceFolders && !ignoreSettingsChanged &&
e.affectsConfiguration('Makefile', vscode.workspace.workspaceFolders[0].uri)) {
logger.message("Detected a change in settings");
// We are interested in updating only some relevant properties.
// A subset of these should also trigger an IntelliSense config provider update.
// Avoid unnecessary updates (for example, when settings are modified via the extension quickPick).
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
let updateConfigProvider: boolean = false; // to trigger IntelliSense config provider refresh
let updatedBuildConfiguration: string | undefined = workspaceConfiguration.get<string>("buildConfiguration");
if (updatedBuildConfiguration !== currentMakeConfiguration &&
// Undefined build configuration results in "Default",
// so undefined !== "Default" is not true in this context
(updatedBuildConfiguration !== undefined || currentMakeConfiguration !== "Default")) {
logger.message("Make configuration setting changed.");
updateConfigProvider = true;
readCurrentMakeConfiguration();
}
let updatedTarget : string | undefined = workspaceConfiguration.get<string>("buildTarget");
if (updatedTarget !== currentTarget &&
// Undefined target results in "",
// so undefined !== "" is not true in this context
(updatedTarget !== undefined || currentTarget !== "")) {
updateConfigProvider = true;
logger.message("Target setting changed.");
readCurrentTarget();
}
let updatedLaunchConfiguration : string | undefined = workspaceConfiguration.get<string>("launchConfiguration");
if (updatedLaunchConfiguration !== currentLaunchConfiguration) {
// Changing a launch configuration does not impact the make or compiler tools invocations,
// so no IntelliSense update is needed.
logger.message("Launch configuration setting changed.");
readCurrentLaunchConfiguration();
}
let updatedBuildLog : string | undefined = workspaceConfiguration.get<string>("buildLog");
if (updatedBuildLog !== buildLog) {
updateConfigProvider = true;
logger.message("Build log setting changed.");
readBuildLog();
}
let updatedExtensionLog : string | undefined = workspaceConfiguration.get<string>("extensionLog");
if (updatedExtensionLog !== extensionLog) {
// No IntelliSense update needed.
logger.message("MakefileTools log setting changed.");
readExtensionLog();
}
let updatedMakePath : string | undefined = workspaceConfiguration.get<string>("makePath");
if (updatedMakePath !== makePath) {
// Not very likely, but it is safe to consider that a different make tool
// may produce a different dry-run output with potential impact on IntelliSense,
// so trigger an update.
logger.message("Make path setting changed.");
updateConfigProvider = true;
readMakePath();
}
if (updateConfigProvider) {
// The source for the parsing process can either be a build log or the dry-run output of make tool,
// but there are some rules of defaults and/or overrides that may be impacted by any of the above settings,
// so recalculate.
logger.message("Some of the changes detected in settings are triggering udpates");
getCommandForConfiguration(currentMakeConfiguration);
getBuildLogForConfiguration(currentMakeConfiguration);
make.parseBuildOrDryRun();
}
}
});
}
export /*async*/ function setConfigurationByName(configurationName: string): void {//Promise<void> {
currentMakeConfiguration = configurationName;
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
workspaceConfiguration.update("buildConfiguration", currentMakeConfiguration);
setCurrentMakeConfiguration(currentMakeConfiguration);
make.parseBuildOrDryRun();
}
export function prepareConfigurationsQuickPick(): string[] {
// read from the configurations file instead of currentMakefileConfiguration
// just in case the content changed on disk.
readMakeConfigurations();
const items: string[] = makeConfigurations.map((k => {
return k.name;
}));
if (items.length > 0) {
logger.message("Found the following configurations defined in make_configurations.json: " + items.join(";"));
} else {
logger.message("No configurations defined in make_configurations.json.");
items.push("Default");
}
return items;
}
// Fill a drop-down with all the configuration names defined by the user in .vscode\make_configurations.json
// Triggers a cpptools configuration provider update after selection.
export async function setNewConfiguration(): Promise<void> {
const items: string[] = prepareConfigurationsQuickPick();
let options : vscode.QuickPickOptions = {};
options.ignoreFocusOut = true; // so that the logger and the quick pick don't compete over focus
const chosen: string | undefined = await vscode.window.showQuickPick(items, options);
if (chosen) {
setConfigurationByName(chosen);
}
}
// Fill a drop-down with all the binaries, with their associated args and executin paths
// as they are parsed from the dry-run output within the scope of
// the current build configuration and the current target.
// Persist the new launch configuration data after the user picks one.
// TODO: deduce also symbol paths.
// TODO: implement UI to collect this information.
// TODO: refactor the dry-run part into make.ts
export function parseLaunchConfigurations(source: string): string[] {
let binariesLaunchConfigurations: LaunchConfiguration[] = parser.parseForLaunchConfiguration(source);
let items: string[] = [];
binariesLaunchConfigurations.forEach(config => {
items.push(launchConfigurationToString(config));
});
items = items.sort().filter(function(elem, index, self) : boolean {
return index === self.indexOf(elem);
});
logger.message("Found the following launch targets defined in the makefile: " + items.join(";"));
return items;
}
export function parseLaunchConfigurationsFromBuildLog(): string[] | undefined {
let buildLogContent: string | undefined = configurationBuildLog ? util.readFile(configurationBuildLog) : undefined;
if (buildLogContent) {
logger.message('Parsing the provided build log "' + configurationBuildLog + '" for launch configurations...');
return parseLaunchConfigurations(buildLogContent);
}
return undefined;
}
export async function setNewLaunchConfiguration(): Promise<void> {
let binariesLaunchConfigurationNames: string[] | undefined = parseLaunchConfigurationsFromBuildLog();
if (binariesLaunchConfigurationNames) {
selectLaunchConfiguration(binariesLaunchConfigurationNames);
return;
}
let commandArgs: string[] = [];
// Append --dry-run (to not perform any real build operation),
// --always-make (to not skip over targets when timestamps indicate nothing needs to be done)
// and --keep-going (to ensure we get as much info as possible even when some targets fail)
commandArgs = commandArgs.concat(configurationCommandArgs);
if (currentTarget) {
commandArgs.push(currentTarget);
}
commandArgs.push("--dry-run");
commandArgs.push("--always-make");
commandArgs.push("--keep-going");
commandArgs.push("--print-data-base");
let stdoutStr: string = "";
let stderrStr: string = "";
logger.message("Generating the dry-run to parse launch configuration for the binaries built by the makefile. Command: " + configurationCommandName + " " + commandArgs.join(" "));
try {
let stdout : any = (result: string): void => {
stdoutStr += result;
};
let stderr : any = (result: string): void => {
stderrStr += result;
};
let closing : any = (retCode: number, signal: string): void => {
if (retCode !== 0) {
logger.message("The verbose make dry-run command for parsing binaries launch configuration failed.");
logger.message(stderrStr);
}
//logger.message("The dry-run output for parsing the binaries launch configuration");
//logger.message(stdoutStr);
let launchConfigurationNames: string[] = parseLaunchConfigurations(stdoutStr);
selectLaunchConfiguration(launchConfigurationNames);
};
await util.spawnChildProcess(configurationCommandName, commandArgs, vscode.workspace.rootPath || "", stdout, stderr, closing);
} catch (error) {
logger.message(error);
return;
}
}
export function parseTargetsFromBuildLog(): string[] | undefined {
let buildLogContent: string | undefined = configurationBuildLog ? util.readFile(configurationBuildLog) : undefined;
if (buildLogContent) {
logger.message('Parsing the provided build log "' + configurationBuildLog + '" for targets...');
let makefileTargets: string[] = parser.parseTargets(buildLogContent);
makefileTargets = makefileTargets.sort();
return makefileTargets;
}
return undefined;
}
// TODO: refactor the dry-run part into make.ts
export async function setNewTarget(): Promise<void> {
// If a build log is specified in make_configurations.json or in settings
// (and if it exists on disk) it must be parsed instead of invoking a dry-run make command.
let makefileTargets: string[] | undefined = parseTargetsFromBuildLog();
if (makefileTargets) {
selectTarget(makefileTargets);
return;
}
let commandArgs: string[] = [];
// all: must be first argument, to make sure all targets are evaluated and not a subset
// --dry-run: to ensure no real build is performed for the targets analysis
// -p: creates a verbose log from which targets are easy to parse
commandArgs = commandArgs.concat(["all", "--dry-run", "-p"], configurationCommandArgs);
let stdoutStr: string = "";
let stderrStr: string = "";
logger.message("Parsing the targets in the makefile. Command: " + configurationCommandName + " " + commandArgs.join(" "));
let process: child_process.ChildProcess;
try {
let stdout : any = (result: string): void => {
stdoutStr += result;
};
let stderr : any = (result: string): void => {
stderrStr += result;
};
let closing : any = (retCode: number, signal: string): void => {
if (retCode !== 0) {
logger.message("The verbose make dry-run command for parsing targets failed.");
logger.message(stderrStr);
}
// Don't log stdoutStr in this case, because -p output is too verbose to be useful in any logger area
makefileTargets = parser.parseTargets(stdoutStr);
makefileTargets = makefileTargets.sort();
selectTarget(makefileTargets);
};
await util.spawnChildProcess(configurationCommandName, commandArgs, vscode.workspace.rootPath || "", stdout, stderr, closing);
} catch (error) {
logger.message(error);
return;
}
}
export /*async*/ function setTargetByName(targetName: string) : void {//Promise<void> {
currentTarget = targetName;
statusBar.setTarget(currentTarget);
logger.message("Setting target " + currentTarget);
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
workspaceConfiguration.update("buildTarget", currentTarget);
make.parseBuildOrDryRun();
}
// Fill a drop-down with all the target names run by building the makefile for the current configuration
// Triggers a cpptools configuration provider update after selection.
// TODO: change the UI list to multiple selections mode and store an array of current active targets
export async function selectTarget(makefileTargets: string[]): Promise<void> {
let options : vscode.QuickPickOptions = {};
options.ignoreFocusOut = true; // so that the logger and the quick pick don't compete over focus
const chosen: string | undefined = await vscode.window.showQuickPick(makefileTargets, options);
if (chosen) {
setTargetByName(chosen);
}
}
export /*async*/ function setLaunchConfigurationByName (launchConfigurationName: string) : void {//Promise<void> {
statusBar.setLaunchConfiguration(launchConfigurationName);
currentLaunchConfiguration = stringToLaunchConfiguration(launchConfigurationName);
logger.message('Setting launch target "' + launchConfigurationName + '"');
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
workspaceConfiguration.update("launchConfiguration", currentLaunchConfiguration || undefined);
}
// Fill a drop-down with all the launch configurations found for binaries built by the makefile
// under the scope of the current build configuration and target
// Selection updates current launch configuration that will be ready for the next debug/run operation
export async function selectLaunchConfiguration(launchConfigurationsNames: string[]): Promise<void> {
// TODO: create a quick pick with description and details for items
// to better view the long targets commands
let options: vscode.QuickPickOptions = {};
options.ignoreFocusOut = true; // so that the logger and the quick pick don't compete over focus
if (launchConfigurationsNames.length === 0) {
options.placeHolder = "No launch targets identified";
}
const chosen: string | undefined = await vscode.window.showQuickPick(launchConfigurationsNames, options);
if (chosen) {
setLaunchConfigurationByName(chosen);
}
}

146
src/cpptools.ts Normal file
Просмотреть файл

@ -0,0 +1,146 @@
// Support for integration with CppTools Custom Configuration Provider
import * as logger from './logger';
import * as path from 'path';
import * as util from './util';
import * as vscode from 'vscode';
import * as cpp from 'vscode-cpptools';
let cummulativeBrowsePath: string[] = [];
export function clearCummulativeBrowsePath(): void {
cummulativeBrowsePath = [];
}
export class CppConfigurationProvider implements cpp.CustomConfigurationProvider {
public readonly name = 'Makefile Tools';
public readonly extensionId = 'microsoft.vscode-makefile-tools';
private workspaceBrowseConfiguration: cpp.WorkspaceBrowseConfiguration = { browsePath: [] };
private getConfiguration(uri: vscode.Uri): cpp.SourceFileConfigurationItem | undefined {
const norm_path: string = path.normalize(uri.fsPath);
return this.fileIndex.get(norm_path);
}
public async canProvideConfiguration(uri: vscode.Uri): Promise<boolean> {
return !!this.getConfiguration(uri);
}
public async provideConfigurations(uris: vscode.Uri[]): Promise<cpp.SourceFileConfigurationItem[]> {
return util.dropNulls(uris.map(u => this.getConfiguration(u)));
}
public async canProvideBrowseConfiguration(): Promise<boolean> {
return true;
}
public async provideBrowseConfiguration(): Promise<cpp.WorkspaceBrowseConfiguration> { return this.workspaceBrowseConfiguration; }
public dispose(): void { }
// Reset the workspace browse configuration and empty the array of files
// Used when Makefile Tools extension is performing a configuration change operation.
// When the new configuration does not contain information about some files
// that were part of the previous configuration, without this empty helper
// the IntelliSense information of those files will be preserved
// when actually it shouldn't.
public empty() : void {
this.fileIndex.clear();
this.workspaceBrowseConfiguration = {
browsePath: [],
compilerPath: undefined,
standard: undefined,
windowsSdkVersion: undefined
};
}
private readonly fileIndex = new Map<string, cpp.SourceFileConfigurationItem>();
// TODO: Finalize the content parsed from the dry-run output:
// - incorporate relevant settings from the environment
// INCLUDE= for include paths
// _CL_= parse for defines, undefines, standard and response files
// Attention for defines syntax: _CL_=/DMyDefine#1 versus /DMyDefine=1
// - take into account the effect of undefines /U
// In case of conflicting switches, the command prompt overwrites the makefile
public buildCustomConfigurationProvider(
defines: string[],
includePath: string[],
forcedInclude: string[],
standard: util.StandardVersion,
intelliSenseMode: util.IntelliSenseMode,
compilerPath: string,
filesPaths: string[],
windowsSdkVersion?: string): void {
const configuration: cpp.SourceFileConfiguration = {
defines,
standard : standard || "c++17",
includePath,
forcedInclude,
intelliSenseMode,
compilerPath,
windowsSdkVersion
};
// cummulativeBrowsePath incorporates all the files and the includes paths
// of all the compiler invocations of the current configuration
filesPaths.forEach(filePath => {
this.fileIndex.set(path.normalize(filePath), {
uri: filePath,
configuration,
});
let folder: string = path.dirname(filePath);
if (!cummulativeBrowsePath.includes(folder)) {
cummulativeBrowsePath.push(folder);
}
});
includePath.forEach(incl => {
if (!cummulativeBrowsePath.includes(incl)) {
cummulativeBrowsePath.push(incl);
}
});
forcedInclude.forEach(fincl => {
if (!cummulativeBrowsePath.includes(fincl)) {
cummulativeBrowsePath.push(fincl);
}
});
this.workspaceBrowseConfiguration = {
browsePath: cummulativeBrowsePath,
standard,
compilerPath,
windowsSdkVersion
};
}
public logConfigurationProvider(): void {
logger.message("Sending Workspace Browse Configuration: -----------------------------------");
logger.message(" Browse Path: " + this.workspaceBrowseConfiguration.browsePath.join(";"));
logger.message(" Standard: " + this.workspaceBrowseConfiguration.standard);
logger.message(" Compiler Path: " + this.workspaceBrowseConfiguration.compilerPath);
if (process.platform === "win32" && this.workspaceBrowseConfiguration.windowsSdkVersion) {
logger.message(" Windows SDK Version: " + this.workspaceBrowseConfiguration.windowsSdkVersion);
}
logger.message("----------------------------------------------------------------------------");
this.fileIndex.forEach(filePath => {
logger.message("Sending configuration for file " + filePath.uri.toString() + " -----------------------------------");
logger.message(" Defines: " + filePath.configuration.defines.join(";"));
logger.message(" Includes: " + filePath.configuration.includePath.join(";"));
if (filePath.configuration.forcedInclude) {
logger.message(" Force Includes: " + filePath.configuration.forcedInclude.join(";"));
}
logger.message(" Standard: " + filePath.configuration.standard);
logger.message(" IntelliSense Mode: " + filePath.configuration.intelliSenseMode);
logger.message(" Compiler Path: " + filePath.configuration.compilerPath);
if (process.platform === "win32" && filePath.configuration.windowsSdkVersion) {
logger.message(" Windows SDK Version: " + filePath.configuration.windowsSdkVersion);
}
logger.message("---------------------------------------------------------------------------------------------------");
});
}
}

Просмотреть файл

@ -1,27 +1,194 @@
// The module 'vscode' contains the VS Code extensibility API
// Import the module and reference it with the alias vscode in your code below
// Makefile Tools extension
import * as configuration from './configuration';
import * as cpptools from './cpptools';
import * as launch from './launch';
import * as fs from 'fs';
import * as logger from './logger';
import * as make from './make';
import * as parser from './parser';
import * as ui from './ui';
import * as util from './util';
import * as vscode from 'vscode';
import * as cpp from 'vscode-cpptools';
// this method is called when your extension is activated
// your extension is activated the very first time the command is executed
export function activate(context: vscode.ExtensionContext) {
let statusBar: ui.UI = ui.getUI();
let launcher: launch.Launcher = launch.getLauncher();
// Use the console to output diagnostic information (console.log) and errors (console.error)
// This line of code will only be executed once when your extension is activated
console.log('Congratulations, your extension "vscode-makefile-tools" is now active!');
export let extension: MakefileToolsExtension | null = null;
// The command has been defined in the package.json file
// Now provide the implementation of the command with registerCommand
// The commandId parameter must match the command field in package.json
let disposable = vscode.commands.registerCommand('extension.helloWorld', () => {
// The code you place here will be executed every time your command is executed
export class MakefileToolsExtension {
private readonly cppConfigurationProvider = new cpptools.CppConfigurationProvider();
private cppToolsAPI?: cpp.CppToolsApi;
private cppConfigurationProviderRegister?: Promise<void>;
private compilerFullPath ?: string;
// Display a message box to the user
vscode.window.showInformationMessage('Hello VSCode!');
});
public constructor(public readonly extensionContext: vscode.ExtensionContext) {
}
context.subscriptions.push(disposable);
// Parse the dry-run output and populate data for cpptools
public constructIntellisense(dryRunOutputStr: string): void {
parser.parseForCppToolsCustomConfigProvider(dryRunOutputStr);
}
public emptyCustomConfigurationProvider() : void {
this.cppConfigurationProvider.empty();
}
public dispose(): void {
if (this.cppToolsAPI) {
this.cppToolsAPI.dispose();
}
}
// Register this extension as a new provider or request an update
public async registerCppToolsProvider(): Promise<void> {
this.cppConfigurationProvider.logConfigurationProvider();
await this.ensureCppToolsProviderRegistered();
if (this.cppToolsAPI) {
if (this.cppToolsAPI.notifyReady) {
this.cppToolsAPI.notifyReady(this.cppConfigurationProvider);
} else {
this.cppToolsAPI.didChangeCustomConfiguration(this.cppConfigurationProvider);
}
}
}
public ensureCppToolsProviderRegistered(): Promise<void> {
// make sure this extension is registered as provider only once
if (!this.cppConfigurationProviderRegister) {
this.cppConfigurationProviderRegister = this.registerCppTools();
}
return this.cppConfigurationProviderRegister;
}
public async registerCppTools(): Promise<void> {
if (!this.cppToolsAPI) {
this.cppToolsAPI = await cpp.getCppToolsApi(cpp.Version.v2);
}
if (this.cppToolsAPI) {
this.cppToolsAPI.registerCustomConfigurationProvider(this.cppConfigurationProvider);
}
}
public buildCustomConfigurationProvider(
defines: string[],
includePath: string[],
forcedInclude: string[],
standard: util.StandardVersion,
intelliSenseMode: util.IntelliSenseMode,
compilerPath: string,
filesPaths: string[],
windowsSdkVersion?: string
): void {
this.compilerFullPath = compilerPath;
this.cppConfigurationProvider.buildCustomConfigurationProvider(defines, includePath, forcedInclude, standard, intelliSenseMode, compilerPath, filesPaths, windowsSdkVersion);
}
public getCompilerFullPath() : string | undefined { return this.compilerFullPath; }
}
// this method is called when your extension is deactivated
export function deactivate() {}
// A change of target or configuration triggered a new dry-run,
// which produced a new output string to be parsed
export async function updateProvider(dryRunOutputStr: string): Promise<void> {
logger.message("Updating the CppTools IntelliSense Configuration Provider.");
if (extension) {
extension.emptyCustomConfigurationProvider();
extension.constructIntellisense(dryRunOutputStr);
extension.registerCppToolsProvider();
}
}
export async function activate(context: vscode.ExtensionContext): Promise<void> {
vscode.window.showInformationMessage('The extension "vscode-makefile-tools" is now active');
statusBar = ui.getUI();
extension = new MakefileToolsExtension(context);
context.subscriptions.push(vscode.commands.registerCommand('Makefile.setBuildConfiguration', () => {
configuration.setNewConfiguration();
}));
context.subscriptions.push(vscode.commands.registerCommand('Makefile.setBuildTarget', () => {
configuration.setNewTarget();
}));
context.subscriptions.push(vscode.commands.registerCommand('Makefile.buildTarget', () => {
let config : string | undefined = configuration.getCurrentMakeConfiguration();
let target : string | undefined = configuration.getCurrentTarget();
let configAndTarget : string = '"' + config;
if (target) {
target = target.trimLeft();
if (target !== "") {
configAndTarget += "/" + target;
}
}
configAndTarget += '"';
vscode.window.showInformationMessage('Building current makefile configuration ' + configAndTarget);
make.buildCurrentTarget();
}));
context.subscriptions.push(vscode.commands.registerCommand('Makefile.setLaunchConfiguration', () => {
configuration.setNewLaunchConfiguration();
}));
context.subscriptions.push(vscode.commands.registerCommand('Makefile.launchDebug', () => {
launcher.debugCurrentTarget();
}));
context.subscriptions.push(vscode.commands.registerCommand('Makefile.launchRun', () => {
launcher.runCurrentTarget();
}));
context.subscriptions.push(vscode.commands.registerCommand('Makefile.launchTargetPath', () => {
return launcher.launchTargetPath();
}));
context.subscriptions.push(vscode.commands.registerCommand('Makefile.launchCurrentDir', () => {
return launcher.launchCurrentDir();
}));
context.subscriptions.push(vscode.commands.registerCommand('Makefile.launchTargetArgs', () => {
return launcher.launchTargetArgs();
}));
context.subscriptions.push(vscode.commands.registerCommand('Makefile.launchTargetArgsConcat', () => {
return launcher.launchTargetArgsConcat();
}));
configuration.readLoggingLevel();
configuration.readExtensionLog();
// Delete the extension log file, if exists
let extensionLog : string | undefined = configuration.getExtensionLog();
if (extensionLog) {
fs.unlinkSync(extensionLog);
}
// Read configuration info from settings
configuration.initFromSettings();
// Generate the dry-run output used for parsing the info to be sent to CppTools
make.parseBuildOrDryRun();
}
export async function deactivate(): Promise<void> {
vscode.window.showInformationMessage('The extension "vscode-makefile-tools" is de-activated');
const items : any = [
extension,
launcher,
statusBar
];
for (const item of items) {
if (item) {
item.dispose();
}
}
}

235
src/launch.ts Normal file
Просмотреть файл

@ -0,0 +1,235 @@
// Launch support: debug and run in terminal
import * as configuration from './configuration';
import * as extension from './extension';
import * as logger from './logger';
import * as path from 'path';
import * as util from './util';
import * as vscode from 'vscode';
import { debug } from 'util';
let launcher: Launcher;
export class Launcher implements vscode.Disposable {
// Command property accessible from launch.json:
// the full path of the target binary currently set for launch
public launchTargetPath(): string {
let launchConfiguration: configuration.LaunchConfiguration | undefined = configuration.getCurrentLaunchConfiguration();
if (launchConfiguration) {
return launchConfiguration.binary;
} else {
return "";
}
}
// Command property accessible from launch.json:
// the full path from where the target binary is to be launched
public launchCurrentDir(): string {
let launchConfiguration: configuration.LaunchConfiguration | undefined = configuration.getCurrentLaunchConfiguration();
if (launchConfiguration) {
return launchConfiguration.cwd;
} else {
return vscode.workspace.rootPath || "";
}
}
// Command property accessible from launch.json:
// the arguments sent to the target binary, returned as array of string
// This is used by the debug/terminal VS Code APIs.
public launchTargetArgs(): string[] {
let launchConfiguration: configuration.LaunchConfiguration | undefined = configuration.getCurrentLaunchConfiguration();
if (launchConfiguration) {
return launchConfiguration.args;
} else {
return [];
}
}
// Command property accessible from launch.json:
// the arguments sent to the target binary, returned as one simple string
// This is an alternative to define the arguments in launch.json,
// since the string array syntax is not working.
// This is not a perfect solution, it all depends on how the main entry point
// is parsing its given arguments.
// Example: for [CWD>tool arg1 arg2 arg3], the tool will receive
// 2 arguments: tool and "arg1 arg2 arg3"
// As opposed to the above case when the tool will receive
// 4 arguments: tool, arg1, arg2, arg3
// TODO: investigate how we can define string array arguments
// for the target binary in launch.json
public launchTargetArgsConcat(): string {
return this.launchTargetArgs().join(" ");
}
// Invoke a VS Code debugging session passing it all the information
// from the current launch configuration.
// Debugger (imperfect) guess logic:
// - VS for msvc toolset, lldb for clang toolset, gdb for anything else.
// - debugger path is assumed to be the same as the compiler path.
// Exceptions for miMode:
// - if the above logic results in a debugger that is missing, try the other one.
// This is needed either because the system might not be equipped
// with the preffered debugger that corresponds to the toolset in use,
// but also because there might be a compiler alias that is not properly identified
// (example: "cc" alias that points to clang but is not identified as clang,
// therefore requesting a gdb debugger which may be missing
// because there is no gcc toolset installed).
// TODO: implement proper detection of aliases and their commands.
// Exceptions for miDebuggerPath:
// - intentionally do not provide a miDebuggerPath On MAC, because the debugger knows how to find automatically
// the right lldb-mi when miMode is lldb and miDebuggerPath is undefined.
// Additionally, cppvsdbg ignores miMode and miDebuggerPath.
public prepareDebugCurrentTarget(): vscode.DebugConfiguration | undefined {
if (!configuration.getCurrentLaunchConfiguration()) {
vscode.window.showErrorMessage("Currently there is no launch configuration set.");
logger.message("Cannot start debugging because there is no launch configuration set. " +
"Define one in the settings file or use the Makefile.setLaunchConfigurationCommand");
return undefined;
}
let args: string[] = this.launchTargetArgs();
let compilerPath : string | undefined = extension.extension?.getCompilerFullPath();
let parsedObjPath : path.ParsedPath | undefined = compilerPath ? path.parse(compilerPath) : undefined;
let isClangCompiler : boolean | undefined = parsedObjPath?.name.startsWith("clang");
let isMsvcCompiler : boolean | undefined = !isClangCompiler && parsedObjPath?.name.startsWith("cl");
let dbg: string = (isMsvcCompiler) ? "cppvsdbg" : "cppdbg";
let miDebuggerPath : string | undefined = (!isMsvcCompiler && parsedObjPath) ? parsedObjPath.dir : undefined;
// Initial debugger guess
let miMode: string | undefined;
if (parsedObjPath?.name.startsWith("clang")) {
miMode = "lldb";
} else if (!parsedObjPath?.name.startsWith("cl")) {
miMode = "gdb";
}
// If the first chosen debugger is not installed, try the other one.
if (miDebuggerPath && miMode) {
let debuggerPath: string = path.join(miDebuggerPath, miMode);
if (process.platform === "win32") {
// On mingw a file is not found if the extension is not part of the path
debuggerPath = debuggerPath + ".exe";
}
if (!util.checkFileExistsSync(debuggerPath)) {
miMode = (miMode === "gdb") ? "lldb" : "gdb";
}
}
// Exception for MAC-lldb, intentionally don't provide the debugger path,
// to allow the debugger extension to find it automatically
if (miMode === "lldb" && process.platform === "darwin") {
miDebuggerPath = undefined;
} else if (miDebuggerPath && miMode) {
miDebuggerPath = path.join(miDebuggerPath, miMode);
if (process.platform === "win32") {
miDebuggerPath = miDebuggerPath + ".exe";
}
}
let debugConfig: vscode.DebugConfiguration;
debugConfig = {
type: dbg,
name: `Debug My Program`,
request: 'launch',
cwd: '${command:Makefile.launchCurrentDir}',
args,
program: '${command:Makefile.launchTargetPath}',
miMode: miMode,
miDebuggerPath: miDebuggerPath
};
logger.message("Created the following debug config:\n type = " + debugConfig.type +
"\n cwd = " + debugConfig.cwd + " (= " + this.launchCurrentDir() + ")" +
"\n args = " + args.join(" ") +
"\n program = " + debugConfig.program + " (= " + this.launchTargetPath() + ")" +
"\n miMode = " + debugConfig.miMode +
"\n miDebuggerPath = " + debugConfig.miDebuggerPath);
return debugConfig;
}
public async debugCurrentTarget(): Promise<vscode.DebugSession | undefined> {
let debugConfig: vscode.DebugConfiguration | undefined = this.prepareDebugCurrentTarget();
if (debugConfig) {
let startFolder: vscode.WorkspaceFolder;
if (vscode.workspace.workspaceFolders) {
startFolder = vscode.workspace.workspaceFolders[0];
await vscode.debug.startDebugging(startFolder, debugConfig);
} else {
await vscode.debug.startDebugging(undefined, debugConfig);
}
return vscode.debug.activeDebugSession;
}
}
private launchTerminal: vscode.Terminal | undefined;
// Watch for the user closing our terminal
private readonly onTerminalClose = vscode.window.onDidCloseTerminal(term => {
if (term === this.launchTerminal) {
this.launchTerminal = undefined;
}
});
// Invoke a VS Code running terminal passing it all the information
// from the current launch configuration
public prepareRunCurrentTarget(): string | undefined {
if (!configuration.getCurrentLaunchConfiguration()) {
vscode.window.showErrorMessage("Currently there is no launch configuration set.");
logger.message("Cannot run binary because there is no launch configuration set. " +
"Define one in the settings file or use the Makefile.setLaunchConfigurationCommand");
return undefined;
}
// Add a pair of quotes just in case there is a space in the binary path
let terminalCommand: string = '"' + this.launchTargetPath() + '" ';
terminalCommand += this.launchTargetArgs().join(" ");
logger.message("Running command '" + terminalCommand + "' in the terminal from location '" + this.launchCurrentDir() + "'");
return terminalCommand;
}
public async runCurrentTarget(): Promise<vscode.Terminal> {
const terminalOptions: vscode.TerminalOptions = {
name: 'Make/Launch',
};
// Use cmd.exe on Windows
if (process.platform === 'win32') {
terminalOptions.shellPath = 'C:\\Windows\\System32\\cmd.exe';
}
terminalOptions.cwd = this.launchCurrentDir();
if (!this.launchTerminal) {
this.launchTerminal = vscode.window.createTerminal(terminalOptions);
}
let terminalCommand: string | undefined = this.prepareRunCurrentTarget();
if (terminalCommand) {
this.launchTerminal.sendText(terminalCommand);
this.launchTerminal.show();
}
return this.launchTerminal;
}
public dispose(): void {
if (this.launchTerminal) {
this.launchTerminal.dispose();
}
this.onTerminalClose.dispose();
}
}
export function getLauncher(): Launcher {
if (launcher === undefined) {
launcher = new Launcher();
}
return launcher;
}

53
src/logger.ts Normal file
Просмотреть файл

@ -0,0 +1,53 @@
// Logging support
import * as fs from 'fs';
import * as configuration from './configuration';
import * as vscode from 'vscode';
let makeOutputChannel: vscode.OutputChannel | undefined;
function getOutputChannel(): vscode.OutputChannel {
if (!makeOutputChannel) {
makeOutputChannel = vscode.window.createOutputChannel("Makefile tools");
}
return makeOutputChannel;
}
//TODO: implement more verbosity levels for the output log
export function message(message: string, loggingLevel?: string): void {
// Print the message only if the intended logging level matches the settings
// or if no loggingLevel restriction is provided.
if (loggingLevel && configuration.getLoggingLevel() !== loggingLevel) {
return;
}
let channel: vscode.OutputChannel = getOutputChannel();
channel.show();
channel.appendLine(message);
let extensionLog : string | undefined = configuration.getExtensionLog();
if (extensionLog) {
fs.appendFileSync(extensionLog, message);
fs.appendFileSync(extensionLog, "\n");
}
}
// This is used for a few scenarios where the message already has end of line incorporated.
// Example: stdout/stderr of a child process read before the stream is closed.
export function messageNoCR(message: string, loggingLevel?: string): void {
// Print the message only if the intended logging level matches the settings
// or if no loggingLevel restriction is provided.
if (loggingLevel && configuration.getLoggingLevel() !== loggingLevel) {
return;
}
let channel: vscode.OutputChannel = getOutputChannel();
channel.show();
channel.append(message);
let extensionLog : string | undefined = configuration.getExtensionLog();
if (extensionLog) {
fs.appendFileSync(extensionLog, message);
}
}

116
src/make.ts Normal file
Просмотреть файл

@ -0,0 +1,116 @@
// Support for make operations
import * as configuration from './configuration';
import * as ext from './extension';
import * as logger from './logger';
import * as util from './util';
import * as vscode from 'vscode';
export function prepareBuildCurrentTarget(): string[] {
let commandArgs: string[] = [];
// Prepend the target to the arguments given in the configurations json.
let currentTarget: string | undefined = configuration.getCurrentTarget();
if (currentTarget) {
commandArgs.push(currentTarget);
}
commandArgs = commandArgs.concat(configuration.getConfigurationCommandArgs());
logger.message("Building the current target. Command: " + configuration.getConfigurationCommandName() + " " + commandArgs.join(" "));
return commandArgs;
}
export async function buildCurrentTarget(): Promise<void> {
let commandArgs: string[] = prepareBuildCurrentTarget();
try {
// Append without end of line since there is one already included in the stdout/stderr fragments
let stdout : any = (result: string): void => {
logger.messageNoCR(result);
};
let stderr : any = (result: string): void => {
logger.messageNoCR(result);
};
let closing : any = (retCode: number, signal: string): void => {
if (retCode !== 0) {
logger.message("The current target failed to build.");
} else {
logger.message("The current target built successfully.");
}
};
await util.spawnChildProcess(configuration.getConfigurationCommandName(), commandArgs, vscode.workspace.rootPath || "", stdout, stderr, closing);
} catch (error) {
// No need for notification popup, since the build result is visible already in the output channel
logger.message(error);
return;
}
}
export function parseBuild(): boolean {
let buildLog : string | undefined = configuration.getConfigurationBuildLog();
let buildLogContent: string | undefined = buildLog ? util.readFile(buildLog) : undefined;
if (buildLogContent) {
logger.message('Parsing the provided build log "' + buildLog + '" for IntelliSense integration with CppTools...');
ext.updateProvider(buildLogContent);
return true;
}
return false;
}
export async function parseBuildOrDryRun(): Promise<void> {
// If a build log is specified in make_configurations.json or in settings
// (and if it exists on disk) it must be parsed instead of invoking a dry-run make command.
if (parseBuild()) {
return;
}
let commandArgs: string[] = [];
// Prepend the target to the arguments given in the configurations json.
let currentTarget: string | undefined = configuration.getCurrentTarget();
if (currentTarget) {
commandArgs.push(currentTarget);
}
// Append --dry-run (to not perform any real build operation),
// --always-make (to not skip over targets when timestamps indicate nothing needs to be done)
// and --keep-going (to ensure we get as much info as possible even when some targets fail)
commandArgs = commandArgs.concat(configuration.getConfigurationCommandArgs());
commandArgs.push("--dry-run");
commandArgs.push("--always-make");
commandArgs.push("--keep-going");
commandArgs.push("--print-data-base");
logger.message("Generating the make dry-run output for parsing IntelliSense information. Command: " +
configuration.getConfigurationCommandName() + " " + commandArgs.join(" "));
try {
let stdoutStr: string = "";
let stderrStr: string = "";
let stdout : any = (result: string): void => {
stdoutStr += result;
};
let stderr : any = (result: string): void => {
stderrStr += result;
};
let closing : any = (retCode: number, signal: string): void => {
if (retCode !== 0) {
logger.message("The make dry-run command failed.");
logger.message(stderrStr);
}
console.log("Make dry-run output to parse is:\n" + stdoutStr);
ext.updateProvider(stdoutStr);
};
await util.spawnChildProcess(configuration.getConfigurationCommandName(), commandArgs, vscode.workspace.rootPath || "", stdout, stderr, closing);
} catch (error) {
logger.message(error);
return;
}
}

748
src/parser.ts Normal file
Просмотреть файл

@ -0,0 +1,748 @@
// TODO: support also the scenario of parsing a build log,
// to overcome some of --dry-run limitations
// (like some exceptions to the 'do not execute' rule
// or dependencies on a real build)
import * as configuration from './configuration';
import * as cpptools from './cpptools';
import * as ext from './extension';
import * as logger from './logger';
import * as path from 'path';
import * as util from './util';
import * as vscode from 'vscode';
// List of compiler tools plus the most common aliases cc and c++
// ++ needs to be escaped for the regular expression in parseLineAsTool.
// todo: any other scenarios of aliases and symlinks
// that would make parseLineAsTool to not match the regular expression,
// therefore wrongly skipping over compilation lines?
const compilers: string[] = ["clang\\+\\+", "clang", "cl", "gcc", "cc", "icc", "icl", "g\\+\\+", "c\\+\\+"];
const linkers: string[] = ["link", "ilink", "ld", "gcc", "clang\\+\\+", "clang", "cc", "g\\+\\+", "c\\+\\+"];
const sourceFileExtensions: string[] = ["cpp", "cc", "cxx", "c"];
export function parseTargets(verboseLog: string): string[] {
// Extract the text between "# Files" and "# Finished Make data base" lines
// There can be more than one matching section.
let regexpExtract: RegExp = /(# Files\n*)([\s\S]*?)(# Finished Make data base)/mg;
let result: RegExpExecArray | null;
let extractedLog: string = "";
let matches: string[] = [];
let match: string[] | null;
result = regexpExtract.exec(verboseLog);
while (result) {
extractedLog = result[2];
// skip lines starting with {#,.} or preceeded by "# Not a target" and extract the target
let regexpTarget: RegExp = /^(?!\n?[#\.])(?<!^\n?# Not a target:\s*)\s*(\S+):\s+/mg;
match = regexpTarget.exec(extractedLog);
while (match) {
// Make sure we don't insert duplicates.
// They can be caused by the makefile syntax of defining variables for a target.
// That creates multiple lines with the same target name followed by :,
// which is the pattern parsed here.
if (!matches.includes(match[1])) {
matches.push(match[1]);
}
match = regexpTarget.exec(extractedLog);
}
result = regexpExtract.exec(verboseLog);
}
if (matches) {
logger.message("Found the following build targets: " + matches.join(";"));
} else {
logger.message("No targets found");
}
return matches;
}
// Make various preprocessing transformations on the dry-run output
// TODO: "cmd -c", "start cmd", "exit"
function preprocessDryRunOutput(dryRunOutputStr: string): string {
let preprocessedDryRunOutputStr: string = dryRunOutputStr;
// Expand {REPO:VSCODE-MAKEFILE-TOOLS} to the full path of the root of the extension
// This is used for the pre-created dry-run logs consumed by the tests,
// in order to be able to have source files and includes for the test repro
// within the test subfolder of the extension repo, while still exercising full paths for parsing
// and not generating a different output with every new location where Makefile Tools is enlisted.
// A real user scenario wouldn't need this construct.
let extensionRootPath: string = path.resolve(__dirname, "../../");
preprocessedDryRunOutputStr = preprocessedDryRunOutputStr.replace(/{REPO:VSCODE-MAKEFILE-TOOLS}/mg, extensionRootPath);
// Split multiple commands concatenated by '&&' or by ";"
preprocessedDryRunOutputStr = preprocessedDryRunOutputStr.replace(/ && /g, "\n");
preprocessedDryRunOutputStr = preprocessedDryRunOutputStr.replace(/;/g, "\n");
// Concatenate lines ending with ' \', forming one complete command
preprocessedDryRunOutputStr = preprocessedDryRunOutputStr.replace(/\\r\\n/mg, "\n");
let regexp : RegExp = /\s+\\$/mg;
let match: RegExpExecArray | null = regexp.exec(preprocessedDryRunOutputStr);
while (match) {
let result: string = match[0];
result = result.concat("\n");
preprocessedDryRunOutputStr = preprocessedDryRunOutputStr.replace(result, " ");
match = regexp.exec(preprocessedDryRunOutputStr);
}
// Process some more makefile output weirdness
let preprocessedDryRunOutputLines : string[] = [];
preprocessedDryRunOutputStr.split("\n").forEach(line => {
let strC: string = "--mode=compile";
let idxC: number = line.indexOf(strC);
if (idxC >= 0) {
line = line.replace(line.substring(0, idxC), "");
line = line.replace(strC, "");
}
let strL: string = "--mode=link";
let idxL: number = line.indexOf(strL);
if (idxL >= 0) {
line = line.replace(line.substring(0, idxL), "");
line = line.replace(strL, "");
}
// Ignore any lines containing $ because they are redundant and not useful
// for IntelliSense config provider or launch parsing.
// These lines are produced by the verbose log switch --print-data-base,
// which is useful in parsing for build targets.
if (!line.includes("$")) {
preprocessedDryRunOutputLines.push(line);
}
if (idxL >= 0 && idxC >= 0) {
logger.message("Not supporting --mode=compile and --mode=link on the same line");
}
});
preprocessedDryRunOutputStr = preprocessedDryRunOutputLines.join("\n");
// Extract the link command
// Keep the /link switch to the cl command because otherwise we will see compiling without /c
// and we will deduce some other output binary based on its /Fe or /Fo or first source given,
// instead of the output binary defined via the link operation (which will be parsed on the next line).
// TODO: address more accurately the overriding scenarios between output files defined via cl.exe
// and output files defined via cl.exe /link.
// For example, "cl.exe source.cpp /Fetest.exe /link /debug" still produces test.exe
// but cl.exe source.cpp /Fetest.exe /link /out:test2.exe produces only test2.exe.
// For now, ignore any output binary rules of cl while having the /link switch.
if (process.platform === "win32") {
preprocessedDryRunOutputStr = preprocessedDryRunOutputStr.replace(/ \/link /g, "/link \n link.exe ");
}
// TODO: Insert preprocessed files content
// TODO: Wrappers (example: cl.cmd)
return preprocessedDryRunOutputStr;
}
interface ToolInvocation {
// how the makefile invokes the tool:
// relative path, full path, explicit current directory or no path
// also including the file name, with or without extension
pathInMakefile: string;
// a full path formed from the given current path and the path in makefile
// plus the file name, with the extension appended (for windows)
fullPath: string;
// if found at the full path resolved above
found: boolean;
// the arguments passed to the tool invocation
// define as string so that we deal with the separator properly later, via RegExp
arguments: string;
}
// Helper that parses the given line as a tool invocation.
// The full path that is returned is calculated with the following logic:
// - make a full path out of the one given in the makefile
// and the current path that is calculated as of now
// - if the tool is not found at the full path above and if requested,
// it will be searched in all the paths of the PATH environment variable
// and the first one found will be returned
// TODO: handle the following corner cases:
// - quotes only around directory (file name outside quotes)
// - path containing "toolName(no extension) " in the middle
function parseLineAsTool(
line: string,
toolNames: string[],
currentPath: string
): ToolInvocation | undefined {
// - any spaces/tabs before the tool invocation
// - with or without path (relative or full)
// - with or without extension (windows only)
// - with or without quotes
// - must have at least one space or tab after the tool invocation
let regexpStr: string = '^[\\s\\"]*(.*?)(';
if (process.platform === "win32") {
regexpStr += toolNames.join('\\.exe|');
// make sure to append extension if the array of tools has only one element,
// in which case .join is not doing anything
if (toolNames.length === 1) {
regexpStr += ('\\.exe');
}
regexpStr += '|';
}
regexpStr += toolNames.join('|') + ')[\\s\\"]+(.*)$';
let regexp: RegExp = RegExp(regexpStr, "mg");
let match: RegExpExecArray | null = regexp.exec(line);
if (!match) {
return undefined;
}
let toolPathInMakefile: string = match[1];
let toolNameInMakefile: string = match[2];
if (process.platform === "win32" && !path.extname(toolNameInMakefile)) {
toolNameInMakefile += ".exe";
}
toolPathInMakefile = toolPathInMakefile.trimLeft();
let toolFullPath: string = util.makeFullPath(toolPathInMakefile + toolNameInMakefile, currentPath);
toolFullPath = util.removeQuotes(toolFullPath);
let toolFound: boolean = util.checkFileExistsSync(toolFullPath);
// Reject a regexp match that doesn't have a real path before the tool invocation,
// like for example link.exe /out:cl.exe being mistakenly parsed as a compiler command.
// Basically, only spaces and/or tabs and/or a valid path are allowed before the compiler name.
// There is no other easy way to eliminate that case via the regexp
// (it must accept a string before the tool).
// For now, we consider a path as valid if it can be found on disk.
// TODO: be able to recognize a string as a valid path even if it doesn't exist on disk,
// in case the project has a setup phase that is copying/installing stuff (like the toolset)
// and it does not have yet a build in place, therefore a path or file is not yet found on disk,
// even if it is valid.
// In other words, we allow the tool to not be found only if the makefile invokes it without any path,
// which opens the possibility of searching the tool through all the paths in the PATH environment variable.
// Note: when searching for execution targets in the makefile, if a binary was not previously built,
// the extension will not detect it for a launch configuration because of this following return.
if (toolPathInMakefile !== "" && !toolFound) {
return undefined;
}
return {
pathInMakefile: toolPathInMakefile,
fullPath: toolFullPath,
arguments: match[3],
found: toolFound
};
}
// Helper that parses for a particular switch that can occur one or more times
// in the tool command line (example -I or -D for compiler)
// and returns an array of the values passed via that switch
// todo: refactor common parts in parseMultipleSwitchFromToolArguments and parseSingleSwitchFromToolArguments
function parseMultipleSwitchFromToolArguments(args: string, sw: string): string[] {
// - or / as switch prefix
// - before each switch, we allow only for one or more spaces/tabs OR begining of line,
// to reject a case where a part of a path looks like a switch with its value
// - can be wrapped by a pair of ', before the switch prefix and after the switch value
// - the value can be wrapped by a pair of "
// - one or none or more spaces/tabs between the switch and the value
let regexpStr: string = '(^|\\s+)\\\'?(\\/' + sw + '(:|=|\\s*)|-' + sw + '(:|=|\\s*))(\\".*?\\"|[^\\\'\\s]+)\\\'?';
let regexp: RegExp = RegExp(regexpStr, "mg");
let match: RegExpExecArray | null;
let results: string[] = [];
match = regexp.exec(args);
while (match) {
let result: string = match[5].trim();
result = result.replace(/"/g, "");
results.push(result);
match = regexp.exec(args);
}
return results;
}
// Helper that parses for a particular switch that can occur once in the tool command line,
// or if it is allowed to be specified more than once, the latter would override the former.
// The switch is an array of strings (as opposed to a simple string)
// representing all the alternative switches in distinct toolsets (cl, versus gcc, versus clang, etc)
// of the same conceptual argument of the given tool.
// The helper returns the value passed via the given switch
// Examples for compiler: -std:c++17, -Fotest.obj, -Fe test.exe
// Example for linker: -out:test.exe versus -o a.out
function parseSingleSwitchFromToolArguments(args: string, sw: string[]): string | undefined {
// - or / as switch prefix
// - before the switch, we allow only for one or more spaces/tabs OR begining of line,
// to reject a case where a part of a path looks like a switch with its value
// - can be wrapped by a pair of ', before the switch prefix and after the switch value
// - the value can be wrapped by a pair of "
// - ':' or '=' or one/none/more spaces/tabs between the switch and the value
let regexpStr: string = '(^|\\s+)\\\'?(\\/|-)(' + sw.join("|") + ')(:|=|\\s*)(\\".*?\\"|[^\\\'\\s]+)\\\'?';
let regexp: RegExp = RegExp(regexpStr, "mg");
let match: RegExpExecArray | null;
let results: string[] = [];
match = regexp.exec(args);
while (match) {
let result: string = match[5].trim();
result = result.replace(/"/g, "");
results.push(result);
match = regexp.exec(args);
}
return results.pop();
}
// Helper that answers whether a particular switch is passed to the tool.
// When calling this helper, we are not interested in obtaining the
// (or there is no) value passed in via the switch.
// There must be at least one space/tab before the switch,
// so that we don't match a path by mistake.
// Same after the switch, in case the given name is a substring
// of another switch name. Or have the switch be the last in the command line.
// Examples: we call this helper for /c compiler switch or /dll linker switch.
// TODO: detect sets of switches that cancel each other to return a more
// accurate result in case of override (example: /TC and /TP)
function isSwitchPassedInArguments(args: string, sw: string[]): boolean {
// - or / as switch prefix
// - one or more spaces/tabs after
let regexpStr: string = '((\\s+)|^)(\\/|-)(' + sw.join("|") + ')((\\s+)|$)';
let regexp: RegExp = RegExp(regexpStr, "mg");
if (regexp.exec(args)) {
return true;
}
return false;
}
// Helper that parses for files (of given extensions) that are given as arguments to a tool
// TODO: consider non standard extensions (or no extension at all) in the presence of TC/TP.
// Attention to obj, pdb or exe files tied to /Fo, /Fd and /Fe
// TODO: consider also ' besides "
function parseFilesFromToolArguments(args: string, exts: string[]): string[] {
// no switch prefix and no association yet with a preceding switch
// one or more spaces/tabs before (or beginning of line) and after (or end of line)
// with or without quotes surrounding the argument
// - if surrounding quotes, don't allow another quote in between
// (todo: handle the scenario when quotes enclose just the directory path, without the file name)
let regexpStr: string = '(';
exts.forEach(ext => {
regexpStr += '\\".[^\\"]*?\\.' + ext + '\\"|';
regexpStr += '\\S+\\.' + ext;
// Make sure we don't append '|' after the last extension value
if (ext !== exts[exts.length - 1]) {
regexpStr += '|';
}
});
regexpStr += ')(\\s+|$)';
let regexp: RegExp = RegExp(regexpStr, "mg");
let match: string[] | null;
let files: string[] = [];
match = regexp.exec(args);
while (match) {
let result: string = match[1].trim();
result = result.replace(/"/g, "");
files.push(result);
match = regexp.exec(args);
}
return files;
}
// Helper that identifies system commands (cd, cd -, pushd, popd) and make.exe change directory switch (-C)
// to calculate the effect on the current path, also remembering the transition in the history stack.
// The current path is always the last one into the history.
function currentPathAfterCommand(line: string, currentPathHistory: string[]): string[] {
line = line.trimLeft();
line = line.trimRight();
let lastCurrentPath: string = (currentPathHistory.length > 0) ? currentPathHistory[currentPathHistory.length - 1] : "";
let newCurrentPath: string = "";
if (line.startsWith('cd -')) {
// Swap the last two current paths in the history.
if (lastCurrentPath) {
currentPathHistory.pop();
}
let lastCurrentPath2: string = (currentPathHistory.length > 0) ? currentPathHistory.pop() || "" : lastCurrentPath;
logger.message("Analyzing line: " + line);
logger.message("CD- command: leaving directory " + lastCurrentPath + " and entering directory " + lastCurrentPath2);
currentPathHistory.push(lastCurrentPath);
currentPathHistory.push(lastCurrentPath2);
} else if (line.startsWith('popd') || line.includes('Leaving directory')) {
let lastCurrentPath: string = (currentPathHistory.length > 0) ? currentPathHistory[currentPathHistory.length - 1] : "";
currentPathHistory.pop();
let lastCurrentPath2: string = (currentPathHistory.length > 0) ? currentPathHistory[currentPathHistory.length - 1] : "";
logger.message("Analyzing line: " + line);
logger.message("POPD command or end of MAKE -C: leaving directory " + lastCurrentPath + " and entering directory " + lastCurrentPath2);
} else if (line.startsWith('cd')) {
newCurrentPath = util.makeFullPath(line.slice(3), lastCurrentPath);
// For "cd-" (which toggles between the last 2 current paths),
// we must always keep one previous current path in the history.
// Don't pop if the history has only one path as of now,
// even if this wasn't a pushd.
if (currentPathHistory.length > 1) {
currentPathHistory = [];
currentPathHistory.push(lastCurrentPath);
}
currentPathHistory.push(newCurrentPath);
logger.message("Analyzing line: " + line);
logger.message("CD command: entering directory " + newCurrentPath);
} else if (line.startsWith('pushd')) {
newCurrentPath = util.makeFullPath(line.slice(6), lastCurrentPath);
currentPathHistory.push(newCurrentPath);
logger.message("Analyzing line: " + line);
logger.message("PUSHD command: entering directory " + newCurrentPath);
} else if (line.includes('Entering directory')) {
// equivalent to pushd
let match: RegExpMatchArray | null = line.match("(.*)(Entering directory ')(.*)'");
if (match) {
newCurrentPath = util.makeFullPath(match[3], lastCurrentPath) || "";
} else {
newCurrentPath = "Could not parse directory";
}
logger.message("Analyzing line: " + line);
logger.message("MAKE -C: entering directory " + newCurrentPath);
currentPathHistory.push(newCurrentPath);
}
return currentPathHistory;
}
// Parse the output of the make dry-run command in order to provide CppTools
// with information about includes, defines, compiler path....etc...
// as needed by CustomConfigurationProvider
export function parseForCppToolsCustomConfigProvider(dryRunOutputStr: string): void {
logger.message('Parsing dry-run output for CppTools Custom Configuration Provider.');
// Do some preprocessing on the dry-run output to make the RegExp parsing easier
dryRunOutputStr = preprocessDryRunOutput(dryRunOutputStr);
// Empty the cummulative browse path built during the previous dry-run parsing
cpptools.clearCummulativeBrowsePath();
// Current path starts with workspace root and can be modified
// with prompt commands like cd, cd-, pushd/popd or with -C make switch
let currentPath: string = vscode.workspace.rootPath || "";
let currentPathHistory: string[] = [currentPath];
// Read the dry-run output line by line, searching for compilers and directory changing commands
// to construct information for the CppTools custom configuration
let dryRunOutputLines: string[] = dryRunOutputStr.split("\n");
dryRunOutputLines.forEach(line => {
currentPathHistory = currentPathAfterCommand(line, currentPathHistory);
currentPath = currentPathHistory[currentPathHistory.length - 1];
let compilerTool: ToolInvocation | undefined = parseLineAsTool(line, compilers, currentPath);
if (compilerTool) {
logger.message("Found compiler command: " + line, "Verbose");
// Compiler path is either what the makefile provides or found in the PATH environment variable or empty
let compilerFullPath: string = compilerTool.fullPath || "";
if (!compilerTool.found) {
let toolBaseName: string = path.basename(compilerFullPath);
compilerFullPath = path.join(util.toolPathInEnv(toolBaseName) || "", toolBaseName);
}
logger.message(" Compiler path: " + compilerFullPath, "Verbose");
// Parse and log the includes, forced includes and the defines
let includes: string[] = parseMultipleSwitchFromToolArguments(compilerTool.arguments, 'I');
includes = util.makeFullPaths(includes, currentPath);
logger.message(" Includes: " + includes.join(";"), "Verbose");
let forcedIncludes: string[] = parseMultipleSwitchFromToolArguments(compilerTool.arguments, 'FI');
forcedIncludes = util.makeFullPaths(forcedIncludes, currentPath);
logger.message(" Forced includes: " + forcedIncludes.join(";"), "Verbose");
// TODO-BUG: fix regexp for parseMultipleSwitchFromToolArguments
// Include dirs not detected properly in 8cc (because of '" "')
let defines: string[] = parseMultipleSwitchFromToolArguments(compilerTool.arguments, 'D');
logger.message(" Defines: " + defines.join(";"), "Verbose");
// Parse the C/C++ standard
// TODO: implement default standard: c++11 for C and c++17 for C++
// TODO: c++20 & c++latest and more accurate setting logic (example: CMake Tools)
let standardStr: string | undefined = parseSingleSwitchFromToolArguments(compilerTool.arguments, ["std"]);
let standard: util.StandardVersion = standardStr ? <util.StandardVersion>standardStr : undefined;
logger.message(" Standard: " + standard, "Verbose");
// Parse the IntelliSense mode
// TODO: msvc-x86
// how to deal with aliases and symlinks (CC, C++), which can point to any toolsets
let intelliSenseMode: util.IntelliSenseMode;
if (path.basename(compilerTool.fullPath).startsWith("clang")) {
intelliSenseMode = "clang-x64";
} else if (path.basename(compilerTool.fullPath).startsWith("cl")) {
intelliSenseMode = "msvc-x64";
} else if (path.basename(compilerTool.fullPath).startsWith("gcc") ||
path.basename(compilerTool.fullPath).startsWith("g++")) {
intelliSenseMode = "gcc-x64";
} else {
if (process.platform === "win32") {
intelliSenseMode = "msvc-x64";
} else if (process.platform === "darwin") {
intelliSenseMode = "clang-x64";
} else {
intelliSenseMode = "gcc-x64";
}
}
logger.message(" IntelliSense mode: " + intelliSenseMode, "Verbose");
// For windows, parse the sdk version
let windowsSDKVersion: string | undefined = "";
if (process.platform === "win32") {
windowsSDKVersion = process.env["WindowsSDKVersion"];
if (windowsSDKVersion) {
logger.message('Windows SDK Version: ' + windowsSDKVersion, "Verbose");
}
}
// Parse the source files
let files: string[] = parseFilesFromToolArguments(compilerTool.arguments, sourceFileExtensions);
files = util.makeFullPaths(files, currentPath);
logger.message(" Source files: " + files.join(";"), "Verbose");
if (ext.extension) {
ext.extension.buildCustomConfigurationProvider(defines, includes, forcedIncludes, standard, intelliSenseMode, compilerFullPath, files, windowsSDKVersion);
}
}
});
}
// Parse the output of the make dry-run command in order to provide VS Code debugger
// with information about binaries, their execution paths and arguments
export function parseForLaunchConfiguration(dryRunOutputStr: string): configuration.LaunchConfiguration[] {
logger.message('Parsing dry-run output for Launch (debug/run) configuration.');
// Do some preprocessing on the dry-run output to make the RegExp parsing easier
dryRunOutputStr = preprocessDryRunOutput(dryRunOutputStr);
// Current path starts with workspace root and can be modified
// with prompt commands like cd, cd-, pushd/popd or with -C make switch
let currentPath: string = vscode.workspace.rootPath || "";
let currentPathHistory: string[] = [currentPath];
// array of full path executables built by this makefile
let targetBinaries: string[] = [];
// array of launch configurations, for each of the binaries above
let launchConfigurations: configuration.LaunchConfiguration[] = [];
// The first pass of reading the dry-run output, line by line
// searching for compilers, linkers and directory changing commands
// to construct information for the launch configuration
let dryRunOutputLines: string[] = dryRunOutputStr.split("\n");
dryRunOutputLines.forEach(line => {
currentPathHistory = currentPathAfterCommand(line, currentPathHistory);
currentPath = currentPathHistory[currentPathHistory.length - 1];
// A target binary is usually produced by the linker with the /out or /o switch,
// but there are several scenarios (for win32 Microsoft cl.exe)
// when the compiler is producing an output binary directly (via the /Fe switch)
// or indirectly (based on some naming default rules in the absence of /Fe)
let linkerTargetBinary: string | undefined;
let compilerTargetBinary: string | undefined;
if (process.platform === "win32") {
let compilerTool: ToolInvocation | undefined = parseLineAsTool(line, compilers, currentPath);
if (compilerTool) {
// If a cl.exe is not performing only an obj compilation, deduce the output executable if possible
// Note: no need to worry about the DLL case that this extension doesn't support yet
// since a compiler can produce implicitly only an executable.
if (path.basename(compilerTool.fullPath).startsWith("cl")) {
if (!isSwitchPassedInArguments(compilerTool.arguments, ["c", "P", "E", "EP"])) {
logger.message("Found compiler command:\n" + line, "Verbose");
// First read the value of the /Fe switch (for cl.exe)
compilerTargetBinary = parseSingleSwitchFromToolArguments(compilerTool.arguments, ["Fe"]);
// Then assume first object file base name (defined with /Fo) + exe
// The binary is produced in the same folder where the compiling operation takes place,
// and not in an eventual different obj path.
// Note: /Fo is not allowed on multiple sources compilations so there will be only one if found
if (!compilerTargetBinary) {
let objFile: string | undefined = parseSingleSwitchFromToolArguments(compilerTool.arguments, ["Fo"]);
if (objFile) {
let parsedObjPath: path.ParsedPath = path.parse(objFile);
compilerTargetBinary = parsedObjPath.name + ".exe";
logger.message("The compiler command is not producing a target binary explicitly. Assuming " +
compilerTargetBinary + " from the first object passed in with /Fo", "Verbose");
}
} else {
logger.message("Producing target binary with /Fe: " + compilerTargetBinary, "Verbose");
}
// Then assume first source file base name + exe.
// The binary is produced in the same folder where the compiling operation takes place,
// and not in an eventual different source path.
if (!compilerTargetBinary) {
let srcFiles: string[] | undefined = parseFilesFromToolArguments(compilerTool.arguments, sourceFileExtensions);
if (srcFiles.length >= 1) {
let parsedSourcePath: path.ParsedPath = path.parse(srcFiles[0]);
compilerTargetBinary = parsedSourcePath.name + ".exe";
logger.message("The compiler command is not producing a target binary explicitly. Assuming " +
compilerTargetBinary + " from the first source file passed in", "Verbose");
}
}
}
}
if (compilerTargetBinary) {
compilerTargetBinary = util.makeFullPath(compilerTargetBinary, currentPath);
}
}
}
let linkerTool: ToolInvocation | undefined = parseLineAsTool(line, linkers, currentPath);
if (linkerTool) {
// TODO: implement launch support for DLLs and LIBs, besides executables.
if (!isSwitchPassedInArguments(linkerTool.arguments, ["dll", "lib", "shared"])) {
// Gcc/Clang tools can also perform linking so don't parse any output binary
// if there are switches passed in to cause early stop of compilation: -c, -E, -S
// (-o will not point to an executable)
// Also, the ld switches -r and -Ur do not produce executables.
if (!isSwitchPassedInArguments(linkerTool.arguments, ["c", "E", "S", "r", "Ur"])) {
linkerTargetBinary = parseSingleSwitchFromToolArguments(linkerTool.arguments, ["out", "o"]);
logger.message("Found linker command: " + line, "Verbose");
if (!linkerTargetBinary) {
// For Microsoft link.exe, the default output binary takes the base name
// of the first file (obj, lib, etc...) that is passed to the linker.
// The binary is produced in the same folder where the linking operation takes place,
// and not in an eventual different obj/lib path.
if (process.platform === "win32" && path.basename(linkerTool.fullPath).startsWith("link")) {
let files: string[] = parseFilesFromToolArguments(linkerTool.arguments, ["obj", "lib"]);
if (files.length >= 1) {
let parsedPath: path.ParsedPath = path.parse(files[0]);
let targetBinaryFromFirstObjLib: string = parsedPath.name + ".exe";
logger.message("The link command is not producing a target binary explicitly. Assuming " +
targetBinaryFromFirstObjLib + " based on first object passed in", "Verbose");
linkerTargetBinary = targetBinaryFromFirstObjLib;
}
} else {
// The default output binary from a linking operation is usually a.out on linux/mac,
// produced in the same folder where the toolset is run.
logger.message("The link command is not producing a target binary explicitly. Assuming a.out", "Verbose");
linkerTargetBinary = "a.out";
}
} else {
logger.message("Producing target binary: " + linkerTargetBinary, "Verbose");
}
}
if (linkerTargetBinary) {
linkerTargetBinary = util.makeFullPath(linkerTargetBinary, currentPath);
}
}
}
// It is not possible to have compilerTargetBinary and linkerTargetBinary both defined,
// because a dry-run output line cannot be a compilation and an explicit link at the same time.
// (cl.exe with /link switch is split into two lines - cl.exe and link.exe - during dry-run preprocessing).
// Also for gcc/clang, -o switch or the default output will be a .o in the presence of -c and an executable otherwise.
let targetBinary: string | undefined = linkerTargetBinary || compilerTargetBinary;
if (targetBinary) {
targetBinaries.push(targetBinary);
// Include limited launch configuration, when only the binary is known,
// in which case the execution path is defaulting to workspace root folder
// and there are no args.
let launchConfiguration: configuration.LaunchConfiguration = {
binary: targetBinary,
cwd: vscode.workspace.rootPath || "",
args: []
};
logger.message("Adding launch configuration:\n" + configuration.launchConfigurationToString(launchConfiguration), "Verbose");
launchConfigurations.push(launchConfiguration);
}
});
// If no binaries are found to be built, there is no point in parsing for invoking targets
if (targetBinaries.length === 0) {
return launchConfigurations;
}
// For each of the built binaries identified in the dry-run pass above,
// search the makefile for possible targets that are invoking them,
// to update the launch configuration with their name, full path, execution path and args.
// If a built binary is not having an execution target defined in the makefile,
// the launch configuration will be limited to the version having only with their name and path,
// workspace folder instead of another execution path and zero args.
// If this is not sufficient, the user can at any time write an execution target
// in the makefile or write a launch configuration in the settings json.
// TODO: investigate the scenario when the binary is run relying on path environment variable
// and attention to on the fly environment changes made by make.
// Reset the current path since we are going to analyze path transitions again
// with this second pass through the dry-run output lines,
// while building the launch custom provider data.
currentPath = vscode.workspace.rootPath || "";
currentPathHistory = [currentPath];
// Make also an array with only the base file names of the found target binaries.
let targetBinariesNames: string[] = [];
targetBinaries.forEach(target => {
let parsedPath: path.ParsedPath = path.parse(target);
if (!targetBinariesNames.includes(parsedPath.name)) {
targetBinariesNames.push(parsedPath.name);
}
});
dryRunOutputLines.forEach(line => {
currentPathHistory = currentPathAfterCommand(line, currentPathHistory);
currentPath = currentPathHistory[currentPathHistory.length - 1];
// Currently, the target binary invocation will not be identified if the line does not start with it,
// because we need to be able to reject matches like "link.exe /out:mybinary.exe".
// See comment in parseLineAsTool about not understanding well what it is that prepends
// the target binary tool, unless we treat it as a path and verify its location on disk.
// Because of this limitation, the extension might not present to the user
// all the scenarios of arguments defined in the makefile for this target binary.
// TODO: identify and parse properly all the valid scenarios of invoking a taget binary in a makefile:
// - @if (not) exist binary binary arg1 arg2 arg3
// (because an "@if exist" is not resolved by the dry-run and appears in the output)
// - cmd /c binary arg1 arg2 arg3
// - start binary
let targetBinaryTool: ToolInvocation | undefined = parseLineAsTool(line, targetBinariesNames, currentPath);
if (targetBinaryTool) {
logger.message("Found binary execution command: " + line, "Verbose");
// Include complete launch configuration: binary, execution path and args
// are known from parsing the dry-run
let splitArgs: string[] = targetBinaryTool.arguments ? targetBinaryTool.arguments.split(" ") : [];
let launchConfiguration: configuration.LaunchConfiguration = {
binary: targetBinaryTool.fullPath,
cwd: currentPath,
// TODO: consider optionally quoted arguments
args: splitArgs
};
logger.message("Adding launch configuration:\n" + configuration.launchConfigurationToString(launchConfiguration), "Verbose");
launchConfigurations.push(launchConfiguration);
}
});
// Target binary launch configuration duplicates may be generated in the following scenarios.
// They will be filtered later when dealing with the UI pick.
// - a target binary invoked several times with the same arguments and from the same path
// - a target binary invoked once with no parameters is still a duplicate
// of the entry generated by the linker command which produced the binary
// - sometimes the same binary is linked more than once in the same location
// (example: instrumentation) but the launch configurations list need only one entry,
// corresponding to the final binary, not the intermediate ones.
// Also, sort for better searching experience in big code bases.
return launchConfigurations;
}

Просмотреть файл

@ -1,22 +0,0 @@
//
// Note: This example test is leveraging the Mocha test framework.
// Please refer to their documentation on https://mochajs.org/ for help.
//
// The module 'assert' provides assertion methods from node
import * as assert from 'assert';
// You can import and use all API from the 'vscode' module
// as well as import your extension to test it
// import * as vscode from 'vscode';
// import * as myExtension from '../extension';
// Defines a Mocha test suite to group tests of similar kind together
suite("Extension Tests", function () {
// Defines a Mocha unit test
test("Something 1", function() {
assert.equal(-1, [1, 2, 3].indexOf(5));
assert.equal(-1, [1, 2, 3].indexOf(0));
});
});

45
src/test/fakeSuite/Repros/.vscode/make_configurations.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,45 @@
[
{
"name": "InterestingSmallMakefile_windows_configDebug",
"buildLog": "./InterestingSmallMakefile_windows_dryrunDebug.log"
},
{
"name": "InterestingSmallMakefile_windows_configRelSize",
"commandName": "make",
"commandArgs": ["OPT=RelSize"],
"buildLog": "./InterestingSmallMakefile_windows_dryrunRelSize.log"
},
{
"name": "InterestingSmallMakefile_windows_configRelSpeed",
"commandName": "c:/fake/path/make.exe",
"commandArgs": ["OPT=RelSpeed"]
},
{
"name": "8cc_linux",
"buildLog": "./8cc_linux_dryrun.log"
},
{
"name": "8cc_mingw",
"buildLog": "./8cc_mingw_dryrun.log"
},
{
"name": "Fido_linux",
"buildLog": "./Fido_linux_dryrun.log"
},
{
"name": "Fido_mingw",
"buildLog": "./Fido_mingw_dryrun.log"
},
{
"name": "tinyvm_linux_pedantic",
"buildLog": "./tinyvm_linux_dryrunPedantic.log",
"commandName": "make",
"commandArgs": ["PEDANTIC=yes"]
},
{
"name": "tinyvm_mingw_pedantic",
"buildLog": "./tinyvm_mingw_dryrunPedantic.log",
"commandName": "make",
"commandArgs": ["PEDANTIC=yes"]
}
]

6
src/test/fakeSuite/Repros/.vscode/settings.json поставляемый Normal file
Просмотреть файл

@ -0,0 +1,6 @@
{
"C_Cpp.default.configurationProvider": "microsoft.vscode-makefile-tools",
"Makefile.buildLog": "./dummy_dryrun.log",
"Makefile.extensionLog": "./MakefileTools.out",
"Makefile.makePath": "c:/some/other/fake/path"
}

Просмотреть файл

@ -0,0 +1,291 @@
Resolving extension log path to "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/MakefileTools.out"
Found build log path setting "./dummy_dryrun.log"
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/dummy_dryrun.log"
No current configuration is defined in the settings file
Reading configurations from file /.vscode/make_configurations.json
No target defined in the settings file
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/dummy_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path:
Standard: undefined
Compiler Path: undefined
----------------------------------------------------------------------------
Reading configurations from file /.vscode/make_configurations.json
Found the following configurations defined in make_configurations.json: InterestingSmallMakefile_windows_configDebug;InterestingSmallMakefile_windows_configRelSize;InterestingSmallMakefile_windows_configRelSpeed;8cc_linux;Fido_linux;tinyvm_linux_pedantic
Setting configuration - 8cc_linux
Found build log path setting "./8cc_linux_dryrun.log" defined for configuration "8cc_linux
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/8cc_linux_dryrun.log"
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/8cc_linux_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Standard: undefined
Compiler Path: /usr/bin/cc
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/main.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/cpp.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/debug.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/dict.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/gen.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/lex.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/vector.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/parse.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/buffer.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/map.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/error.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/path.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/file.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/set.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/encoding.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/8cc_linux_dryrun.log" for targets...
Found the following build targets: path.o;cleanobj;parse.o;8cc;cpp.o;debug.o;test;gen.o;testtest;error.o;stage3;all;map.o;self;dict.o;file.o;runtests;encoding.o;set.o;vector.o;stage1;clean;lex.o;buffer.o;stage2;main.o;utiltest.o;utiltest;fulltest
Setting target all
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/8cc_linux_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Standard: undefined
Compiler Path: /usr/bin/cc
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/main.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/cpp.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/debug.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/dict.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/gen.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/lex.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/vector.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/parse.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/buffer.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/map.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/error.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/path.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/file.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/set.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/encoding.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/cc
---------------------------------------------------------------------------------------------------
Building the current target. Command: c:/some/other/fake/path all
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/8cc_linux_dryrun.log" for launch configurations...
Parsing dry-run output for Launch (debug/run) configuration.
Found the following launch targets defined in the makefile: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros>8cc()
Setting launch target "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros>8cc()"
Created the following debug config:
type = cppdbg
cwd = ${command:Makefile.launchCurrentDir} (= {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros)
args =
program = ${command:Makefile.launchTargetPath} (= {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/8cc)
miMode = gdb
miDebuggerPath = /usr/bin/gdb
Running command '"{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/8cc" ' in the terminal from location '{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros'

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,291 @@
Resolving extension log path to "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\MakefileTools.out"
Found build log path setting "./dummy_dryrun.log"
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\dummy_dryrun.log"
No current configuration is defined in the settings file
Reading configurations from file /.vscode/make_configurations.json
No target defined in the settings file
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\dummy_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path:
Standard: undefined
Compiler Path: undefined
----------------------------------------------------------------------------
Reading configurations from file /.vscode/make_configurations.json
Found the following configurations defined in make_configurations.json: InterestingSmallMakefile_windows_configDebug;InterestingSmallMakefile_windows_configRelSize;InterestingSmallMakefile_windows_configRelSpeed;8cc_linux;8cc_mingw;Fido_linux;Fido_mingw;tinyvm_linux_pedantic;tinyvm_mingw_pedantic
Setting configuration - 8cc_mingw
Found build log path setting "./8cc_mingw_dryrun.log" defined for configuration "8cc_mingw
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\8cc_mingw_dryrun.log"
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\8cc_mingw_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Standard: undefined
Compiler Path: C:\msys64\usr\bin\cc.exe
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\main.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\cpp.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\debug.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\dict.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\gen.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\lex.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\vector.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\parse.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\buffer.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\map.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\error.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\path.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\file.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\set.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\encoding.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\8cc_mingw_dryrun.log" for targets...
Found the following build targets: path.o;cleanobj;parse.o;8cc;cpp.o;debug.o;test;gen.o;testtest;error.o;stage3;all;map.o;self;dict.o;file.o;runtests;encoding.o;set.o;vector.o;stage1;clean;lex.o;buffer.o;stage2;main.o;utiltest.o;utiltest;fulltest
Setting target all
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\8cc_mingw_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Standard: undefined
Compiler Path: C:\msys64\usr\bin\cc.exe
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\main.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\cpp.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\debug.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\dict.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\gen.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\lex.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\vector.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\parse.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\buffer.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\map.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\error.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\path.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\file.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\set.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\encoding.c -----------------------------------
Defines: BUILD_DIR=
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros
Force Includes:
Standard: gnu11
IntelliSense Mode: msvc-x64
Compiler Path: C:\msys64\usr\bin\cc.exe
---------------------------------------------------------------------------------------------------
Building the current target. Command: c:\some\other\fake\path all
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\8cc_mingw_dryrun.log" for launch configurations...
Parsing dry-run output for Launch (debug/run) configuration.
Found the following launch targets defined in the makefile: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>8cc()
Setting launch target "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>8cc()"
Created the following debug config:
type = cppdbg
cwd = ${command:Makefile.launchCurrentDir} (= {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros)
args =
program = ${command:Makefile.launchTargetPath} (= {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\8cc)
miMode = gdb
miDebuggerPath = C:\msys64\usr\bin\gdb.exe
Running command '"{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\8cc" ' in the terminal from location '{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros'

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,307 @@
Setting configuration - Fido_linux
Found build log path setting "./Fido_linux_dryrun.log" defined for configuration "Fido_linux
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/Fido_linux_dryrun.log"
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/Fido_linux_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Simulator;{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc;{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src
Standard: c++11
Compiler Path: /usr/bin/g++
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Simulator/Robby.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Simulator/Emitter.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Simulator/Simlink.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/NeuralNet.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/FidoControlSystem.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/QLearn.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/LSInterpolator.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/main.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Backpropagation.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Layer.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/GeneticAlgo.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/WireFitQLearn.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Adadelta.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Interpolator.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Neuron.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/SGDTrainer.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Pruner.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/Fido_linux_dryrun.log" for targets...
Found the following build targets: bin/foo.o;src/main.o;src/Pruner.o;src/SGDTrainer.o;src/Layer.o;src/Adadelta.o;src/Simulator/Emitter.o;all;src/QLearn.o;src/Neuron.o;lib;src/LSInterpolator.o;src/GeneticAlgo.o;clean;src/NeuralNet.o;src/Simulator/Simlink.o;src/Backpropagation.o;src/FidoControlSystem.o;src/Simulator/Robby.o;src/WireFitQLearn.o;src/Interpolator.o;install
Setting target bin/foo.o
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/Fido_linux_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Simulator;{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc;{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src
Standard: c++11
Compiler Path: /usr/bin/g++
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Simulator/Robby.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Simulator/Emitter.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Simulator/Simlink.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/NeuralNet.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/FidoControlSystem.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/QLearn.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/LSInterpolator.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/main.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Backpropagation.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Layer.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/GeneticAlgo.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/WireFitQLearn.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Adadelta.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Interpolator.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Neuron.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/SGDTrainer.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/Pruner.cpp -----------------------------------
Defines: MY_FAKE_DEF_FROM_MAKEFILE
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/MyFakeInc
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: /usr/bin/g++
---------------------------------------------------------------------------------------------------
Building the current target. Command: c:/some/other/fake/path bin/foo.o
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/Fido_linux_dryrun.log" for launch configurations...
Parsing dry-run output for Launch (debug/run) configuration.
Found the following launch targets defined in the makefile: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros>bin/foo.o()
Setting launch target "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros>bin/foo.o()"
Created the following debug config:
type = cppdbg
cwd = ${command:Makefile.launchCurrentDir} (= {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros)
args =
program = ${command:Makefile.launchTargetPath} (= {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/bin/foo.o)
miMode = gdb
miDebuggerPath = /usr/bin/gdb
Running command '"{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/bin/foo.o" ' in the terminal from location '{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros'

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,307 @@
Setting configuration - Fido_mingw
Found build log path setting "./Fido_mingw_dryrun.log" defined for configuration "Fido_mingw
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\Fido_mingw_dryrun.log"
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\Fido_mingw_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Simulator
Standard: c++11
Compiler Path: C:\msys64\usr\bin\g++.exe
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Adadelta.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Backpropagation.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\FidoControlSystem.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\GeneticAlgo.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Interpolator.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Layer.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\LSInterpolator.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\main.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\NeuralNet.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Neuron.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Pruner.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\QLearn.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SGDTrainer.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Simulator\Emitter.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Simulator\Robby.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Simulator\Simlink.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\WireFitQLearn.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\Fido_mingw_dryrun.log" for targets...
Found the following build targets: bin/foo.o;src/main.o;src/Pruner.o;src/SGDTrainer.o;src/Layer.o;src/Adadelta.o;src/Simulator/Emitter.o;all;src/QLearn.o;src/Neuron.o;lib;src/LSInterpolator.o;src/GeneticAlgo.o;clean;src/NeuralNet.o;src/Simulator/Simlink.o;src/Backpropagation.o;src/FidoControlSystem.o;src/Simulator/Robby.o;src/WireFitQLearn.o;src/Interpolator.o;install
Setting target bin/foo.o
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\Fido_mingw_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Simulator
Standard: c++11
Compiler Path: C:\msys64\usr\bin\g++.exe
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Adadelta.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Backpropagation.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\FidoControlSystem.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\GeneticAlgo.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Interpolator.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Layer.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\LSInterpolator.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\main.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\NeuralNet.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Neuron.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Pruner.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\QLearn.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SGDTrainer.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Simulator\Emitter.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Simulator\Robby.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\Simulator\Simlink.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\WireFitQLearn.cpp -----------------------------------
Defines:
Includes:
Force Includes:
Standard: c++11
IntelliSense Mode: gcc-x64
Compiler Path: C:\msys64\usr\bin\g++.exe
---------------------------------------------------------------------------------------------------
Building the current target. Command: c:\some\other\fake\path bin/foo.o
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\Fido_mingw_dryrun.log" for launch configurations...
Parsing dry-run output for Launch (debug/run) configuration.
Found the following launch targets defined in the makefile: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>bin\foo.o()
Setting launch target "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>bin/foo.o()"
Created the following debug config:
type = cppdbg
cwd = ${command:Makefile.launchCurrentDir} (= {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros)
args =
program = ${command:Makefile.launchTargetPath} (= {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\bin\foo.o)
miMode = gdb
miDebuggerPath = C:\msys64\usr\bin\gdb.exe
Running command '"{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\bin\foo.o" ' in the terminal from location '{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros'

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,157 @@
Resolving extension log path to "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\MakefileTools.out"
Found build log path setting "./dummy_dryrun.log"
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\dummy_dryrun.log"
No current configuration is defined in the settings file
Reading configurations from file /.vscode/make_configurations.json
No target defined in the settings file
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\dummy_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path:
Standard: undefined
Compiler Path: undefined
----------------------------------------------------------------------------
Reading configurations from file /.vscode/make_configurations.json
Found the following configurations defined in make_configurations.json: InterestingSmallMakefile_windows_configDebug;InterestingSmallMakefile_windows_configRelSize;InterestingSmallMakefile_windows_configRelSpeed;8cc_linux;8cc_mingw;Fido_linux;Fido_mingw;tinyvm_linux_pedantic;tinyvm_mingw_pedantic
Setting configuration - InterestingSmallMakefile_windows_configDebug
Found build log path setting "./InterestingSmallMakefile_windows_dryrunDebug.log" defined for configuration "InterestingSmallMakefile_windows_configDebug
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\InterestingSmallMakefile_windows_dryrunDebug.log"
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\InterestingSmallMakefile_windows_dryrunDebug.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\inc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\in c1;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\repros\Small_Interesting_Makefile\inc2
Standard: undefined
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\main.cpp -----------------------------------
Defines: MyDefine;Debug;ARCH=2
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\inc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\in c1;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src
Force Includes:
Standard: c++14
IntelliSense Mode: msvc-x64
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\test1.cpp -----------------------------------
Defines: MyDefine;Debug;ARCH=2
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\inc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\in c1;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src
Force Includes:
Standard: c++14
IntelliSense Mode: msvc-x64
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\test2.cpp -----------------------------------
Defines: MyDefine2;Debug;ARCH=3
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\repros\Small_Interesting_Makefile\inc2;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src
Force Includes:
Standard: c++17
IntelliSense Mode: msvc-x64
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
---------------------------------------------------------------------------------------------------
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\InterestingSmallMakefile_windows_dryrunDebug.log" for targets...
Found the following build targets: Arch3_main.exe;all;create_dirs_Arch3;builds;create_dirs;rebuild;buildArch3;Arch1_main.exe;Execute_Arch3;create_dirs_Arch1;runs;clean;buildArch1;create_dirs_Arch2;Execute_Arch1;Arch2_main.exe;buildArch2;install;Execute_Arch2
Setting target execute_Arch3
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\InterestingSmallMakefile_windows_dryrunDebug.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\inc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\in c1;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\repros\Small_Interesting_Makefile\inc2
Standard: undefined
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\main.cpp -----------------------------------
Defines: MyDefine;Debug;ARCH=2
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\inc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\in c1;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src
Force Includes:
Standard: c++14
IntelliSense Mode: msvc-x64
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\test1.cpp -----------------------------------
Defines: MyDefine;Debug;ARCH=2
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\inc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\in c1;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src
Force Includes:
Standard: c++14
IntelliSense Mode: msvc-x64
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\test2.cpp -----------------------------------
Defines: MyDefine2;Debug;ARCH=3
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\repros\Small_Interesting_Makefile\inc2;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src
Force Includes:
Standard: c++17
IntelliSense Mode: msvc-x64
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
---------------------------------------------------------------------------------------------------
Building the current target. Command: c:\some\other\fake\path execute_Arch3
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\InterestingSmallMakefile_windows_dryrunDebug.log" for launch configurations...
Parsing dry-run output for Launch (debug/run) configuration.
Found the following launch targets defined in the makefile: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>bin\ARCH1\Debug\main.exe();{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>bin\ARCH2\Debug\main.exe();{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>bin\InterestingSmallMakefile\ARC H3\Debug\main.exe();{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>bin\InterestingSmallMakefile\ARC H3\Debug\main.exe(str3a,str3b,str3c)
Setting launch target "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>bin/InterestingSmallMakefile/ARC H3/Debug/main.exe(str3a,str3b,str3c)"
Created the following debug config:
type = cppvsdbg
cwd = ${command:Makefile.launchCurrentDir} (= {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros)
args = str3a str3b str3c
program = ${command:Makefile.launchTargetPath} (= {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\bin\InterestingSmallMakefile\ARC H3\Debug\main.exe)
miMode = undefined
miDebuggerPath = undefined
Running command '"{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\bin\InterestingSmallMakefile\ARC H3\Debug\main.exe" str3a str3b str3c' in the terminal from location '{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros'
Setting configuration - InterestingSmallMakefile_windows_configRelSize
Found command 'c:\some\other\fake\make OPT=RelSize' for configuration InterestingSmallMakefile_windows_configRelSize
Found build log path setting "./InterestingSmallMakefile_windows_dryrunRelSize.log" defined for configuration "InterestingSmallMakefile_windows_configRelSize
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\InterestingSmallMakefile_windows_dryrunRelSize.log"
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\InterestingSmallMakefile_windows_dryrunRelSize.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\inc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\in c1;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\repros\Small_Interesting_Makefile\inc2
Standard: undefined
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\main.cpp -----------------------------------
Defines: MyDefine;RelSize;ARCH=3
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\inc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\in c1;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src
Force Includes:
Standard: c++14
IntelliSense Mode: msvc-x64
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\test1.cpp -----------------------------------
Defines: MyDefine;RelSize;ARCH=3
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\inc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\in c1;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src
Force Includes:
Standard: c++14
IntelliSense Mode: msvc-x64
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\test2.cpp -----------------------------------
Defines: MyDefine2;RelSize;ARCH=3
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\repros\Small_Interesting_Makefile\inc2;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\SubfolderLocalToWorkspace;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\SubfolderLocalToSrc;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src
Force Includes:
Standard: c++17
IntelliSense Mode: msvc-x64
Compiler Path: C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.25.28610\bin\HostX86\x86\cl.exe
Windows SDK Version: 10.0.18362.0\
---------------------------------------------------------------------------------------------------
Setting configuration - InterestingSmallMakefile_windows_configRelSpeed
Found command 'c:\fake\path\make OPT=RelSpeed' for configuration InterestingSmallMakefile_windows_configRelSpeed
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\dummy_dryrun.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path:
Standard: undefined
Compiler Path: undefined
----------------------------------------------------------------------------

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

Просмотреть файл

@ -0,0 +1 @@
Dummy log

Просмотреть файл

@ -0,0 +1 @@
# dummy makefile (for the extension to activate)

Просмотреть файл

@ -0,0 +1,212 @@
Setting configuration - tinyvm_linux_pedantic
Found command 'c:/some/other/fake/make PEDANTIC=yes' for configuration tinyvm_linux_pedantic
Found build log path setting "./tinyvm_linux_dryrunPedantic.log" defined for configuration "tinyvm_linux_pedantic
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tinyvm_linux_dryrunPedantic.log"
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tinyvm_linux_dryrunPedantic.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm;{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/;{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src;{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tdb
Standard: gnu11
Compiler Path: /usr/bin/clang
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_program.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_lexer.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_memory.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_htab.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_preprocessor.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_parser.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_file.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/tvmi.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tdb/main.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tdb/tdb.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tinyvm_linux_dryrunPedantic.log" for targets...
Found the following build targets: tdb/main.o;libtvm/tvm_lexer.o;libtvm/tvm_memory.o;submodules;tdb/tdb.o;libtvm/tvm_htab.o;uninstall;mlibc;libtvm/tvm.o;libtvm;tdb;rebuild;libtvm/tvm_program.o;all;libtvm/tvm_file.o;clean;profile;tvmi;libtvm/tvm_parser.o;install;libtvm/tvm_preprocessor.o
Setting target tvmi
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tinyvm_linux_dryrunPedantic.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm;{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/;{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src;{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tdb
Standard: gnu11
Compiler Path: /usr/bin/clang
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_program.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_lexer.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_memory.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_htab.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_preprocessor.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_parser.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/libtvm/tvm_file.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/src/tvmi.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tdb/main.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tdb/tdb.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/include/
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: /usr/bin/clang
---------------------------------------------------------------------------------------------------
Building the current target. Command: c:/some/other/fake/make tvmi PEDANTIC=yes
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/tinyvm_linux_dryrunPedantic.log" for launch configurations...
Parsing dry-run output for Launch (debug/run) configuration.
Found the following launch targets defined in the makefile: {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros>bin/tdb();{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros>bin/tvmi()
Setting launch target "{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros>bin/tvmi()"
Created the following debug config:
type = cppdbg
cwd = ${command:Makefile.launchCurrentDir} (= {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros)
args =
program = ${command:Makefile.launchTargetPath} (= {REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/bin/tvmi)
miMode = gdb
miDebuggerPath = /usr/bin/gdb
Running command '"{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros/bin/tvmi" ' in the terminal from location '{REPO:VSCODE-MAKEFILE-TOOLS}/src/test/fakeSuite/Repros'

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,212 @@
Setting configuration - tinyvm_mingw_pedantic
Found command 'c:\some\other\fake\make PEDANTIC=yes' for configuration tinyvm_mingw_pedantic
Found build log path setting "./tinyvm_mingw_dryrunPedantic.log" defined for configuration "tinyvm_mingw_pedantic
Resolving build log path to "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tinyvm_mingw_dryrunPedantic.log"
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tinyvm_mingw_dryrunPedantic.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tdb
Standard: gnu11
Compiler Path: clang.exe
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_file.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_parser.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_preprocessor.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_memory.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_htab.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_lexer.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_program.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\tvmi.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tdb\tdb.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tdb\main.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tinyvm_mingw_dryrunPedantic.log" for targets...
Found the following build targets: tdb/main.o;libtvm/tvm_lexer.o;libtvm/tvm_memory.o;submodules;tdb/tdb.o;libtvm/tvm_htab.o;uninstall;mlibc;libtvm/tvm.o;libtvm;tdb;rebuild;libtvm/tvm_program.o;all;libtvm/tvm_file.o;clean;profile;tvmi;libtvm/tvm_parser.o;install;libtvm/tvm_preprocessor.o
Setting target tvmi
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tinyvm_mingw_dryrunPedantic.log" for IntelliSense integration with CppTools...
Updating the CppTools IntelliSense Configuration Provider.
Parsing dry-run output for CppTools Custom Configuration Provider.
Sending Workspace Browse Configuration: -----------------------------------
Browse Path: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src;{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tdb
Standard: gnu11
Compiler Path: clang.exe
----------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_file.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_parser.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_preprocessor.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_memory.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_htab.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_lexer.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\libtvm\tvm_program.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\src\tvmi.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tdb\tdb.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Sending configuration for file {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tdb\main.c -----------------------------------
Defines:
Includes: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\include\
Force Includes:
Standard: gnu11
IntelliSense Mode: clang-x64
Compiler Path: clang.exe
---------------------------------------------------------------------------------------------------
Building the current target. Command: c:\some\other\fake\make tvmi PEDANTIC=yes
Parsing the provided build log "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\tinyvm_mingw_dryrunPedantic.log" for launch configurations...
Parsing dry-run output for Launch (debug/run) configuration.
Found the following launch targets defined in the makefile: {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>bin\tdb();{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>bin\tvmi()
Setting launch target "{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros>bin/tvmi()"
Created the following debug config:
type = cppdbg
cwd = ${command:Makefile.launchCurrentDir} (= {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros)
args =
program = ${command:Makefile.launchTargetPath} (= {REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\bin\tvmi)
miMode = lldb
miDebuggerPath =
Running command '"{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros\bin\tvmi" ' in the terminal from location '{REPO:VSCODE-MAKEFILE-TOOLS}\src\test\fakeSuite\Repros'

Разница между файлами не показана из-за своего большого размера Загрузить разницу

Просмотреть файл

@ -0,0 +1,284 @@
// Makefile Tools Extension tests without sources and makefiles.
// These tests take advantage of the possibility of parsing
// a previously created dry-run 'make' output log.
// Each tested operation produces logging in the 'Makefile Tools'
// output channel and also in a log file on disk (defined via settings),
// which is compared with a baseline.
// TODO: add a suite of tests operating on real stand-alone makefile repos,
// thus emulating more closely the Makefile Tools end to end usage scenarios.
// For this we need to refactor the make process spawning in the extension,
// so that these tests would produce a deterministic output.
// Thus, this suite is not able to test the entire functionality of the extension
// (anything that is related to a real invocation of the make tool is not yet supported),
// but the remaining scenarios represent an acceptable amount of testing coverage.
// For this suite, even if only parsing is involved, it cannot run any test on any platform
// because of differences in path processing, extension naming, CppTools defaults (sdk, standard),
// debugger settings, etc...
// TODO: figure out a way to test correctly any test on any platform
// (possibly define a property to be considered when querying for process.platform).
// Some of these tests need also some fake binaries being checked in
// (enough to pass an 'if exists' check), to cover the identification of launch binaries
// that are called with arguments in the makefile.
// See comment in parser.ts, parseLineAsTool and parseForLaunchConfiguration.
import * as assert from 'assert';
import * as configuration from '../../configuration';
import * as launch from '../../launch';
import * as make from '../../make';
import * as util from '../../util';
import * as fs from 'fs';
import * as path from 'path';
import * as vscode from 'vscode';
// TODO: refactor initialization and cleanup of each test
suite('Fake dryrun parsing', /*async*/() => {
// Interesting scenarios with string paths, corner cases in defining includes/defines,
// complex configurations-targets-files associations.
// For now, this test needs to run in an environment with VS 2019.
// The output log varies depending on finding a particular VS toolset or not.
// We need to test the scenario of providing in the makefile a full path to the compiler,
// so there is no way around this. Using only compiler name and relying on path is not sufficient.
// Also, for the cases when a path (relative or full) is given to the compiler in the makefile
// and the compiler is not found there, the parser will skip over the compiler command
// (see comment in parser.ts - parseLineAsTool), so again, we need to find the toolset that is referenced in the makefile.
// TODO: mock various scenarios of VS environments without depending on what is installed.
// TODO: adapt the makefile on mac/linux/mingw and add new tests in this suite
// to parse the dry-run logs obtained on those platforms.
if (process.platform === "win32" && process.env.MSYSTEM === undefined) {
test('Interesting small makefile - windows', /*async*/() => {
let extensionLogPath: string | undefined = configuration.getExtensionLog();
// Cannot compare with a baseline if there is no extension log defined for this test
// Use Makefile.extensionLog in test workspace settings.
// We could set this here, but would loose all the logging between the first loading
// of the repro project by the test framework and this entry to the test function,
// which would complicate the comparison with the baseline.
assert(extensionLogPath, "Please define an extension log for the test");
if (!extensionLogPath) {
return; // no need to run the remaining of the test
}
configuration.startListeningToSettingsChanged();
/*await*/ configuration.prepareConfigurationsQuickPick();
/*await*/ configuration.setConfigurationByName("InterestingSmallMakefile_windows_configDebug");
/*await*/ configuration.parseTargetsFromBuildLog();
/*await*/ configuration.setTargetByName("execute_Arch3");
make.prepareBuildCurrentTarget();
/*await*/ configuration.parseLaunchConfigurationsFromBuildLog();
/*await*/ configuration.setLaunchConfigurationByName(vscode.workspace.rootPath + ">bin/InterestingSmallMakefile/ARC H3/Debug/main.exe(str3a,str3b,str3c)");
launch.getLauncher().prepareDebugCurrentTarget();
launch.getLauncher().prepareRunCurrentTarget();
// A bit more coverage, "RelSize" and "RelSpeed" are set up
// to exercise different combinations of pre-created build log and/or make tools.
/*await*/ configuration.setConfigurationByName("InterestingSmallMakefile_windows_configRelSize");
/*await*/ configuration.setConfigurationByName("InterestingSmallMakefile_windows_configRelSpeed");
// Settings reset for the next test run.
configuration.stopListeningToSettingsChanged();
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
workspaceConfiguration.update("buildConfiguration", undefined);
workspaceConfiguration.update("buildTarget", undefined);
workspaceConfiguration.update("launchConfiguration", undefined);
// Compare the output log with the baseline
// TODO: incorporate relevant diff snippets into the test log.
// Until then, print into base and diff files for easier viewing
// when the test fails.
let parsedPath: path.ParsedPath = path.parse(extensionLogPath);
let baselineLogPath: string = path.join(parsedPath.dir, "InterestingSmallMakefile_windows_baseline.out");
let extensionLogContent: string = util.readFile(extensionLogPath) || "";
let baselineLogContent: string = util.readFile(baselineLogPath) || "";
let extensionRootPath: string = path.resolve(__dirname, "../../../../");
baselineLogContent = baselineLogContent.replace(/{REPO:VSCODE-MAKEFILE-TOOLS}/mg, extensionRootPath);
fs.writeFileSync(path.join(parsedPath.dir, "base.out"), baselineLogContent);
fs.writeFileSync(path.join(parsedPath.dir, "diff.out"), extensionLogContent);
assert(extensionLogContent === baselineLogContent, "Extension log differs from baseline.");
});
}
// dry-run logs for https://github.com/rui314/8cc.git
if (process.platform === "linux" ||
(process.platform === "win32" && process.env.MSYSTEM !== undefined)) {
test('8cc - linux - and mingw', /*async*/() => {
let extensionLogPath: string | undefined = configuration.getExtensionLog();
// Cannot compare with a baseline if there is no extension log defined for this test
// Use Makefile.extensionLog in test workspace settings.
// We could set this here, but would loose all the logging between the first loading
// of the repro project by the test framework and this entry to the test function,
// which would complicate the comparison with the baseline.
assert(extensionLogPath, "Please define an extension log for the test");
if (!extensionLogPath) {
return; // no need to run the remaining of the test
}
configuration.startListeningToSettingsChanged();
/*await*/ configuration.prepareConfigurationsQuickPick();
/*await*/ configuration.setConfigurationByName(process.platform === "linux" ? "8cc_linux" : "8cc_mingw");
/*await*/ configuration.parseTargetsFromBuildLog();
/*await*/ configuration.setTargetByName("all");
make.prepareBuildCurrentTarget();
/*await*/ configuration.parseLaunchConfigurationsFromBuildLog();
/*await*/ configuration.setLaunchConfigurationByName(vscode.workspace.rootPath + ">8cc()");
launch.getLauncher().prepareDebugCurrentTarget();
launch.getLauncher().prepareRunCurrentTarget();
// Settings reset for the next test run.
configuration.stopListeningToSettingsChanged();
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
workspaceConfiguration.update("buildConfiguration", undefined);
workspaceConfiguration.update("buildTarget", undefined);
workspaceConfiguration.update("launchConfiguration", undefined);
// Compare the output log with the baseline
// TODO: incorporate relevant diff snippets into the test log.
// Until then, print into base and diff files for easier viewing
// when the test fails.
let parsedPath: path.ParsedPath = path.parse(extensionLogPath);
let baselineLogPath: string = path.join(parsedPath.dir, process.platform === "linux" ? "8cc_linux_baseline.out" : "8cc_mingw_baseline.out");
let extensionLogContent: string = util.readFile(extensionLogPath) || "";
let baselineLogContent: string = util.readFile(baselineLogPath) || "";
let extensionRootPath: string = path.resolve(__dirname, "../../../../");
baselineLogContent = baselineLogContent.replace(/{REPO:VSCODE-MAKEFILE-TOOLS}/mg, extensionRootPath);
fs.writeFileSync(path.join(parsedPath.dir, "base.out"), baselineLogContent);
fs.writeFileSync(path.join(parsedPath.dir, "diff.out"), extensionLogContent);
assert(extensionLogContent === baselineLogContent, "Extension log differs from baseline.");
});
}
// dry-run logs for https://github.com/FidoProject/Fido.git
if (process.platform === "linux" ||
(process.platform === "win32" && process.env.MSYSTEM !== undefined)) {
test('Fido - linux', /*async*/() => {
let extensionLogPath: string | undefined = configuration.getExtensionLog();
// Cannot compare with a baseline if there is no extension log defined for this test
// Use Makefile.extensionLog in test workspace settings.
// We could set this here, but would loose all the logging between the first loading
// of the repro project by the test framework and this entry to the test function,
// which would complicate the comparison with the baseline.
assert(extensionLogPath, "Please define an extension log for the test");
if (!extensionLogPath) {
return; // no need to run the remaining of the test
}
// When there are more than one test run in a suite,
// the extension activation is executed only in the beginning.
// Clear the extension log from the previous test,
// since the extension clears it only in the beginning of activation.
fs.unlinkSync(extensionLogPath);
configuration.startListeningToSettingsChanged();
// As long as all the 'fake sources/makefile' tests share the same make_configurations.json,
// there is no need in running configuration.prepareConfigurationsQuickPick for each
///*await*/ configuration.prepareConfigurationsQuickPick();
/*await*/ configuration.setConfigurationByName(process.platform === "linux" ? "Fido_linux" : "Fido_mingw");
/*await*/ configuration.parseTargetsFromBuildLog();
/*await*/ configuration.setTargetByName("bin/foo.o");
make.prepareBuildCurrentTarget();
/*await*/ configuration.parseLaunchConfigurationsFromBuildLog();
/*await*/ configuration.setLaunchConfigurationByName(vscode.workspace.rootPath + ">bin/foo.o()");
launch.getLauncher().prepareDebugCurrentTarget();
launch.getLauncher().prepareRunCurrentTarget();
// Settings reset for the next test run.
configuration.stopListeningToSettingsChanged();
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
workspaceConfiguration.update("buildConfiguration", undefined);
workspaceConfiguration.update("buildTarget", undefined);
workspaceConfiguration.update("launchConfiguration", undefined);
// Compare the output log with the baseline
// TODO: incorporate relevant diff snippets into the test log.
// Until then, print into base and diff files for easier viewing
// when the test fails.
let parsedPath: path.ParsedPath = path.parse(extensionLogPath);
let baselineLogPath: string = path.join(parsedPath.dir, process.platform === "linux" ? "Fido_linux_baseline.out" : "Fido_mingw_baseline.out");
let extensionLogContent: string = util.readFile(extensionLogPath) || "";
let baselineLogContent: string = util.readFile(baselineLogPath) || "";
let extensionRootPath: string = path.resolve(__dirname, "../../../../");
baselineLogContent = baselineLogContent.replace(/{REPO:VSCODE-MAKEFILE-TOOLS}/mg, extensionRootPath);
fs.writeFileSync(path.join(parsedPath.dir, "base.out"), baselineLogContent);
fs.writeFileSync(path.join(parsedPath.dir, "diff.out"), extensionLogContent);
assert(extensionLogContent === baselineLogContent, "Extension log differs from baseline.");
});
}
// dry-run logs for https://github.com/jakogut/tinyvm.git
if (process.platform === "linux" ||
(process.platform === "win32" && process.env.MSYSTEM !== undefined)) {
test('tinyvm - linux', /*async*/() => {
let extensionLogPath: string | undefined = configuration.getExtensionLog();
// Cannot compare with a baseline if there is no extension log defined for this test
// Use Makefile.extensionLog in test workspace settings.
// We could set this here, but would loose all the logging between the first loading
// of the repro project by the test framework and this entry to the test function,
// which would complicate the comparison with the baseline.
assert(extensionLogPath, "Please define an extension log for the test");
if (!extensionLogPath) {
return; // no need to run the remaining of the test
}
// When there are more than one test run in a suite,
// the extension activation is executed only in the beginning.
// Clear the extension log from the previous test,
// since the extension clears it only in the beginning of activation.
fs.unlinkSync(extensionLogPath);
configuration.startListeningToSettingsChanged();
// As long as all the 'fake sources/makefile' tests share the same make_configurations.json,
// there is no need in running configuration.prepareConfigurationsQuickPick for each
// /*await*/ configuration.prepareConfigurationsQuickPick();
/*await*/ configuration.setConfigurationByName(process.platform === "linux" ? "tinyvm_linux_pedantic" : "tinyvm_mingw_pedantic");
/*await*/ configuration.parseTargetsFromBuildLog();
/*await*/ configuration.setTargetByName("tvmi");
make.prepareBuildCurrentTarget();
/*await*/ configuration.parseLaunchConfigurationsFromBuildLog();
/*await*/ configuration.setLaunchConfigurationByName(vscode.workspace.rootPath + ">bin/tvmi()");
launch.getLauncher().prepareDebugCurrentTarget();
launch.getLauncher().prepareRunCurrentTarget();
// Settings reset for the next test run.
configuration.stopListeningToSettingsChanged();
let workspaceConfiguration: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration("Makefile");
workspaceConfiguration.update("buildConfiguration", undefined);
workspaceConfiguration.update("buildTarget", undefined);
workspaceConfiguration.update("launchConfiguration", undefined);
// Compare the output log with the baseline
// TODO: incorporate relevant diff snippets into the test log.
// Until then, print into base and diff files for easier viewing
// when the test fails.
let parsedPath: path.ParsedPath = path.parse(extensionLogPath);
let baselineLogPath: string = path.join(parsedPath.dir, process.platform === "linux" ? "tinyvm_linux_baseline.out" : "tinyvm_mingw_baseline.out");
let extensionLogContent: string = util.readFile(extensionLogPath) || "";
let baselineLogContent: string = util.readFile(baselineLogPath) || "";
let extensionRootPath: string = path.resolve(__dirname, "../../../../");
baselineLogContent = baselineLogContent.replace(/{REPO:VSCODE-MAKEFILE-TOOLS}/mg, extensionRootPath);
fs.writeFileSync(path.join(parsedPath.dir, "base.out"), baselineLogContent);
fs.writeFileSync(path.join(parsedPath.dir, "diff.out"), extensionLogContent);
assert(extensionLogContent === baselineLogContent, "Extension log differs from baseline.");
});
}
});

Просмотреть файл

@ -0,0 +1,39 @@
// index.ts
import * as path from 'path';
import * as Mocha from 'mocha';
import * as glob from 'glob';
export function run(): Promise<void> {
// Create the mocha test
const mocha : Mocha = new Mocha({
ui: 'tdd'
});
mocha.useColors(true);
const testsRoot : string = path.resolve(__dirname, '..');
return new Promise((c, e) => {
glob('**/**.test.js', { cwd: testsRoot }, (err, files) => {
if (err) {
return e(err);
}
// Add files to the test suite
files.forEach(f => mocha.addFile(path.resolve(testsRoot, f)));
try {
// Run the mocha test
mocha.run(failures => {
if (failures > 0) {
e(new Error(`${failures} tests failed.`));
} else {
c();
}
});
} catch (err) {
console.error(err);
e(err);
}
});
});
}

Просмотреть файл

@ -0,0 +1 @@
--timeout 100000

Просмотреть файл

@ -1,23 +0,0 @@
//
// PLEASE DO NOT MODIFY / DELETE UNLESS YOU KNOW WHAT YOU ARE DOING
//
// This file is providing the test runner to use when running extension tests.
// By default the test runner in use is Mocha based.
//
// You can provide your own test runner if you want to override it by exporting
// a function run(testsRoot: string, clb: (error: Error, failures?: number) => void): void
// that the extension host can call to run the tests. The test runner is expected to use console.log
// to report the results back to the caller. When the tests are finished, return
// a possible error to the callback or null if none.
import * as testRunner from 'vscode/lib/testrunner';
// You can directly control Mocha options by configuring the test runner below
// See https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically#set-options
// for more info
testRunner.configure({
ui: 'tdd', // the TDD UI is being used in extension.test.ts (suite, test, etc.)
useColors: true // colored output from test results
});
module.exports = testRunner;

1
src/test/mocha.opts Normal file
Просмотреть файл

@ -0,0 +1 @@
--timeout 100000

34
src/test/runTest.ts Normal file
Просмотреть файл

@ -0,0 +1,34 @@
// Makefile Tools Tests
import * as path from 'path';
//import { runTests } from 'vscode-test';
//import * as tests from 'vscode-test';
import * as testRunner from 'vscode-test/out/runTest';
/*async*/ function main() : void { //Promise<void> {
try {
// The folder containing the Extension Manifest package.json
// Passed to `--extensionDevelopmentPath`
const extensionDevelopmentPath : string = path.resolve(__dirname, '../../');
// The path to the extension test script
// Passed to --extensionTestsPath
const extensionTestsPath : string = path.resolve(__dirname, './fakeSuite/index');
// The path to the makefile repro (containing the root makefile and .vscode folder)
const reproRootPath : string = path.resolve(__dirname, "./fakeSuite/Repros/root");
// Download VS Code, unzip it and run the integration test
let myOpt : testRunner.TestOptions = {
extensionPath: extensionDevelopmentPath,
testRunnerPath: extensionTestsPath,
testWorkspace: reproRootPath
};
/*await*/ testRunner.runTests(myOpt);
} catch (err) {
console.error('Failed to run tests');
process.exit(1);
}
}
main();

85
src/ui.ts Normal file
Просмотреть файл

@ -0,0 +1,85 @@
// UI support for this extension: buttons and quickpicks.
import * as vscode from 'vscode';
let ui: UI;
export class UI {
private configurationButton: vscode.StatusBarItem;
private targetButton: vscode.StatusBarItem;
private launchConfigurationButton: vscode.StatusBarItem;
private buildButton: vscode.StatusBarItem;
private debugButton: vscode.StatusBarItem;
private runButton: vscode.StatusBarItem;
public setConfiguration(configuration: string): void {
this.configurationButton.text = "$(settings) Build configuration: " + configuration;
}
public setTarget(target: string): void {
this.targetButton.text = "$(tag) Target to build: " + target;
}
public setLaunchConfiguration(launchConfigurationStr: string | undefined): void {
if (launchConfigurationStr) {
this.launchConfigurationButton.text = "$(rocket) Launch configuration: ";
this.launchConfigurationButton.text += "[";
this.launchConfigurationButton.text += launchConfigurationStr;
this.launchConfigurationButton.text += "]";
} else {
this.launchConfigurationButton.text = "No launch configuration set";
}
}
public constructor() {
this.configurationButton = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 4.6);
this.configurationButton.command = "Makefile.setBuildConfiguration";
this.configurationButton.tooltip = "Click to select the workspace make configuration";
this.configurationButton.show();
this.targetButton = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 4.5);
this.targetButton.command = "Makefile.setBuildTarget";
this.targetButton.tooltip = "Click to select the target to be run by make";
this.targetButton.show();
this.buildButton = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 4.4);
this.buildButton.command = "Makefile.buildTarget";
this.buildButton.tooltip = "Click to build the selected target";
this.buildButton.text = "$(gear) Build";
this.buildButton.show();
this.launchConfigurationButton = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 4.3);
this.launchConfigurationButton.command = "Makefile.setLaunchConfiguration";
this.launchConfigurationButton.tooltip = "Click to select the make launch configuration (binary, args and current path)";
this.launchConfigurationButton.show();
this.debugButton = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 4.2);
this.debugButton.command = "Makefile.launchDebug";
this.debugButton.tooltip = "Click to debug the selected executable";
this.debugButton.text = "$(bug) Debug";
this.debugButton.show();
this.runButton = vscode.window.createStatusBarItem(vscode.StatusBarAlignment.Left, 4.1);
this.runButton.command = "Makefile.launchRun";
this.runButton.tooltip = "Click to launch the selected executable";
this.runButton.text = "$(terminal) Run";
this.runButton.show();
}
public dispose(): void {
this.configurationButton.dispose();
this.targetButton.dispose();
this.launchConfigurationButton.dispose();
this.buildButton.dispose();
this.debugButton.dispose();
this.runButton.dispose();
}
}
export function getUI(): UI {
if (ui === undefined) {
ui = new UI();
}
return ui;
}

221
src/util.ts Normal file
Просмотреть файл

@ -0,0 +1,221 @@
// Helper APIs used by this extension
import * as fs from 'fs';
import * as child_process from 'child_process';
import * as path from 'path';
// TODO: c++20, c++latest
export type StandardVersion = 'c89' | 'c99' | 'c11' | 'c++98' | 'c++03' | 'c++11' | 'c++14' | 'c++17' | undefined;
export type IntelliSenseMode = "msvc-x64" | "gcc-x64" | "clang-x64";
export function checkFileExistsSync(filePath: string): boolean {
try {
return fs.statSync(filePath).isFile();
} catch (e) {
}
return false;
}
export function checkDirectoryExistsSync(directoryPath: string): boolean {
try {
return fs.statSync(directoryPath).isDirectory();
} catch (e) {
}
return false;
}
export function deleteFileSync(filePath: string): void {
try {
fs.unlinkSync(filePath);
} catch (e) {
}
}
export function readFile(filePath: string): string | undefined {
try {
if (checkFileExistsSync(filePath)) {
return fs.readFileSync(filePath).toString();
}
} catch (e) {
}
return undefined;
}
// Evaluate whether a string looks like a path or not,
// without using fs.stat, since dry-run may output tools
// that are not found yet at certain locations,
// without running the prep targets that would copy them there
export function looksLikePath(pathStr: string): boolean {
// TODO: to be implemented
return true;
}
// Evaluate whether the tool is invoked from the current directory
export function pathIsCurrentDirectory(pathStr: string): boolean {
// Ignore any spaces or tabs before the invocation
pathStr = pathStr.trimLeft();
if (pathStr === "") {
return true;
}
if (process.platform === "win32" && process.env.MSYSTEM === undefined) {
if (pathStr === ".\\") {
return true;
}
} else {
if (pathStr === "./") {
return true;
}
}
return false;
}
// Helper that searches for a tool in all the paths forming the PATH environment variable
// Returns the first one found or undefined if not found.
// TODO: implement a variation of this helper that scans on disk for the tools installed,
// to help when VSCode is not launched from the proper environment
export function toolPathInEnv(name: string): string | undefined {
let envPath: string | undefined = process.env["PATH"];
let envPathSplit: string[] = [];
if (envPath) {
envPathSplit = envPath.split(path.delimiter);
}
// todo: if the compiler is not found in path, scan on disk and point the user to all the options
// (the concept of kit for cmake extension)
return envPathSplit.find(p => {
let fullPath: string = path.join(p, path.basename(name));
if (checkFileExistsSync(fullPath)) {
return fullPath;
}
});
}
// Helper to spawn a child process, hooked to callbacks that are processing stdout/stderr
export function spawnChildProcess(process: string, args: string[], workingDirectory: string,
stdoutCallback: (stdout: string) => void,
stderrCallback: (stderr: string) => void,
closingCallback: (retc: number, signal: string) => void): Promise<void> {
return new Promise<void>(function (resolve, reject): void {
const child: child_process.ChildProcess = child_process.spawn(process, args, { cwd: workingDirectory });
child.stdout.on('data', (data) => {
stdoutCallback(`${data}`);
});
child.stderr.on('data', (data) => {
stderrCallback(`${data}`);
});
child.on('close', (retCode: number, signal: string) => {
closingCallback(retCode, signal);
});
child.on('exit', (code: number) => {
if (code !== 0) {
reject(new Error(`${process} exited with error code ${code}`));
} else {
resolve();
}
});
if (child.pid === undefined) {
throw new Error("PID undefined");
}
});
}
// Helper to eliminate empty items in an array
export function dropNulls<T>(items: (T | null | undefined)[]): T[] {
return items.filter(item => (item !== null && item !== undefined)) as T[];
}
// Helper to reinterpret one relative path (to the given current path) printed by make as full path
export function makeFullPath(relPath: string, curPath: string | undefined): string {
let fullPath: string = relPath;
if (!path.isAbsolute(fullPath) && curPath) {
fullPath = path.join(curPath, relPath);
}
return fullPath;
}
// Helper to reinterpret the relative paths (to the given current path) printed by make as full paths
export function makeFullPaths(relPaths: string[], curPath: string | undefined): string[] {
let fullPaths: string[] = [];
relPaths.forEach(p => {
fullPaths.push(makeFullPath(p, curPath));
});
return fullPaths;
}
export function formatMingW(path : string) : string {
//path = path.replace(/\//g, '\\');
path = path.replace(/\\/g, '/');
path = path.replace(':', '');
if (!path.startsWith('\\') && !path.startsWith('/')) {
//path = '\\' + path;
path = '/' + path;
}
return path;
}
// Helper to reinterpret one full path as relative to the given current path
export function makeRelPath(fullPath: string, curPath: string | undefined): string {
let relPath: string = fullPath;
if (path.isAbsolute(fullPath) && curPath) {
// Tricky path formatting for mingw (and possibly other subsystems - cygwin?, ...),
// causing the relative path calculation to be wrong.
// For process.platform "win32", an undefined process.env.MSYSTEM guarantees pure windows
// and no formatting is necessary.
if (process.platform === "win32" && process.env.MSYSTEM !== undefined) {
fullPath = formatMingW(fullPath);
if (path.isAbsolute(curPath)) {
curPath = formatMingW(curPath);
}
}
relPath = path.relative(curPath, fullPath);
}
return relPath;
}
// Helper to reinterpret the relative paths (to the given current path) printed by make as full paths
export function makeRelPaths(fullPaths: string[], curPath: string | undefined): string[] {
let relPaths: string[] = [];
fullPaths.forEach(p => {
relPaths.push(makeRelPath(p, curPath));
});
return fullPaths;
}
// Helper to remove any " or ' from the middle of a path
// because many file operations don't work properly with paths
// having quotes in the middle.
// Don't add here a pair of quotes surrounding the whole result string,
// this will be done when needed at other call sites.
export function removeQuotes(str: string): string {
if (str.includes('"')) {
str = str.replace(/"/g, "");
}
if (str.includes("'")) {
str = str.replace(/'/g, "");
}
return str;
}

Просмотреть файл

@ -3,11 +3,12 @@
"module": "commonjs",
"target": "es6",
"outDir": "out",
"alwaysStrict":true,
"lib": [
"es6"
],
"sourceMap": true,
"rootDir": "src",
"rootDir": ".",
"strict": true /* enable all strict type-checking options */
/* Additional Checks */
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
@ -17,5 +18,8 @@
"exclude": [
"node_modules",
".vscode-test"
],
"include": [
"**/*.ts"
]
}

Просмотреть файл

@ -1,15 +1,121 @@
{
"rules": {
"no-string-throw": true,
"no-unused-expression": true,
"no-duplicate-variable": true,
"curly": true,
"class-name": true,
"semicolon": [
true,
"always"
],
"triple-equals": true
},
"defaultSeverity": "warning"
}
"rules": {
"adjacent-overload-signatures": true,
"align": true,
"array-type": [true, "array"],
"arrow-return-shorthand": true,
"ban-comma-operator": true,
"binary-expression-operand-order": true,
"callable-types": true,
"class-name": true,
"comment-format": true,
"curly": true,
"encoding": true,
"eofline": true,
"ext-variable-name": [
true,
[
"class",
"pascal"
],
[
"function",
"camel"
]
],
"file-header": [
true,
".*"
],
"import-spacing": true,
"indent": [
true,
"spaces",
4
],
"label-position": true,
"match-default-export-name": true,
"member-ordering": true,
"new-parens": true,
"no-arg": true,
"no-bitwise": true,
"no-boolean-literal-compare": true,
"no-conditional-assignment": true,
"no-consecutive-blank-lines": true,
"no-construct": true,
"no-debugger": true,
"no-default-export": true,
"no-duplicate-imports": true,
"no-duplicate-super": true,
"no-duplicate-switch-case": true,
"no-duplicate-variable": true,
"no-unused-expression-chai": true,
"no-eval": true,
"no-import-side-effect": true,
"no-internal-module": true,
"no-invalid-this": true,
"no-irregular-whitespace": true,
"no-mergeable-namespace": true,
"no-misused-new": true,
"no-namespace": true,
"no-non-null-assertion": true,
"no-redundant-jsdoc": true,
"no-reference": true,
"no-reference-import": true,
"no-return-await": true,
"no-sparse-arrays": true,
"no-switch-case-fall-through": true,
"no-this-assignment": true,
"no-trailing-whitespace": true,
"no-unnecessary-callback-wrapper": true,
"no-unnecessary-initializer": true,
"no-unnecessary-qualifier": true,
"no-unsafe-finally": true,
"no-unused-expression": true,
"no-unused-variable": true,
"no-var-keyword": true,
"no-var-requires": true,
"number-literal-format": true,
"one-line": [
true,
"check-catch",
"check-finally",
"check-else",
"check-open-brace",
"check-whitespace"
],
"one-variable-per-declaration": true,
"prefer-method-signature": true,
"prefer-object-spread": true,
"prefer-while": true,
"promise-must-complete": true,
"semicolon": true,
"space-within-parens": true,
"trailing-comma": true,
"triple-equals": true,
"type-literal-delimiter": true,
"typedef": [
true,
"variable-declaration",
"call-signature"
],
"typedef-whitespace": true,
"typeof-compare": true,
"unified-signatures": true,
"use-default-type-parameter": true,
"use-isnan": true,
"whitespace": [
true,
"check-branch",
"check-operator",
"check-separator",
"check-preblock",
"check-type"
]
},
"rulesDirectory": [
"node_modules/tslint-microsoft-contrib",
"node_modules/tslint-no-unused-expression-chai/rules",
"node_modules/vrsource-tslint-rules/rules"
]
}

828
yarn.lock Normal file
Просмотреть файл

@ -0,0 +1,828 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@babel/code-frame@^7.0.0":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e"
integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==
dependencies:
"@babel/highlight" "^7.8.3"
"@babel/highlight@^7.8.3":
version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.8.3.tgz#28f173d04223eaaa59bc1d439a3836e6d1265797"
integrity sha512-PX4y5xQUvy0fnEVHrYOarRPXVWafSjTW9T0Hab8gVIawpl2Sj0ORyrygANq+KjcNlSSTw0YCLSNA8OyZ1I4yEg==
dependencies:
chalk "^2.0.0"
esutils "^2.0.2"
js-tokens "^4.0.0"
"@types/events@*":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7"
integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==
"@types/glob@^7.1.1":
version "7.1.1"
resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.1.tgz#aa59a1c6e3fbc421e07ccd31a944c30eba521575"
integrity sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==
dependencies:
"@types/events" "*"
"@types/minimatch" "*"
"@types/node" "*"
"@types/minimatch@*":
version "3.0.3"
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
"@types/mocha@^2.2.42":
version "2.2.48"
resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-2.2.48.tgz#3523b126a0b049482e1c3c11877460f76622ffab"
integrity sha512-nlK/iyETgafGli8Zh9zJVCTicvU3iajSkRwOh3Hhiva598CMqNJ4NcVCGMTGKpGpTYj/9R8RLzS9NAykSSCqGw==
"@types/node@*":
version "13.9.2"
resolved "https://registry.yarnpkg.com/@types/node/-/node-13.9.2.tgz#ace1880c03594cc3e80206d96847157d8e7fa349"
integrity sha512-bnoqK579sAYrQbp73wwglccjJ4sfRdKU7WNEZ5FW4K2U6Kc0/eZ5kvXG0JKsEKFB50zrFmfFt52/cvBbZa7eXg==
"@types/node@^10.17.17":
version "10.17.17"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.17.tgz#7a183163a9e6ff720d86502db23ba4aade5999b8"
integrity sha512-gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q==
agent-base@4, agent-base@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee"
integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==
dependencies:
es6-promisify "^5.0.0"
ajv@^6.5.5:
version "6.12.0"
resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7"
integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ansi-styles@^3.2.1:
version "3.2.1"
resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d"
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
dependencies:
color-convert "^1.9.0"
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911"
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
dependencies:
sprintf-js "~1.0.2"
asn1@~0.2.3:
version "0.2.4"
resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136"
integrity sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==
dependencies:
safer-buffer "~2.1.0"
assert-plus@1.0.0, assert-plus@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
integrity sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=
asynckit@^0.4.0:
version "0.4.0"
resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
integrity sha1-x57Zf380y48robyXkLzDZkdLS3k=
aws-sign2@~0.7.0:
version "0.7.0"
resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=
aws4@^1.8.0:
version "1.9.1"
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e"
integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
bcrypt-pbkdf@^1.0.0:
version "1.0.2"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
integrity sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=
dependencies:
tweetnacl "^0.14.3"
brace-expansion@^1.1.7:
version "1.1.11"
resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
browser-stdout@1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60"
integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
buffer-from@^1.0.0:
version "1.1.1"
resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef"
integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==
builtin-modules@^1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f"
integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=
caseless@~0.12.0:
version "0.12.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
integrity sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=
chalk@^2.0.0, chalk@^2.3.0:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
dependencies:
ansi-styles "^3.2.1"
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
color-convert@^1.9.0:
version "1.9.3"
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
dependencies:
color-name "1.1.3"
color-name@1.1.3:
version "1.1.3"
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
combined-stream@^1.0.6, combined-stream@~1.0.6:
version "1.0.8"
resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
dependencies:
delayed-stream "~1.0.0"
commander@2.15.1:
version "2.15.1"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.1.tgz#df46e867d0fc2aec66a34662b406a9ccafff5b0f"
integrity sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==
commander@^2.12.1:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
core-util-is@1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
integrity sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=
dependencies:
assert-plus "^1.0.0"
debug@3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
dependencies:
ms "2.0.0"
debug@^3.1.0:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
dependencies:
ms "^2.1.1"
delayed-stream@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
diff@3.5.0:
version "3.5.0"
resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12"
integrity sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==
diff@^4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
ecc-jsbn@~0.1.1:
version "0.1.2"
resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
integrity sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=
dependencies:
jsbn "~0.1.0"
safer-buffer "^2.1.0"
es6-promise@^4.0.3:
version "4.2.8"
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
es6-promisify@^5.0.0:
version "5.0.0"
resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203"
integrity sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=
dependencies:
es6-promise "^4.0.3"
escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5:
version "1.0.5"
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
esprima@^4.0.0:
version "4.0.1"
resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
esutils@^2.0.2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
extend@~3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
extsprintf@1.3.0:
version "1.3.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
integrity sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=
extsprintf@^1.2.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
fast-deep-equal@^3.1.1:
version "3.1.1"
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4"
integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=
form-data@~2.3.2:
version "2.3.3"
resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
dependencies:
asynckit "^0.4.0"
combined-stream "^1.0.6"
mime-types "^2.1.12"
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
getpass@^0.1.1:
version "0.1.7"
resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
integrity sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=
dependencies:
assert-plus "^1.0.0"
glob@7.1.2:
version "7.1.2"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
integrity sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
glob@^7.1.1, glob@^7.1.2, glob@^7.1.6:
version "7.1.6"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6"
integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"
growl@1.10.5:
version "1.10.5"
resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e"
integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==
har-schema@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92"
integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=
har-validator@~5.1.3:
version "5.1.3"
resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080"
integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==
dependencies:
ajv "^6.5.5"
har-schema "^2.0.0"
has-flag@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0=
he@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd"
integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0=
http-proxy-agent@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz#e4821beef5b2142a2026bd73926fe537631c5405"
integrity sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==
dependencies:
agent-base "4"
debug "3.1.0"
http-signature@~1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1"
integrity sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=
dependencies:
assert-plus "^1.0.0"
jsprim "^1.2.2"
sshpk "^1.7.0"
https-proxy-agent@^2.2.1:
version "2.2.4"
resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b"
integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==
dependencies:
agent-base "^4.3.0"
debug "^3.1.0"
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2:
version "2.0.4"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
is-typedarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=
isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=
js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
js-yaml@^3.13.1:
version "3.13.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847"
integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==
dependencies:
argparse "^1.0.7"
esprima "^4.0.0"
jsbn@~0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM=
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
json-schema@0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=
json-stringify-safe@~5.0.1:
version "5.0.1"
resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=
jsprim@^1.2.2:
version "1.4.1"
resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
integrity sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=
dependencies:
assert-plus "1.0.0"
extsprintf "1.3.0"
json-schema "0.2.3"
verror "1.10.0"
mime-db@1.43.0:
version "1.43.0"
resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58"
integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==
mime-types@^2.1.12, mime-types@~2.1.19:
version "2.1.26"
resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06"
integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==
dependencies:
mime-db "1.43.0"
minimatch@3.0.4, minimatch@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083"
integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==
dependencies:
brace-expansion "^1.1.7"
minimist@0.0.8:
version "0.0.8"
resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d"
integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=
mkdirp@0.5.1, mkdirp@^0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=
dependencies:
minimist "0.0.8"
mocha@^5.2.0:
version "5.2.0"
resolved "https://registry.yarnpkg.com/mocha/-/mocha-5.2.0.tgz#6d8ae508f59167f940f2b5b3c4a612ae50c90ae6"
integrity sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==
dependencies:
browser-stdout "1.3.1"
commander "2.15.1"
debug "3.1.0"
diff "3.5.0"
escape-string-regexp "1.0.5"
glob "7.1.2"
growl "1.10.5"
he "1.1.1"
minimatch "3.0.4"
mkdirp "0.5.1"
supports-color "5.4.0"
module-alias@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.2.2.tgz#151cdcecc24e25739ff0aa6e51e1c5716974c0e0"
integrity sha512-A/78XjoX2EmNvppVWEhM2oGk3x4lLxnkEA4jTbaK97QKSDjkIoOsKQlfylt/d3kKKi596Qy3NP5XrXJ6fZIC9Q==
ms@2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
ms@^2.1.1:
version "2.1.2"
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
oauth-sign@~0.9.0:
version "0.9.0"
resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455"
integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==
once@^1.3.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
path-parse@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
performance-now@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=
psl@^1.1.28:
version "1.7.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.7.0.tgz#f1c4c47a8ef97167dea5d6bbf4816d736e884a3c"
integrity sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==
punycode@^2.1.0, punycode@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
qs@~6.5.2:
version "6.5.2"
resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36"
integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==
querystringify@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.1.1.tgz#60e5a5fd64a7f8bfa4d2ab2ed6fdf4c85bad154e"
integrity sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==
request@^2.88.0:
version "2.88.2"
resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3"
integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==
dependencies:
aws-sign2 "~0.7.0"
aws4 "^1.8.0"
caseless "~0.12.0"
combined-stream "~1.0.6"
extend "~3.0.2"
forever-agent "~0.6.1"
form-data "~2.3.2"
har-validator "~5.1.3"
http-signature "~1.2.0"
is-typedarray "~1.0.0"
isstream "~0.1.2"
json-stringify-safe "~5.0.1"
mime-types "~2.1.19"
oauth-sign "~0.9.0"
performance-now "^2.1.0"
qs "~6.5.2"
safe-buffer "^5.1.2"
tough-cookie "~2.5.0"
tunnel-agent "^0.6.0"
uuid "^3.3.2"
requires-port@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
resolve@^1.3.2:
version "1.15.1"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8"
integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w==
dependencies:
path-parse "^1.0.6"
safe-buffer@^5.0.1, safe-buffer@^5.1.2:
version "5.2.0"
resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519"
integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==
safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
version "2.1.2"
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
semver@^5.3.0, semver@^5.4.1:
version "5.7.1"
resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7"
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
source-map-support@^0.5.0:
version "0.5.16"
resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042"
integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map@^0.6.0:
version "0.6.1"
resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c"
integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=
sshpk@^1.7.0:
version "1.16.1"
resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.16.1.tgz#fb661c0bef29b39db40769ee39fa70093d6f6877"
integrity sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==
dependencies:
asn1 "~0.2.3"
assert-plus "^1.0.0"
bcrypt-pbkdf "^1.0.0"
dashdash "^1.12.0"
ecc-jsbn "~0.1.1"
getpass "^0.1.1"
jsbn "~0.1.0"
safer-buffer "^2.0.2"
tweetnacl "~0.14.0"
supports-color@5.4.0:
version "5.4.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54"
integrity sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==
dependencies:
has-flag "^3.0.0"
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
dependencies:
has-flag "^3.0.0"
tough-cookie@~2.5.0:
version "2.5.0"
resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2"
integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==
dependencies:
psl "^1.1.28"
punycode "^2.1.1"
tslib@^1.8.0, tslib@^1.8.1:
version "1.11.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.11.0.tgz#f1f3528301621a53220d58373ae510ff747a66bc"
integrity sha512-BmndXUtiTn/VDDrJzQE7Mm22Ix3PxgLltW9bSNLoeCY31gnG2OPx0QqJnuc9oMIKioYrz487i6K9o4Pdn0j+Kg==
tslint-microsoft-contrib@^6.2.0:
version "6.2.0"
resolved "https://registry.yarnpkg.com/tslint-microsoft-contrib/-/tslint-microsoft-contrib-6.2.0.tgz#8aa0f40584d066d05e6a5e7988da5163b85f2ad4"
integrity sha512-6tfi/2tHqV/3CL77pULBcK+foty11Rr0idRDxKnteTaKm6gWF9qmaCNU17HVssOuwlYNyOmd9Jsmjd+1t3a3qw==
dependencies:
tsutils "^2.27.2 <2.29.0"
tslint-no-unused-expression-chai@^0.1.4:
version "0.1.4"
resolved "https://registry.yarnpkg.com/tslint-no-unused-expression-chai/-/tslint-no-unused-expression-chai-0.1.4.tgz#f4a2c9dd3306088f44eb7574cf470082b09ade49"
integrity sha512-frEWKNTcq7VsaWKgUxMDOB2N/cmQadVkUtUGIut+2K4nv/uFXPfgJyPjuNC/cHyfUVqIkHMAvHOCL+d/McU3nQ==
dependencies:
tsutils "^3.0.0"
tslint@^5.20.1:
version "5.20.1"
resolved "https://registry.yarnpkg.com/tslint/-/tslint-5.20.1.tgz#e401e8aeda0152bc44dd07e614034f3f80c67b7d"
integrity sha512-EcMxhzCFt8k+/UP5r8waCf/lzmeSyVlqxqMEDQE7rWYiQky8KpIBz1JAoYXfROHrPZ1XXd43q8yQnULOLiBRQg==
dependencies:
"@babel/code-frame" "^7.0.0"
builtin-modules "^1.1.1"
chalk "^2.3.0"
commander "^2.12.1"
diff "^4.0.1"
glob "^7.1.1"
js-yaml "^3.13.1"
minimatch "^3.0.4"
mkdirp "^0.5.1"
resolve "^1.3.2"
semver "^5.3.0"
tslib "^1.8.0"
tsutils "^2.29.0"
"tsutils@^2.27.2 <2.29.0":
version "2.28.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.28.0.tgz#6bd71e160828f9d019b6f4e844742228f85169a1"
integrity sha512-bh5nAtW0tuhvOJnx1GLRn5ScraRLICGyJV5wJhtRWOLsxW70Kk5tZtpK3O/hW6LDnqKS9mlUMPZj9fEMJ0gxqA==
dependencies:
tslib "^1.8.1"
tsutils@^2.29.0:
version "2.29.0"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-2.29.0.tgz#32b488501467acbedd4b85498673a0812aca0b99"
integrity sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==
dependencies:
tslib "^1.8.1"
tsutils@^3.0.0:
version "3.17.1"
resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759"
integrity sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==
dependencies:
tslib "^1.8.1"
tunnel-agent@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
integrity sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=
dependencies:
safe-buffer "^5.0.1"
tweetnacl@^0.14.3, tweetnacl@~0.14.0:
version "0.14.5"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=
typescript@^3.8.3:
version "3.8.3"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.8.3.tgz#409eb8544ea0335711205869ec458ab109ee1061"
integrity sha512-MYlEfn5VrLNsgudQTVJeNaQFUAI7DkhnOjdpAp4T+ku1TfQClewlbSuTVHiA+8skNBgaf02TL/kLOvig4y3G8w==
uri-js@^4.2.2:
version "4.2.2"
resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0"
integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==
dependencies:
punycode "^2.1.0"
url-parse@^1.4.4:
version "1.4.7"
resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.4.7.tgz#a8a83535e8c00a316e403a5db4ac1b9b853ae278"
integrity sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==
dependencies:
querystringify "^2.1.1"
requires-port "^1.0.0"
uuid@^3.3.2:
version "3.4.0"
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
verror@1.10.0:
version "1.10.0"
resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
integrity sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=
dependencies:
assert-plus "^1.0.0"
core-util-is "1.0.2"
extsprintf "^1.2.0"
vrsource-tslint-rules@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/vrsource-tslint-rules/-/vrsource-tslint-rules-6.0.0.tgz#a4e25e8f3fdd487684174f423c090c35d60f37a9"
integrity sha512-pmcnJdIVziZTk1V0Cqehmh3gIabBRkBYXkv9vx+1CZDNEa41kNGUBFwQLzw21erYOd2QnD8jJeZhBGqnlT1HWw==
vscode-cpptools@^2.1.2:
version "2.1.2"
resolved "https://registry.yarnpkg.com/vscode-cpptools/-/vscode-cpptools-2.1.2.tgz#465d42c66850e877ee5a14574c9376ffca151968"
integrity sha512-oMx/wsLQM6NggnmWn4t8lIrt1K7Zpl5G34zxNu+J6KHGnCxBzc+NHnxXS1Vu1hLxGWwANAvdxr3mEcA2LMe7hQ==
vscode-jsonrpc@^3.6.2:
version "3.6.2"
resolved "https://registry.yarnpkg.com/vscode-jsonrpc/-/vscode-jsonrpc-3.6.2.tgz#3b5eef691159a15556ecc500e9a8a0dd143470c8"
integrity sha512-T24Jb5V48e4VgYliUXMnZ379ItbrXgOimweKaJshD84z+8q7ZOZjJan0MeDe+Ugb+uqERDVV8SBmemaGMSMugA==
vscode-test@^0.4.1:
version "0.4.3"
resolved "https://registry.yarnpkg.com/vscode-test/-/vscode-test-0.4.3.tgz#461ebf25fc4bc93d77d982aed556658a2e2b90b8"
integrity sha512-EkMGqBSefZH2MgW65nY05rdRSko15uvzq4VAPM5jVmwYuFQKE7eikKXNJDRxL+OITXHB6pI+a3XqqD32Y3KC5w==
dependencies:
http-proxy-agent "^2.1.0"
https-proxy-agent "^2.2.1"
vscode@^1.1.36:
version "1.1.36"
resolved "https://registry.yarnpkg.com/vscode/-/vscode-1.1.36.tgz#5e1a0d1bf4977d0c7bc5159a9a13d5b104d4b1b6"
integrity sha512-cGFh9jmGLcTapCpPCKvn8aG/j9zVQ+0x5hzYJq5h5YyUXVGa1iamOaB2M2PZXoumQPES4qeAP1FwkI0b6tL4bQ==
dependencies:
glob "^7.1.2"
mocha "^5.2.0"
request "^2.88.0"
semver "^5.4.1"
source-map-support "^0.5.0"
url-parse "^1.4.4"
vscode-test "^0.4.1"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=