Merge pull request #1 from microsoft/dev/andris/ConfigAndBuild1
First iteration of build and custom configuration provider
This commit is contained in:
Коммит
16fcdc5965
|
@ -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
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
Двоичный файл не отображается.
После Ширина: | Высота: | Размер: 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.
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
216
package.json
216
package.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"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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("---------------------------------------------------------------------------------------------------");
|
||||
});
|
||||
}
|
||||
}
|
205
src/extension.ts
205
src/extension.ts
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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));
|
||||
});
|
||||
});
|
|
@ -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"]
|
||||
}
|
||||
]
|
|
@ -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;
|
|
@ -0,0 +1 @@
|
|||
--timeout 100000
|
|
@ -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();
|
|
@ -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;
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
||||
|
|
134
tslint.json
134
tslint.json
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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=
|
Загрузка…
Ссылка в новой задаче