diff --git a/.gitignore b/.gitignore index b4459c051..ceceac244 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,19 @@ -# populated by npm -node_modules/ +# default build directory for VSCode +/build/ -# compiled TypeScript code from src/ -/lib/ +# used by clangd and other programs +.cache/ -# local development helpers +# created by pyenv +.python-version + +# used for local development Makefile + +# Used by IDEs to get correct error messages +compile_commands.json + +# quick test scripts in the main directory /*.bolt /*.c diff --git a/.vscode/launch.json b/.vscode/launch.json index aa14ac561..e72879480 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -5,15 +5,13 @@ "version": "0.2.0", "configurations": [ { - "type": "node", + "type": "lldb", "request": "launch", - "name": "Launch Program", - "skipFiles": [ - "/**" - ], - "program": "${workspaceFolder}/compiler/lib/bin/bolt.js", - "args": [ "compiler/test.bolt" ], - "outputCapture": "std" + "name": "Debug", + "program": "${workspaceFolder}/build/bolt", + "args": [ "--direct-diagnostics", "verify", "${workspaceFolder}/test.bolt" ], + "cwd": "${workspaceFolder}", + "preLaunchTask": "CMake: build" } ] -} \ No newline at end of file +} diff --git a/bootstrap/cxx/.vscode/settings.json b/.vscode/settings.json similarity index 100% rename from bootstrap/cxx/.vscode/settings.json rename to .vscode/settings.json diff --git a/bootstrap/cxx/.vscode/tasks.json b/.vscode/tasks.json similarity index 100% rename from bootstrap/cxx/.vscode/tasks.json rename to .vscode/tasks.json diff --git a/bootstrap/cxx/CMakeLists.txt b/CMakeLists.txt similarity index 100% rename from bootstrap/cxx/CMakeLists.txt rename to CMakeLists.txt diff --git a/bootstrap/cxx/README.md b/CONTRIBUTING.md similarity index 100% rename from bootstrap/cxx/README.md rename to CONTRIBUTING.md diff --git a/bootstrap/cxx/.gitignore b/bootstrap/cxx/.gitignore deleted file mode 100644 index d1bbc1a75..000000000 --- a/bootstrap/cxx/.gitignore +++ /dev/null @@ -1,18 +0,0 @@ - -# default build directory for VSCode -/build/ - -# used by clangd and other programs -.cache/ - -# created by pyenv -.python-version - -# used for local development -Makefile - -# Used by IDEs to get correct error messages -compile_commands.json - -# quick test scripts in the main directory -/*.bolt diff --git a/bootstrap/cxx/.vscode/launch.json b/bootstrap/cxx/.vscode/launch.json deleted file mode 100644 index e72879480..000000000 --- a/bootstrap/cxx/.vscode/launch.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - // Use IntelliSense to learn about possible attributes. - // Hover to view descriptions of existing attributes. - // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 - "version": "0.2.0", - "configurations": [ - { - "type": "lldb", - "request": "launch", - "name": "Debug", - "program": "${workspaceFolder}/build/bolt", - "args": [ "--direct-diagnostics", "verify", "${workspaceFolder}/test.bolt" ], - "cwd": "${workspaceFolder}", - "preLaunchTask": "CMake: build" - } - ] -} diff --git a/bootstrap/cxx/deps/zen b/bootstrap/cxx/deps/zen deleted file mode 120000 index 808883411..000000000 --- a/bootstrap/cxx/deps/zen +++ /dev/null @@ -1 +0,0 @@ -../../../../zen \ No newline at end of file diff --git a/bootstrap/js/compiler/.gitignore b/bootstrap/js/compiler/.gitignore deleted file mode 100644 index b4459c051..000000000 --- a/bootstrap/js/compiler/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ - -# populated by npm -node_modules/ - -# compiled TypeScript code from src/ -/lib/ - -# local development helpers -Makefile -/*.bolt -/*.c diff --git a/bootstrap/js/compiler/package-lock.json b/bootstrap/js/compiler/package-lock.json deleted file mode 100644 index bb8afecae..000000000 --- a/bootstrap/js/compiler/package-lock.json +++ /dev/null @@ -1,169 +0,0 @@ -{ - "name": "@samvv/bolt", - "version": "0.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@samvv/bolt", - "version": "0.0.1", - "license": "MIT", - "dependencies": { - "@types/which": "^3.0.0", - "commander": "^10.0.0", - "reflect-metadata": "^0.1.13", - "source-map-support": "^0.5.21", - "tslib": "^2.5.0", - "which": "^3.0.0", - "yagl": "^0.5.1" - }, - "bin": { - "bolt": "lib/bin/bolt.js", - "bolt-self": "lib/bin/bolt-self.js" - }, - "devDependencies": { - "@types/node": "^18.15.11" - } - }, - "node_modules/@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", - "dev": true - }, - "node_modules/@types/which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.0.tgz", - "integrity": "sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/commander": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", - "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", - "engines": { - "node": ">=14" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", - "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/yagl": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/yagl/-/yagl-0.5.1.tgz", - "integrity": "sha512-DfJygWCefAq5eEOmwvVkiMFBUEQJs9aijGdhaYGSdj1TM2OqSbe/Vp37e/nMGXsgmWiryZapKMOtpYx3ECUrJQ==" - } - }, - "dependencies": { - "@types/node": { - "version": "18.15.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", - "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", - "dev": true - }, - "@types/which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.0.tgz", - "integrity": "sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==" - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "commander": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", - "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==" - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.0.tgz", - "integrity": "sha512-nla//68K9NU6yRiwDY/Q8aU6siKlSs64aEC7+IV56QoAuyQT2ovsJcgGYGyqMOmI/CGN1BOR6mM5EN0FBO+zyQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "yagl": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/yagl/-/yagl-0.5.1.tgz", - "integrity": "sha512-DfJygWCefAq5eEOmwvVkiMFBUEQJs9aijGdhaYGSdj1TM2OqSbe/Vp37e/nMGXsgmWiryZapKMOtpYx3ECUrJQ==" - } - } -} diff --git a/bootstrap/js/compiler/package.json b/bootstrap/js/compiler/package.json deleted file mode 100644 index 8382aec1c..000000000 --- a/bootstrap/js/compiler/package.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "@boltlang/bolt", - "version": "0.0.1", - "description": "A new programming language for the web", - "main": "lib/index.js", - "bin": { - "bolt": "lib/bin/bolt.js" - }, - "repository": { - "type": "git", - "url": "https://github.com/samvv/BoltJS" - }, - "keywords": [ - "programming-language", - "productivity", - "development", - "performance" - ], - "author": "Sam Vervaeck", - "license": "MIT", - "dependencies": { - "@types/which": "^3.0.0", - "commander": "^11.0.0", - "reflect-metadata": "^0.1.13", - "source-map-support": "^0.5.21", - "tslib": "^2.5.3", - "which": "^3.0.1", - "yagl": "^0.5.1" - }, - "devDependencies": { - "@types/node": "^20.3.1" - } -} diff --git a/bootstrap/js/compiler/src/analysis.ts b/bootstrap/js/compiler/src/analysis.ts deleted file mode 100644 index c823e711d..000000000 --- a/bootstrap/js/compiler/src/analysis.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { DirectedHashGraph, strongconnect } from "yagl"; -import { assert } from "./util"; -import { Syntax, LetDeclaration, SourceFile, SyntaxKind } from "./cst"; -import type { Scope } from "./scope" - -export class Analyser { - - private referenceGraph = new DirectedHashGraph(); - - public addSourceFile(node: SourceFile): void { - - const visit = (node: Syntax, source: Syntax | null) => { - - const addReference = (scope: Scope, name: string) => { - const target = scope.lookup(name); - if (source === null || target === null || isParam(target.kind)) { - return; - } - assert(source.kind === SyntaxKind.LetDeclaration); - assert(target.kind === SyntaxKind.LetDeclaration); - this.referenceGraph.addEdge(source, target); - } - - switch (node.kind) { - - case SyntaxKind.ConstantExpression: - break; - - case SyntaxKind.MatchExpression: - { - for (const arm of node.arms) { - visit(arm.expression, source); - } - break; - } - - case SyntaxKind.InstanceDeclaration: - case SyntaxKind.ClassDeclaration: - case SyntaxKind.SourceFile: - case SyntaxKind.ModuleDeclaration: - { - for (const element of node.elements) { - visit(element, source); - } - break; - } - - case SyntaxKind.ReferenceExpression: - { - if (node.name.kind === SyntaxKind.Identifier) { - assert(node.modulePath.length === 0); - addReference(node.getScope(), node.name.text); - } - break; - } - - case SyntaxKind.MemberExpression: - { - visit(node.expression, source); - break; - } - - case SyntaxKind.TupleExpression: - { - for (const element of node.elements) { - visit(element, source); - } - break; - } - - case SyntaxKind.StructExpression: - { - for (const member of node.members) { - switch (member.kind) { - case SyntaxKind.PunnedStructExpressionField: - { - addReference(node.getScope(), member.name.text); - break; - } - case SyntaxKind.StructExpressionField: - { - visit(member.expression, source); - break; - }; - } - } - break; - } - - case SyntaxKind.NestedExpression: - { - visit(node.expression, source); - break; - } - - case SyntaxKind.InfixExpression: - { - visit(node.left, source); - visit(node.right, source); - break; - } - - case SyntaxKind.CallExpression: - { - visit(node.func, source); - for (const arg of node.args) { - visit(arg, source); - } - break; - } - - case SyntaxKind.IfStatement: - { - for (const cs of node.cases) { - if (cs.test !== null) { - visit(cs.test, source); - } - for (const element of cs.elements) { - visit(element, source); - } - } - break; - } - - case SyntaxKind.ExpressionStatement: - { - visit(node.expression, source); - break; - } - - case SyntaxKind.ReturnStatement: - { - if (node.expression !== null) { - visit(node.expression, source); - } - break; - } - - case SyntaxKind.LetDeclaration: - { - this.referenceGraph.addVertex(node); - if (node.body !== null) { - switch (node.body.kind) { - case SyntaxKind.ExprBody: - { - visit(node.body.expression, node); - break; - } - case SyntaxKind.BlockBody: - { - for (const element of node.body.elements) { - visit(element, node); - } - break; - } - } - } - break; - } - - case SyntaxKind.TypeDeclaration: - case SyntaxKind.EnumDeclaration: - case SyntaxKind.StructDeclaration: - break; - - default: - throw new Error(`Unexpected ${node.constructor.name}`); - - } - - } - - visit(node, null); - - } - - public isReferencedInParentScope(node: LetDeclaration): boolean { - const maxDepth = node.getScope().depth; - for (const other of this.referenceGraph.getSourceVertices(node)) { - if (other.getScope().depth < maxDepth) { - return true; - } - } - return false; - } - - /** - * Gets a sorted list of collections where each collection contains - * let-declarations that reference each other in some way or another. - * - * The declarations are sorted in such a way that declarations that reference - * nothing come before declarations that reference another declaration. When - * a let-declaration is not recusive, it will simply show up as a collection - * with only one element. - */ - public getSortedDeclarations(): Iterable { - return strongconnect(this.referenceGraph); - } - -} - diff --git a/bootstrap/js/compiler/src/bin/bolt.ts b/bootstrap/js/compiler/src/bin/bolt.ts deleted file mode 100644 index 5721c1090..000000000 --- a/bootstrap/js/compiler/src/bin/bolt.ts +++ /dev/null @@ -1,227 +0,0 @@ -#!/usr/bin/env node - -import "source-map-support/register" -import "reflect-metadata" - -import fs from "fs" -import util from "util" -import path from "path" -import { Command } from "commander" - -import { PassManager, Program, TargetType } from "../program" -import { TypeclassDictPassing } from "../passes/TypeclassDictPass" -import BoltToC from "../passes/BoltToC" -import BoltToJS from "../passes/BoltToJS" -import { stripExtension } from "../util" -import { sync as which } from "which" -import { spawnSync } from "child_process" -import { ConsoleDiagnostics, DiagnosticKind, DiagnosticStore, TypeMismatchDiagnostic } from "../diagnostics" -import { Syntax, SyntaxKind, TextFile, isExpression, visitEachChild } from "../cst" -import { Analyser, Checker, parseSourceFile } from ".." -import { typesEqual } from "../types" - -function debug(value: any) { - console.error(util.inspect(value, { colors: true, depth: Infinity })); -} - -// The positions of all program arguments which are not flags will be parsed -// into this structure. -const commandIndices = []; - -for (let i = 2; i < process.argv.length; i++) { - const arg = process.argv[i]; - if (!arg.startsWith('-')) { - commandIndices.push(i); - } -} - -// Iterate in reverse over the command indices, such that bolt-self-test-run -// gets precedence over bolt-self-test -for (let i = commandIndices.length-1; i >= 0; i--) { - - const argvIndex = commandIndices[i]; - - // Construct the binary name from the parts of which we stored the locations in `commandIndices`. - // Build from the first command up until the command at index `i` - const binaryName = 'bolt-' + commandIndices.slice(0, i+1).map(index => process.argv[index]).join('-'); - - const binaryPath = which(binaryName, { nothrow: true }); - - // Reconstruct the args list without the commands in `binaryName` - const argv = []; - for (let i = 2; i < argvIndex; i++) { - const arg = process.argv[i]; - if (arg.startsWith('-')) { - argv.push(arg); - } - } - for (let i = argvIndex+1; i < process.argv.length; i++) { - argv.push(process.argv[i]); - } - - // Only execute and return if the command was actually found. Otherwise, try - // the other possible commands or execute the default program if this was the - // last iteration. - if (binaryPath) { - const exitCode = spawnSync(binaryPath, argv, { stdio: 'inherit' }).status; - process.exit(exitCode || 0); - } - -} - -const program = new Command(); - -program - .name('bolt') - .description('The official Bolt language compiler') - .version('0.0.1') - .option('-C, --work-dir', 'Act as if run from this directory', '.'); - -program.command('build', { isDefault: true }) - .description('Build a set of Bolt sources') - .argument('', 'Path to the Bolt program to compile') - .option('-C, --work-dir', 'Act as if run from this directory', '.') - .option('--no-typecheck', 'Skip type-checking') - .option('--no-emit', 'Do not output compiled files') - .option('-t, --target ', 'What to compile to', 'c') - .action((fileName, opts) => { - - const cwd = opts.workDir; - const filePath = path.resolve(cwd, fileName); - const shouldTypecheck = opts.typecheck; - const shouldEmit = opts.emit; - - let targetType: TargetType; - switch (opts.target) { - case 'bolt': - targetType = TargetType.Bolt; - break; - case 'js': - targetType = TargetType.JS; - break; - case 'c': - targetType = TargetType.C; - break; - default: - console.error(`Invalid target '${opts.target}' provided.`); - process.exit(1); - } - - const program = new Program([ filePath ]); - if (program.diagnostics.hasError) { - process.exit(1); - } - - if (shouldTypecheck) { - program.check(); - if (program.diagnostics.hasError) { - process.exit(1); - } - } - - if (shouldEmit) { - - const passes = new PassManager(); - passes.add(TypeclassDictPassing); - - let suffix; - switch (targetType) { - case TargetType.Bolt: - suffix = '.gen.bolt'; - break; - case TargetType.C: - suffix = '.c'; - passes.add(BoltToC); - break; - case TargetType.JS: - suffix = '.js' - passes.add(BoltToJS); - break; - } - - for (const sourceFile of program.getSourceFiles()) { - const code = passes.apply(sourceFile); - const targetFilePath = stripExtension(sourceFile.getFile().getFullPath()) + suffix; - const file = fs.createWriteStream(targetFilePath, 'utf-8'); - code.emit(file); - } - - if (program.diagnostics.hasError) { - process.exit(1); - } - - } - - }); - -program.command('verify', { hidden: true }) - .description('Run verification tests') - .argument('', 'File with verification source') - .action((fileName, _opts) => { - - const diagnostics = new DiagnosticStore(); - const realPath = path.resolve(fileName); - const text = fs.readFileSync(realPath, 'utf-8'); - const file = new TextFile(fileName, text); - - const sourceFile = parseSourceFile(file, diagnostics); - if (!sourceFile) { - process.exit(1); - } - - const analyser = new Analyser(); - analyser.addSourceFile(sourceFile); - const checker = new Checker(analyser, diagnostics); - checker.check(sourceFile); - - const realDiagnostics = new ConsoleDiagnostics(); - - let annotationTotalCount = 0; - let annotationErrorCount = 0; - let diagnosticTotalCount = diagnostics.size; - let diagnosticErrorCount = 0; - - const visit = (node: Syntax) => { - if (isExpression(node)) { - for (const annotation of node.annotations) { - if (annotation.kind === SyntaxKind.TypeAnnotation) { - const actual = checker.getTypeOfNode(node); - const expected = checker.getTypeOfNode(annotation.typeExpr); - if (!typesEqual(actual, expected)) { - realDiagnostics.add(new TypeMismatchDiagnostic(actual, expected, [ node ], [])); - annotationErrorCount++; - } - annotationTotalCount++; - } - } - } - visitEachChild(node, visit); - } - visit(sourceFile); - - const uncaughtDiagnostics = new Set(diagnostics); - - // TODO check comments that did not match any diagnostic - for (const [line, comment] of file.comments) { - if (comment[0].kind === SyntaxKind.At && comment[1].kind === SyntaxKind.Identifier && comment[1].text === 'expect_diagnostic' && comment[2].kind === SyntaxKind.StringLiteral) { - for (const diagnostic of uncaughtDiagnostics) { - if (diagnostic.position && diagnostic.position.line === line+1 && DiagnosticKind[diagnostic.kind] === comment[2].contents) { - uncaughtDiagnostics.delete(diagnostic); - } - } - } - } - - for (const diagnostic of uncaughtDiagnostics) { - realDiagnostics.add(diagnostic); - } - - console.log(`${annotationTotalCount} type annotation(s) verified, ${annotationErrorCount} error(s).`); - console.log(`${diagnosticTotalCount} diagnostic(s) generated, ${uncaughtDiagnostics.size} unexpected.`); - if (realDiagnostics.hasError) { - process.exit(1); - } - }); - -program.parse(); - diff --git a/bootstrap/js/compiler/src/c.ts b/bootstrap/js/compiler/src/c.ts deleted file mode 100644 index 07a44cf6d..000000000 --- a/bootstrap/js/compiler/src/c.ts +++ /dev/null @@ -1,387 +0,0 @@ - -import type stream from "stream" -import { IndentWriter } from "./util"; - -export const enum CNodeKind { - - // Types - BuiltinType, - - // Statements - ExprStmt, - RetStmt, - - // Expressions - CallExpr, - RefExpr, - ConstExpr, - - // Declarations - TypeDecl, - VarDecl, - FuncDecl, - - // Directives - IncDir, - - // Other nodes - Program, - -} - -export const enum CBuiltinTypeKind { - Char, - Short, - Int, - Long, - LongLong, - UnsignedChar, - UnsignedShort, - UnsignedInt, - UnsignedLong, - UnsignedLongLong, -} - -abstract class CNodeBase { - - public abstract readonly kind: CNodeKind; - - public emit(file: stream.Writable): void { - const emitter = new CEmitter(file); - emitter.emit(this as any); - } - -} - -export class CBuiltinType extends CNodeBase { - - public readonly kind = CNodeKind.BuiltinType; - - public constructor( - public typeKind: CBuiltinTypeKind, - ) { - super(); - } - -} - -export type CType - = CBuiltinType - -export class CRefExpr extends CNodeBase { - - public readonly kind = CNodeKind.RefExpr; - - public constructor( - public name: string - ) { - super(); - } - -} - -export class CCallExpr extends CNodeBase { - - public readonly kind = CNodeKind.CallExpr; - - public constructor( - public operator: CExpr, - public args: CExpr[], - ) { - super(); - } - -} - -export class CConstExpr extends CNodeBase { - - public readonly kind = CNodeKind.ConstExpr; - - public constructor( - public value: bigint | string | boolean, - ) { - super(); - } - -} - -export type CExpr - = CRefExpr - | CCallExpr - | CConstExpr - ; - -export class CRetStmt extends CNodeBase { - - public readonly kind = CNodeKind.RetStmt; - - public constructor( - public value: CExpr | null, - ) { - super(); - } - -} - -export class CExprStmt extends CNodeBase { - - public readonly kind = CNodeKind.ExprStmt; - - public constructor( - public expr: CExpr, - ) { - super(); - } - -} - -export type CStmt - = CExprStmt - | CRetStmt; - -export class CTypeDecl extends CNodeBase { - - public readonly kind = CNodeKind.TypeDecl; - - public constructor( - public name: string, - public type: CType, - ) { - super(); - } - -} - -export class CFuncDecl extends CNodeBase { - - public readonly kind = CNodeKind.FuncDecl; - - public constructor( - public returnType: CType, - public name: string, - public params: Array<[CType, string]>, - public body: CStmt[] | null, - ) { - super(); - } - -} - -export class CVarDecl extends CNodeBase { - - public readonly kind = CNodeKind.VarDecl; - - public constructor( - public isExtern: boolean, - public type: CType, - public name: string, - ) { - super(); - } - -} - -export type CDecl - = CTypeDecl - | CVarDecl - | CFuncDecl - -export class CIncDir extends CNodeBase { - - public readonly kind = CNodeKind.IncDir; - - public constructor( - public filePath: string, - public isSystem = false, - ) { - super(); - } - -} - -export type CDir - = CIncDir; - -export class CProgram extends CNodeBase { - - public readonly kind = CNodeKind.Program; - - public constructor( - public elements: (CDecl | CDir)[], - ) { - super(); - } - -} - -export type CNode - = CDecl - | CDir - | CStmt - | CExpr - | CType - | CProgram - -export class CEmitter { - - private writer: IndentWriter; - - public constructor( - public stream: stream.Writable, - ) { - this.writer = new IndentWriter(stream); - } - - public emit(node: CNode): void { - - switch (node.kind) { - - case CNodeKind.Program: - { - for (const element of node.elements) { - this.emit(element); - } - break; - } - - case CNodeKind.IncDir: - { - this.writer.write('#include '); - this.writer.write(node.isSystem ? '<' : '"'); - this.writer.write(node.filePath); - this.writer.write(node.isSystem ? '>' : '"'); - this.writer.write('\n\n'); - break; - } - - case CNodeKind.BuiltinType: - { - switch (node.typeKind) { - case CBuiltinTypeKind.Char: - this.writer.write('char'); - break; - case CBuiltinTypeKind.Short: - this.writer.write('short'); - break; - case CBuiltinTypeKind.Int: - this.writer.write('int'); - break; - case CBuiltinTypeKind.Long: - this.writer.write('long'); - break; - case CBuiltinTypeKind.LongLong: - this.writer.write('long long'); - break; - case CBuiltinTypeKind.UnsignedChar: - this.writer.write('unsigned char'); - break; - case CBuiltinTypeKind.UnsignedShort: - this.writer.write('unsigned short'); - break; - case CBuiltinTypeKind.UnsignedInt: - this.writer.write('unsigned int'); - break; - case CBuiltinTypeKind.UnsignedLong: - this.writer.write('unsigned long'); - break; - case CBuiltinTypeKind.UnsignedLongLong: - this.writer.write('unsigned long long'); - break; - } - break; - } - - case CNodeKind.FuncDecl: - { - this.emit(node.returnType); - this.writer.write(' ' + node.name + '('); - let count = 0; - for (const [type, name] of node.params) { - this.emit(type); - this.writer.write(' ' + name); - if (count++ > 0) { - this.writer.write(', '); - } - } - this.writer.write(') {\n'); - this.writer.indent(); - if (node.body !== null) { - for (const element of node.body) { - this.emit(element); - } - } - this.writer.dedent(); - this.writer.write('}\n\n'); - break; - } - - case CNodeKind.ExprStmt: - this.emit(node.expr); - this.writer.write(';\n'); - break; - - case CNodeKind.RetStmt: - { - this.writer.write('return'); - if (node.value !== null) { - this.writer.write(' '); - this.emit(node.value); - } - this.writer.write(';\n'); - break; - } - - case CNodeKind.RefExpr: - this.writer.write(node.name); - break; - - case CNodeKind.CallExpr: - { - this.emit(node.operator); - this.writer.write('('); - let count = 0; - for (const arg of node.args) { - this.emit(arg); - if (count++ > 0) { - this.writer.write(', '); - } - } - this.writer.write(')'); - break; - } - - case CNodeKind.ConstExpr: - { - if (typeof(node.value) === 'string') { - this.writer.write('"'); - for (const ch of node.value) { - switch (ch) { - case '\b': this.writer.write('\\b'); break; - case '\f': this.writer.write('\\f'); break; - case '\n': this.writer.write('\\n'); break; - case '\r': this.writer.write('\\r'); break; - case '\t': this.writer.write('\\t'); break; - case '\v': this.writer.write('\\v'); break; - case '\0': this.writer.write('\\0'); break; - case '\'': this.writer.write('\\\''); break; - case '"': this.writer.write('\\"'); break; - default: this.writer.write(ch); break; - } - } - this.writer.write('"'); - } else if (typeof(node.value) === 'bigint') { - this.writer.write(node.value.toString()); - } else { - throw new Error(`Unexpected type of value in CConstExpr`); - } - break; - } - - default: - throw new Error(`Unexpected ${node.constructor.name}`); - - } - - } - -} diff --git a/bootstrap/js/compiler/src/checker.ts b/bootstrap/js/compiler/src/checker.ts deleted file mode 100644 index 174d38c3e..000000000 --- a/bootstrap/js/compiler/src/checker.ts +++ /dev/null @@ -1,2478 +0,0 @@ - -import { - ClassDeclaration, - Expression, - ExprOperator, - Identifier, - IdentifierAlt, - InstanceDeclaration, - LetDeclaration, - Pattern, - ReferenceExpression, - ReferenceTypeExpression, - SourceFile, - StructPattern, - Syntax, - SyntaxKind, - TypeExpression, -} from "./cst"; -import { Symkind } from "./scope" -import { - describeType, - BindingNotFoundDiagnostic, - Diagnostics, - KindMismatchDiagnostic, - ModuleNotFoundDiagnostic, - TypeclassNotFoundDiagnostic, - FieldNotFoundDiagnostic, - TypeMismatchDiagnostic, -} from "./diagnostics"; -import { assert, assertNever, isEmpty, MultiMap, toStringTag, InspectFn, implementationLimitation } from "./util"; -import { Analyser } from "./analysis"; -import { InspectOptions } from "util"; -import { TypeKind, TApp, TArrow, TCon, TField, TNil, TPresent, TRegularVar, TVSet, TVSub, Type, TypeBase, TAbsent, TRigidVar, TVar, buildTupleTypeWithLoc, buildTupleType, labelTag } from "./types"; -import { CEmpty, CEqual, CMany, Constraint, ConstraintKind, ConstraintSet } from "./constraints"; - -// class IsIn { - -// public constructor( -// public className: string, -// public type: Type, -// ) { - -// } - -// public substitute(sub: TVSub): Pred { -// return new IsIn(this.className, this.type.substitute(sub)); -// } - -// } - -// type Pred = IsIn; - -export const enum KindType { - Type, - Arrow, - Var, -} - -class KVSub { - - private mapping = new Map(); - - public set(kv: KVar, kind: Kind): void { - this.mapping.set(kv.id, kind); - } - - public get(kv: KVar): Kind | undefined { - return this.mapping.get(kv.id); - } - - public has(kv: KVar): boolean { - return this.mapping.has(kv.id); - } - - public values(): Iterable { - return this.mapping.values(); - } - -} - -abstract class KindBase { - - public abstract readonly type: KindType; - - public abstract substitute(sub: KVSub): Kind; - -} - -class KVar extends KindBase { - - public readonly type = KindType.Var; - - public constructor( - public id: number, - ) { - super(); - } - - public substitute(sub: KVSub): Kind { - const other = sub.get(this); - return other === undefined - ? this : other.substitute(sub); - } - - public hasFailed(): boolean { - return true; - } - -} - -class KType extends KindBase { - - public readonly type = KindType.Type; - - public substitute(_sub: KVSub): Kind { - return this; - } - -} - -class KArrow extends KindBase { - - public readonly type = KindType.Arrow; - - public constructor( - public left: Kind, - public right: Kind, - ) { - super(); - } - - public substitute(sub: KVSub): Kind { - return new KArrow( - this.left.substitute(sub), - this.right.substitute(sub), - ); - } - -} - -// TODO actually use these -const kindOfTypes = new KType(); -//const kindOfTypes = new KCon('*'); -//const kindOfRows = new KCon('r'); -//const kindOfConstraints = new KCon(); - -export type Kind - = KType - | KArrow - | KVar - -abstract class SchemeBase { -} - -class Forall extends SchemeBase { - - public constructor( - public typeVars: TVSet, - public constraint: Constraint, - public type: Type, - ) { - super(); - } - - public *freeTypeVars(): Iterable { - for (const tv of this.constraint.freeTypeVars()) { - if (!this.typeVars.has(tv)) { - yield tv; - } - } - for (const tv of this.type.getTypeVars()) { - if (!this.typeVars.has(tv)) { - yield tv; - } - } - } - - protected [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn): string { - let out = 'forall'; - if (this.typeVars.size > 0) { - out += ' ' + [...this.typeVars].map(tv => inspect(tv, options)).join(' '); - } - out += '. ' + inspect(this.type, options); - return out; - } - - public static mono(type: Type): Forall { - return new Forall(new TVSet, new CEmpty, type); - } - - public static fromArrays(typeVars: TRegularVar[], constraints: Constraint[], type: Type): Forall { - return new Forall(new TVSet(typeVars), new CMany(constraints), type); - } - -} - -export type Scheme - = Forall - -type NodeWithReference - = Identifier - | IdentifierAlt - | ExprOperator - | ReferenceExpression - | ReferenceTypeExpression - -function validateScheme(scheme: Scheme): void { - const isMonoVar = scheme.type.kind === TypeKind.RegularVar && scheme.typeVars.size === 0; - if (!isMonoVar) { - const tvs = new TVSet(scheme.type.getTypeVars()) - for (const tv of tvs) { - if (!scheme.typeVars.has(tv)) { - throw new Error(`Type variable ${describeType(tv)} is free because does not appear in the scheme's type variable list`); - } - } - for (const tv of scheme.typeVars) { - if (!tvs.has(tv)) { - throw new Error(`Polymorphic type variable ${describeType(tv)} does not occur anywhere in scheme's type ${describeType(scheme.type)}`); - } - } - } -} - -class TypeEnv { - - private mapping = new MultiMap(); - - public constructor(public parent: TypeEnv | null = null) { - - } - - public add(name: string, scheme: Scheme, kind: Symkind): void { - this.mapping.add(name, [kind, scheme]); - } - - public get(name: string, expectedKind: Symkind): Scheme | null { - for (const [kind, scheme] of this.mapping.get(name)) { - if (kind & expectedKind) { - return scheme; - } - } - return null; - } - - public hasTypeVar(seek: TVar): boolean { - for (const [_name, [_kind, scheme]] of this.mapping) { - for (const tv of scheme.freeTypeVars()) { - if (tv.id === seek.id) { - return true; - } - } - } - return false; - } - -} - -class KindEnv { - - private mapping = new Map(); - - public constructor(public parent: KindEnv | null = null) { - - } - - public get(name: string): Kind | null { - return this.mapping.get(name) ?? null; - } - - public set(name: string, kind: Kind): void { - assert(!this.mapping.has(name)); - this.mapping.set(name, kind); - } - - public lookup(name: string): Kind | null { - let curr: KindEnv | null = this; - do { - const kind = curr.mapping.get(name); - if (kind !== undefined) { - return kind; - } - curr = curr.parent; - } while (curr !== null); - return null; - } - -} - -export type { KindEnv, TypeEnv }; - -function splitReferences(node: NodeWithReference): [IdentifierAlt[], Identifier | IdentifierAlt | ExprOperator] { - let modulePath: IdentifierAlt[]; - let name: Identifier | IdentifierAlt | ExprOperator; - if (node.kind === SyntaxKind.ReferenceExpression || node.kind === SyntaxKind.ReferenceTypeExpression) { - modulePath = node.modulePath.map(([name, _dot]) => name); - name = node.name; - } else { - modulePath = []; - name = node; - } - return [modulePath, name] -} - -class PolyContext { - - public constructor( - public typeVars = new TVSet(), - public constraints: ConstraintSet = [], - ) { - - } - -} - -export interface TCInfo { - inferredType?: Type; - inferredKind?: Kind; - poly?: PolyContext; - kindEnv?: KindEnv; - typeEnv?: TypeEnv; - returnType?: Type | null; -} - -function isSignatureDeclarationLike(node: LetDeclaration): boolean { - return false; // May be foreignKeyword !== null later -} - -function isVariableDeclarationLike(node: LetDeclaration): boolean { - return node.pattern.kind !== SyntaxKind.NamedPattern || !node.body; -} - -function isFunctionDeclarationLike(node: LetDeclaration): boolean { - return node.parent!.kind === SyntaxKind.ClassDeclaration - || (!isSignatureDeclarationLike(node) && !isVariableDeclarationLike(node)); - // return (node.pattern.kind === SyntaxKind.NamedPattern || node.pattern.kind === SyntaxKind.NestedPattern && node.pattern.pattern.kind === SyntaxKind.NamedPattern) - // && (node.params.length > 0 || (node.body !== null && node.body.kind === SyntaxKind.BlockBody)); -} - -function hasTypeVar(typeVars: TVSet, type: Type): boolean { - for (const tv of type.getTypeVars()) { - if (typeVars.has(tv)) { - return true; - } - } - return false; -} - -interface ClassMeta { - decl: ClassDeclaration | null; - instances: Set; -} - -export class Checker { - - private nextTypeVarId = 0; - private nextKindVarId = 0; - private nextConTypeId = 0; - - private stringType = this.createTCon('String'); - private intType = this.createTCon('Int'); - private boolType = this.createTCon('Bool'); - private unitType = buildTupleType([]); - - private classDecls = new Map(); - private globalKindEnv = new KindEnv(); - private globalTypeEnv = new TypeEnv(); - - private typeSolution = new TVSub(); - private kindSolution = new KVSub(); - - private typeEnvStack: TypeEnv[] = []; - private polyContextStack: PolyContext[] = []; - private returnTypeStack: (Type | null)[] = []; - - public constructor( - private analyser: Analyser, - private diagnostics: Diagnostics - ) { - - this.globalKindEnv.set('Int', kindOfTypes); - this.globalKindEnv.set('String', kindOfTypes); - this.globalKindEnv.set('Bool', kindOfTypes); - - const a = new TRegularVar(this.nextTypeVarId++); - const b = new TRegularVar(this.nextTypeVarId++); - - this.globalTypeEnv.add('$', Forall.fromArrays([ a, b ], [], new TArrow(new TArrow(new TArrow(a, b), a), b)), Symkind.Var); - this.globalTypeEnv.add('String', Forall.fromArrays([], [], this.stringType), Symkind.Type); - this.globalTypeEnv.add('Int', Forall.fromArrays([], [], this.intType), Symkind.Type); - this.globalTypeEnv.add('Bool', Forall.fromArrays([], [], this.boolType), Symkind.Type); - this.globalTypeEnv.add('True', Forall.fromArrays([], [], this.boolType), Symkind.Var); - this.globalTypeEnv.add('False', Forall.fromArrays([], [], this.boolType), Symkind.Var); - this.globalTypeEnv.add('+', Forall.fromArrays([], [], TArrow.build([ this.intType, this.intType ], this.intType)), Symkind.Var); - this.globalTypeEnv.add('-', Forall.fromArrays([], [], TArrow.build([ this.intType, this.intType ], this.intType)), Symkind.Var); - this.globalTypeEnv.add('*', Forall.fromArrays([], [], TArrow.build([ this.intType, this.intType ], this.intType)), Symkind.Var); - this.globalTypeEnv.add('/', Forall.fromArrays([], [], TArrow.build([ this.intType, this.intType ], this.intType)), Symkind.Var); - this.globalTypeEnv.add('==', Forall.fromArrays([ a ], [], TArrow.build([ a, a ], this.boolType)), Symkind.Var); - this.globalTypeEnv.add('not', Forall.fromArrays([], [], new TArrow(this.boolType, this.boolType)), Symkind.Var); - - } - - public getIntType(): Type { - return this.intType; - } - - public getStringType(): Type { - return this.stringType; - } - - public getBoolType(): Type { - return this.boolType; - } - - private createTCon(name: string, node: Syntax | null = null): TCon { - return new TCon(this.nextConTypeId++, name, node); - } - - private getInfo(node: Syntax): TCInfo { - return node as unknown as TCInfo; - } - - private getPolyContext(): PolyContext { - return this.polyContextStack[this.polyContextStack.length-1]; - } - - private pushInfo(info: TCInfo): void { - if (info.poly !== undefined) { - this.polyContextStack.push(info.poly); - } - if (info.returnType !== undefined) { - this.returnTypeStack.push(info.returnType); - } - if (info.typeEnv !== undefined) { - this.typeEnvStack.push(info.typeEnv); - } - } - - private popInfo(info: TCInfo): void { - if (info.poly !== undefined) { - this.polyContextStack.pop(); - } - if (info.returnType !== undefined) { - this.returnTypeStack.pop(); - } - if (info.typeEnv !== undefined) { - this.typeEnvStack.pop(); - } - } - - public getReturnType(): Type { - const ty = this.returnTypeStack[this.returnTypeStack.length-1]; - assert(ty !== null); - return ty; - } - - private getTypeEnv(): TypeEnv { - return this.typeEnvStack[this.typeEnvStack.length-1]; - } - - private createTRegularVar(node: Syntax | null = null): TRegularVar { - const typeVar = new TRegularVar(this.nextTypeVarId++, node); - this.getPolyContext().typeVars.add(typeVar); - return typeVar; - } - - private createRigidVar(displayName: string, node: Syntax | null = null): TRigidVar { - const tv = new TRigidVar(this.nextTypeVarId++, displayName, node); - this.getPolyContext().typeVars.add(tv); - return tv; - } - - private addConstraint(constraint: Constraint): void { - - switch (constraint.kind) { - - case ConstraintKind.Empty: - break; - - case ConstraintKind.Many: - for (const element of constraint.elements) { - this.addConstraint(element); - } - break; - - case ConstraintKind.Equal: - { - const global = 0; - - let maxLevelLeft = global; - for (let i = this.polyContextStack.length; i-- > 0;) { - const ctx = this.polyContextStack[i]; - if (hasTypeVar(ctx.typeVars, constraint.left)) { - maxLevelLeft = i; - break; - } - } - - let maxLevelRight = global; - for (let i = this.polyContextStack.length; i-- > 0;) { - const ctx = this.polyContextStack[i]; - if (hasTypeVar(ctx.typeVars, constraint.right)) { - maxLevelRight = i; - break; - } - } - - const upperLevel = Math.max(maxLevelLeft, maxLevelRight); - let lowerLevel = upperLevel; - for (let i = 0; i < this.polyContextStack.length; i++) { - const ctx = this.polyContextStack[i]; - if (hasTypeVar(ctx.typeVars, constraint.left) || hasTypeVar(ctx.typeVars, constraint.right)) { - lowerLevel = i; - break; - } - } - - if (upperLevel == lowerLevel || maxLevelLeft == global || maxLevelRight == global) { - this.solve(constraint); - } else { - this.polyContextStack[upperLevel].constraints.push(constraint); - } - - break; - } - - } - - } - - private generalize(type: Type, constraints: Constraint[], env: TypeEnv): Scheme { - const tvs = new TVSet(); - for (const tv of type.getTypeVars()) { - if (!env.hasTypeVar(tv)) { - tvs.add(tv); - } - } - for (const constraint of constraints) { - for (const tv of constraint.freeTypeVars()) { - if (!env.hasTypeVar(tv)) { - tvs.add(tv); - } - } - } - return new Forall(tvs, new CMany(constraints), type); - } - - private lookupKind(env: KindEnv, node: NodeWithReference, emitDiagnostic = true): Kind | null { - const [modulePath, name] = splitReferences(node); - if (modulePath.length > 0) { - let maxIndex = 0; - let currUp = node.getEnclosingModule(); - outer: for (;;) { - let currDown = currUp; - for (let i = 0; i < modulePath.length; i++) { - const moduleName = modulePath[i]; - const nextDown = currDown.resolveModule(moduleName.text); - if (nextDown === null) { - if (currUp.kind === SyntaxKind.SourceFile) { - if (emitDiagnostic) { - this.diagnostics.add( - new ModuleNotFoundDiagnostic( - modulePath.slice(maxIndex).map(id => id.text), - modulePath[maxIndex], - ) - ); - } - return null; - } - currUp = currUp.getEnclosingModule(); - continue outer; - } - maxIndex = Math.max(maxIndex, i+1); - currDown = nextDown; - } - const currDownInfo = this.getInfo(currDown); - const found = currDownInfo.kindEnv!.get(name.text); - if (found !== null) { - return found; - } - if (emitDiagnostic) { - this.diagnostics.add( - new BindingNotFoundDiagnostic( - modulePath.map(id => id.text), - name.text, - name, - ) - ); - } - return null; - } - } else { - let curr: KindEnv | null = env; - do { - const found = curr.get(name.text); - if (found !== null) { - return found; - } - curr = curr.parent; - } while(curr !== null); - if (emitDiagnostic) { - this.diagnostics.add( - new BindingNotFoundDiagnostic( - [], - name.text, - name, - ) - ); - } - return null; - } - } - - private lookup(node: NodeWithReference, expectedKind: Symkind, enableDiagnostics = true): Scheme | null { - - const [modulePath, name] = splitReferences(node); - - if (modulePath.length > 0) { - - let maxIndex = 0; - let currUp = node.getEnclosingModule(); - - outer: for (;;) { - - let currDown = currUp; - for (let i = 0; i < modulePath.length; i++) { - const moduleName = modulePath[i]; - const nextDown = currDown.resolveModule(moduleName.text); - if (nextDown === null) { - if (currUp.kind === SyntaxKind.SourceFile) { - if (enableDiagnostics) { - this.diagnostics.add( - new ModuleNotFoundDiagnostic( - modulePath.slice(maxIndex).map(id => id.text), - modulePath[maxIndex], - ) - ); - } - return null; - } - currUp = currUp.getEnclosingModule(); - continue outer; - } - maxIndex = Math.max(maxIndex, i+1); - currDown = nextDown; - } - - const currDownInfo = this.getInfo(currDown); - - const found = currDownInfo.typeEnv!.get(name.text, expectedKind); - if (found !== null) { - return found; - } - - if (enableDiagnostics) { - this.diagnostics.add( - new BindingNotFoundDiagnostic( - modulePath.map(id => id.text), - name.text, - name, - ) - ); - } - - return null; - } - - } else { - - for (let i = this.typeEnvStack.length-1; i >= 0; i--) { - const curr = this.typeEnvStack[i]; - const found = curr.get(name.text, expectedKind); - if (found !== null) { - return found; - } - } - - if (enableDiagnostics) { - this.diagnostics.add( - new BindingNotFoundDiagnostic( - [], - name.text, - name, - ) - ); - } - - return null; - - } - - } - - private createSubstitution(scheme: Scheme): TVSub { - const sub = new TVSub(); - const tvs = [...scheme.typeVars] - for (const tv of tvs) { - sub.set(tv, this.createTRegularVar()); - } - return sub; - } - - private simplifyType(type: Type): Type { - type = type.find(); - switch (type.kind) { - case TypeKind.RegularVar: - case TypeKind.RigidVar: - case TypeKind.Nil: - case TypeKind.Absent: - case TypeKind.Con: - return type; - case TypeKind.App: - { - const left = type.left.find(); - const right = type.right.find(); - if (left === type.left && right === type.right) { - return type; - } - return new TApp(left, right, type.node); - } - case TypeKind.Arrow: - { - const paramType = type.paramType.find(); - const returnType = type.returnType.find(); - if (paramType === type.paramType && returnType === type.returnType) { - return type; - } - return new TArrow(paramType, returnType, type.node); - } - case TypeKind.Field: - { - const newType = type.type.find(); - const newRestType = type.restType.find(); - if (newType === type.type && newRestType === type.restType) { - return type; - } - return new TField(type.name, newType, newRestType, type.node); - } - case TypeKind.Present: - { - const newType = type.type.find(); - if (newType === type.type) { - return type; - } - return new TPresent(newType, type.node); - } - } - } - - private instantiate(scheme: Scheme, node: Syntax | null, sub = this.createSubstitution(scheme)): Type { - const transform = (constraint: Constraint): Constraint => { - switch (constraint.kind) { - case ConstraintKind.Many: - const newConstraints: Constraint[] = []; - for (const element of constraint.elements) { - newConstraints.push(transform(element)); - } - return new CMany(newConstraints); - case ConstraintKind.Empty: - return constraint; - case ConstraintKind.Equal: - // constraint.left = this.simplifyType(constraint.left) - // constraint.right = this.simplifyType(constraint.right) - const newConstraint = constraint.substitute(sub); - newConstraint.node = node; - newConstraint.prevInstantiation = constraint; - return newConstraint; - default: - assertNever(constraint); - } - } - this.addConstraint(transform(scheme.constraint)); - return this.simplifyType(scheme.type).substitute(sub); - } - - private addBinding(name: string, scheme: Scheme, kind: Symkind): void { - this.getTypeEnv().add(name, scheme, kind); - } - - private unifyKindMany(first: Kind, rest: Kind[], node: TypeExpression): boolean { - return rest.every(kind => this.unifyKind(kind, first, node)); - } - - private inferKindFromTypeExpression(node: TypeExpression, env: KindEnv): Kind { - - // Store the resluting kind in this variable whenever we didn't encounter - // any errors and wish to proceed with type inference on this node. - let kind: Kind | undefined; - - // Fetch the type checking information for this node because we're going to use it anyways. - const info = this.getInfo(node); - - switch (node.kind) { - - case SyntaxKind.TupleTypeExpression: - { - if (this.unifyKindMany(kindOfTypes, node.elements.map(el => this.inferKindFromTypeExpression(el, env)), node)) { - kind = kindOfTypes; - } - break; - } - - case SyntaxKind.ArrowTypeExpression: - { - if (node.paramTypeExprs.every(param => this.unifyKind(kindOfTypes, this.inferKindFromTypeExpression(param, env), node)) - && this.unifyKind(kindOfTypes, this.inferKindFromTypeExpression(node.returnTypeExpr, env), node)) { - kind = kindOfTypes; - } - break; - } - - case SyntaxKind.ReferenceTypeExpression: - { - const matchedKind = this.lookupKind(env, node); - if (matchedKind !== null) { - kind = matchedKind; - } - break; - } - - case SyntaxKind.ForallTypeExpression: - { - // TODO we currently automatically introduce type variables but maybe we should use the ForallTypeExpression? - kind = this.inferKindFromTypeExpression(node.typeExpr, env); - break; - } - - case SyntaxKind.TypeExpressionWithConstraints: - { - // TODO check if we need to kind node.constraints - kind = this.inferKindFromTypeExpression(node.typeExpr, env); - break; - } - - case SyntaxKind.VarTypeExpression: - { - const matchedKind = this.lookupKind(env, node.name, false); - // If no kind is associated to the type variable with the given name, - // we can assign a fresh kind variable to the type variable. Next time, - // the type variable will remember whatever unified with it in-between. - if (matchedKind === null) { - kind = this.createKindVar(); - env.set(node.name.text, kind); - } else { - kind = matchedKind; - } - break; - } - - case SyntaxKind.AppTypeExpression: - { - kind = this.inferKindFromTypeExpression(node.operator, env); - for (const arg of node.args) { - kind = this.applyKind(kind, this.inferKindFromTypeExpression(arg, env), node); - } - break; - } - - case SyntaxKind.NestedTypeExpression: - case SyntaxKind.InstanceTypeExpression: - { - kind = this.inferKindFromTypeExpression(node.typeExpr, env); - break; - } - - default: - assertNever(node); - - } - - // We store the kind on the node so there is a one-to-one correspondence - // and this way the kind can be refrieved very efficiently. - // Note that at this point `kind` may be undefined. This signals further - // inference logic that this node should be skipped because it already contains errors. - info.inferredKind = kind; - - // Set a filler default for the node in a way that allows other unification - // errors to be caught. - if (kind === undefined) { - kind = this.createKindVar(); - } - - return kind; - } - - private createKindVar(): KVar { - return new KVar(this.nextKindVarId++); - } - - private applyKind(operator: Kind, arg: Kind, node: Syntax): Kind { - switch (operator.type) { - case KindType.Var: - { - const a1 = this.createKindVar(); - const a2 = this.createKindVar(); - const arrow = new KArrow(a1, a2); - this.unifyKind(arrow, operator, node); - this.unifyKind(a1, arg, node); - return a2; - } - case KindType.Arrow: - { - // Unify the argument to the operator's argument kind and return - // whatever the operator returns. - this.unifyKind(operator.left, arg, node); - return operator.right; - } - default: - { - this.diagnostics.add( - new KindMismatchDiagnostic( - operator, - new KArrow( - this.createKindVar(), - this.createKindVar() - ), - node - ) - ); - // Create a filler kind variable that still will be able to catch other errors. - return this.createKindVar(); - } - } - } - - private forwardDeclareKind(node: Syntax, env: KindEnv): void { - switch (node.kind) { - case SyntaxKind.ModuleDeclaration: - { - const info = this.getInfo(node); - const innerEnv = info.kindEnv = new KindEnv(env); - for (const element of node.elements) { - this.forwardDeclareKind(element, innerEnv); - } - break; - } - case SyntaxKind.SourceFile: - { - for (const element of node.elements) { - this.forwardDeclareKind(element, env); - } - break; - } - case SyntaxKind.TypeDeclaration: - { - const innerEnv = new KindEnv(env); - let kind: Kind = kindOfTypes; - for (let i = node.varExps.length-1; i >= 0; i--) { - const varExpr = node.varExps[i]; - const paramKind = this.createKindVar(); - innerEnv.set(varExpr.text, paramKind); - kind = new KArrow(paramKind, kind); - } - env.set(node.name.text, this.inferKindFromTypeExpression(node.typeExpression, innerEnv)); - break; - } - case SyntaxKind.StructDeclaration: - { - env.set(node.name.text, this.createKindVar()); - break; - } - case SyntaxKind.EnumDeclaration: - { - env.set(node.name.text, this.createKindVar()); - if (node.members !== null) { - for (const member of node.members) { - env.set(member.name.text, this.createKindVar()); - } - } - break; - } - } - } - - private inferKind(node: Syntax, env: KindEnv): void { - - switch (node.kind) { - - case SyntaxKind.ModuleDeclaration: - { - const info = this.getInfo(node); - const innerEnv = info.kindEnv!; - for (const element of node.elements) { - this.inferKind(element, innerEnv); - } - break; - } - - case SyntaxKind.ClassDeclaration: - case SyntaxKind.InstanceDeclaration: - { - if (node.constraintClause !== null) { - for (const constraint of node.constraintClause.constraints) { - for (const typeExpr of constraint.types) { - this.unifyKind(this.inferKindFromTypeExpression(typeExpr, env), kindOfTypes, typeExpr); - } - } - } - for (const typeExpr of node.types) { - this.unifyKind(this.inferKindFromTypeExpression(typeExpr, env), kindOfTypes, typeExpr); - } - for (const element of node.elements) { - this.inferKind(element, env); - } - break; - } - - case SyntaxKind.SourceFile: - { - for (const element of node.elements) { - this.inferKind(element, env); - } - break; - } - - case SyntaxKind.StructDeclaration: - { - const declKind = env.lookup(node.name.text)!; - const innerEnv = new KindEnv(env); - let kind: Kind = kindOfTypes; - for (let i = node.varExps.length-1; i >= 0; i--) { - const varExpr = node.varExps[i]; - const paramKind = this.createKindVar(); - innerEnv.set(varExpr.text, paramKind); - kind = new KArrow(paramKind, kind); - } - this.unifyKind(declKind, kind, node); - if (node.fields !== null) { - for (const field of node.fields) { - this.unifyKind(this.inferKindFromTypeExpression(field.typeExpr, innerEnv), kindOfTypes, field.typeExpr); - } - } - break; - } - - case SyntaxKind.EnumDeclaration: - { - const declKind = env.lookup(node.name.text)!; - const innerEnv = new KindEnv(env); - let kind: Kind = kindOfTypes; - // FIXME should I go from right to left or left to right? - for (let i = node.varExps.length-1; i >= 0; i--) { - const varExpr = node.varExps[i]; - const paramKind = this.createKindVar(); - innerEnv.set(varExpr.text, paramKind); - kind = new KArrow(paramKind, kind); - } - this.unifyKind(declKind, kind, node); - if (node.members !== null) { - for (const member of node.members) { - switch (member.kind) { - case SyntaxKind.EnumDeclarationTupleElement: - { - for (const element of member.elements) { - this.unifyKind(this.inferKindFromTypeExpression(element, innerEnv), kindOfTypes, element); - } - break; - } - case SyntaxKind.EnumDeclarationStructElement: - { - for (const field of member.fields) { - this.unifyKind(this.inferKindFromTypeExpression(field.typeExpr, innerEnv), kindOfTypes, field.typeExpr); - } - break; - } - default: - throw new Error(`Unexpected ${member}`); - } - } - } - break; - } - - case SyntaxKind.LetDeclaration: - { - if (node.typeAssert !== null) { - this.unifyKind(this.inferKindFromTypeExpression(node.typeAssert.typeExpression, env), kindOfTypes, node.typeAssert.typeExpression); - } - if (node.body !== null && node.body.kind === SyntaxKind.BlockBody) { - const innerEnv = new KindEnv(env); - for (const element of node.body.elements) { - this.inferKind(element, innerEnv); - } - } - break; - } - - } - - } - - private unifyKind(a: Kind, b: Kind, node: Syntax): boolean { - - const find = (kind: Kind): Kind => { - let curr = kind; - while (curr.type === KindType.Var && this.kindSolution.has(curr)) { - curr = this.kindSolution.get(curr)!; - } - // if (kind.type === KindType.Var && ) { - // this.kindSolution.set(kind.id, curr); - // } - return curr; - } - - const solve = (kind: Kind) => kind.substitute(this.kindSolution); - - a = find(a); - b = find(b); - - if (a.type === KindType.Var) { - this.kindSolution.set(a, b); - return true; - } - - if (b.type === KindType.Var) { - return this.unifyKind(b, a, node); - } - - if (a.type === KindType.Type && b.type === KindType.Type) { - return true; - } - - if (a.type === KindType.Arrow && b.type === KindType.Arrow) { - return this.unifyKind(a.left, b.left, node) - && this.unifyKind(a.right, b.right, node); - } - - this.diagnostics.add(new KindMismatchDiagnostic(solve(a), solve(b), node)); - return false; - } - - private infer(node: Syntax): void { - - switch (node.kind) { - - case SyntaxKind.SourceFile: - case SyntaxKind.ModuleDeclaration: - { - for (const element of node.elements) { - this.infer(element); - } - break; - } - - case SyntaxKind.ClassDeclaration: - { - for (const element of node.elements) { - this.infer(element); - } - break; - } - - case SyntaxKind.InstanceDeclaration: - { - for (const element of node.elements) { - this.infer(element); - } - break; - } - - case SyntaxKind.ExpressionStatement: - { - this.inferExpression(node.expression); - break; - } - - case SyntaxKind.IfStatement: - { - for (const cs of node.cases) { - if (cs.test !== null) { - this.addConstraint( - new CEqual( - this.inferExpression(cs.test), - this.getBoolType(), - cs.test - ) - ); - } - for (const element of cs.elements) { - this.infer(element); - } - } - break; - } - - case SyntaxKind.ReturnStatement: - { - let type; - if (node.expression === null) { - type = this.unitType; - } else { - type = this.inferExpression(node.expression); - } - this.addConstraint( - new CEqual( - this.getReturnType(), - type, - node - ) - ); - break; - } - - case SyntaxKind.LetDeclaration: - { - const info = this.getInfo(node); - - if (isFunctionDeclarationLike(node)) { - - node.activeCycle = true; - node.visited = true; - - this.pushInfo(info); - - const returnType = info.returnType!; - - if (node.body !== null) { - switch (node.body.kind) { - case SyntaxKind.ExprBody: - { - this.addConstraint( - new CEqual( - this.inferExpression(node.body.expression), - returnType, - node.body.expression - ) - ); - break; - } - case SyntaxKind.BlockBody: - { - for (const element of node.body.elements) { - this.infer(element); - } - break; - } - } - } - - this.popInfo(info); - - node.activeCycle = false; - - } else { - - // const constraints = new ConstraintSet; - // this.polyContextStack.push(new PolyContext(parentPoly.typeVars, constraints)); - - let type; - - if (node.typeAssert !== null) { - type = this.inferTypeExpression(node.typeAssert.typeExpression); - } - - if (node.body !== null) { - let bodyType; - switch (node.body.kind) { - case SyntaxKind.ExprBody: - { - bodyType = this.inferExpression(node.body.expression); - break; - } - case SyntaxKind.BlockBody: - { - // TODO - assert(false); - } - } - if (type === undefined) { - type = bodyType; - } else { - this.addConstraint( - new CEqual( - type, - bodyType, - node.body - ) - ); - } - } - - if (type === undefined) { - type = this.createTRegularVar(); - } - - // this.polyContextStack.pop(); - - this.inferBindings(node.pattern, type, undefined, undefined, true); - } - - break; - } - - case SyntaxKind.TypeDeclaration: - case SyntaxKind.EnumDeclaration: - case SyntaxKind.StructDeclaration: - break; - - default: - throw new Error(`Unexpected ${node.constructor.name}`); - - } - - } - - public inferExpression(node: Expression): Type { - - for (const annotation of node.annotations) { - if (annotation.kind === SyntaxKind.TypeAnnotation) { - this.inferTypeExpression(annotation.typeExpr, false, false); - } - } - - // We're going to use this eventually so might as well fetch it now - const info = this.getInfo(node); - - let type: Type; - - switch (node.kind) { - - case SyntaxKind.NestedExpression: - type = this.inferExpression(node.expression); - break; - - case SyntaxKind.MatchExpression: - { - let exprType; - - if (node.expression !== null) { - exprType = this.inferExpression(node.expression); - } else { - exprType = this.createTRegularVar(); - } - - type = this.createTRegularVar(); - - for (const arm of node.arms) { - - const newEnv = new TypeEnv(); - this.typeEnvStack.push(newEnv); - - const armPatternType = this.createTRegularVar(); - - this.inferBindings(arm.pattern, armPatternType); - - this.addConstraint( - new CEqual( - armPatternType, - exprType, - arm.pattern, - ) - ); - - this.addConstraint( - new CEqual( - type, - this.inferExpression(arm.expression), - arm.expression - ) - ); - - this.typeEnvStack.pop(); - } - - if (node.expression === null) { - type = new TArrow(exprType, type); - } - - break; - } - - case SyntaxKind.TupleExpression: - type = buildTupleTypeWithLoc(node.elements.map(el => [el, this.inferExpression(el)]), node); - break; - - case SyntaxKind.ReferenceExpression: - { - const scope = node.getScope(); - const target = scope.lookup(node.name.text); - if (target !== null && target.kind === SyntaxKind.LetDeclaration) { - if (target.activeCycle) { - return this.getInfo(target).inferredType!; - } - if (!target.visited) { - this.infer(target); - } - } - const scheme = this.lookup(node, Symkind.Var); - if (scheme === null) { - //this.diagnostics.add(new BindingNotFoudDiagnostic(node.name.text, node.name)); - type = this.createTRegularVar(); - break; - } - type = this.instantiate(scheme, node); - type.node = node; - break; - } - - case SyntaxKind.MemberExpression: - { - type = this.inferExpression(node.expression); - for (const [_dot, name] of node.path) { - let label; - switch (name.kind) { - case SyntaxKind.Identifier: - label = name.text; - break; - case SyntaxKind.Integer: - label = Number(name.value); - break; - default: - assertNever(name); - } - const newFieldType = this.createTRegularVar(name); - const newRestType = this.createTRegularVar(); - this.addConstraint( - new CEqual( - type, - new TField(label, new TPresent(newFieldType), newRestType, name), - node, - ) - ); - type = newFieldType; - } - break; - } - - case SyntaxKind.CallExpression: - { - const opType = this.inferExpression(node.func); - type = this.createTRegularVar(node); - const paramTypes = []; - for (const arg of node.args) { - paramTypes.push(this.inferExpression(arg)); - } - this.addConstraint( - new CEqual( - opType, - TArrow.build(paramTypes, type), - node - ) - ); - break; - } - - case SyntaxKind.ConstantExpression: - { - switch (node.token.kind) { - case SyntaxKind.StringLiteral: - type = this.getStringType(); - break; - case SyntaxKind.Integer: - type = this.getIntType(); - break; - } - type = type.shallowClone(); - type.node = node; - break; - } - - case SyntaxKind.StructExpression: - { - const fields = new Map(); - const restType = new TNil(node); - for (const member of node.members) { - switch (member.kind) { - case SyntaxKind.StructExpressionField: - { - fields.set(member.name.text, this.inferExpression(member.expression)); - break; - } - case SyntaxKind.PunnedStructExpressionField: - { - const scheme = this.lookup(member.name, Symkind.Var); - let fieldType; - if (scheme === null) { - // this.diagnostics.add(new BindingNotFoudDiagnostic(member.name.text, member.name)); - fieldType = this.createTRegularVar(); - } else { - fieldType = this.instantiate(scheme, member); - } - fields.set(member.name.text, fieldType); - break; - } - default: - throw new Error(`Unexpected ${member}`); - } - } - type = TField.build(fields, restType); - break; - } - - case SyntaxKind.InfixExpression: - { - const scheme = this.lookup(node.operator, Symkind.Var); - if (scheme === null) { - // this.diagnostics.add(new BindingNotFoudDiagnostic(node.operator.text, node.operator)); - return this.createTRegularVar(); - } - const opType = this.instantiate(scheme, node.operator); - const leftType = this.inferExpression(node.left); - const rightType = this.inferExpression(node.right); - type = this.createTRegularVar(); - this.addConstraint( - new CEqual( - new TArrow(leftType, new TArrow(rightType, type)), - opType, - node, - ), - ); - break; - } - - default: - throw new Error(`Unexpected ${node.constructor.name}`); - - } - - info.inferredType = type; - - return type; - - } - - public inferTypeExpression(node: TypeExpression, introduceTypeVars = false, checkKind = true): Type { - - let type; - - const info = this.getInfo(node); - - if (checkKind && info.inferredKind === undefined) { - - type = this.createTRegularVar(); - - } else { - - switch (node.kind) { - - case SyntaxKind.ReferenceTypeExpression: - { - const scheme = this.lookup(node, Symkind.Type); - if (scheme === null) { - // this.diagnostics.add(new BindingNotFoudDiagnostic(node.name.text, node.name)); - type = this.createTRegularVar(); - break; - } - type = this.instantiate(scheme, node.name); - // It is not guaranteed that `type` is copied during instantiation, - // so the following check ensures that we really are holding a copy - // that we can mutate. - if (type === scheme.type) { - type = type.shallowClone(); - } - // Mutate the type - type.node = node; - break; - } - - case SyntaxKind.TupleTypeExpression: - { - type = buildTupleTypeWithLoc(node.elements.map(el => [el, this.inferTypeExpression(el, introduceTypeVars)]), node); - break; - } - - case SyntaxKind.InstanceTypeExpression: - case SyntaxKind.NestedTypeExpression: - type = this.inferTypeExpression(node.typeExpr, introduceTypeVars); - break; - - case SyntaxKind.VarTypeExpression: - { - const scheme = this.lookup(node.name, Symkind.Type, !introduceTypeVars); - if (scheme === null) { - if (!introduceTypeVars) { - this.diagnostics.add(new BindingNotFoundDiagnostic([], node.name.text, node.name)); - } - type = this.createRigidVar(node.name.text, node); - // TODO if !introduceTypeVars: re-emit a 'var not found' whenever the same var is encountered - this.addBinding(node.name.text, Forall.mono(type), Symkind.Type); - } else { - assert(isEmpty(scheme.typeVars)); - assert(scheme.constraint.kind === ConstraintKind.Empty); - type = scheme.type; - } - break; - } - - case SyntaxKind.AppTypeExpression: - { - type = TApp.build( - this.inferTypeExpression(node.operator, introduceTypeVars), - node.args.map(arg => this.inferTypeExpression(arg, introduceTypeVars)), - ); - break; - } - - case SyntaxKind.TypeExpressionWithConstraints: - { - for (const constraint of node.constraints) { - implementationLimitation(constraint.types.length === 1); - this.addConstraint( - new CClass( - constraint.name.text, - this.inferTypeExpression(constraint.types[0]), - constraint.name - ) - ); - } - return this.inferTypeExpression(node.typeExpr, introduceTypeVars); - } - - case SyntaxKind.ForallTypeExpression: - { - const env = this.getTypeEnv(); - const poly = this.getPolyContext(); - // FIXME this is an ugly hack that doesn't even work. Either disallow Forall in this method or create a new TForall - for (const varExpr of node.varTypeExps) { - const tv = this.createTRegularVar(); - env.add(varExpr.name.text, Forall.mono(tv), Symkind.Type); - poly.typeVars.add(tv); - } - return this.inferTypeExpression(node.typeExpr, introduceTypeVars); - } - - case SyntaxKind.ArrowTypeExpression: - { - const paramTypes = []; - for (const paramTypeExpr of node.paramTypeExprs) { - paramTypes.push(this.inferTypeExpression(paramTypeExpr, introduceTypeVars)); - } - const returnType = this.inferTypeExpression(node.returnTypeExpr, introduceTypeVars); - type = TArrow.build(paramTypes, returnType, node); - break; - } - - default: - assertNever(node); - - } - - } - - info.inferredType = type; - - return type; - - } - - public inferBindings(pattern: Pattern, type: Type, typeVars = new TVSet, constraints: Constraint[] = [], generalize = false): void { - - switch (pattern.kind) { - - case SyntaxKind.NamedPattern: - { - let scheme; - const env = this.getTypeEnv(); - if (generalize) { - scheme = this.generalize(type, constraints, env); - } else { - scheme = new Forall(typeVars, new CMany(constraints), type); - } - this.addBinding(pattern.name.text, scheme, Symkind.Var); - break; - } - - case SyntaxKind.NestedPattern: - this.inferBindings(pattern.pattern, type, typeVars, constraints, generalize); - break; - - case SyntaxKind.NamedTuplePattern: - { - const scheme = this.lookup(pattern.name, Symkind.Var); - if (scheme === null) { - return; - } - const ctorType = this.instantiate(scheme, pattern); - let elementTypes = []; - for (const element of pattern.elements) { - const tv = this.createTRegularVar(); - this.inferBindings(element, tv, typeVars, constraints, generalize); - elementTypes.push(tv); - } - this.addConstraint(new CEqual(TArrow.build(elementTypes, type), ctorType, pattern)); - break; - } - - case SyntaxKind.LiteralPattern: - { - let literalType; - switch (pattern.token.kind) { - case SyntaxKind.Integer: - literalType = this.getIntType(); - break; - case SyntaxKind.StringLiteral: - literalType = this.getStringType(); - break; - } - literalType = literalType.shallowClone(); - literalType.node = pattern; - this.addConstraint( - new CEqual( - literalType, - type, - pattern, - ) - ); - break; - } - - case SyntaxKind.DisjunctivePattern: - { - this.inferBindings(pattern.left, type, typeVars, constraints, generalize), - this.inferBindings(pattern.right, type, typeVars, constraints, generalize); - break; - } - - case SyntaxKind.StructPattern: - { - const variadicMember = getVariadicMember(pattern); - const fields = new Map(); - let restType: Type; - if (variadicMember === null) { - restType = new TNil(pattern); - } else { - restType = this.createTRegularVar(); - if (variadicMember.pattern !== null) { - this.inferBindings(variadicMember.pattern, restType, typeVars, constraints, generalize); - } - } - for (const member of pattern.members) { - switch (member.kind) { - case SyntaxKind.StructPatternField: - { - const fieldType = this.createTRegularVar(); - this.inferBindings(member.pattern, fieldType, typeVars, constraints, generalize); - fields.set(member.name.text, fieldType); - break; - } - case SyntaxKind.PunnedStructPatternField: - { - const fieldType = this.createTRegularVar(); - this.addBinding(member.name.text, Forall.mono(fieldType), Symkind.Var); - fields.set(member.name.text, fieldType); - break; - } - case SyntaxKind.VariadicStructPatternElement: - break; - default: - assertNever(member); - } - } - this.addConstraint( - new CEqual( - type, - TField.build(fields, restType), - pattern, - ) - ); - break; - } - - default: - throw new Error(`Unexpected ${pattern.constructor.name}`); - - } - - } - - private getClassMeta(name: string): ClassMeta { - let meta = this.classDecls.get(name); - if (meta === undefined) { - meta = { - decl: null, - instances: new Set(), - }; - this.classDecls.set(name, meta); - } - return meta; - } - - private initialize(node: Syntax): void { - - switch (node.kind) { - - case SyntaxKind.SourceFile: - { - const info = this.getInfo(node); - const poly = info.poly = new PolyContext(); - const returnType = info.returnType = null; - const env = info.typeEnv = new TypeEnv(); - - this.polyContextStack.push(poly); - this.typeEnvStack.push(env); - this.returnTypeStack.push(returnType); - - for (const element of node.elements) { - this.initialize(element); - } - - this.polyContextStack.pop(); - this.typeEnvStack.pop(); - this.returnTypeStack.pop(); - - break; - } - - case SyntaxKind.ModuleDeclaration: - { - const info = this.getInfo(node); - info.typeEnv = new TypeEnv(); - for (const element of node.elements) { - this.initialize(element); - } - break; - } - - case SyntaxKind.ClassDeclaration: - { - const meta = this.getClassMeta(node.name.text); - if (meta.decl !== undefined) { - // TODO class declaration already exists diagnostic - } - meta.decl = node; - const info = this.getInfo(node); - const env = info.typeEnv = new TypeEnv(); - for (const tv of node.types) { - assert(tv.kind === SyntaxKind.VarTypeExpression); - env.add(tv.name.text, Forall.mono(this.createTRegularVar(tv)), Symkind.Type); - } - for (const element of node.elements) { - this.initialize(element); - } - break; - } - - case SyntaxKind.InstanceDeclaration: - { - const meta = this.getClassMeta(node.name.text); - meta.instances.add(node); - - if (meta.decl === null) { - this.diagnostics.add(new TypeclassNotFoundDiagnostic(node.name.text, node.name)); - } - - const info = this.getInfo(node); - info.typeEnv = new TypeEnv(); - for (const element of node.elements) { - this.initialize(element); - } - - break; - } - - case SyntaxKind.LetDeclaration: - { - const info = this.getInfo(node); - info.typeEnv = new TypeEnv(); - // The rest of the info properties are set in Checker.check() - if (node.body !== null && node.body.kind === SyntaxKind.BlockBody) { - for (const element of node.body.elements) { - this.initialize(element); - } - } - break; - } - - case SyntaxKind.IfStatement: - case SyntaxKind.ExpressionStatement: - case SyntaxKind.ReturnStatement: - break; - - case SyntaxKind.EnumDeclaration: - { - const info = this.getInfo(node); - const env = info.typeEnv = new TypeEnv();; - const poly = info.poly = new PolyContext(); - const parentEnv = this.getTypeEnv(); - - this.typeEnvStack.push(env); - this.polyContextStack.push(poly); - - const typeArgs = []; - for (const name of node.varExps) { - const typeArg = this.createTRegularVar(); - env.add(name.text, Forall.mono(typeArg), Symkind.Type); - typeArgs.push(typeArg); - } - - const type = this.createTCon(node.name.text, node); - const appliedType = TApp.build(type, typeArgs); - parentEnv.add(node.name.text, new Forall(poly.typeVars, new CMany(poly.constraints), type), Symkind.Type); - - let elementTypes: Type[] = []; - - if (node.members !== null) { - - for (const member of node.members) { - - let ctorType, elementType; - - switch (member.kind) { - - case SyntaxKind.EnumDeclarationTupleElement: - { - const args: Array<[Syntax, Type]> = member.elements.map(el => [el, this.inferTypeExpression(el, false)]); - elementType = buildTupleTypeWithLoc(args, member); - ctorType = TArrow.build(args.map(a => a[1]), appliedType, member); - break; - } - - case SyntaxKind.EnumDeclarationStructElement: - { - const restType = new TNil(member); - const fields = new Map(); - for (const field of member.fields) { - fields.set(field.name.text, this.inferTypeExpression(field.typeExpr, false)); - } - elementType = TField.build(fields, restType); - ctorType = new TArrow(elementType, appliedType, member); - break; - } - - default: - throw new Error(`Unexpected ${member}`); - - } - - parentEnv.add(member.name.text, new Forall(poly.typeVars, new CMany(poly.constraints), ctorType), Symkind.Var); - elementTypes.push(elementType); - } - - } - - this.polyContextStack.pop(); - this.typeEnvStack.pop(); - - break; - } - - case SyntaxKind.TypeDeclaration: - { - const info = this.getInfo(node); - const parentEnv = this.getTypeEnv(); - const env = info.typeEnv = new TypeEnv();; - const poly = info.poly = new PolyContext(); - - this.polyContextStack.push(poly); - this.typeEnvStack.push(env); - - const typeArgs = []; - - for (const varExpr of node.varExps) { - const typeVar = this.createTRegularVar(); - typeArgs.push(typeVar); - env.add(varExpr.text, Forall.mono(typeVar), Symkind.Type); - } - - const type = this.inferTypeExpression(node.typeExpression); - - this.polyContextStack.pop(); - this.typeEnvStack.pop(); - - const scheme = new Forall(poly.typeVars, new CMany(poly.constraints), TApp.build(type, typeArgs)); - - parentEnv.add(node.name.text, scheme, Symkind.Type); - - break; - } - - case SyntaxKind.StructDeclaration: - { - const info = this.getInfo(node); - const parentEnv = this.getTypeEnv(); - const env = info.typeEnv = new TypeEnv(); - const poly = info.poly = new PolyContext(); - - this.polyContextStack.push(poly); - this.typeEnvStack.push(env); - - const typeArgs = []; - for (const varExpr of node.varExps) { - const typeArg = this.createTRegularVar(); - env.add(varExpr.text, Forall.mono(typeArg), Symkind.Type); - typeArgs.push(typeArg); - } - - // const tagType = TApp.build( - // this.createTCon(node.name.text, node.name), - // typeArgs, - // node.name - // ); - const tagType = this.createTCon(node.name.text, node.name); - const fields = new Map(); - const restType = new TNil(node); - - fields.set(labelTag, tagType); - - if (node.fields !== null) { - for (const field of node.fields) { - fields.set(field.name.text, this.inferTypeExpression(field.typeExpr)); - } - } - - const recordType = TField.build(fields, restType); - - this.polyContextStack.pop(); - this.typeEnvStack.pop(); - - parentEnv.add(node.name.text, new Forall(poly.typeVars, new CMany(poly.constraints), recordType), Symkind.Type); - // parentEnv.add(node.name.text, new Forall(poly.typeVars, new CMany(poly.constraints), new TArrow(recordType, type)), Symkind.Var); - - break; - } - - default: - throw new Error(`Unexpected ${node.constructor.name}`); - - } - - } - - public check(sourceFile: SourceFile): void { - - // Kind inference - const kindEnv = new KindEnv(this.globalKindEnv); - this.forwardDeclareKind(sourceFile, kindEnv); - this.inferKind(sourceFile, kindEnv); - - // Type inference - - this.typeEnvStack.push(this.globalTypeEnv); - - this.initialize(sourceFile); - - const sourceFileInfo = this.getInfo(sourceFile); - this.pushInfo(sourceFileInfo); - - const sccs = [...this.analyser.getSortedDeclarations()]; - - for (const nodes of sccs) { - - const poly = new PolyContext(); - - this.polyContextStack.push(poly); - - for (const node of nodes) { - - if (!isFunctionDeclarationLike(node)) { - continue; - } - - const info = this.getInfo(node); - info.poly = poly; - const returnType = info.returnType = this.createTRegularVar(); - - this.typeEnvStack.push(info.typeEnv!); - this.returnTypeStack.push(info.returnType!); - - const paramTypes = node.params.map(param => { - const paramType = this.createTRegularVar(); - switch (param.kind) { - case SyntaxKind.PlainParam: - this.inferBindings(param.pattern, paramType) - break; - case SyntaxKind.InstanceParam: - this.addBinding(param.name.text, Forall.mono(paramType), Symkind.Var); - break; - default: - assertNever(param); - } - return paramType; - }); - - let type = TArrow.build(paramTypes, returnType, node); - - if (node.typeAssert !== null) { - this.addConstraint( - new CEqual( - this.inferTypeExpression(node.typeAssert.typeExpression, true), - type, - node - ) - ); - } - - info.inferredType = type; - - // if (node.parent!.kind === SyntaxKind.InstanceDeclaration) { - // const inst = node.parent!; - // const cls = inst.getScope().lookup(node.parent!.constraint.name.text, Symkind.Typeclass) as ClassDeclaration; - // const other = cls.lookup(node)! as LetDeclaration; - // assert(other.pattern.kind === SyntaxKind.BindPattern); - // console.log(describeType(type)); - // const otherScheme = this.lookup(other.pattern.name, Symkind.Var)!; - // addAll(otherScheme.typeVars, typeVars); - // constraints.push(...otherScheme.constraints); - // this.addConstraint(new CEqual(type, other.inferredType!, node)); - // } - - this.returnTypeStack.pop(); - this.typeEnvStack.pop(); - - if (node.parent!.kind !== SyntaxKind.InstanceDeclaration) { - this.inferBindings(node.pattern, type, poly.typeVars, poly.constraints); - } - - } - - this.polyContextStack.pop(); - - } - - this.infer(sourceFile); - - // Pop off whatever we pushed in during initialization - this.popInfo(sourceFileInfo); - this.typeEnvStack.pop(); - - this.solve(new CMany(sourceFileInfo.poly!.constraints)); - - } - - // private findInstanceContext(sig: Type[], clazz: ClassDeclaration): Iterable { - - // const contexts = []; - // const meta = this.getClassMeta(clazz.name.text); - - // // TODO should be a seperate verification pass somewhere - // // if (meta.decl === null) { - // // this.diagnostics.add(new TypeclassNotFoundDiagnostic(clazz.name.text)); - // // } - - // for (const instance of meta.instances) { - // let i = 0; - // for (const type of instance.types) { - // // TODO might need unification - // const left = sig[i++]; - // const right = this.getTypeOfNode(type); - // if (assignableTo(left, right)) { - // contexts.push(context); - // } - // } - // } - - // return contexts; - // } - - private path: (string | number)[] = []; - private constraint: Constraint | null = null; - private maxTypeErrorCount = 5; - - private unifyField(left: Type, right: Type, enableDiagnostics: boolean): boolean { - - const swap = () => { [right, left] = [left, right]; } - - if (left.kind === TypeKind.Absent && right.kind === TypeKind.Absent) { - return true; - } - - if (right.kind === TypeKind.Absent) { - swap(); - } - - if (left.kind === TypeKind.Absent) { - assert(right.kind === TypeKind.Present); - const fieldName = this.path[this.path.length-1]; - if (enableDiagnostics) { - this.diagnostics.add( - new FieldNotFoundDiagnostic(fieldName, left.node, right.type.node, this.constraint!.firstNode) - ); - } - return false; - } - - assert(left.kind === TypeKind.Present && right.kind === TypeKind.Present); - return this.unify(left.type, right.type, enableDiagnostics); - } - - private unify(left: Type, right: Type, enableDiagnostics: boolean): boolean { - - //console.log(`unify ${describeType(left)} @ ${left.node && left.node.constructor && left.node.constructor.name} ~ ${describeType(right)} @ ${right.node && right.node.constructor && right.node.constructor.name}`); - //console.log(`unify ${describeType(left)} ~ ${describeType(right)}`); - - left = this.simplifyType(left); - right = this.simplifyType(right); - - const swap = () => { [right, left] = [left, right]; } - - if (left.kind === TypeKind.RigidVar && right.kind === TypeKind.RigidVar) { - if (left.id === right.id) { - return true; - } - } - - if (left.kind !== TypeKind.RegularVar && right.kind === TypeKind.RegularVar) { - swap(); - } - - if (left.kind === TypeKind.RegularVar) { - - // Perform an occurs check, verifying whether left occurs - // somewhere inside the structure of right. If so, unification - // makes no sense. - if (right.hasTypeVar(left)) { - // TODO print a diagnostic - return false; - } - - // We are ready to join the types, so the first thing we do is - // propagating the type classes that 'left' requires to 'right'. - // If 'right' is another type variable, we're lucky. We just copy - // the missing type classes from 'left' to 'right'. Otherwise, - //const propagateClasses = (classes: Iterable, type: Type) => { - // if (isTVar(type)) { - // for (const constraint of classes) { - // type.context.add(constraint); - // } - // } else if (isSignature(type)) { - // const sig = getSignature(type); - // for (const constraint of classes) { - // propagateClassTCon(constraint, sig); - // } - // } else { - // assert(false); - // //this.diagnostics.add(new ); - // } - //} - - //const propagateClassTCon = (clazz: ClassDeclaration, sig: Type[]) => { - // const s = this.findInstanceContext(sig, clazz); - // let i = 1; - // for (const classes of s) { - // propagateClasses(classes, sig[i++]); - // } - //} - - //if (left.context.size > 0) { - // propagateClasses(left.context, right); - //} - - // We are all clear; set the actual type of left to right. - left.set(right); - - // This is a very specific adjustment that is critical to the - // well-functioning of the infer/unify algorithm. When addConstraint() is - // called, it may decide to solve the constraint immediately during - // inference. If this happens, a type variable might get assigned a concrete - // type such as Int. We therefore never want the variable to be polymorphic - // and be instantiated with a fresh variable, as that would allow Bool to - // collide with Int. - // - // Should it get assigned another unification variable, that's OK too - // because then that variable is what matters and it will become the new - // (possibly polymorphic) variable. - if (this.polyContextStack.length > 0) { - this.polyContextStack[this.polyContextStack.length-1].typeVars.delete(left); - } - - // These types will be join, and we'd like to track that - // into a special chain. - TypeBase.join(left, right); - - // if (left.node !== null) { - // right.node = left.node; - // } - - return true; - } - - if (left.kind === TypeKind.Arrow && right.kind === TypeKind.Arrow) { - let success = true; - if (!this.unify(left.paramType, right.paramType, enableDiagnostics)) { - success = false; - } - if (!this.unify(left.returnType, right.returnType, enableDiagnostics)) { - success = false; - } - if (success) { - TypeBase.join(left, right); - } - return success; - } - - if (left.kind === TypeKind.Con && right.kind === TypeKind.Con) { - if (left.id === right.id) { - TypeBase.join(left, right); - return true; - } - } - - if (left.kind === TypeKind.Nil && right.kind === TypeKind.Nil) { - return true; - } - - if (left.kind === TypeKind.Field && right.kind === TypeKind.Field) { - if (left.name === right.name) { - let success = true; - this.path.push(left.name); - if (!this.unifyField(left.type, right.type, enableDiagnostics)) { - success = false; - } - this.path.pop(); - if (!this.unify(left.restType, right.restType, enableDiagnostics)) { - success = false; - } - return success; - } - let success = true; - const newRestType = new TRegularVar(this.nextTypeVarId++); - if (!this.unify(left.restType, new TField(right.name, right.type, newRestType), enableDiagnostics)) { - success = false; - } - if (!this.unify(right.restType, new TField(left.name, left.type, newRestType), enableDiagnostics)) { - success = false; - } - return success; - } - - if (left.kind === TypeKind.Nil && right.kind === TypeKind.Field) { - swap(); - } - - if (left.kind === TypeKind.Field && right.kind === TypeKind.Nil) { - let success = true; - this.path.push(left.name); - if (!this.unifyField(left.type, new TAbsent(right.node), enableDiagnostics)) { - success = false; - } - this.path.pop(); - if (!this.unify(left.restType, right, enableDiagnostics)) { - success = false; - } - return success - } - - if (left.kind === TypeKind.App && right.kind === TypeKind.App) { - return this.unify(left.left, right.left, enableDiagnostics) - && this.unify(left.right, right.right, enableDiagnostics); - } - - if (enableDiagnostics) { - this.diagnostics.add( - new TypeMismatchDiagnostic( - this.simplifyType(left), - this.simplifyType(right), - [...this.constraint!.getNodes()], - this.path, - ) - ); - } - return false; - } - - // private inHnf(p: Pred): boolean { - // let curr = p.type; - // for (;;) { - // if (isTVar(curr)) { - // return true; - // } - // if (curr.kind === TypeKind.Con) { - // return false; - // } - // if (curr.kind === TypeKind.App) { - // curr = curr.left; - // continue; - // } - // unreachable(); - // } - // } - - // private toHnf(p: Pred): Pred[] { - // if (this.inHnf(p)) { - // return [ p ]; - // } - // const result = this.byInst(p); - // if (result === undefined) { - // // TODO add diagnostic - // throw new Error(`context reduction`); - // } - // result.map(this.toHnf.bind(this)).flatten(); - // } - - public solve(constraint: Constraint): void { - - let queue = [ constraint ]; - - let errorCount = 0; - - while (queue.length > 0) { - - const constraint = queue.shift()!; - - switch (constraint.kind) { - - case ConstraintKind.Empty: - break; - - case ConstraintKind.Many: - { - for (const element of constraint.elements) { - queue.push(element); - } - break; - } - - case ConstraintKind.Equal: - { - this.constraint = constraint; - if (!this.unify(constraint.left, constraint.right, true)) { - errorCount++; - if (errorCount === this.maxTypeErrorCount) { - return; - } - } - break; - } - - case ConstraintKind.Class: - // TODO - break; - - default: - assertNever(constraint);; - - } - - } - - } - - private lookupClass(name: string): ClassMeta | null { - return this.classDecls.get(name) ?? null; - } - - public getTypeOfNode(node: Syntax): Type { - const info = this.getInfo(node); - assert(info.inferredType !== undefined); - return this.simplifyType(info.inferredType); - } - - // private *findInstanceContext(type: TCon, clazz: ClassDeclaration): Iterable { - // for (const instance of clazz.getInstances()) { - // assert(instance.types.length === 1); - // const instTy0 = instance.types[0]; - // if ((instTy0.kind === SyntaxKind.AppTypeExpression - // && instTy0.operator.kind === SyntaxKind.ReferenceTypeExpression - // && instTy0.operator.name.text === type.displayName) - // || (instTy0.kind === SyntaxKind.ReferenceTypeExpression - // && instTy0.name.text === type.displayName)) { - // if (instance.constraintClause === null) { - // return; - // } - // for (const argType of type.argTypes) { - // const classes = []; - // for (const constraint of instance.constraintClause.constraints) { - // assert(constraint.types.length === 1); - // const classDecl = this.lookupClass(constraint.name.text); - // if (classDecl === null) { - // this.diagnostics.add(new TypeclassNotFoundDiagnostic(constraint.name)); - // } else { - // classes.push(classDecl); - // } - // } - // yield classes; - // } - // } - // } - // } - -} - -function getVariadicMember(node: StructPattern) {1713 - for (const member of node.members) { - if (member.kind === SyntaxKind.VariadicStructPatternElement) { - return member; - } - } - return null; -} diff --git a/bootstrap/js/compiler/src/constraints.ts b/bootstrap/js/compiler/src/constraints.ts deleted file mode 100644 index 865aae0e9..000000000 --- a/bootstrap/js/compiler/src/constraints.ts +++ /dev/null @@ -1,171 +0,0 @@ - -import { InspectOptions } from "util"; -import { Syntax } from "./cst" -import { TVSub, TVar, Type } from "./types"; -import { first, InspectFn, last, toStringTag } from "./util"; - -export const enum ConstraintKind { - Equal, - // Class, - Many, - Empty, -} - -abstract class ConstraintBase { - - public constructor( - public node: Syntax | null = null - ) { - - } - - public prevInstantiation: Constraint | null = null; - - public *getNodes(): Iterable { - let curr: Constraint | null = this as any; - while (curr !== null) { - if (curr.node !== null) { - yield curr.node; - } - curr = curr.prevInstantiation; - } - } - - public get lastNode(): Syntax | null { - return last(this.getNodes()[Symbol.iterator]()) ?? null; - } - - public get firstNode(): Syntax | null { - return first(this.getNodes()[Symbol.iterator]()) ?? null; - } - - public abstract freeTypeVars(): Iterable; - - public abstract substitute(sub: TVSub): Constraint; - -} - -export class CEqual extends ConstraintBase { - - public readonly kind = ConstraintKind.Equal; - - public constructor( - public left: Type, - public right: Type, - public node: Syntax | null, - ) { - super(); - } - - public substitute(sub: TVSub): CEqual { - return new CEqual( - this.left.substitute(sub), - this.right.substitute(sub), - this.node, - ); - } - - public *freeTypeVars(): Iterable { - yield* this.left.getTypeVars(); - yield* this.right.getTypeVars(); - } - - public [toStringTag](_currentDepth: number, options: InspectOptions, inspect: InspectFn): string { - return inspect(this.left, options) + ' ~ ' + inspect(this.right, options); - } - -} - -export class CMany extends ConstraintBase { - - public readonly kind = ConstraintKind.Many; - - public constructor( - public elements: Constraint[] - ) { - super(); - } - - public substitute(sub: TVSub): CMany { - const newElements = []; - for (const element of this.elements) { - newElements.push(element.substitute(sub)); - } - return new CMany(newElements); - } - - public *freeTypeVars(): Iterable { - for (const element of this.elements) { - yield* element.freeTypeVars(); - } - } - - public [toStringTag](_depth: number, opts: InspectOptions, inspect: InspectFn): string { - if (this.elements.length === 0) { - return '[]'; - } - let out = '[\n'; - out += this.elements.map(constraint => ' ' + inspect(constraint, opts)).join('\n'); - out += '\n]'; - return out; - } - -} - -// export class CClass extends ConstraintBase { - -// public readonly kind = ConstraintKind.Class; - -// public constructor( -// public className: string, -// public type: Type, -// public node: Syntax, -// ) { -// super(); -// } - -// public substitute(sub: TVSub): Constraint { -// return new CClass( -// this.className, -// this.type.substitute(sub), -// this.node, -// ); -// } - -// public *freeTypeVars(): Iterable { -// yield* this.type.getTypeVars(); -// } - -// public [toStringTag](_depth: number, opts: InspectOptions, inspect: InspectFn): string { -// return this.className + ' => ' + inspect(this.type, opts); -// } - -// } - -export class CEmpty extends ConstraintBase { - - public readonly kind = ConstraintKind.Empty; - - public substitute(_sub: TVSub): CEmpty { - return this; - } - - public *freeTypeVars(): Iterable { - - } - - public [toStringTag]() { - return 'ε'; - } - -} - -export type Constraint - = CEqual - // | CClass - | CMany - | CEmpty - -export class ConstraintSet extends Array { - -} diff --git a/bootstrap/js/compiler/src/cst.ts b/bootstrap/js/compiler/src/cst.ts deleted file mode 100644 index ba5851683..000000000 --- a/bootstrap/js/compiler/src/cst.ts +++ /dev/null @@ -1,3459 +0,0 @@ - -import type stream from "stream"; -import path from "path" - -import { assert, implementationLimitation, IndentWriter, JSONObject, JSONValue, nonenumerable, unreachable } from "./util"; -import { isNodeWithScope, Scope } from "./scope" -import type { Kind, Scheme } from "./checker" -import type { Type } from "./types"; -import { Emitter } from "./emitter"; -import { warn } from "console"; - -export type TextSpan = [number, number]; - -export type Value - = bigint - | string - -export class TextPosition { - - public constructor( - public offset: number, - public line: number, - public column: number, - ) { - - } - - public clone(): TextPosition { - return new TextPosition( - this.offset, - this.line, - this.column, - ); - } - - public advance(text: string): void { - for (const ch of text) { - if (ch === '\n') { - this.line++; - this.column = 1; - } else { - this.column++; - } - } - this.offset += text.length; - } - -} - -export class TextRange { - - constructor( - public start: TextPosition, - public end: TextPosition, - ) { - - } - - public clone(): TextRange { - return new TextRange( - this.start.clone(), - this.end.clone(), - ); - } - -} - -export class TextFile { - - public comments = new Map(); - - public constructor( - public origPath: string, - public text: string, - ) { - - } - - public getFullPath(): string { - return path.resolve(this.origPath); - } - -} - -export enum SyntaxKind { - - // Tokens - Identifier, - IdentifierAlt, - CustomOperator, - Assignment, - LParen, - RParen, - LBrace, - RBrace, - LBracket, - RBracket, - RArrow, - RArrowAlt, - VBar, - Dot, - DotDot, - At, - Comma, - Colon, - Equals, - Backslash, - Integer, - StringLiteral, - LetKeyword, - PubKeyword, - MutKeyword, - ModKeyword, - ImportKeyword, - ClassKeyword, - InstanceKeyword, - StructKeyword, - EnumKeyword, - TypeKeyword, - ReturnKeyword, - MatchKeyword, - ForeignKeyword, - IfKeyword, - ElifKeyword, - ElseKeyword, - ForallKeyword, - LineFoldEnd, - BlockEnd, - BlockStart, - EndOfFile, - - // Annotations - TypeAnnotation, - ExpressionAnnotation, - - // Type expressions - ReferenceTypeExpression, - ArrowTypeExpression, - VarTypeExpression, - AppTypeExpression, - NestedTypeExpression, - TupleTypeExpression, - ForallTypeExpression, - InstanceTypeExpression, - TypeExpressionWithConstraints, - - // Patterns - NamedPattern, - TuplePattern, - StructPattern, - NestedPattern, - NamedTuplePattern, - LiteralPattern, - DisjunctivePattern, - - // Struct expression elements - StructExpressionField, - PunnedStructExpressionField, - - // Struct pattern elements - StructPatternField, - PunnedStructPatternField, - VariadicStructPatternElement, - - // Expressions - MatchExpression, - MemberExpression, - CallExpression, - ReferenceExpression, - StructExpression, - TupleExpression, - NestedExpression, - ConstantExpression, - PrefixExpression, - PostfixExpression, - InfixExpression, - FunctionExpression, - - // Statements - ReturnStatement, - ExpressionStatement, - IfStatement, - AssignStatement, - - // If statement elements - IfStatementCase, - - // Declarations - LetDeclaration, - StructDeclaration, - EnumDeclaration, - ImportDeclaration, - TypeDeclaration, - ClassDeclaration, - InstanceDeclaration, - ModuleDeclaration, - - // Let declaration body members - ExprBody, - BlockBody, - - // Structure declaration members - StructDeclarationField, - - // Enum declaration elements - EnumDeclarationStructElement, - EnumDeclarationTupleElement, - - // Parameters - PlainParam, - InstanceParam, - - // Other nodes - WrappedOperator, - MatchArm, - Initializer, - TypeAssert, - SourceFile, - ClassConstraint, - ClassConstraintClause, -} - -export type Syntax - = SourceFile - | ModuleDeclaration - | ClassDeclaration - | InstanceDeclaration - | ClassConstraint - | ClassConstraintClause - | Token - | Param - | Body - | MatchArm - | WrappedOperator - | Initializer - | IfStatementCase - | StructDeclarationField - | EnumDeclarationElement - | TypeAssert - | Annotation - | Declaration - | Statement - | Expression - | TypeExpression - | Pattern - | StructExpressionElement - | StructPatternElement - -function isnonenumerabledProperty(key: string): boolean { - return key === 'kind' || key === 'parent'; -} - -abstract class SyntaxBase { - - @nonenumerable - public abstract readonly kind: SyntaxKind; - - @nonenumerable - public parent: Syntax | null = null; - - public abstract getFirstToken(): Token; - - public abstract getLastToken(): Token; - - public abstract clone(): Syntax; - - public getRange(): TextRange { - return new TextRange( - this.getFirstToken().getStartPosition(), - this.getLastToken().getEndPosition(), - ); - } - - public getSourceFile(): SourceFile { - let curr = this as any; - do { - if (curr.kind === SyntaxKind.SourceFile) { - return curr; - } - curr = curr.parent; - } while (curr != null); - throw new Error(`Could not find a SourceFile in any of the parent nodes of ${this}`); - } - - public getScope(): Scope { - let curr: Syntax | null = this as any; - do { - if (isNodeWithScope(curr!)) { - if (curr.scope === undefined) { - curr.scope = new Scope(curr); - } - return curr.scope; - } - curr = curr!.parent; - } while (curr !== null); - throw new Error(`Could not find a scope for ${this}. Maybe the parent links are not set?`); - } - - public getParentScope(): Scope | null { - return this.parent === null ? null : this.parent.getScope(); - } - - public getEnclosingModule(): ModuleDeclaration | SourceFile { - let curr = this.parent!; - while (curr !== null) { - if (curr.kind === SyntaxKind.SourceFile || curr.kind === SyntaxKind.ModuleDeclaration) { - return curr; - } - curr = curr.parent!; - } - throw new Error(`Unable to find an enclosing module for ${this.constructor.name}. Perhaps the parent-links are not set?`); - } - - public setParents(): void { - - const visit = (value: any) => { - if (value === null) { - return; - } - if (Array.isArray(value)) { - value.forEach(visit); - return; - } - if (value instanceof SyntaxBase) { - value.parent = this as any; - value.setParents(); - return; - } - } - - for (const key of Object.getOwnPropertyNames(this)) { - if (isnonenumerabledProperty(key)) { - continue; - } - visit((this as any)[key]); - } - - } - - public *getTokens(): Iterable { - for (const [_, value] of this.getFields()) { - yield* filter(value); - } - function* filter(value: any): Iterable { - if (isToken(value)) { - yield value; - } else if (Array.isArray(value)) { - for (const element of value) { - yield* filter(element); - } - } else if (isSyntax(value)) { - yield* value.getTokens(); - } - } - } - - public *getFields(): Iterable<[string, any]> { - for (const key of Object.getOwnPropertyNames(this)) { - if (!isnonenumerabledProperty(key)) { - yield [key, (this as any)[key]]; - } - } - } - - public *getChildNodes(): Iterable { - function* visit(value: any): Iterable { - if (value === null) { - return; - } - if (Array.isArray(value)) { - for (const element of value) { - yield* visit(element); - } - } else if (isSyntax(value)) { - yield value; - } - } - for (const [_key, value] of this.getFields()) { - yield* visit(value); - } - } - - public emit(file: stream.Writable): void { - const emitter = new Emitter(new IndentWriter(file)); - emitter.emit(this as any); - } - - public toJSON(): JSONObject { - - const obj: JSONObject = {}; - obj['type'] = this.constructor.name; - for (const [key, value] of this.getFields()) { - if (isnonenumerabledProperty(key)) { - continue; - } - obj[key] = encode(value); - } - return obj; - - function encode(value: any): JSONValue { - if (value === null) { - return null; - } else if (Array.isArray(value)) { - return value.map(encode); - } else if (isSyntax(value)) { - return value.toJSON(); - } else { - return value; - } - } - - } - - public resolveModule(name: string): ModuleDeclaration | null { - const node = this as unknown as Syntax; - assert(node.kind === SyntaxKind.ModuleDeclaration || node.kind === SyntaxKind.SourceFile); - for (const element of node.elements) { - if (element.kind === SyntaxKind.ModuleDeclaration && element.name.text === name) { - return element; - } - } - return null; - } - - public getModulePath(): string[] { - let curr = this.parent; - const modulePath = []; - while (curr !== null) { - if (curr.kind === SyntaxKind.ModuleDeclaration) { - modulePath.unshift(curr.name.text); - } - curr = curr.parent; - } - return modulePath; - } - -} - -export function forEachChild(node: Syntax, callback: (node: Syntax) => void): void { - - for (const key of Object.getOwnPropertyNames(node)) { - if (isnonenumerabledProperty(key)) { - continue; - } - visitField((node as any)[key]); - } - - function visitField(field: any): void { - if (field === null) { - return; - } - if (Array.isArray(field)) { - for (const element of field) { - visitField(element); - } - return; - } - if (field instanceof SyntaxBase) { - callback(field as Syntax); - } - } - -} - -abstract class TokenBase extends SyntaxBase { - - @nonenumerable - private endPos: TextPosition | null = null; - - public constructor( - public startPos: TextPosition | null = null, - ) { - super(); - } - - public getFirstToken(): Token { - return this as Token; - } - - public getLastToken(): Token { - return this as Token; - } - - public getRange(): TextRange { - return new TextRange( - this.getStartPosition(), - this.getEndPosition(), - ); - } - - public getStartPosition(): TextPosition { - assert(this.startPos !== null); - return this.startPos; - } - - public getStartLine(): number { - return this.getStartPosition().line; - } - - public getStartColumn(): number { - return this.getStartPosition().column; - } - - public getEndPosition(): TextPosition { - if (this.endPos === null) { - const endPos = this.getStartPosition().clone(); - endPos.advance(this.text); - return this.endPos = endPos; - } - return this.endPos; - } - - public getEndLine(): number { - return this.getEndPosition().line; - } - - public getEndColumn(): number { - return this.getEndPosition().column; - } - - public abstract readonly text: string; - -} - -abstract class VirtualTokenBase extends TokenBase { - public get text(): string { - return ''; - } -} - -export class EndOfFile extends VirtualTokenBase { - - public readonly kind = SyntaxKind.EndOfFile; - - public clone(): EndOfFile { - return new EndOfFile(this.startPos); - } - -} - -export class BlockEnd extends VirtualTokenBase { - - public readonly kind = SyntaxKind.BlockEnd; - - public clone(): BlockEnd { - return new BlockEnd(this.startPos); - } - -} - -export class BlockStart extends VirtualTokenBase { - - public readonly kind = SyntaxKind.BlockStart; - - public clone(): BlockStart { - return new BlockStart(this.startPos); - } - -} - -export class LineFoldEnd extends VirtualTokenBase { - - public readonly kind = SyntaxKind.LineFoldEnd; - - public clone(): LineFoldEnd { - return new LineFoldEnd(this.startPos); - } - -} - -export class Integer extends TokenBase { - - public readonly kind = SyntaxKind.Integer; - - public constructor( - startPos: TextPosition | null = null, - public value: bigint, - public radix: number, - ) { - super(startPos); - } - - public getValue(): Value { - return this.value; - } - - public clone(): Integer { - return new Integer( - this.startPos, - this.value, - this.radix, - ); - } - - public get text(): string { - switch (this.radix) { - case 16: - return '0x' + this.value.toString(16); - case 10: - return this.value.toString(10) - case 8: - return '0o' + this.value.toString(8) - case 2: - return '0b' + this.value.toString(2); - default: - throw new Error(`Radix ${this.radix} of Integer not recognised.`) - } - } - -} - -export class StringLiteral extends TokenBase { - - public readonly kind = SyntaxKind.StringLiteral; - - public constructor( - startPos: TextPosition | null = null, - public contents: string, - ) { - super(startPos); - } - - public getValue(): Value { - return this.contents; - } - - public clone(): StringLiteral { - return new StringLiteral( - this.startPos, - this.contents, - ); - } - - public get text(): string { - let out = '"'; - for (const ch of this.contents) { - const code = ch.charCodeAt(0); - if (code >= 32 && code <= 127) { - out += ch; - } else if (code <= 127) { - out += '\\x' + code.toString(16).padStart(2, '0'); - } else { - out += '\\u' + code.toString(16).padStart(4, '0'); - } - } - out += '"'; - return out; - } - -} - -export class IdentifierAlt extends TokenBase { - - public readonly kind = SyntaxKind.IdentifierAlt; - - public constructor( - startPos: TextPosition | null = null, - public text: string, - ) { - super(startPos); - } - - public clone(): IdentifierAlt { - return new IdentifierAlt( - this.startPos, - this.text, - ); - } - -} - -export class Identifier extends TokenBase { - - public readonly kind = SyntaxKind.Identifier; - - public constructor( - startPos: TextPosition | null = null, - public text: string, - ) { - super(startPos); - } - - public clone(): Identifier { - return new Identifier( - this.startPos, - this.text, - ); - } - -} - -export class CustomOperator extends TokenBase { - - public readonly kind = SyntaxKind.CustomOperator; - - public constructor( - startPos: TextPosition | null = null, - public text: string, - ) { - super(startPos); - } - - public clone(): CustomOperator { - return new CustomOperator( - this.startPos, - this.text, - ); - } - -} - -export type ExprOperator - = CustomOperator - | VBar - -export function isExprOperator(node: Syntax): node is ExprOperator { - return node.kind === SyntaxKind.CustomOperator - || node.kind === SyntaxKind.VBar -} - -export class Assignment extends TokenBase { - - public readonly kind = SyntaxKind.Assignment; - - public constructor( - startPos: TextPosition | null = null, - public text: string, - ) { - super(startPos); - } - - public clone(): Assignment { - return new Assignment( - this.startPos, - this.text, - ); - } - -} - -export class LParen extends TokenBase { - - public readonly kind = SyntaxKind.LParen; - - public get text(): string { - return '('; - } - - public clone(): LParen { - return new LParen(this.startPos); - } - -} - -export class RParen extends TokenBase { - - public readonly kind = SyntaxKind.RParen; - - public get text(): string { - return ')'; - } - - public clone(): RParen { - return new RParen(this.startPos); - } - -} - -export class LBrace extends TokenBase { - - public readonly kind = SyntaxKind.LBrace; - - public get text(): string { - return '{'; - } - - public clone(): LBrace { - return new LBrace(this.startPos); - } - -} - -export class RBrace extends TokenBase { - - public readonly kind = SyntaxKind.RBrace; - - public get text(): string { - return '}'; - } - - public clone(): RBrace { - return new RBrace(this.startPos); - } - -} - -export class LBracket extends TokenBase { - - public readonly kind = SyntaxKind.LBracket; - - public get text(): string { - return '['; - } - - public clone(): LBracket { - return new LBracket(this.startPos); - } - -} - -export class RBracket extends TokenBase { - - public readonly kind = SyntaxKind.RBracket; - - public get text(): string { - return ']'; - } - - public clone(): RBracket { - return new RBracket(this.startPos); - } - -} - -export class Dot extends TokenBase { - - public readonly kind = SyntaxKind.Dot; - - public get text(): string { - return '.'; - } - - public clone(): Dot { - return new Dot(this.startPos); - } - -} - -export class At extends TokenBase { - - public readonly kind = SyntaxKind.At; - - public get text(): string { - return '@'; - } - - public clone(): At { - return new At(this.startPos); - } - -} - -export class Comma extends TokenBase { - - public readonly kind = SyntaxKind.Comma; - - public get text(): string { - return ','; - } - - public clone(): Comma { - return new Comma(this.startPos); - } - -} - -export class DotDot extends TokenBase { - - public readonly kind = SyntaxKind.DotDot; - - public get text(): string { - return '..'; - } - - public clone(): DotDot { - return new DotDot(this.startPos); - } - -} - -export class Colon extends TokenBase { - - public readonly kind = SyntaxKind.Colon; - - public get text(): string { - return ':'; - } - - public clone(): Colon { - return new Colon(this.startPos); - } - -} - -export class Equals extends TokenBase { - - public readonly kind = SyntaxKind.Equals; - - public get text(): string { - return '='; - } - - public clone(): Equals { - return new Equals(this.startPos); - } - -} - -export class Backslash extends TokenBase { - - public readonly kind = SyntaxKind.Equals; - - public get text(): string { - return '\\'; - } - - public clone(): Backslash { - return new Backslash(this.startPos); - } - -} - -export class IfKeyword extends TokenBase { - - public readonly kind = SyntaxKind.IfKeyword; - - public get text(): string { - return 'if'; - } - - public clone(): IfKeyword { - return new IfKeyword(this.startPos); - } - -} - -export class ElseKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ElseKeyword; - - public get text(): string { - return 'else'; - } - - public clone(): ElseKeyword { - return new ElseKeyword(this.startPos); - } - -} - -export class ElifKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ElifKeyword; - - public get text(): string { - return 'elif'; - } - - public clone(): ElifKeyword { - return new ElifKeyword(this.startPos); - } - -} - -export class StructKeyword extends TokenBase { - - public readonly kind = SyntaxKind.StructKeyword; - - public get text(): string { - return 'struct'; - } - - public clone(): StructKeyword { - return new StructKeyword(this.startPos); - } - -} - -export class EnumKeyword extends TokenBase { - - public readonly kind = SyntaxKind.EnumKeyword; - - public get text(): string { - return 'enum'; - } - - public clone(): EnumKeyword { - return new EnumKeyword(this.startPos); - } - -} - -export class ReturnKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ReturnKeyword; - - public get text(): string { - return 'return'; - } - - public clone(): ReturnKeyword { - return new ReturnKeyword(this.startPos); - } - -} - -export class MatchKeyword extends TokenBase { - - public readonly kind = SyntaxKind.MatchKeyword; - - public get text(): string { - return 'match'; - } - - public clone(): MatchKeyword { - return new MatchKeyword(this.startPos); - } - -} - -export class ForeignKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ForeignKeyword; - - public get text(): string { - return 'foreign'; - } - - public clone(): ForeignKeyword { - return new ForeignKeyword(this.startPos); - } - -} - -export class ModKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ModKeyword; - - public get text(): string { - return 'mod'; - } - - public clone(): ModKeyword { - return new ModKeyword(this.startPos); - } - -} - -export class MutKeyword extends TokenBase { - - public readonly kind = SyntaxKind.MutKeyword; - - public get text(): string { - return 'mut'; - } - - public clone(): MutKeyword { - return new MutKeyword(this.startPos); - } - -} - -export class ImportKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ImportKeyword; - - public get text(): string { - return 'import' - } - - public clone(): ImportKeyword { - return new ImportKeyword(this.startPos); - } - -} - -export class ClassKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ClassKeyword; - - public get text(): string { - return 'trait'; - } - - public clone(): ClassKeyword { - return new ClassKeyword(this.startPos); - } - -} - -export class InstanceKeyword extends TokenBase { - - public readonly kind = SyntaxKind.InstanceKeyword; - - public get text(): string { - return 'impl'; - } - - public clone(): InstanceKeyword { - return new InstanceKeyword(this.startPos); - } - -} - - -export class TypeKeyword extends TokenBase { - - public readonly kind = SyntaxKind.TypeKeyword; - - public get text(): string { - return 'type'; - } - - public clone(): TypeKeyword { - return new TypeKeyword(this.startPos); - } - -} - -export class PubKeyword extends TokenBase { - - public readonly kind = SyntaxKind.PubKeyword; - - public get text(): string { - return 'pub'; - } - - public clone(): PubKeyword { - return new PubKeyword(); - } - -} - -export class LetKeyword extends TokenBase { - - public readonly kind = SyntaxKind.LetKeyword; - - public get text(): string { - return 'let'; - } - - public clone(): LetKeyword { - return new LetKeyword(); - } - -} - -export class RArrow extends TokenBase { - - public readonly kind = SyntaxKind.RArrow; - - public get text(): string { - return '->'; - } - - public clone(): RArrow { - return new RArrow(this.startPos); - } - -} - -export class RArrowAlt extends TokenBase { - - public readonly kind = SyntaxKind.RArrowAlt; - - public get text(): string { - return '=>'; - } - - public clone(): RArrowAlt { - return new RArrowAlt(this.startPos); - } - -} - -export class VBar extends TokenBase { - - public readonly kind = SyntaxKind.VBar; - - public get text(): string { - return '|'; - } - - public clone(): VBar { - return new VBar(this.startPos); - } - -} - -export class ForallKeyword extends TokenBase { - - public readonly kind = SyntaxKind.ForallKeyword; - - public get text(): string { - return 'forall'; - } - - public clone(): ForallKeyword { - return new ForallKeyword(this.startPos); - } - -} - -export type Token - = RArrow - | RArrowAlt - | VBar - | LParen - | RParen - | LBrace - | RBrace - | LBracket - | RBracket - | Identifier - | IdentifierAlt - | CustomOperator - | Integer - | StringLiteral - | At - | Comma - | Dot - | DotDot - | Colon - | Equals - | Backslash - | LetKeyword - | PubKeyword - | MutKeyword - | ModKeyword - | ImportKeyword - | ClassKeyword - | InstanceKeyword - | TypeKeyword - | StructKeyword - | ReturnKeyword - | MatchKeyword - | EndOfFile - | BlockStart - | BlockEnd - | LineFoldEnd - | Assignment - | IfKeyword - | ElseKeyword - | ElifKeyword - | EnumKeyword - | ForeignKeyword - | ForallKeyword - -export type TokenKind - = Token['kind'] - -export class ForallTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.ForallTypeExpression; - - public constructor( - public forallKeyword: ForallKeyword, - public varTypeExps: VarTypeExpression[], - public dot: Dot, - public typeExpr: TypeExpression, - ) { - super(); - } - - public clone(): ForallTypeExpression { - return new ForallTypeExpression( - this.forallKeyword.clone(), - this.varTypeExps.map(e => e.clone()), - this.dot.clone(), - this.typeExpr.clone(), - ); - } - - public getFirstToken(): Token { - return this.forallKeyword; - } - - public getLastToken(): Token { - return this.typeExpr.getLastToken(); - } - -} - -export class TypeExpressionWithConstraints extends SyntaxBase { - - public readonly kind = SyntaxKind.TypeExpressionWithConstraints; - - public constructor( - public constraints: ClassConstraint[], - public rarrowAlt: RArrowAlt, - public typeExpr: TypeExpression, - ) { - super(); - } - - public clone(): TypeExpressionWithConstraints { - return new TypeExpressionWithConstraints( - this.constraints.map(c => c.clone()), - this.rarrowAlt.clone(), - this.typeExpr.clone(), - ); - } - - public getFirstToken(): Token { - if (this.constraints.length > 0) { - return this.constraints[0].getFirstToken(); - } - return this.rarrowAlt; - } - - public getLastToken(): Token { - return this.typeExpr.getLastToken(); - } - -} - -export class ArrowTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.ArrowTypeExpression; - - public constructor( - public paramTypeExprs: TypeExpression[], - public returnTypeExpr: TypeExpression - ) { - super(); - } - - public clone(): ArrowTypeExpression { - return new ArrowTypeExpression( - this.paramTypeExprs.map(te => te.clone()), - this.returnTypeExpr.clone(), - ); - } - - public getFirstToken(): Token { - if (this.paramTypeExprs.length > 0) { - return this.paramTypeExprs[0].getFirstToken(); - } - return this.returnTypeExpr.getFirstToken(); - } - - public getLastToken(): Token { - return this.returnTypeExpr.getLastToken(); - } - -} - -export class TupleTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.TupleTypeExpression; - - public constructor( - public lparen: LParen, - public elements: TypeExpression[], - public rparen: RParen, - ) { - super(); - } - - public clone(): TupleTypeExpression { - return new TupleTypeExpression( - this.lparen.clone(), - this.elements.map(element => element.clone()), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class ReferenceTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.ReferenceTypeExpression; - - public constructor( - public modulePath: Array<[IdentifierAlt, Dot]>, - public name: IdentifierAlt, - ) { - super(); - } - - public clone(): ReferenceTypeExpression { - return new ReferenceTypeExpression( - this.modulePath.map(([name, dot]) => [name.clone(), dot.clone()]), - this.name.clone(), - ); - } - - public getFirstToken(): Token { - if (this.modulePath.length > 0) { - return this.modulePath[0][0]; - } - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export class AppTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.AppTypeExpression; - - public constructor( - public operator: TypeExpression, - public args: TypeExpression[], - ) { - super(); - } - - public clone(): AppTypeExpression { - return new AppTypeExpression( - this.operator.clone(), - this.args.map(arg => arg.clone()), - ); - } - - public getFirstToken(): Token { - return this.operator.getFirstToken(); - } - - public getLastToken(): Token { - if (this.args.length > 0) { - return this.args[this.args.length-1].getLastToken(); - } - return this.operator.getLastToken(); - } - -} - -export class VarTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.VarTypeExpression; - - public constructor( - public name: Identifier - ) { - super(); - } - - public clone(): VarTypeExpression { - return new VarTypeExpression( this.name.clone() ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export class NestedTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.NestedTypeExpression; - - public constructor( - public lparen: LParen, - public typeExpr: TypeExpression, - public rparen: RParen, - ) { - super(); - } - - public clone(): NestedTypeExpression { - return new NestedTypeExpression( - this.lparen.clone(), - this.typeExpr.clone(), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class InstanceTypeExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.InstanceTypeExpression; - - public constructor( - public lbrace1: LBrace, - public lbrace2: LBrace, - public name: Identifier | null = null, - public colon: Colon | null = null, - public typeExpr: TypeExpression, - public rbrace1: RBrace, - public rbrace2: RBrace, - ) { - super(); - } - - public clone(): InstanceTypeExpression { - return new InstanceTypeExpression( - this.lbrace1, - this.lbrace2, - this.name, - this.colon, - this.typeExpr, - this.rbrace1, - this.rbrace2, - ); - } - - public getFirstToken(): Token { - return this.lbrace1; - } - - public getLastToken(): Token { - return this.rbrace2; - } - -} - -export type TypeExpression - = ReferenceTypeExpression - | ArrowTypeExpression - | VarTypeExpression - | AppTypeExpression - | NestedTypeExpression - | TupleTypeExpression - | ForallTypeExpression - | TypeExpressionWithConstraints - | InstanceTypeExpression - -export class NamedPattern extends SyntaxBase { - - public readonly kind = SyntaxKind.NamedPattern; - - public constructor( - public name: Identifier | CustomOperator, - ) { - super(); - } - - public clone(): NamedPattern { - return new NamedPattern( this.name.clone() ); - } - - public get isHole(): boolean { - return this.name.text == '_'; - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export class TuplePattern extends SyntaxBase { - - public readonly kind = SyntaxKind.TuplePattern; - - public constructor( - public lparen: LParen, - public elements: Pattern[], - public rparen: RParen, - ) { - super(); - } - - public clone(): TuplePattern { - return new TuplePattern( - this.lparen.clone(), - this.elements.map(element => element.clone()), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class NamedTuplePattern extends SyntaxBase { - - public readonly kind = SyntaxKind.NamedTuplePattern; - - public constructor( - public name: IdentifierAlt, - public elements: Pattern[], - ) { - super(); - } - - public clone(): NamedTuplePattern { - return new NamedTuplePattern( - this.name.clone(), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.name; - } - -} - -export class StructPatternField extends SyntaxBase { - - public readonly kind = SyntaxKind.StructPatternField; - - public constructor( - public name: Identifier, - public equals: Equals, - public pattern: Pattern, - ) { - super(); - } - - public clone(): StructPatternField { - return new StructPatternField( - this.name.clone(), - this.equals.clone(), - this.pattern.clone(), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.pattern.getLastToken(); - } - -} - -export class VariadicStructPatternElement extends SyntaxBase { - - public readonly kind = SyntaxKind.VariadicStructPatternElement; - - public constructor( - public dotdot: DotDot, - public pattern: Pattern | null, - ) { - super(); - } - - public clone(): VariadicStructPatternElement { - return new VariadicStructPatternElement( - this.dotdot.clone(), - this.pattern !== null ? this.pattern.clone() : null, - ); - } - - public getFirstToken(): Token { - return this.dotdot; - } - - public getLastToken(): Token { - if (this.pattern !== null) { - return this.pattern.getLastToken(); - } - return this.dotdot; - } - -} - -export class PunnedStructPatternField extends SyntaxBase { - - public readonly kind = SyntaxKind.PunnedStructPatternField; - - public constructor( - public name: Identifier, - ) { - super(); - } - - public clone(): PunnedStructPatternField { - return new PunnedStructPatternField( this.name.clone() ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export type StructPatternElement - = VariadicStructPatternElement - | PunnedStructPatternField - | StructPatternField - -export class StructPattern extends SyntaxBase { - - public readonly kind = SyntaxKind.StructPattern; - - public constructor( - public lbrace: LBrace, - public members: StructPatternElement[], - public rbrace: RBrace, - ) { - super(); - } - - public clone(): StructPattern { - return new StructPattern( - this.lbrace.clone(), - this.members.map(member => member.clone()), - this.rbrace.clone(), - ); - } - - public getFirstToken(): Token { - return this.lbrace; - } - - public getLastToken(): Token { - return this.rbrace; - } - -} - -export class NestedPattern extends SyntaxBase { - - public readonly kind = SyntaxKind.NestedPattern; - - public constructor( - public lparen: LParen, - public pattern: Pattern, - public rparen: RParen, - ) { - super(); - } - - public clone(): NestedPattern { - return new NestedPattern( - this.lparen.clone(), - this.pattern.clone(), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class DisjunctivePattern extends SyntaxBase { - - public readonly kind = SyntaxKind.DisjunctivePattern; - - public constructor( - public left: Pattern, - public operator: VBar, - public right: Pattern, - ) { - super(); - } - - public clone(): DisjunctivePattern { - return new DisjunctivePattern( - this.left.clone(), - this.operator.clone(), - this.right.clone(), - ); - } - - public getFirstToken(): Token { - return this.left.getFirstToken(); - } - - public getLastToken(): Token { - return this.right.getLastToken(); - } - -} - - -export class LiteralPattern extends SyntaxBase { - - public readonly kind = SyntaxKind.LiteralPattern; - - public constructor( - public token: StringLiteral | Integer - ) { - super(); - } - - public clone(): LiteralPattern { - return new LiteralPattern( this.token.clone() ); - } - - public getFirstToken(): Token { - return this.token; - } - - public getLastToken(): Token { - return this.token; - } - -} - -export type Pattern - = NamedPattern - | NestedPattern - | StructPattern - | NamedTuplePattern - | TuplePattern - | DisjunctivePattern - | LiteralPattern - -export class TypeAnnotation extends SyntaxBase { - - public readonly kind = SyntaxKind.TypeAnnotation; - - public constructor( - public at: At, - public colon: Colon, - public typeExpr: TypeExpression, - ) { - super(); - } - - public clone(): TypeAnnotation { - return new TypeAnnotation( - this.at.clone(), - this.colon.clone(), - this.typeExpr.clone() - ); - } - - public getFirstToken(): Token { - return this.at; - } - - public getLastToken(): Token { - return this.typeExpr.getLastToken(); - } - -} - -export type Annotation - = TypeAnnotation - -export type Annotations = Annotation[]; - -export class TupleExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.TupleExpression; - - public constructor( - public annotations: Annotations, - public lparen: LParen, - public elements: Expression[], - public rparen: RParen, - ) { - super(); - } - - public clone(): TupleExpression { - return new TupleExpression( - this.annotations.map(a => a.clone()), - this.lparen.clone(), - this.elements.map(element => element.clone()), - this.rparen.clone() - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class NestedExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.NestedExpression; - - public constructor( - public annotations: Annotations, - public lparen: LParen, - public expression: Expression, - public rparen: RParen, - ) { - super(); - } - - public clone(): NestedExpression { - return new NestedExpression( - this.annotations.map(a => a.clone()), - this.lparen.clone(), - this.expression.clone(), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class ConstantExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.ConstantExpression; - - public constructor( - public annotations: Annotations, - public token: Integer | StringLiteral, - ) { - super(); - } - - public clone(): ConstantExpression { - return new ConstantExpression( - this.annotations.map(a => a.clone()), - this.token.clone() - ); - } - - public getFirstToken(): Token { - return this.token; - } - - public getLastToken(): Token { - return this.token; - } - -} - -export class CallExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.CallExpression; - - public constructor( - public annotations: Annotations, - public func: Expression, - public args: Expression[], - ) { - super(); - } - - public clone(): CallExpression { - return new CallExpression( - this.annotations.map(a => a.clone()), - this.func.clone(), - this.args.map(arg => arg.clone()), - ); - } - - public getFirstToken(): Token { - return this.func.getFirstToken(); - } - - public getLastToken(): Token { - if (this.args.length > 0) { - return this.args[this.args.length-1].getLastToken(); - } - return this.func.getLastToken(); - } - -} - -export class StructExpressionField extends SyntaxBase { - - public readonly kind = SyntaxKind.StructExpressionField; - - public constructor( - public name: Identifier, - public equals: Equals, - public expression: Expression, - ) { - super(); - } - - public clone(): StructExpressionField { - return new StructExpressionField( - this.name.clone(), - this.equals.clone(), - this.expression.clone(), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export class PunnedStructExpressionField extends SyntaxBase { - - public readonly kind = SyntaxKind.PunnedStructExpressionField; - - public constructor( - public name: Identifier, - ) { - super(); - } - - public clone(): PunnedStructExpressionField { - return new PunnedStructExpressionField( this.name.clone() ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export type StructExpressionElement - = StructExpressionField - | PunnedStructExpressionField; - -export class StructExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.StructExpression; - - public constructor( - public annotations: Annotations, - public lbrace: LBrace, - public members: StructExpressionElement[], - public rbrace: RBrace, - ) { - super(); - } - - public clone(): StructExpression { - return new StructExpression( - this.annotations.map(a => a.clone()), - this.lbrace.clone(), - this.members.map(member => member.clone()), - this.rbrace.clone(), - ); - } - - public getFirstToken(): Token { - return this.lbrace; - } - - public getLastToken(): Token { - return this.rbrace; - } - -} - -export class FunctionExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.FunctionExpression; - - public constructor( - public annotations: Annotations, - public backslash: Backslash, - public params: Param[], - public body: Body, - ) { - super(); - } - - public clone(): FunctionExpression { - return new FunctionExpression( - this.annotations.map(a => a.clone()), - this.backslash.clone(), - this.params.map(param => param.clone()), - this.body.clone(), - ); - } - - public getFirstToken(): Token { - return this.backslash; - } - - public getLastToken(): Token { - return this.body.getLastToken(); - } - -} - -export class MatchArm extends SyntaxBase { - - public readonly kind = SyntaxKind.MatchArm; - - public constructor( - public pattern: Pattern, - public rarrowAlt: RArrowAlt, - public expression: Expression, - ) { - super(); - } - - public clone(): MatchArm { - return new MatchArm( - this.pattern.clone(), - this.rarrowAlt.clone(), - this.expression.clone(), - ); - } - - public getFirstToken(): Token { - return this.pattern.getFirstToken(); - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - - -export class MatchExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.MatchExpression; - - public constructor( - public annotations: Annotations, - public matchKeyword: MatchKeyword, - public expression: Expression | null, - public arms: MatchArm[], - ) { - super(); - } - - public clone(): MatchExpression { - return new MatchExpression( - this.annotations.map(a => a.clone()), - this.matchKeyword.clone(), - this.expression !== null ? this.expression.clone() : null, - this.arms.map(arm => arm.clone()), - ); - } - - public getFirstToken(): Token { - if (this.annotations.length > 0) { - return this.annotations[0].getFirstToken(); - } - return this.matchKeyword; - } - - public getLastToken(): Token { - if (this.arms.length > 0) { - return this.arms[this.arms.length-1].getLastToken(); - } - if (this.expression !== null) { - return this.expression.getLastToken(); - } - return this.matchKeyword; - } - -} - -export class ReferenceExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.ReferenceExpression; - - public constructor( - public annotations: Annotations, - public modulePath: Array<[IdentifierAlt, Dot]>, - public name: Identifier | IdentifierAlt, - ) { - super(); - } - - public clone(): ReferenceExpression { - return new ReferenceExpression( - this.annotations.map(a => a.clone()), - this.modulePath.map(([name, dot]) => [name.clone(), dot.clone()]), - this.name.clone(), - ); - } - - public getFirstToken(): Token { - if (this.modulePath.length > 0) { - return this.modulePath[0][0]; - } - return this.name; - } - - public getLastToken(): Token { - return this.name; - } - -} - -export class MemberExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.MemberExpression; - - public constructor( - public annotations: Annotations, - public expression: Expression, - public path: [Dot, Identifier | Integer][], - ) { - super(); - } - - public clone(): MemberExpression { - return new MemberExpression( - this.annotations.map(a => a.clone()), - this.expression.clone(), - this.path.map(([dot, name]) => [dot.clone(), name.clone()]), - ); - } - - public getFirstToken(): Token { - return this.expression.getFirstToken(); - } - - public getLastToken(): Token { - return this.path[this.path.length-1][1]; - } - -} - -export class PrefixExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.PrefixExpression; - - public constructor( - public annotations: Annotations, - public operator: ExprOperator, - public expression: Expression, - ) { - super(); - } - - public clone(): PrefixExpression { - return new PrefixExpression( - this.annotations.map(a => a.clone()), - this.operator.clone(), - this.expression.clone(), - ); - } - - public getFirstToken(): Token { - return this.operator; - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export class PostfixExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.PostfixExpression; - - public constructor( - public annotations: Annotations, - public expression: Expression, - public operator: ExprOperator, - ) { - super(); - } - - public clone(): PostfixExpression { - return new PostfixExpression( - this.annotations.map(a => a.clone()), - this.expression.clone(), - this.operator.clone(), - ); - } - - public getFirstToken(): Token { - return this.expression.getFirstToken(); - } - - public getLastToken(): Token { - return this.operator; - } - -} - -export class InfixExpression extends SyntaxBase { - - public readonly kind = SyntaxKind.InfixExpression; - - public constructor( - public annotations: Annotations, - public left: Expression, - public operator: ExprOperator, - public right: Expression, - ) { - super(); - } - - public clone(): InfixExpression { - return new InfixExpression( - this.annotations.map(a => a.clone()), - this.left.clone(), - this.operator.clone(), - this.right.clone(), - ); - } - - public getFirstToken(): Token { - return this.left.getFirstToken(); - } - - public getLastToken(): Token { - return this.right.getLastToken(); - } - -} - -export function isExpression(node: Syntax): node is Expression { - switch (node.kind) { - case SyntaxKind.MemberExpression: - case SyntaxKind.CallExpression: - case SyntaxKind.StructExpression: - case SyntaxKind.ReferenceExpression: - case SyntaxKind.ConstantExpression: - case SyntaxKind.TupleExpression: - case SyntaxKind.MatchExpression: - case SyntaxKind.NestedExpression: - case SyntaxKind.PrefixExpression: - case SyntaxKind.InfixExpression: - case SyntaxKind.PostfixExpression: - case SyntaxKind.FunctionExpression: - return true; - default: - return false; - } -} - -export type Expression - = MemberExpression - | CallExpression - | StructExpression - | ReferenceExpression - | ConstantExpression - | TupleExpression - | MatchExpression - | NestedExpression - | PrefixExpression - | InfixExpression - | PostfixExpression - | FunctionExpression - -export class IfStatementCase extends SyntaxBase { - - public readonly kind = SyntaxKind.IfStatementCase; - - public constructor( - public keyword: IfKeyword | ElseKeyword | ElifKeyword, - public test: Expression | null, - public blockStart: BlockStart, - public elements: LetBodyElement[], - ) { - super(); - } - - public clone(): IfStatementCase { - return new IfStatementCase( - this.keyword.clone(), - this.test !== null ? this.test.clone() : null, - this.blockStart.clone(), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - return this.keyword; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.blockStart; - } - -} - -export class IfStatement extends SyntaxBase { - - public readonly kind = SyntaxKind.IfStatement; - - public constructor( - public cases: IfStatementCase[], - ) { - super(); - } - - public clone(): IfStatement { - return new IfStatement( - this.cases.map(caze => caze.clone()), - ); - } - - public getFirstToken(): Token { - return this.cases[0].getFirstToken(); - } - - public getLastToken(): Token { - return this.cases[this.cases.length-1].getLastToken(); - } - -} - -export class ReturnStatement extends SyntaxBase { - - public readonly kind = SyntaxKind.ReturnStatement; - - public constructor( - public returnKeyword: ReturnKeyword, - public expression: Expression | null - ) { - super(); - } - - public clone(): ReturnStatement { - return new ReturnStatement( - this.returnKeyword.clone(), - this.expression !== null ? this.expression.clone() : null, - ); - } - - public getFirstToken(): Token { - return this.returnKeyword; - } - - public getLastToken(): Token { - if (this.expression !== null) { - return this.expression.getLastToken(); - } - return this.returnKeyword; - } - -} - -export class AssignStatement extends SyntaxBase { - - public readonly kind = SyntaxKind.AssignStatement; - - public constructor( - public pattern: Pattern, - public operator: Assignment, - public expression: Expression, - ) { - super(); - } - - public clone(): AssignStatement { - return new AssignStatement( - this.pattern.clone(), - this.operator.clone(), - this.expression.clone() - ); - } - - public getFirstToken(): Token { - return this.pattern.getFirstToken(); - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export class ExpressionStatement extends SyntaxBase { - - public readonly kind = SyntaxKind.ExpressionStatement; - - public constructor( - public expression: Expression, - ) { - super(); - } - - public clone(): ExpressionStatement { - return new ExpressionStatement( this.expression.clone() ); - } - - public getFirstToken(): Token { - return this.expression.getFirstToken(); - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export type Statement - = ReturnStatement - | ExpressionStatement - | IfStatement - | AssignStatement - -export class InstanceParam extends SyntaxBase { - - public readonly kind = SyntaxKind.InstanceParam; - - public constructor( - public lbrace1: LBrace, - public lbrace2: LBrace, - public name: Identifier, - public rbrace1: RBrace, - public rbrace2: RBrace, - ) { - super(); - } - - public clone(): InstanceParam { - return new InstanceParam( - this.lbrace1, - this.lbrace2, - this.name, - this.rbrace1, - this.rbrace2, - ); - } - - public getFirstToken(): Token { - return this.lbrace1; - } - - public getLastToken(): Token { - return this.rbrace2; - } - -} - -export class PlainParam extends SyntaxBase { - - public readonly kind = SyntaxKind.PlainParam; - - public constructor( - public pattern: Pattern, - ) { - super(); - } - - public clone(): PlainParam { - return new PlainParam( - this.pattern.clone(), - ); - } - - public getFirstToken(): Token { - return this.pattern.getFirstToken(); - } - - public getLastToken(): Token { - return this.pattern.getLastToken(); - } - -} - -export type Param - = InstanceParam - | PlainParam - -export function isParam(node: Syntax): node is Param { - return node.kind === SyntaxKind.PlainParam - || node.kind === SyntaxKind.InstanceParam; -} - -export class EnumDeclarationStructElement extends SyntaxBase { - - public readonly kind = SyntaxKind.EnumDeclarationStructElement; - - public scheme?: Scheme; - - public constructor( - public name: IdentifierAlt, - public blockStart: BlockStart, - public fields: StructDeclarationField[], - ) { - super(); - } - - public clone(): EnumDeclarationStructElement { - return new EnumDeclarationStructElement( - this.name.clone(), - this.blockStart.clone(), - this.fields.map(field => field.clone()), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - if (this.fields.length > 0) { - return this.fields[this.fields.length-1].getLastToken(); - } - return this.blockStart; - } - -} - -export class EnumDeclarationTupleElement extends SyntaxBase { - - public readonly kind = SyntaxKind.EnumDeclarationTupleElement; - - public constructor( - public name: IdentifierAlt, - public elements: TypeExpression[], - ) { - super(); - } - - public clone(): EnumDeclarationElement { - return new EnumDeclarationTupleElement( - this.name.clone(), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.name; - } - -} - -export type EnumDeclarationElement - = EnumDeclarationStructElement - | EnumDeclarationTupleElement - -export class EnumDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.EnumDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public enumKeyword: EnumKeyword, - public name: IdentifierAlt, - public varExps: Identifier[], - public members: EnumDeclarationElement[] | null, - ) { - super(); - } - - public clone(): EnumDeclaration { - return new EnumDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.enumKeyword.clone(), - this.name.clone(), - this.varExps.map(ve => ve.clone()), - this.members !== null ? this.members.map(member => member.clone()) : null, - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.enumKeyword; - } - - public getLastToken(): Token { - if (this.members !== null && this.members.length > 0) { - return this.members[this.members.length-1].getLastToken(); - } - return this.name; - } - -} - -export class StructDeclarationField extends SyntaxBase { - - public readonly kind = SyntaxKind.StructDeclarationField; - - public constructor( - public name: Identifier, - public colon: Colon, - public typeExpr: TypeExpression, - ) { - super(); - } - - public clone(): StructDeclarationField { - return new StructDeclarationField( - this.name.clone(), - this.colon.clone(), - this.typeExpr.clone(), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.typeExpr.getLastToken(); - } - -} - -export class StructDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.StructDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public structKeyword: StructKeyword, - public name: IdentifierAlt, - public varExps: Identifier[], - public fields: StructDeclarationField[] | null, - ) { - super(); - } - - public clone(): StructDeclaration { - return new StructDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.structKeyword.clone(), - this.name.clone(), - this.varExps.map(ve => ve.clone()), - this.fields !== null ? this.fields.map(field => field.clone()) : null, - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.structKeyword; - } - - public getLastToken(): Token { - if (this.fields && this.fields.length > 0) { - return this.fields[this.fields.length-1].getLastToken(); - } - return this.name; - } - -} - -export class TypeAssert extends SyntaxBase { - - public readonly kind = SyntaxKind.TypeAssert; - - public constructor( - public colon: Colon, - public typeExpression: TypeExpression, - ) { - super(); - } - - public clone(): TypeAssert { - return new TypeAssert( - this.colon.clone(), - this.typeExpression.clone(), - ); - } - - public getFirstToken(): Token { - return this.colon; - } - - public getLastToken(): Token { - return this.typeExpression.getLastToken(); - } - -} - -export type Body - = ExprBody - | BlockBody - -export class ExprBody extends SyntaxBase { - - public readonly kind = SyntaxKind.ExprBody; - - public constructor( - public equals: Equals | RArrow, - public expression: Expression, - ) { - super(); - } - - public clone(): ExprBody { - return new ExprBody( - this.equals.clone(), - this.expression.clone(), - ); - } - - public getFirstToken(): Token { - return this.equals; - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export type LetBodyElement - = LetDeclaration - | Statement - -export class BlockBody extends SyntaxBase { - - public readonly kind = SyntaxKind.BlockBody; - - public constructor( - public blockStart: BlockStart, - public elements: LetBodyElement[], - ) { - super(); - } - - public clone(): BlockBody { - return new BlockBody( - this.blockStart.clone(), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - return this.blockStart; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.blockStart; - } - -} - -export class WrappedOperator extends SyntaxBase { - - public readonly kind = SyntaxKind.WrappedOperator; - - public constructor( - public lparen: LParen, - public operator: CustomOperator, - public rparen: RParen, - ) { - super(); - } - - public clone(): WrappedOperator { - return new WrappedOperator( - this.lparen.clone(), - this.operator.clone(), - this.rparen.clone(), - ); - } - - public getFirstToken(): Token { - return this.lparen; - } - - public getLastToken(): Token { - return this.rparen; - } - -} - -export class TypeDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.TypeDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public typeKeyword: TypeKeyword, - public name: IdentifierAlt, - public varExps: Identifier[], - public equals: Equals, - public typeExpression: TypeExpression - ) { - super(); - } - - public clone(): TypeDeclaration { - return new TypeDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.typeKeyword.clone(), - this.name.clone(), - this.varExps.map(ve => ve.clone()), - this.equals.clone(), - this.typeExpression.clone(), - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.typeKeyword; - } - - public getLastToken(): Token { - return this.typeExpression.getLastToken(); - } - -} - -export class LetDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.LetDeclaration; - - @nonenumerable - public scope?: Scope; - - @nonenumerable - public activeCycle?: boolean; - @nonenumerable - public visited?: boolean; - - public constructor( - public pubKeyword: PubKeyword | null, - public letKeyword: LetKeyword, - public foreignKeyword: ForeignKeyword | null, - public mutKeyword: MutKeyword | null, - public pattern: Pattern, - public params: Param[], - public typeAssert: TypeAssert | null, - public body: Body | null, - ) { - super(); - } - - public get name(): Identifier | CustomOperator { - switch (this.pattern.kind) { - case SyntaxKind.NamedPattern: - return this.pattern.name; - case SyntaxKind.NestedPattern: - assert(this.pattern.pattern.kind === SyntaxKind.NamedPattern); - return this.pattern.pattern.name; - default: - unreachable(); - } - } - - public clone(): LetDeclaration { - return new LetDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.letKeyword.clone(), - this.foreignKeyword !== null ? this.foreignKeyword.clone() : null, - this.mutKeyword !== null ? this.mutKeyword.clone() : null, - this.pattern.clone(), - this.params.map(param => param.clone()), - this.typeAssert !== null ? this.typeAssert.clone() : null, - this.body !== null ? this.body.clone() : null, - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.letKeyword; - } - - public getLastToken(): Token { - if (this.body !== null) { - return this.body.getLastToken(); - } - if (this.typeAssert !== null) { - return this.typeAssert.getLastToken(); - } - if (this.params.length > 0) { - return this.params[this.params.length-1].getLastToken(); - } - return this.pattern.getLastToken(); - } - -} - -export class ImportDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.ImportDeclaration; - - public constructor( - public importKeyword: ImportKeyword, - public importSource: StringLiteral, - ) { - super(); - } - - public clone(): ImportDeclaration { - return new ImportDeclaration( - this.importKeyword.clone(), - this.importSource.clone(), - ); - } - - public getFirstToken(): Token { - return this.importKeyword; - } - - public getLastToken(): Token { - return this.importSource; - } - -} - -export type Declaration - = LetDeclaration - | ImportDeclaration - | StructDeclaration - | EnumDeclaration - | TypeDeclaration - -export class Initializer extends SyntaxBase { - - public readonly kind = SyntaxKind.Initializer; - - public constructor( - public equals: Equals, - public expression: Expression - ) { - super(); - } - - public clone(): Initializer { - return new Initializer( - this.equals.clone(), - this.expression.clone() - ); - } - - public getFirstToken(): Token { - return this.equals; - } - - public getLastToken(): Token { - return this.expression.getLastToken(); - } - -} - -export class ClassConstraint extends SyntaxBase { - - public readonly kind = SyntaxKind.ClassConstraint; - - public constructor( - public name: IdentifierAlt, - public types: TypeExpression[], - ) { - super(); - } - - public clone(): ClassConstraint { - return new ClassConstraint( - this.name.clone(), - this.types.map(ty => ty.clone()), - ); - } - - public getFirstToken(): Token { - return this.name; - } - - public getLastToken(): Token { - return this.types[this.types.length-1].getLastToken(); - } - -} - -export class ClassConstraintClause extends SyntaxBase { - - public readonly kind = SyntaxKind.ClassConstraintClause; - - public constructor( - public constraints: ClassConstraint[], - public rarrowAlt: RArrowAlt, - ) { - super(); - } - - public clone(): ClassConstraintClause { - return new ClassConstraintClause( - this.constraints.map(constraint => constraint.clone()), - this.rarrowAlt.clone(), - ); - } - - public getFirstToken(): Token { - if (this.constraints.length > 0) { - return this.constraints[0].getFirstToken(); - } - return this.rarrowAlt; - } - - public getLastToken(): Token { - return this.rarrowAlt; - } - -} - -export type ClassDeclarationElement - = LetDeclaration - | TypeDeclaration - -export class ClassDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.ClassDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public classKeyword: ClassKeyword, - public constraintClause: ClassConstraintClause | null, - public name: IdentifierAlt, - public types: VarTypeExpression[], - public elements: ClassDeclarationElement[], - ) { - super(); - } - - public *getSupers(): Iterable { - if (this.constraintClause !== null) { - for (const constraint of this.constraintClause.constraints) { - yield constraint.name; - } - } - } - - public lookup(element: InstanceDeclarationElement): ClassDeclarationElement | null { - - switch (element.kind) { - - case SyntaxKind.LetDeclaration: - implementationLimitation(element.pattern.kind === SyntaxKind.NamedPattern); - for (const other of this.elements) { - if (other.kind === SyntaxKind.LetDeclaration - && other.pattern.kind === SyntaxKind.NamedPattern - && other.pattern.name.text === element.pattern.name.text) { - return other; - } - } - break; - - case SyntaxKind.TypeDeclaration: - for (const other of this.elements) { - if (other.kind === SyntaxKind.TypeDeclaration - && other.name.text === element.name.text) { - return other; - } - } - break; - - } - - return null; - - } - - public *getInstances(): Iterable { - let curr = this.parent!; - for (;;) { - if (!canHaveInstanceDeclaration(curr)) { - curr = curr.parent!; - } - for (const element of getElements(curr)) { - if (element.kind === SyntaxKind.InstanceDeclaration && element.name.text === this.name.text) { - yield element; - } - } - } - } - - public clone(): ClassDeclaration { - return new ClassDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.classKeyword.clone(), - this.constraintClause !== null ? this.constraintClause.clone() : null, - this.name.clone(), - this.types.map(t => t.clone()), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.classKeyword; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - if (this.types.length > 0) { - return this.types[this.types.length-1].getLastToken(); - } - return this.name; - } - -} - -export type InstanceDeclarationElement - = LetDeclaration - | TypeDeclaration - -export class InstanceDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.InstanceDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public classKeyword: InstanceKeyword, - public constraintClause: ClassConstraintClause | null, - public name: IdentifierAlt, - public types: TypeExpression[], - public elements: InstanceDeclarationElement[], - ) { - super(); - } - - public clone(): InstanceDeclaration { - return new InstanceDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.classKeyword.clone(), - this.constraintClause !== null ? this.constraintClause.clone() : null, - this.name.clone(), - this.types.map(t => t.clone()), - this.elements.map(element => element.clone()), - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.classKeyword; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - if (this.types.length > 0) { - return this.types[this.types.length-1].getLastToken(); - } - return this.name; - } - -} -export class ModuleDeclaration extends SyntaxBase { - - public readonly kind = SyntaxKind.ModuleDeclaration; - - public constructor( - public pubKeyword: PubKeyword | null, - public modKeyword: ModKeyword, - public name: IdentifierAlt, - public blockStart: BlockStart, - public elements: SourceFileElement[], - ) { - super(); - } - - public clone(): ModuleDeclaration { - return new ModuleDeclaration( - this.pubKeyword !== null ? this.pubKeyword.clone() : null, - this.modKeyword.clone(), - this.name.clone(), - this.blockStart.clone(), - this.elements.map(element => element.clone()) - ); - } - - public getFirstToken(): Token { - if (this.pubKeyword !== null) { - return this.pubKeyword; - } - return this.modKeyword; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.blockStart; - } - -} - -export type SourceFileElement - = Statement - | Declaration - | ClassDeclaration - | InstanceDeclaration - | ModuleDeclaration - -export class SourceFile extends SyntaxBase { - - public readonly kind = SyntaxKind.SourceFile; - - @nonenumerable - public scope?: Scope; - - public constructor( - private file: TextFile, - public elements: SourceFileElement[], - public eof: EndOfFile, - ) { - super(); - } - - public clone(): SourceFile { - return new SourceFile( - this.file, - this.elements.map(element => element.clone()), - this.eof, - ); - } - - public getFirstToken(): Token { - if (this.elements.length > 0) { - return this.elements[0].getFirstToken(); - } - return this.eof; - } - - public getLastToken(): Token { - if (this.elements.length > 0) { - return this.elements[this.elements.length-1].getLastToken(); - } - return this.eof; - } - - public getFile() { - return this.file; - } - -} - -export function isSyntax(value: any): value is Syntax { - return typeof value === 'object' - && value !== null - && value instanceof SyntaxBase; -} - -export function isToken(value: any): value is Token { - return typeof value === 'object' - && value !== null - && value instanceof TokenBase; -} - -export function visitEachChild(node: T, proc: (node: Syntax) => Syntax | void): Syntax { - - const newArgs = []; - let changed = false; - - const traverse = (value: any): any => { - if (Array.isArray(value)) { - const newElements = []; - let changed = false; - for (const element of value) { - const newElement = traverse(element); - if (newElement !== element) { - changed = true; - } - newElements.push(newElement); - } - return changed ? newElements : value; - } else if (isSyntax(value)) { - let newValue = proc(value); - if (newValue === undefined) { - newValue = value; - } - if (newValue !== value) { - changed = true; - } - return newValue; - } else { - return value; - } - } - - for (const [_key, value] of node.getFields()) { - newArgs.push(traverse(value)); - } - - if (!changed) { - return node; - } - return new (node as any).constructor(...newArgs); -} - -export function canHaveInstanceDeclaration(node: Syntax): boolean { - return node.kind === SyntaxKind.SourceFile - || node.kind === SyntaxKind.ModuleDeclaration - || node.kind === SyntaxKind.LetDeclaration; -} - -export function getElements(node: Syntax): Iterable { - switch (node.kind) { - case SyntaxKind.SourceFile: - case SyntaxKind.ModuleDeclaration: - return node.elements; - case SyntaxKind.LetDeclaration: - if (node.body !== null && node.body.kind === SyntaxKind.BlockBody) { - return node.body.elements; - } - // falls through - default: - return []; - } -} diff --git a/bootstrap/js/compiler/src/diagnostics.ts b/bootstrap/js/compiler/src/diagnostics.ts deleted file mode 100644 index 5e5c71c3c..000000000 --- a/bootstrap/js/compiler/src/diagnostics.ts +++ /dev/null @@ -1,667 +0,0 @@ - -import { Kind, KindType } from "./checker"; -import { type Type, TypeKind, labelTag } from "./types" -import { ClassConstraint, ClassDeclaration, IdentifierAlt, InstanceDeclaration, Syntax, SyntaxKind, TextFile, TextPosition, TextRange, Token } from "./cst"; -import { assert, assertNever, countDigits, IndentWriter } from "./util"; -import { unwatchFile } from "fs"; -import { warn } from "console"; - -const ANSI_RESET = "\u001b[0m" -const ANSI_BOLD = "\u001b[1m" -const ANSI_UNDERLINE = "\u001b[4m" -const ANSI_REVERSED = "\u001b[7m" - -const ANSI_FG_BLACK = "\u001b[30m" -const ANSI_FG_RED = "\u001b[31m" -const ANSI_FG_GREEN = "\u001b[32m" -const ANSI_FG_YELLOW = "\u001b[33m" -const ANSI_FG_BLUE = "\u001b[34m" -const ANSI_FG_CYAN = "\u001b[35m" -const ANSI_FG_MAGENTA = "\u001b[36m" -const ANSI_FG_WHITE = "\u001b[37m" - -const ANSI_BG_BLACK = "\u001b[40m" -const ANSI_BG_RED = "\u001b[41m" -const ANSI_BG_GREEN = "\u001b[42m" -const ANSI_BG_YELLOW = "\u001b[43m" -const ANSI_BG_BLUE = "\u001b[44m" -const ANSI_BG_CYAN = "\u001b[45m" -const ANSI_BG_MAGENTA = "\u001b[46m" -const ANSI_BG_WHITE = "\u001b[47m" - -const enum Level { - Debug, - Verbose, - Info, - Warning, - Error, - Fatal, -} - -export enum DiagnosticKind { - UnexpectedChar, - UnexpectedToken, - KindMismatch, - TypeMismatch, - TupleIndexOutOfRange, - TypeclassNotFound, - TypeclassDecaredTwice, - TypeclassNotImplemented, - BindingNotFound, - ModuleNotFound, - FieldNotFound, -} - -abstract class DiagnosticBase { - - public abstract readonly kind: DiagnosticKind; - - public abstract level: Level; - - public abstract position: TextPosition | undefined; - -} - -export class UnexpectedCharDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.UnexpectedChar; - - public level = Level.Error; - - public constructor( - public file: TextFile, - public position: TextPosition, - public actual: string, - ) { - super(); - } - -} - - -export class UnexpectedTokenDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.UnexpectedToken; - - public level = Level.Error; - - public constructor( - public file: TextFile, - public actual: Token, - public expected: SyntaxKind[], - ) { - super(); - } - - public get position(): TextPosition { - return this.actual.getStartPosition(); - } - -} - -export class TypeclassDeclaredTwiceDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.TypeclassDecaredTwice; - - public level = Level.Error; - - public constructor( - public name: IdentifierAlt, - public origDecl: ClassDeclaration, - ) { - super(); - } - - public get position(): TextPosition { - return this.name.getStartPosition(); - } - -} - -export class TypeclassNotFoundDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.TypeclassNotFound; - - public level = Level.Error; - - public constructor( - public name: string, - public node: Syntax | null = null, - public origin: InstanceDeclaration | ClassConstraint | null = null, - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.node?.getFirstToken().getStartPosition(); - } - -} - -export class TypeclassNotImplementedDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.TypeclassNotImplemented; - - public level = Level.Error; - - public constructor( - public name: string, - public type: Type, - public node: Syntax | null = null, - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.node?.getFirstToken().getStartPosition(); - } - -} - -export class BindingNotFoundDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.BindingNotFound; - - public level = Level.Error; - - public constructor( - public modulePath: string[], - public name: string, - public node: Syntax, - ) { - super(); - } - - public get position(): TextPosition { - return this.node.getFirstToken().getStartPosition(); - } - -} - -export class TypeMismatchDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.TypeMismatch; - - public level = Level.Error; - - public constructor( - public left: Type, - public right: Type, - public trace: Syntax[], - public fieldPath: (string | number)[], - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.trace[0]?.getFirstToken().getStartPosition(); - } - -} - -export class FieldNotFoundDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.FieldNotFound; - - public level = Level.Error; - - public constructor( - public fieldName: string | number, - public missing: Syntax | null, - public present: Syntax | null, - public cause: Syntax | null = null, - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.cause?.getFirstToken().getStartPosition(); - } - -} - -export class KindMismatchDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.KindMismatch; - - public level = Level.Error; - - public constructor( - public left: Kind, - public right: Kind, - public origin: Syntax | null, - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.origin?.getFirstToken().getStartPosition(); - } - -} - -export class ModuleNotFoundDiagnostic extends DiagnosticBase { - - public readonly kind = DiagnosticKind.ModuleNotFound; - - public level = Level.Error; - - public constructor( - public modulePath: string[], - public node: Syntax, - ) { - super(); - } - - public get position(): TextPosition | undefined { - return this.node.getFirstToken().getStartPosition(); - } - -} - -export type Diagnostic - = UnexpectedCharDiagnostic - | TypeclassNotFoundDiagnostic - | TypeclassDeclaredTwiceDiagnostic - | TypeclassNotImplementedDiagnostic - | BindingNotFoundDiagnostic - | TypeMismatchDiagnostic - | UnexpectedTokenDiagnostic - | FieldNotFoundDiagnostic - | KindMismatchDiagnostic - | ModuleNotFoundDiagnostic - -export interface Diagnostics { - readonly hasError: boolean; - readonly hasFatal: boolean; - add(diagnostic: Diagnostic): void; -} - -export class DiagnosticStore implements Diagnostics { - - private storage: Diagnostic[] = []; - - public hasError = false; - public hasFatal = false; - - public get size(): number { - return this.storage.length; - } - - public add(diagnostic: Diagnostic): void { - this.storage.push(diagnostic); - if (diagnostic.level >= Level.Error) { - this.hasError = true; - } - if (diagnostic.level >= Level.Fatal) { - this.hasFatal = true; - } - } - - public [Symbol.iterator](): IterableIterator { - return this.storage[Symbol.iterator](); - } - -} - -export class ConsoleDiagnostics implements Diagnostics { - - private writer = new IndentWriter(process.stderr); - - public hasError = false; - public hasFatal = false; - - public add(diagnostic: Diagnostic): void { - - if (diagnostic.level >= Level.Error) { - this.hasError = true; - } - if (diagnostic.level >= Level.Fatal) { - this.hasFatal = true; - } - - switch (diagnostic.level) { - case Level.Fatal: - this.writer.write(ANSI_FG_RED + ANSI_BOLD + 'fatal: ' + ANSI_RESET); - break; - case Level.Error: - this.writer.write(ANSI_FG_RED + ANSI_BOLD + 'error: ' + ANSI_RESET); - break; - case Level.Warning: - this.writer.write(ANSI_FG_RED + ANSI_BOLD + 'warning: ' + ANSI_RESET); - break; - case Level.Info: - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - break; - case Level.Verbose: - this.writer.write(ANSI_FG_CYAN + ANSI_BOLD + 'verbose: ' + ANSI_RESET); - break; - } - - switch (diagnostic.kind) { - - case DiagnosticKind.UnexpectedChar: - const endPos = diagnostic.position.clone(); - endPos.advance(diagnostic.actual); - this.writer.write(`unexpected character sequence '${diagnostic.actual}'.\n\n`); - this.writer.write(printExcerpt(diagnostic.file, new TextRange(diagnostic.position, endPos)) + '\n'); - break; - - case DiagnosticKind.UnexpectedToken: - this.writer.write(`expected ${describeExpected(diagnostic.expected)} but got ${describeActual(diagnostic.actual)}\n\n`); - this.writer.write(printExcerpt(diagnostic.file, diagnostic.actual.getRange()) + '\n'); - break; - - case DiagnosticKind.TypeclassDecaredTwice: - this.writer.write(`type class '${diagnostic.name.text}' was already declared somewhere else.\n\n`); - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - this.writer.write(`type class '${diagnostic.name.text}' is already declared here\n\n`); - this.writer.write(printNode(diagnostic.origDecl) + '\n'); - break; - - case DiagnosticKind.TypeclassNotFound: - this.writer.write(`the type class ${ANSI_FG_MAGENTA + diagnostic.name + ANSI_RESET} was not found.\n\n`); - if (diagnostic.node !== null) { - this.writer.write(printNode(diagnostic.node) + '\n'); - } - // if (diagnostic.origin !== null) { - // this.writer.indent(); - // this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - // this.writer.write(`${ANSI_FG_MAGENTA + diagnostic.name + ANSI_RESET} is required by ${ANSI_FG_MAGENTA + diagnostic.origin.name.text + ANSI_RESET}\n\n`); - // this.writer.write(printNode(diagnostic.origin.name) + '\n'); - // this.writer.dedent(); - // } - break; - - case DiagnosticKind.BindingNotFound: - this.writer.write(`binding '${diagnostic.name}' was not found`); - if (diagnostic.modulePath.length > 0) { - this.writer.write(` in module ${ANSI_FG_BLUE + diagnostic.modulePath.join('.') + ANSI_RESET}`); - } - this.writer.write(`.\n\n`); - this.writer.write(printNode(diagnostic.node) + '\n'); - break; - - case DiagnosticKind.TypeMismatch: - const leftNode = getFirstNodeInTypeChain(diagnostic.left); - const rightNode = getFirstNodeInTypeChain(diagnostic.right); - const node = diagnostic.trace[0]; - this.writer.write(`unification of ` + ANSI_FG_GREEN + describeType(diagnostic.left) + ANSI_RESET); - this.writer.write(' and ' + ANSI_FG_GREEN + describeType(diagnostic.right) + ANSI_RESET + ' failed'); - if (diagnostic.fieldPath.length > 0) { - this.writer.write(` in field '${diagnostic.fieldPath.join('.')}'`); - } - this.writer.write('.\n\n'); - this.writer.write(printNode(node) + '\n'); - for (let i = 1; i < diagnostic.trace.length; i++) { - const node = diagnostic.trace[i]; - this.writer.write(' ... in an instantiation of the following expression\n\n'); - this.writer.write(printNode(node, { indentation: i === 0 ? ' ' : ' ' }) + '\n'); - } - if (leftNode !== null) { - this.writer.indent(); - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + `info: ` + ANSI_RESET); - this.writer.write(`type ` + ANSI_FG_GREEN + describeType(diagnostic.left) + ANSI_RESET + ` was inferred from this expression:\n\n`); - this.writer.write(printNode(leftNode) + '\n'); - this.writer.dedent(); - } - if (rightNode !== null) { - this.writer.indent(); - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + `info: ` + ANSI_RESET); - this.writer.write(`type ` + ANSI_FG_GREEN + describeType(diagnostic.right) + ANSI_RESET + ` was inferred from this expression:\n\n`); - this.writer.write(printNode(rightNode) + '\n'); - this.writer.dedent(); - } - break; - - case DiagnosticKind.KindMismatch: - this.writer.write(`kind ${describeKind(diagnostic.left)} does not match with ${describeKind(diagnostic.right)}\n\n`); - if (diagnostic.origin !== null) { - this.writer.write(printNode(diagnostic.origin) + '\n'); - } - break; - - case DiagnosticKind.ModuleNotFound: - this.writer.write(`a module named ${ANSI_FG_BLUE + diagnostic.modulePath.join('.') + ANSI_RESET} was not found.\n\n`); - this.writer.write(printNode(diagnostic.node) + '\n'); - break; - - case DiagnosticKind.FieldNotFound: - this.writer.write(`field '${diagnostic.fieldName}' is required in one type but missing in another\n\n`); - this.writer.indent(); - if (diagnostic.missing !== null) { - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - this.writer.write(`field '${diagnostic.fieldName}' is missing in this construct\n\n`); - this.writer.write(printNode(diagnostic.missing) + '\n'); - } - if (diagnostic.present !== null) { - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - this.writer.write(`field '${diagnostic.fieldName}' is required in this construct\n\n`); - this.writer.write(printNode(diagnostic.present) + '\n'); - } - if (diagnostic.cause !== null) { - this.writer.write(ANSI_FG_YELLOW + ANSI_BOLD + 'info: ' + ANSI_RESET); - this.writer.write(`because of a constraint on this node:\n\n`); - this.writer.write(printNode(diagnostic.cause) + '\n'); - } - this.writer.dedent(); - break; - - default: - assertNever(diagnostic); - - } - - } - -} - -const DESCRIPTIONS: Partial> = { - [SyntaxKind.StringLiteral]: 'a string literal', - [SyntaxKind.Identifier]: "an identifier", - [SyntaxKind.RArrow]: "'->'", - [SyntaxKind.RArrowAlt]: '"=>"', - [SyntaxKind.VBar]: "'|'", - [SyntaxKind.Comma]: "','", - [SyntaxKind.Colon]: "':'", - [SyntaxKind.Integer]: "an integer", - [SyntaxKind.LParen]: "'('", - [SyntaxKind.RParen]: "')'", - [SyntaxKind.LBrace]: "'{'", - [SyntaxKind.RBrace]: "'}'", - [SyntaxKind.LBracket]: "'['", - [SyntaxKind.RBracket]: "']'", - [SyntaxKind.StructKeyword]: "'struct'", - [SyntaxKind.EnumKeyword]: "'enum'", - [SyntaxKind.MatchKeyword]: "'match'", - [SyntaxKind.TypeKeyword]: "'type'", - [SyntaxKind.IdentifierAlt]: 'an identifier starting with an uppercase letter', - [SyntaxKind.TupleExpression]: 'a tuple expression such as (1, 2)', - [SyntaxKind.ReferenceExpression]: 'a reference to some variable', - [SyntaxKind.NestedExpression]: 'an expression nested with parentheses', - [SyntaxKind.ConstantExpression]: 'a constant expression such as 1 or "foo"', - [SyntaxKind.StructExpression]: 'a struct expression', - [SyntaxKind.BlockStart]: 'the start of an indented block', - [SyntaxKind.BlockEnd]: 'the end of an indented block', - [SyntaxKind.LineFoldEnd]: 'the end of the current line-fold', - [SyntaxKind.EndOfFile]: 'end-of-file', -} - -function describeSyntaxKind(kind: SyntaxKind): string { - const desc = DESCRIPTIONS[kind]; - if (desc === undefined) { - throw new Error(`Could not describe SyntaxKind '${kind}'`); - } - return desc -} - -function describeExpected(expected: SyntaxKind[]) { - if (expected.length === 0) { - return 'nothing'; - } - let out = describeSyntaxKind(expected[0]); - if (expected.length === 1) { - return out; - } - for (let i = 1; i < expected.length-1; i++) { - const kind = expected[i]; - out += ', ' + describeSyntaxKind(kind); - } - out += ' or ' + describeSyntaxKind(expected[expected.length-1]) - return out; -} - -function describeActual(token: Token): string { - switch (token.kind) { - case SyntaxKind.BlockStart: - case SyntaxKind.BlockEnd: - case SyntaxKind.LineFoldEnd: - case SyntaxKind.EndOfFile: - return describeSyntaxKind(token.kind); - default: - return `'${token.text}'`; - } -} - -export function describeType(type: Type): string { - switch (type.kind) { - case TypeKind.Con: - { - return type.displayName; - } - case TypeKind.RegularVar: - return 'a' + type.id; - case TypeKind.RigidVar: - return type.displayName; - case TypeKind.Arrow: - { - return describeType(type.paramType) + ' -> ' + describeType(type.returnType); - } - case TypeKind.Field: - { - // let curr: Type = type; - // while (curr.kind === TypeKind.Field) { - // if (curr.name === labelTag) { - // return describeType(curr.type); - // } - // curr = curr.restType; - // } - let out = '{ ' + type.name + ': ' + describeType(type.type); - type = type.restType; - while (type.kind === TypeKind.Field) { - out += '; ' + type.name + ': ' + describeType(type.type); - type = type.restType; - } - if (type.kind !== TypeKind.Nil) { - out += '; ' + describeType(type); - } - return out + ' }' - } - case TypeKind.App: - { - return describeType(type.left) + ' ' + describeType(type.right); - } - case TypeKind.Nil: - return '{}'; - case TypeKind.Absent: - return 'Abs'; - case TypeKind.Present: - return describeType(type.type); - default: - assertNever(type); - } -} - -function describeKind(kind: Kind): string { - switch (kind.type) { - case KindType.Var: - return `k${kind.id}`; - case KindType.Arrow: - return describeKind(kind.left) + ' -> ' + describeKind(kind.right); - case KindType.Type: - return '*'; - default: - assertNever(kind); - } -} - -function getFirstNodeInTypeChain(type: Type): Syntax | null { - while (type !== type && (type.kind === TypeKind.RegularVar || type.node === null)) { - type = type.next; - } - return type.node; -} - -interface PrintExcerptOptions { - indentation?: string; - extraLineCount?: number; -} - -interface PrintNodeOptions extends PrintExcerptOptions { } - -function printNode(node: Syntax, options?: PrintNodeOptions): string { - const file = node.getSourceFile().getFile(); - return printExcerpt(file, node.getRange(), options); -} - -function printExcerpt(file: TextFile, span: TextRange, { indentation = ' ', extraLineCount = 2 } = {}): string { - - let out = ''; - - const content = file.text; - const startLine = Math.max(0, span.start.line-1-extraLineCount) - const lines = content.split('\n') - const endLine = Math.min(lines.length, (span.end !== undefined ? span.end.line : startLine) + extraLineCount) - const gutterWidth = Math.max(2, countDigits(endLine+1)) - - for (let i = startLine; i < endLine; i++) { - - const line = lines[i]; - - let j = firstIndexOfNonEmpty(line); - - out += indentation + ' ' + ANSI_FG_BLACK + ANSI_BG_WHITE + ' '.repeat(gutterWidth-countDigits(i+1))+(i+1).toString() + ANSI_RESET + ' ' + line + '\n' - - const gutter = indentation + ' ' + ANSI_FG_BLACK + ANSI_BG_WHITE + ' '.repeat(gutterWidth) + ANSI_RESET + ' ' - - let mark: number; - let skip: number; - - if (i === span.start.line-1 && i === span.end.line-1) { - skip = span.start.column-1; - mark = span.end.column-span.start.column; - } else if (i === span.start.line-1) { - skip = span.start.column-1; - mark = line.length-span.start.column+1; - } else if (i === span.end.line-1) { - skip = 0; - mark = span.end.column-1; - } else if (i > span.start.line-1 && i < span.end.line-1) { - skip = 0; - mark = line.length; - } else { - continue; - } - - if (j <= skip) { - j = 0; - } - - out += gutter + ' '.repeat(j+skip) + ANSI_FG_RED + '~'.repeat(mark-j) + ANSI_RESET + '\n' - - } - - return out; -} - -function firstIndexOfNonEmpty(str: string) { - let j = 0; - for (; j < str.length; j++) { - const ch = str[j]; - if (ch !== ' ' && ch !== '\t') { - break; - } - } - return j -} - diff --git a/bootstrap/js/compiler/src/emitter.ts b/bootstrap/js/compiler/src/emitter.ts deleted file mode 100644 index 8999d2e8e..000000000 --- a/bootstrap/js/compiler/src/emitter.ts +++ /dev/null @@ -1,201 +0,0 @@ -import { Syntax, SyntaxKind } from "./cst"; -import { IndentWriter, assertNever } from "./util"; - -export class Emitter { - - public constructor( - public writer: IndentWriter, - ) { - - } - - public emit(node: Syntax): void { - - switch (node.kind) { - - case SyntaxKind.ModuleDeclaration: - this.writer.write(`mod ${node.name.text}`); - if (node.elements === null) { - this.writer.write('\n'); - break; - } - this.writer.write('.\n'); - this.writer.indent(); - for (const element of node.elements) { - this.emit(element); - } - this.writer.dedent(); - break; - - case SyntaxKind.ReferenceExpression: - for (const [name, _dot] of node.modulePath) { - this.writer.write(name.text); - this.writer.write('.'); - } - this.writer.write(node.name.text); - break; - - case SyntaxKind.CallExpression: - this.emit(node.func); - for (const arg of node.args) { - this.writer.write(' '); - this.emit(arg); - } - break; - - case SyntaxKind.ReferenceTypeExpression: - for (const [name, _dot] of node.modulePath) { - this.writer.write(name.text); - this.writer.write('.'); - } - this.writer.write(node.name.text); - break; - - case SyntaxKind.StructExpressionField: - this.writer.write(node.name.text); - this.writer.write(' = '); - this.emit(node.expression); - break; - - case SyntaxKind.StructExpression: - this.writer.write('{ '); - for (const member of node.members) { - this.emit(member); - this.writer.write(', '); - } - this.writer.write(' }'); - break; - - case SyntaxKind.ConstantExpression: - this.writer.write(node.token.text); - break; - - case SyntaxKind.FunctionExpression: - this.writer.write('\\'); - for (const param of node.params) { - this.emit(param); - this.writer.write(' '); - } - this.emit(node.body); - break; - - case SyntaxKind.ArrowTypeExpression: - for (const typeExpr of node.paramTypeExprs) { - this.emit(typeExpr); - this.writer.write(' -> '); - } - this.emit(node.returnTypeExpr); - break; - - case SyntaxKind.VarTypeExpression: - this.writer.write(node.name.text); - break; - - case SyntaxKind.PlainParam: - this.emit(node.pattern); - break; - - case SyntaxKind.NamedPattern: - this.writer.write(node.name.text); - break; - - case SyntaxKind.ExpressionStatement: - this.emit(node.expression); - this.writer.write('\n'); - break; - - case SyntaxKind.SourceFile: - for (const element of node.elements) { - this.emit(element); - } - break; - - case SyntaxKind.TypeAssert: - this.writer.write(': '); - this.emit(node.typeExpression); - break; - - case SyntaxKind.ExprBody: - this.writer.write(node.equals.text); - this.writer.write(' '); - this.emit(node.expression); - break - - case SyntaxKind.BlockBody: - this.writer.write('.\n'); - this.writer.indent(); - for (const element of node.elements) { - this.emit(element); - } - this.writer.dedent(); - break; - - case SyntaxKind.LetDeclaration: - if (node.pubKeyword) { - this.writer.write('pub '); - } - this.writer.write('let '); - if (node.mutKeyword) { - this.writer.write(' mut '); - } - this.emit(node.pattern); - this.writer.write(' '); - for (const param of node.params) { - this.emit(param); - this.writer.write(' '); - } - if (node.typeAssert) { - this.emit(node.typeAssert); - this.writer.write(' '); - } - if (node.body) { - this.emit(node.body); - } - this.writer.write('\n\n'); - break; - - case SyntaxKind.ClassConstraint: - this.writer.write(node.name.text); - for (const type of node.types) { - this.writer.write(' '); - this.emit(type); - } - break; - - case SyntaxKind.ClassDeclaration: - if (node.pubKeyword) { - this.writer.write('pub '); - } - this.writer.write(`class `); - if (node.constraintClause) { - for (const constraint of node.constraintClause.constraints) { - this.emit(constraint); - this.writer.write(`, `); - } - this.writer.write(' => '); - } - this.emit(node.name); - for (const type of node.types) { - this.writer.write(' '); - this.emit(type); - } - if (node.elements !== null) { - this.writer.write('.\n'); - this.writer.indent(); - for (const element of node.elements) { - this.emit(element); - } - this.writer.dedent(); - } - break; - - default: - assertNever(node); - - - } - - } - -} - diff --git a/bootstrap/js/compiler/src/index.ts b/bootstrap/js/compiler/src/index.ts deleted file mode 100644 index f5a80e023..000000000 --- a/bootstrap/js/compiler/src/index.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { SourceFile, TextFile } from "./cst"; -import { Diagnostics, UnexpectedCharDiagnostic, UnexpectedTokenDiagnostic } from "./diagnostics"; -import { ParseError, Parser } from "./parser"; -import { Punctuator, ScanError, Scanner } from "./scanner"; - -export function parseSourceFile(file: TextFile, diagnostics: Diagnostics): SourceFile | null { - const scanner = new Scanner(file.text, diagnostics, file); - const punctuated = new Punctuator(scanner); - const parser = new Parser(file, punctuated); - let sourceFile; - try { - sourceFile = parser.parseSourceFile(); - } catch (error) { - if (error instanceof ParseError) { - diagnostics.add(new UnexpectedTokenDiagnostic(error.file, error.actual, error.expected)); - return null; - } - if (error instanceof ScanError) { - diagnostics.add(new UnexpectedCharDiagnostic(error.file, error.position, error.actual)); - return null; - } - throw error; - } - sourceFile.setParents(); - return sourceFile; -} - -export * from "./util" -export * from "./diagnostics" -export * from "./scanner" -export * from "./parser" -export * from "./cst" -export * from "./analysis" -export * from "./checker" -export * from "./program" - diff --git a/bootstrap/js/compiler/src/js.ts b/bootstrap/js/compiler/src/js.ts deleted file mode 100644 index d700c5946..000000000 --- a/bootstrap/js/compiler/src/js.ts +++ /dev/null @@ -1,196 +0,0 @@ - -import type stream from "stream" -import { IndentWriter } from "./util"; - -export const enum JSNodeKind { - - // Patterns - BindPattern, - ArrayPattern, - ObjectPattern, - - // Expressions - ReferenceExpression, - CallExpression, - FunctionExpression, - MemberExpression, - IndexExpression, - - // Statements - ExpressionStatement, - ReturnStatement, - - // Declarations - FunctionDeclaration, - VariableDeclaration, - - // Other nodes - Program, -} - -abstract class JSNodeBase { - - public abstract readonly kind: JSNodeKind; - - public emit(out: stream.Writable): void { - const emitter = new JSEmitter(out); - emitter.emit(this as unknown as JSNode); - } - -} - -export class JSBindPattern extends JSNodeBase { - - public readonly kind = JSNodeKind.BindPattern; - - public constructor( - public name: string, - ) { - super(); - } - -} - -export type JSPattern - = JSBindPattern - -export class JSReferenceExpression extends JSNodeBase { - - public kind = JSNodeKind.ReferenceExpression; - - public constructor( - public name: string, - ) { - super(); - } - -} - -export class JSCallExpression extends JSNodeBase { - - public readonly kind = JSNodeKind.CallExpression; - - public constructor( - public operator: JSExpression, - public args: JSExpression[], - ) { - super(); - } - -} - -export type JSExpression - = JSReferenceExpression - | JSCallExpression - -export class JSExpressionStatement extends JSNodeBase { - - public readonly kind = JSNodeKind.ExpressionStatement; - - public constructor( - public expression: JSExpression, - ) { - super(); - } - -} - -export class JSReturnStatement extends JSNodeBase { - - public readonly kind = JSNodeKind.ReturnStatement; - - public constructor( - public value: JSExpression | null, - ) { - super(); - } - -} - -export type JSStatement - = JSExpressionStatement - | JSReturnStatement - -export const enum JSDeclarationFlags { - IsExported = 1, -} - -export type JSFunctionElement - = JSDeclaration - | JSStatement - -export class JSFunctionDeclaration extends JSNodeBase { - - public readonly kind = JSNodeKind.FunctionDeclaration; - - public constructor( - public flags: JSDeclarationFlags, - public name: string, - public params: JSPattern[], - public body: JSFunctionElement[], - ) { - super(); - } - -} - -export enum JSVarType { - Var, - Const, - Let, -} - -export class JSVariableDeclaration extends JSNodeBase { - - public readonly kind = JSNodeKind.VariableDeclaration; - - public constructor( - public flags: JSDeclarationFlags, - public varType: JSVarType, - public pattern: JSPattern, - public value: JSExpression | null, - ) { - super(); - } - -} - -export type JSDeclaration - = JSFunctionDeclaration - | JSVariableDeclaration - -export type JSSourceElement - = JSStatement - | JSDeclaration - -export class JSProgram extends JSNodeBase { - - public readonly kind = JSNodeKind.Program; - - public constructor( - public elements: JSSourceElement[], - ) { - super(); - } - -} - -export type JSNode - = JSStatement - | JSDeclaration - | JSExpression - | JSPattern - | JSProgram - -export class JSEmitter { - - private writer: IndentWriter; - - public constructor(out: stream.Writable) { - this.writer = new IndentWriter(out); - } - - public emit(node: JSNode) { - } - -} diff --git a/bootstrap/js/compiler/src/parser.ts b/bootstrap/js/compiler/src/parser.ts deleted file mode 100644 index 4b02fd6de..000000000 --- a/bootstrap/js/compiler/src/parser.ts +++ /dev/null @@ -1,1376 +0,0 @@ - -import { warn } from "console"; -import { - ReferenceTypeExpression, - SourceFile, - SourceFileElement, - StructDeclaration, - StructDeclarationField, - SyntaxKind, - Token, - TokenKind, - Expression, - TypeExpression, - ConstantExpression, - ReferenceExpression, - Dot, - Identifier, - TupleExpression, - PrefixExpression, - ExpressionStatement, - ImportDeclaration, - Param, - Pattern, - NamedPattern, - LetDeclaration, - TypeAssert, - ExprBody, - BlockBody, - NestedExpression, - NamedTuplePattern, - StructPattern, - VariadicStructPatternElement, - PunnedStructPatternField, - StructPatternField, - TuplePattern, - InfixExpression, - TextFile, - CallExpression, - LetBodyElement, - ReturnStatement, - StructExpression, - StructExpressionField, - PunnedStructExpressionField, - IfStatementCase, - IfStatement, - MemberExpression, - IdentifierAlt, - ArrowTypeExpression, - EnumDeclarationStructElement, - EnumDeclaration, - EnumDeclarationTupleElement, - VarTypeExpression, - TypeDeclaration, - AppTypeExpression, - NestedPattern, - NestedTypeExpression, - MatchArm, - MatchExpression, - LiteralPattern, - DisjunctivePattern, - TupleTypeExpression, - ModuleDeclaration, - isExprOperator, - ClassConstraint, - ClassDeclaration, - ClassKeyword, - InstanceDeclaration, - ClassConstraintClause, - AssignStatement, - ForallTypeExpression, - TypeExpressionWithConstraints, - Annotation, - TypeAnnotation, - Annotations, - ExprOperator, - Integer, - InstanceParam, - PlainParam, - InstanceTypeExpression, -} from "./cst" -import { Stream } from "./util"; -import { wrap } from "module"; - -export class ParseError extends Error { - - public constructor( - public file: TextFile, - public actual: Token, - public expected: SyntaxKind[], - ) { - super(`Uncaught parse error`); - } - -} - -const enum OperatorMode { - None = 0, - Prefix = 1, - InfixL = 2, - InfixR = 4, - Infix = 6, - Suffix = 8, -} - -interface OperatorInfo { - name: string, - mode: OperatorMode, - precedence: number, -} - -const EXPR_OPERATOR_TABLE: Array<[string, OperatorMode, number]> = [ - ["**", OperatorMode.InfixR, 11], - ["*", OperatorMode.InfixL, 8], - ["/", OperatorMode.InfixL, 8], - ["+", OperatorMode.InfixL, 7], - ["-", OperatorMode.InfixL, 7], - ["<", OperatorMode.InfixL, 6], - [">", OperatorMode.InfixL, 6], - ["<=", OperatorMode.InfixL, 5], - [">=", OperatorMode.InfixL, 5], - ["==", OperatorMode.InfixL, 5], - ["!=", OperatorMode.InfixL, 5], - ["<*", OperatorMode.InfixL, 4], - [":", OperatorMode.InfixL, 3], - ["<|>", OperatorMode.InfixL, 2], - ["", OperatorMode.InfixL, 1], - ["$", OperatorMode.InfixR, 0] -]; - -export class Parser { - - private prefixExprOperators = new Set(); - private binaryExprOperators = new Map(); - private suffixExprOperators = new Set(); - - public constructor( - public file: TextFile, - public tokens: Stream, - ) { - for (const [name, mode, precedence] of EXPR_OPERATOR_TABLE) { - this.binaryExprOperators.set(name, { name, mode, precedence }); - } - } - - private getToken(): Token { - return this.tokens.get(); - } - - private peekToken(offset = 1): Token { - return this.tokens.peek(offset); - } - - private assertToken(token: Token, expectedKind: K): asserts token is Token & { kind: K } { - if (token.kind !== expectedKind) { - this.raiseParseError(token, [ expectedKind ]); - } - } - - private expectToken(expectedKind: K): Token & { kind: K } { - const token = this.getToken(); - if (token.kind !== expectedKind) { - this.raiseParseError(token, [ expectedKind ]) - } - return token as Token & { kind: K }; - } - - private raiseParseError(actual: Token, expected: SyntaxKind[]): never { - throw new ParseError(this.file, actual, expected); - } - - private peekTokenAfterModifiers(): Token { - let t0; - for (let i = 1;;i++) { - t0 = this.peekToken(i); - if (t0.kind !== SyntaxKind.PubKeyword) { - break; - } - } - return t0; - } - - public parseReferenceTypeExpression(): ReferenceTypeExpression { - const modulePath = []; - for (;;) { - const t1 = this.peekToken(1); - const t2 = this.peekToken(2); - if (t1.kind !== SyntaxKind.IdentifierAlt || t2.kind !== SyntaxKind.Dot) { - break; - } - this.getToken(); - this.getToken(); - modulePath.push([t1, t2] as [IdentifierAlt, Dot]); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - return new ReferenceTypeExpression(modulePath, name); - } - - public parseVarTypeExpression(): VarTypeExpression { - const name = this.expectToken(SyntaxKind.Identifier); - return new VarTypeExpression(name); - } - - public parsePrimitiveTypeExpression(): TypeExpression { - const t0 = this.peekToken(1); - const t1 = this.peekToken(2); - if (t0.kind === SyntaxKind.LBrace && t1.kind === SyntaxKind.LBrace) { - this.getToken(); - this.getToken(); - let name = null; - let colon = null; - const t2 = this.peekToken(2); - if (t2.kind === SyntaxKind.Colon) { - name = this.expectToken(SyntaxKind.Identifier); - this.getToken(); - colon = t2; - } - const typeExpr = this.parseTypeExpression(); - const t3 = this.expectToken(SyntaxKind.RBrace); - const t4 = this.expectToken(SyntaxKind.RBrace); - return new InstanceTypeExpression(t0, t1, name, colon, typeExpr, t3, t4); - } - switch (t0.kind) { - case SyntaxKind.Identifier: - return this.parseVarTypeExpression(); - case SyntaxKind.IdentifierAlt: - return this.parseReferenceTypeExpression(); - case SyntaxKind.LParen: - { - this.getToken(); - const elements = []; - let rparen; - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.RParen) { - this.getToken(); - rparen = t2; - break; - } - const typeExpr = this.parseTypeExpression(); - elements.push(typeExpr); - const t3 = this.getToken(); - if (t3.kind === SyntaxKind.RParen) { - rparen = t3; - break; - } else if (t3.kind === SyntaxKind.Comma) { - continue; - } else { - this.raiseParseError(t3, [ SyntaxKind.Comma, SyntaxKind.RParen ]); - } - } - if (elements.length === 1) { - return new NestedTypeExpression(t0, elements[0], rparen); - } - return new TupleTypeExpression(t0, elements, rparen); - } - default: - this.raiseParseError(t0, [ SyntaxKind.IdentifierAlt ]); - } - } - - private parseAppTypeExpressionOrBelow(): TypeExpression { - const operator = this.parsePrimitiveTypeExpression(); - const args = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.RParen - || t1.kind === SyntaxKind.RBrace - || t1.kind === SyntaxKind.RBracket - || t1.kind === SyntaxKind.Comma - || t1.kind === SyntaxKind.Equals - || t1.kind === SyntaxKind.BlockStart - || t1.kind === SyntaxKind.LineFoldEnd - || t1.kind === SyntaxKind.RArrow) { - break; - } - args.push(this.parsePrimitiveTypeExpression()); - } - if (args.length === 0) { - return operator; - } - return new AppTypeExpression(operator, args); - } - - public parseTypeExpressionWithConstraints(): TypeExpression { - if (!this.lookaheadHasClassConstraints()) { - return this.parseArrowTypeExpression(); - } - const constraints = []; - let rarrowAlt; - for (;;) { - const constraint = this.parseClassConstraint(); - constraints.push(constraint); - const t1 = this.getToken(); - if (t1.kind === SyntaxKind.RArrowAlt) { - rarrowAlt = t1; - break; - } else if (t1.kind !== SyntaxKind.Comma) { - this.raiseParseError(t1, [ SyntaxKind.RArrowAlt, SyntaxKind.Comma ]); - } - } - const type = this.parseArrowTypeExpression(); - return new TypeExpressionWithConstraints(constraints, rarrowAlt, type); - } - - public parseTypeExpression(): TypeExpression { - const t0 = this.peekToken(); - switch (t0.kind) { - case SyntaxKind.ForallKeyword: - { - this.getToken(); - let dot; - const typeVarExps = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.Dot) { - dot = t1; - this.getToken(); - break; - } - typeVarExps.push(this.parseVarTypeExpression()); - } - return new ForallTypeExpression( - t0, - typeVarExps, - dot, - this.parseTypeExpression(), - ); - } - default: - return this.parseTypeExpressionWithConstraints(); - } - } - - public parseArrowTypeExpression(): TypeExpression { - let returnType = this.parseAppTypeExpressionOrBelow(); - const paramTypes = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind !== SyntaxKind.RArrow) { - break; - } - this.getToken(); - paramTypes.push(returnType); - returnType = this.parseAppTypeExpressionOrBelow(); - } - if (paramTypes.length === 0) { - return returnType; - } - return new ArrowTypeExpression(paramTypes, returnType); - } - - private parseAnnotations(inline = true): Annotation[] { - const annotations = []; - for (;;) { - const t0 = this.tokens.peek(); - if (t0.kind !== SyntaxKind.At) { - break; - } - this.tokens.get(); - const t1 = this.tokens.peek(); - if (t1.kind === SyntaxKind.Colon) { - this.tokens.get(); - let typeExpr; - if (inline) { - typeExpr = this.parsePrimitiveTypeExpression(); - } else { - typeExpr = this.parseTypeExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - } - annotations.push(new TypeAnnotation(t0, t1, typeExpr)); - continue; - } - let expr; - if (inline) { - expr = this.parsePrimitiveExpression(); - } else { - expr = this.parseExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - } - annotations.push(new ExprAnnotation(t0, expr)); - } - return annotations; - } - - public parseConstantExpression(annotations?: Annotation[]): ConstantExpression { - if (annotations === undefined) { - annotations = this.parseAnnotations(); - } - const token = this.getToken() - if (token.kind !== SyntaxKind.StringLiteral - && token.kind !== SyntaxKind.Integer) { - this.raiseParseError(token, [ SyntaxKind.StringLiteral, SyntaxKind.Integer ]) - } - return new ConstantExpression(annotations, token); - } - - public parseReferenceExpression(annotations?: Annotation[]): ReferenceExpression { - if (annotations === undefined) { - annotations = this.parseAnnotations(); - } - const modulePath: Array<[IdentifierAlt, Dot]> = []; - for (;;) { - const t0 = this.peekToken(1); - const t1 = this.peekToken(2); - if (t0.kind !== SyntaxKind.IdentifierAlt || t1.kind !== SyntaxKind.Dot) { - break; - } - this.getToken(); - this.getToken(); - modulePath.push([t0, t1]); - } - const name = this.getToken(); - if (name.kind !== SyntaxKind.Identifier && name.kind !== SyntaxKind.IdentifierAlt) { - this.raiseParseError(name, [ SyntaxKind.Identifier, SyntaxKind.IdentifierAlt ]); - } - return new ReferenceExpression(annotations, modulePath, name); - } - - private parseExpressionWithParens(annotations?: Annotation[]): Expression { - if (annotations === undefined) { - annotations = this.parseAnnotations(); - } - const elements = []; - const lparen = this.expectToken(SyntaxKind.LParen) - let rparen; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.RParen) { - rparen = t1; - this.getToken(); - break; - } - const expression = this.parseExpression(); - elements.push(expression); - const t2 = this.getToken(); - if (t2.kind === SyntaxKind.Comma) { - continue; - } else if (t2.kind === SyntaxKind.RParen) { - rparen = t2; - break; - } else { - this.raiseParseError(t2, [ SyntaxKind.Comma, SyntaxKind.RParen ]); - } - } - if (elements.length === 1) { - return new NestedExpression(annotations, lparen, elements[0], rparen); - } - return new TupleExpression(annotations, lparen, elements, rparen); - } - - public parseMatchExpression(annotations?: Annotation[]): MatchExpression { - if (annotations === undefined) { - annotations = this.parseAnnotations(); - } - const t0 = this.expectToken(SyntaxKind.MatchKeyword); - let expression = null - const t1 = this.peekToken(); - if (t1.kind !== SyntaxKind.BlockStart) { - expression = this.parseExpression(); - } - this.expectToken(SyntaxKind.BlockStart); - const arms = []; - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - const pattern = this.parsePattern(); - const rarrowAlt = this.expectToken(SyntaxKind.RArrowAlt); - const expression = this.parseExpression(); - arms.push(new MatchArm(pattern, rarrowAlt, expression)); - this.expectToken(SyntaxKind.LineFoldEnd); - } - return new MatchExpression(annotations, t0, expression, arms); - } - - private parsePrimitiveExpression(): Expression { - const annotations = this.parseAnnotations(); - const t0 = this.peekToken(); - switch (t0.kind) { - case SyntaxKind.LParen: - return this.parseExpressionWithParens(annotations); - case SyntaxKind.Identifier: - case SyntaxKind.IdentifierAlt: - return this.parseReferenceExpression(annotations); - case SyntaxKind.Integer: - case SyntaxKind.StringLiteral: - return this.parseConstantExpression(annotations); - case SyntaxKind.MatchKeyword: - return this.parseMatchExpression(annotations); - case SyntaxKind.LBrace: - { - this.getToken(); - const fields = []; - let rbrace; - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.RBrace) { - this.getToken(); - rbrace = t2; - break; - } - let field; - const t3 = this.getToken(); - if (t3.kind === SyntaxKind.Identifier) { - const t4 = this.peekToken(); - if (t4.kind === SyntaxKind.Equals) { - this.getToken(); - const expression = this.parseExpression(); - field = new StructExpressionField(t3, t4, expression); - } else { - field = new PunnedStructExpressionField(t3); - } - } else { - // TODO add spread fields - this.raiseParseError(t3, [ SyntaxKind.Identifier ]); - } - fields.push(field); - const t5 = this.peekToken(); - if (t5.kind === SyntaxKind.Comma) { - this.getToken(); - continue; - } else if (t5.kind === SyntaxKind.RBrace) { - this.getToken(); - rbrace = t5; - break; - } - } - return new StructExpression(annotations, t0, fields, rbrace); - } - default: - this.raiseParseError(t0, [ - SyntaxKind.TupleExpression, - SyntaxKind.NestedExpression, - SyntaxKind.ConstantExpression, - SyntaxKind.ReferenceExpression - ]); - } - } - - private tryParseMemberExpression(): Expression { - const expression = this.parsePrimitiveExpression(); - const path: Array<[Dot, Identifier | Integer]> = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind !== SyntaxKind.Dot) { - break; - } - this.getToken(); - const t2 = this.getToken(); - if (t2.kind !== SyntaxKind.Identifier && t2.kind !== SyntaxKind.Integer) { - this.raiseParseError(t2, [ SyntaxKind.Identifier, SyntaxKind.Integer ]); - } - path.push([t1, t2]); - } - if (path.length === 0) { - return expression; - } - const annotations = expression.annotations; - expression.annotations = []; - return new MemberExpression(annotations, expression, path); - } - - private tryParseCallExpression(): Expression { - const func = this.tryParseMemberExpression(); - const args = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.LineFoldEnd - || t1.kind === SyntaxKind.RBrace - || t1.kind === SyntaxKind.RBracket - || t1.kind === SyntaxKind.RParen - || t1.kind === SyntaxKind.BlockStart - || t1.kind === SyntaxKind.Comma - || isExprOperator(t1)) { - break; - } - args.push(this.tryParseMemberExpression()); - } - if (args.length === 0) { - return func - } - const annotations = func.annotations; - func.annotations = []; - return new CallExpression(annotations, func, args); - } - - private parseUnaryExpression(): Expression { - let result = this.tryParseCallExpression() - const prefixes: Array<[Annotations, ExprOperator]> = []; - for (;;) { - const annotations = this.parseAnnotations(); - const t0 = this.peekToken(); - if (!isExprOperator(t0)) { - break; - } - if (!this.prefixExprOperators.has(t0.text)) { - break; - } - prefixes.push([annotations, t0]); - this.getToken() - } - for (let i = prefixes.length-1; i >= 0; i--) { - const [annotations, operator] = prefixes[i]; - result = new PrefixExpression(annotations, operator, result); - } - return result; - } - - private parseBinaryOperatorAfterExpr(lhs: Expression, minPrecedence: number) { - for (;;) { - const t0 = this.peekToken(); - if (!isExprOperator(t0)) { - break; - } - const info0 = this.binaryExprOperators.get(t0.text); - if (info0 === undefined || info0.precedence < minPrecedence) { - break; - } - this.getToken(); - let rhs = this.parseUnaryExpression(); - for (;;) { - const t1 = this.peekToken(); - if (!isExprOperator(t1)) { - break; - } - const info1 = this.binaryExprOperators.get(t1.text); - if (info1 === undefined - || info1.precedence < info0.precedence - || (info1.precedence === info0.precedence && (info1.mode & OperatorMode.InfixR) === 0)) { - break; - } - rhs = this.parseBinaryOperatorAfterExpr(rhs, info0.precedence); - } - const annotations = lhs.annotations; - lhs.annotations = []; - lhs = new InfixExpression(annotations, lhs, t0, rhs); - } - return lhs; - } - - public parseExpression(): Expression { - const lhs = this.parseUnaryExpression(); - return this.parseBinaryOperatorAfterExpr(lhs, 0); - } - - public parseTypeDeclaration(): TypeDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - if (t0.kind !== SyntaxKind.TypeKeyword) { - this.raiseParseError(t0, [ SyntaxKind.TypeKeyword ]); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const typeVars = []; - let t1 = this.getToken(); - while (t1.kind === SyntaxKind.Identifier) { - typeVars.push(t1); - t1 = this.getToken(); - } - if (t1.kind !== SyntaxKind.Equals) { - this.raiseParseError(t1, [ SyntaxKind.Equals ]); - } - const typeExpr = this.parseTypeExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - return new TypeDeclaration(pubKeyword, t0, name, typeVars, t1, typeExpr); - } - - public parseEnumDeclaration(): EnumDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind == SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - if (t0.kind !== SyntaxKind.EnumKeyword) { - this.raiseParseError(t0, [ SyntaxKind.EnumKeyword ]); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - let t1 = this.getToken(); - const varExps = []; - while (t1.kind === SyntaxKind.Identifier) { - varExps.push(t1); - t1 = this.getToken(); - } - let members = null; - if (t1.kind === SyntaxKind.BlockStart) { - members = []; - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const t3 = this.peekToken(); - let member; - if (t3.kind === SyntaxKind.BlockStart) { - this.getToken(); - const members = []; - for (;;) { - const name = this.expectToken(SyntaxKind.Identifier); - const colon = this.expectToken(SyntaxKind.Colon); - const typeExpr = this.parseTypeExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - members.push(new StructDeclarationField(name, colon, typeExpr)); - const t4 = this.peekToken(); - if (t4.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - } - member = new EnumDeclarationStructElement(name, t3, members); - } else { - const typeExps = []; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.LineFoldEnd) { - break; - } - const typeExpr = this.parsePrimitiveTypeExpression(); - typeExps.push(typeExpr); - } - member = new EnumDeclarationTupleElement(name, typeExps); - } - members.push(member); - this.expectToken(SyntaxKind.LineFoldEnd); - } - t1 = this.getToken(); - } - if (t1.kind !== SyntaxKind.LineFoldEnd) { - this.raiseParseError(t1, [ SyntaxKind.Identifier, SyntaxKind.BlockStart, SyntaxKind.LineFoldEnd ]); - } - return new EnumDeclaration(pubKeyword, t0, name, varExps, members); - } - - public parseStructDeclaration(): StructDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - if (t0.kind !== SyntaxKind.StructKeyword) { - this.raiseParseError(t0, [ SyntaxKind.StructKeyword ]); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - let t2 = this.getToken(); - const typeVars = []; - while (t2.kind === SyntaxKind.Identifier) { - typeVars.push(t2); - t2 = this.getToken(); - } - let members = null; - if (t2.kind === SyntaxKind.BlockStart) { - members = []; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - const name = this.expectToken(SyntaxKind.Identifier); - const colon = this.expectToken(SyntaxKind.Colon); - const typeExpr = this.parseTypeExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - const member = new StructDeclarationField(name, colon, typeExpr); - members.push(member); - } - t2 = this.getToken(); - } - if (t2.kind !== SyntaxKind.LineFoldEnd) { - this.raiseParseError(t2, [ SyntaxKind.LineFoldEnd, SyntaxKind.BlockStart, SyntaxKind.Identifier ]); - } - return new StructDeclaration(pubKeyword, t0, name, typeVars, members); - } - - private parsePatternStartingWithConstructor() { - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const patterns = []; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.RParen) { - break; - } - patterns.push(this.parsePattern()); - } - return new NamedTuplePattern(name, patterns); - } - - public parseTuplePattern(): TuplePattern { - const lparen = this.expectToken(SyntaxKind.LParen); - const elements = []; - let rparen; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.RParen) { - rparen = t1; - break; - } - elements.push(this.parsePattern()); - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.Comma) { - this.getToken(); - } else if (t2.kind === SyntaxKind.RParen) { - rparen = t2; - break; - } else { - this.raiseParseError(t2, [ SyntaxKind.Comma, SyntaxKind.RParen ]); - } - } - this.getToken(); - return new TuplePattern(lparen, elements, rparen); - } - - public parseStructPattern(): StructPattern { - const t2 = this.expectToken(SyntaxKind.LBrace); - const fields = []; - let rbrace; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.RBrace) { - this.getToken(); - rbrace = t3; - break; - } else if (t3.kind === SyntaxKind.Identifier) { - this.getToken(); - const t4 = this.peekToken(); - if (t4.kind === SyntaxKind.Equals) { - this.getToken(); - const pattern = this.parsePattern(); - fields.push(new StructPatternField(t3, t4, pattern)); - } else { - fields.push(new PunnedStructPatternField(t3)); - } - } else if (t3.kind === SyntaxKind.DotDot) { - this.getToken(); - const t4 = this.peekToken(); - let rest = null; - if (t4.kind !== SyntaxKind.RBrace) { - rest = this.parsePattern(); - } - fields.push(new VariadicStructPatternElement(t3, rest)); - } else { - this.raiseParseError(t3, [ SyntaxKind.Identifier, SyntaxKind.DotDot ]); - } - const t5 = this.peekToken(); - if (t5.kind === SyntaxKind.Comma) { - this.getToken(); - } else if (t5.kind === SyntaxKind.RBrace) { - this.getToken(); - rbrace = t5; - break; - } else { - this.raiseParseError(t5, [ SyntaxKind.Comma, SyntaxKind.RBrace ]); - } - } - return new StructPattern(t2, fields, rbrace); - } - - public parsePrimitivePattern(): Pattern { - const t0 = this.peekToken(); - switch (t0.kind) { - case SyntaxKind.LBrace: - return this.parseStructPattern(); - case SyntaxKind.LParen: - { - const t1 = this.peekToken(2); - if (t1.kind === SyntaxKind.IdentifierAlt) { - this.getToken(); - const pattern = this.parsePatternStartingWithConstructor(); - const t3 = this.expectToken(SyntaxKind.RParen); - return new NestedPattern(t0, pattern, t3); - } else { - return this.parseTuplePattern(); - } - } - case SyntaxKind.IdentifierAlt: - { - this.getToken(); - return new NamedTuplePattern(t0, []); - } - case SyntaxKind.Identifier: - { - this.getToken(); - return new NamedPattern(t0); - } - case SyntaxKind.StringLiteral: - case SyntaxKind.Integer: - { - this.getToken(); - return new LiteralPattern(t0); - } - default: - this.raiseParseError(t0, [ SyntaxKind.Identifier ]); - } - } - - public parsePattern(): Pattern { - let result: Pattern = this.parsePrimitivePattern(); - for (;;) { - const t1 = this.peekToken(); - if (t1.kind !== SyntaxKind.VBar) { - break; - } - this.getToken(); - const right = this.parsePrimitivePattern(); - result = new DisjunctivePattern(result, t1, right); - } - return result; - } - - public parseParam(): Param { - const t0 = this.peekToken(1); - const t1 = this.peekToken(2); - if (t0.kind === SyntaxKind.LBrace && t1.kind === SyntaxKind.LBrace) { - this.getToken(); - this.getToken(); - const name = this.expectToken(SyntaxKind.Identifier); - const t3 = this.expectToken(SyntaxKind.RBrace); - const t4 = this.expectToken(SyntaxKind.RBrace); - return new InstanceParam(t0, t1, name, t3, t4); - } - const pattern = this.parsePattern(); - return new PlainParam(pattern); - } - - private lookaheadIsAssignment(): boolean { - for (let i = 1;; i++) { - const t0 = this.peekToken(i); - switch (t0.kind) { - case SyntaxKind.LineFoldEnd: - case SyntaxKind.BlockStart: - return false; - case SyntaxKind.Assignment: - return true; - } - } - } - - public parseAssignStatement(): AssignStatement { - const pattern = this.parsePattern(); - const operator = this.expectToken(SyntaxKind.Assignment); - const expression = this.parseExpression(); - this.expectToken(SyntaxKind.LineFoldEnd); - return new AssignStatement(pattern, operator, expression); - } - - public parseLetBodyElement(): LetBodyElement { - const t0 = this.peekTokenAfterModifiers(); - switch (t0.kind) { - case SyntaxKind.LetKeyword: - return this.parseLetDeclaration(); - case SyntaxKind.ReturnKeyword: - return this.parseReturnStatement(); - case SyntaxKind.IfKeyword: - return this.parseIfStatement(); - default: - if (this.lookaheadIsAssignment()) { - return this.parseAssignStatement(); - } - // TODO convert parse errors to include LetKeyword and ReturnKeyword - return this.parseExpressionStatement(); - } - } - - private lookaheadHasClassConstraints(): boolean { - for (let i = 1;; i++) { - const token = this.peekToken(i); - switch (token.kind) { - case SyntaxKind.RArrowAlt: - return true; - case SyntaxKind.BlockStart: - case SyntaxKind.LineFoldEnd: - case SyntaxKind.Equals: - return false; - } - } - } - - public parseLetDeclaration(): LetDeclaration { - let t0 = this.getToken(); - let pubKeyword = null; - let mutKeyword = null; - let foreignKeyword = null; - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - if (t0.kind !== SyntaxKind.LetKeyword) { - this.raiseParseError(t0, [ SyntaxKind.LetKeyword ]); - } - let t1 = this.peekToken(); - if (t1.kind === SyntaxKind.ForeignKeyword) { - this.getToken(); - foreignKeyword = t1; - t1 = this.peekToken(); - } - if (t1.kind === SyntaxKind.MutKeyword) { - this.getToken(); - mutKeyword = t1; - t1 = this.peekToken(); - } - const t2 = this.peekToken(2); - const t3 = this.peekToken(3); - let pattern; - if (t1.kind === SyntaxKind.LParen && t2.kind === SyntaxKind.CustomOperator && t3.kind === SyntaxKind.RParen) { - this.getToken() - this.getToken(); - this.getToken(); - pattern = new NestedPattern(t1, new NamedPattern(t2), t3); - } else { - pattern = this.parsePattern(); - } - const params = []; - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.Colon - || t2.kind === SyntaxKind.BlockStart - || t2.kind === SyntaxKind.Equals - || t2.kind === SyntaxKind.LineFoldEnd) { - break; - } - params.push(this.parseParam()); - } - let typeAssert = null; - let t5 = this.getToken(); - if (t5.kind === SyntaxKind.Colon) { - const typeExpression = this.parseTypeExpression(); - typeAssert = new TypeAssert(t5, typeExpression); - t5 = this.getToken(); - } - let body = null; - switch (t5.kind) { - case SyntaxKind.BlockStart: - { - const elements = []; - for (;;) { - const t4 = this.peekToken(); - if (t4.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - elements.push(this.parseLetBodyElement()); - } - body = new BlockBody(t5, elements); - t5 = this.getToken(); - break; - } - case SyntaxKind.Equals: - { - const expression = this.parseExpression(); - body = new ExprBody(t5, expression); - t5 = this.getToken(); - break; - } - case SyntaxKind.LineFoldEnd: - break; - } - if (t5.kind !== SyntaxKind.LineFoldEnd) { - this.raiseParseError(t5, [ SyntaxKind.LineFoldEnd ]); - } - return new LetDeclaration( - pubKeyword, - t0, - foreignKeyword, - mutKeyword, - pattern, - params, - typeAssert, - body - ); - } - - public parseExpressionStatement(): ExpressionStatement { - const expression = this.parseExpression(); - this.expectToken(SyntaxKind.LineFoldEnd) - return new ExpressionStatement(expression); - } - - public parseIfStatement(): IfStatement { - const ifKeyword = this.expectToken(SyntaxKind.IfKeyword); - const test = this.parseExpression(); - const blockStart = this.expectToken(SyntaxKind.BlockStart); - const elements = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - elements.push(this.parseLetBodyElement()); - } - this.expectToken(SyntaxKind.LineFoldEnd); - const cases = []; - cases.push(new IfStatementCase(ifKeyword, test, blockStart, elements)); - for (;;) { - const t2 = this.peekToken(); - if (t2.kind === SyntaxKind.ElseKeyword) { - this.getToken(); - const blockStart = this.expectToken(SyntaxKind.BlockStart); - const elements = []; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - elements.push(this.parseLetBodyElement()); - } - this.expectToken(SyntaxKind.LineFoldEnd); - cases.push(new IfStatementCase(t2, null, blockStart, elements)); - break; - } else if (t2.kind === SyntaxKind.ElifKeyword) { - this.getToken(); - const test = this.parseExpression(); - const blockStart = this.expectToken(SyntaxKind.BlockStart); - for (;;) { - const t4 = this.peekToken(); - if (t4.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - elements.push(this.parseLetBodyElement()); - } - this.expectToken(SyntaxKind.LineFoldEnd); - cases.push(new IfStatementCase(t2, test, blockStart, elements)); - } else if (t2.kind === SyntaxKind.LineFoldEnd) { - this.getToken(); - break; - } else { - this.raiseParseError(t2, [ SyntaxKind.ElifKeyword, SyntaxKind.ElseKeyword, SyntaxKind.LineFoldEnd ]); - } - } - return new IfStatement(cases); - } - - public parseReturnStatement(): ReturnStatement { - const returnKeyword = this.expectToken(SyntaxKind.ReturnKeyword); - let expression = null; - const t1 = this.peekToken(); - if (t1.kind !== SyntaxKind.LineFoldEnd) { - expression = this.parseExpression(); - } - this.expectToken(SyntaxKind.LineFoldEnd); - return new ReturnStatement(returnKeyword, expression); - } - - public parseImportDeclaration(): ImportDeclaration { - const importKeyword = this.expectToken(SyntaxKind.ImportKeyword); - const importSource = this.expectToken(SyntaxKind.StringLiteral); - return new ImportDeclaration(importKeyword, importSource); - } - - public parseModuleDeclaration(): ModuleDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - if (t0.kind !== SyntaxKind.ModKeyword) { - this.raiseParseError(t0, [ SyntaxKind.ModKeyword ]); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const blockStart = this.expectToken(SyntaxKind.BlockStart); - const elements = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.BlockEnd) { - this.getToken(); - break; - } - elements.push(this.parseSourceFileElement()); - } - this.expectToken(SyntaxKind.LineFoldEnd); - return new ModuleDeclaration(pubKeyword, t0, name, blockStart, elements); - } - - private currentLineFoldHasToken(expectedKind: SyntaxKind): boolean { - for (let i = 1;; i++) { - const t0 = this.peekToken(i); - switch (t0.kind) { - case SyntaxKind.BlockStart: - case SyntaxKind.LineFoldEnd: - case SyntaxKind.EndOfFile: - return false; - case expectedKind: - return true; - } - } - } - - private parseClassConstraint(): ClassConstraint { - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const types = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.Comma - || t1.kind === SyntaxKind.RArrowAlt - || t1.kind === SyntaxKind.BlockStart - || t1.kind === SyntaxKind.LineFoldEnd) { - break; - } - types.push(this.parsePrimitiveTypeExpression()); - } - return new ClassConstraint(name, types); - } - - public parseInstanceDeclaration(): InstanceDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - this.assertToken(t0, SyntaxKind.InstanceKeyword); - let clause = null; - if (this.currentLineFoldHasToken(SyntaxKind.RArrowAlt)) { - let rarrowAlt; - const constraints = []; - for (;;) { - constraints.push(this.parseClassConstraint()); - const t2 = this.getToken(); - if (t2.kind === SyntaxKind.RArrowAlt) { - rarrowAlt = t2; - break; - } else if (t2.kind !== SyntaxKind.Comma) { - this.raiseParseError(t2, [ SyntaxKind.RArrowAlt, SyntaxKind.Comma ]) - } - } - clause = new ClassConstraintClause(constraints, rarrowAlt); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const types = []; - for (;;) { - const t3 = this.peekToken(); - if (t3.kind === SyntaxKind.BlockStart || t3.kind === SyntaxKind.LineFoldEnd) { - break; - } - const type = this.parseTypeExpression(); - types.push(type); - } - this.expectToken(SyntaxKind.BlockStart); - const elements = []; - loop: for (;;) { - const t4 = this.peekToken(); - let element; - switch (t4.kind) { - case SyntaxKind.BlockEnd: - this.getToken(); - break loop; - case SyntaxKind.LetKeyword: - element = this.parseLetDeclaration(); - break; - case SyntaxKind.TypeKeyword: - element = this.parseTypeDeclaration(); - break; - default: - this.raiseParseError(t4, [ SyntaxKind.LetKeyword, SyntaxKind.TypeKeyword, SyntaxKind.BlockEnd ]); - } - elements.push(element); - } - this.expectToken(SyntaxKind.LineFoldEnd); - return new InstanceDeclaration(pubKeyword, t0, clause, name, types, elements); - } - - public parseClassDeclaration(): ClassDeclaration { - let pubKeyword = null; - let t0 = this.getToken(); - if (t0.kind === SyntaxKind.PubKeyword) { - pubKeyword = t0; - t0 = this.getToken(); - } - this.assertToken(t0, SyntaxKind.ClassKeyword); - let clause = null; - if (this.currentLineFoldHasToken(SyntaxKind.RArrowAlt)) { - let rarrowAlt; - const constraints = []; - for (;;) { - constraints.push(this.parseClassConstraint()); - const t2 = this.getToken(); - if (t2.kind === SyntaxKind.RArrowAlt) { - rarrowAlt = t2; - break; - } else if (t2.kind !== SyntaxKind.Comma) { - this.raiseParseError(t2, [ SyntaxKind.RArrowAlt, SyntaxKind.Comma ]) - } - } - clause = new ClassConstraintClause(constraints, rarrowAlt); - } - const name = this.expectToken(SyntaxKind.IdentifierAlt); - const types = []; - for (;;) { - const t1 = this.peekToken(); - if (t1.kind === SyntaxKind.Identifier) { - const type = this.parseVarTypeExpression(); - types.push(type); - } else { - break; - } - } - this.expectToken(SyntaxKind.BlockStart); - const elements = []; - loop: for (;;) { - const t3 = this.peekToken(); - let element; - switch (t3.kind) { - case SyntaxKind.BlockEnd: - this.getToken(); - break loop; - case SyntaxKind.LetKeyword: - element = this.parseLetDeclaration(); - break; - case SyntaxKind.TypeKeyword: - element = this.parseTypeDeclaration(); - break; - default: - this.raiseParseError(t3, [ SyntaxKind.LetKeyword, SyntaxKind.TypeKeyword, SyntaxKind.BlockEnd ]); - } - elements.push(element); - } - this.expectToken(SyntaxKind.LineFoldEnd); - return new ClassDeclaration(pubKeyword, t0 as ClassKeyword, clause, name, types, elements); - } - - public parseSourceFileElement(): SourceFileElement { - const t0 = this.peekTokenAfterModifiers(); - switch (t0.kind) { - case SyntaxKind.LetKeyword: - return this.parseLetDeclaration(); - case SyntaxKind.ModKeyword: - return this.parseModuleDeclaration(); - case SyntaxKind.ImportKeyword: - return this.parseImportDeclaration(); - case SyntaxKind.StructKeyword: - return this.parseStructDeclaration(); - case SyntaxKind.InstanceKeyword: - return this.parseInstanceDeclaration(); - case SyntaxKind.ClassKeyword: - return this.parseClassDeclaration(); - case SyntaxKind.EnumKeyword: - return this.parseEnumDeclaration(); - case SyntaxKind.TypeKeyword: - return this.parseTypeDeclaration(); - case SyntaxKind.IfKeyword: - return this.parseIfStatement(); - default: - if (this.lookaheadIsAssignment()) { - return this.parseAssignStatement(); - } - return this.parseExpressionStatement(); - } - } - - public parseSourceFile(): SourceFile { - const elements = []; - let eof; - for (;;) { - const t0 = this.peekToken(); - if (t0.kind === SyntaxKind.EndOfFile) { - eof = t0; - break; - } - const element = this.parseSourceFileElement(); - elements.push(element); - } - return new SourceFile(this.file, elements, eof); - } - -} - diff --git a/bootstrap/js/compiler/src/passes/BoltToC.ts b/bootstrap/js/compiler/src/passes/BoltToC.ts deleted file mode 100644 index bbe410e00..000000000 --- a/bootstrap/js/compiler/src/passes/BoltToC.ts +++ /dev/null @@ -1,90 +0,0 @@ - -import { CBuiltinType, CBuiltinTypeKind, CCallExpr, CConstExpr, CDecl, CDir, CExpr, CExprStmt, CFuncDecl, CIncDir, CNode, CProgram, CRefExpr, CStmt } from "../c"; -import { Expression, Syntax, SyntaxKind } from "../cst"; -import type { Pass } from "../program"; -import { assert } from "../util"; - -interface Context { - body: CStmt[]; -} - -class BoltToC implements Pass { - - public apply(input: Syntax): CNode { - - assert(input.kind === SyntaxKind.SourceFile); - - const intType = new CBuiltinType(CBuiltinTypeKind.Int); - - const decls: (CDecl | CDir)[] = []; - - decls.push(new CIncDir("runtime.h")); - - const mainBody: CStmt[] = []; - - decls.push( - new CFuncDecl( - intType, - 'main', - [], - mainBody - ) - ); - - visit(input, { body: mainBody }); - - return new CProgram(decls); - - function visit(node: Syntax, context: Context): void { - - switch (node.kind) { - - case SyntaxKind.SourceFile: - { - for (const element of node.elements) { - visit(element, context); - } - break; - } - - case SyntaxKind.ExpressionStatement: - { - context.body.push( - new CExprStmt( - visitExpression(node.expression, context) - ) - ); - break; - } - - case SyntaxKind.LetDeclaration: - { - // TODO - break; - } - - } - - } - - function visitExpression(node: Expression, context: Context): CExpr { - switch (node.kind) { - case SyntaxKind.ReferenceExpression: - assert(node.modulePath.length === 0); - return new CRefExpr(node.name.text); - case SyntaxKind.CallExpression: - const operator = visitExpression(node.func, context); - const args = node.args.map(arg => visitExpression(arg, context)); - return new CCallExpr(operator, args); - case SyntaxKind.ConstantExpression: - return new CConstExpr(node.token.getValue()); - default: - throw new Error(`Unexpected ${node}`); - } - } - - } - -} - -export default BoltToC; diff --git a/bootstrap/js/compiler/src/passes/BoltToJS.ts b/bootstrap/js/compiler/src/passes/BoltToJS.ts deleted file mode 100644 index f322d6184..000000000 --- a/bootstrap/js/compiler/src/passes/BoltToJS.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Syntax } from "../cst"; -import { JSNode, JSProgram } from "../js"; -import type { Pass } from "../program"; - -export class BoltToJS implements Pass { - - public apply(input: Syntax): JSNode { - return new JSProgram([]); - } - -} - -export default BoltToJS; - diff --git a/bootstrap/js/compiler/src/passes/TypeclassDictPass.ts b/bootstrap/js/compiler/src/passes/TypeclassDictPass.ts deleted file mode 100644 index 529d5708b..000000000 --- a/bootstrap/js/compiler/src/passes/TypeclassDictPass.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { TypeExpression } from "../cst"; -import { - ExprBody, - NamedPattern, - LBrace, - RBrace, - LetKeyword, - LetDeclaration, - SourceFile, - Syntax, - SyntaxKind, - Identifier, - StructExpression, - StructExpressionField, - Equals, - InstanceDeclaration, - FunctionExpression, - Backslash, - canHaveInstanceDeclaration, - visitEachChild -} from "../cst"; -import { Pass } from "../program"; -import { assert } from "../util"; - -function encode(typeExpr: TypeExpression): string { - switch (typeExpr.kind) { - case SyntaxKind.ReferenceTypeExpression: - let out = ''; - if (typeExpr.modulePath.length > 0) { - out += '_xm'; - for (const [name, _dot] of typeExpr.modulePath) { - out += name + '_'; - } - } - return out + typeExpr.name.text; - default: - throw new Error(`Could not encode type.`) - } -} - -function lcfirst(text: string): string { - return text[0].toLowerCase() + text.substring(1); -} - -export class TypeclassDictPassing implements Pass { - - private mangleInstance(node: InstanceDeclaration): string { - return lcfirst(node.name.text) + '_' + node.types.map(encode).join(''); - } - - private visit(node: Syntax): Syntax { - if (canHaveInstanceDeclaration(node)) { - return visitEachChild(node, this.visit.bind(this)); - } - if (node.kind === SyntaxKind.InstanceDeclaration) { - const decl = new LetDeclaration( - node.pubKeyword, - new LetKeyword(), - null, - null, - new NamedPattern(new Identifier(null, this.mangleInstance(node))), - [], - null, // TODO - new ExprBody( - new Equals(), - new StructExpression( - [], - new LBrace(), - node.elements.map(element => { - assert(element.kind === SyntaxKind.LetDeclaration); - assert(element.pattern.kind === SyntaxKind.NamedPattern); - return new StructExpressionField( - new Identifier(null, element.pattern.name.text), - new Equals(), - new FunctionExpression([], new Backslash(), element.params, element.body!) - ); - }), - new RBrace(), - ) - ) - ); - return decl; - } - return node; - } - - public apply(input: SourceFile): SourceFile { - return this.visit(input) as SourceFile; - } - -} - - diff --git a/bootstrap/js/compiler/src/program.ts b/bootstrap/js/compiler/src/program.ts deleted file mode 100644 index 645fff343..000000000 --- a/bootstrap/js/compiler/src/program.ts +++ /dev/null @@ -1,77 +0,0 @@ -import path from "path"; -import fs from "fs" -import { parseSourceFile } from "."; -import { SourceFile, TextFile } from "./cst"; -import { ConsoleDiagnostics, Diagnostics } from "./diagnostics"; -import { Checker } from "./checker"; -import { Analyser } from "./analysis"; - -export interface Pass { - apply(input: In): Out; -} - -export interface Newable { - new (...args: any[]): T; -} - -type AnyPass = Pass; - -export enum TargetType { - Bolt, - C, - JS, - WebAssembly, - LLVM, -} - -export class PassManager { - - private registeredPasses: AnyPass[] = []; - - public add(pass: Newable) { - this.registeredPasses.push(new pass()); - } - - public apply(input: any): any { - for (const pass of this.registeredPasses) { - input = pass.apply(input); - } - return input; - } - -} - -export class Program { - - private sourceFilesByPath = new Map(); - - private analyser = new Analyser(); - - public constructor( - public fileNames: string[], - public diagnostics: Diagnostics = new ConsoleDiagnostics(), - ) { - for (const fileName of fileNames) { - const realPath = path.resolve(fileName); - const text = fs.readFileSync(realPath, 'utf-8'); - const file = new TextFile(fileName, text); - const sourceFile = parseSourceFile(file, diagnostics); - if (sourceFile !== null) { - this.sourceFilesByPath.set(realPath, sourceFile); - this.analyser.addSourceFile(sourceFile); - } - } - } - - public getSourceFiles(): Iterable { - return this.sourceFilesByPath.values(); - } - - public check(): void { - const checker = new Checker(this.analyser, this.diagnostics); - for (const sourceFile of this.getSourceFiles()) { - checker.check(sourceFile); - } - } - -} diff --git a/bootstrap/js/compiler/src/scanner.ts b/bootstrap/js/compiler/src/scanner.ts deleted file mode 100644 index 40d1e43b9..000000000 --- a/bootstrap/js/compiler/src/scanner.ts +++ /dev/null @@ -1,551 +0,0 @@ - -import { warn } from "console"; -import { - SyntaxKind, - Token, - Identifier, - StringLiteral, - EndOfFile, - BlockStart, - BlockEnd, - LineFoldEnd, - PubKeyword, - MutKeyword, - LetKeyword, - ImportKeyword, - TypeKeyword, - TextPosition, - Colon, - Comma, - Equals, - LParen, - RParen, - LBrace, - LBracket, - RBrace, - RBracket, - ReturnKeyword, - CustomOperator, - IdentifierAlt, - Integer, - TextFile, - Dot, - DotDot, - Assignment, - ElifKeyword, - ElseKeyword, - IfKeyword, - StructKeyword, - RArrow, - EnumKeyword, - MatchKeyword, - RArrowAlt, - VBar, - ForeignKeyword, - ModKeyword, - ClassKeyword, - InstanceKeyword, - Backslash, - ForallKeyword, - At, -} from "./cst" -import { Diagnostics } from "./diagnostics" -import { Stream, BufferedStream, assert } from "./util"; - -const EOF = '\uFFFF' - -function isUpper(ch: string): boolean { - return ch.toUpperCase() === ch; -} - -function isWhiteSpace(ch: string): boolean { - return /[\r\n\t ]/.test(ch); -} - -function isIdentPart(ch: string): boolean { - return /[a-zA-Z0-9_]/.test(ch); -} - -function isIdentStart(ch: string): boolean { - return /[a-zA-Z_]/.test(ch) -} - -function isDecimalDigit(ch: string): boolean { - return /[0-9]/.test(ch); -} - -function toDecimal(ch: string): number { - const code = ch.charCodeAt(0); - assert(code >= 48 && code <= 57); - return code - 48; -} - -function isOperatorPart(ch: string): boolean { - return /[+\-*\/%^&|$<>!?=]/.test(ch); -} - -export class ScanError extends Error { - - public constructor( - public file: TextFile, - public position: TextPosition, - public actual: string, - ) { - super(`Uncaught scanner error`); - } - -} - -export class Scanner extends BufferedStream { - - private textOffset = 0; - - public constructor( - public text: string, - public diagnostics: Diagnostics, - private file: TextFile, - public currPos: TextPosition = new TextPosition(0, 1, 1), - ) { - super(); - } - - private peekChar(offset = 1): string { - const i = this.textOffset + offset - 1; - return i < this.text.length ? this.text[i] : EOF; - } - - private getChar(): string { - let ch; - if (this.textOffset < this.text.length) { - ch = this.text[this.textOffset++]; - this.currPos.offset++; - } else { - ch = EOF; - } - if (ch === '\n') { - this.currPos.line++; - this.currPos.column = 1; - } else { - this.currPos.column++; - } - return ch; - } - - private takeWhile(pred: (ch: string) => boolean): string { - let out = '' - for (;;) { - const c0 = this.peekChar() - if (!pred(c0)) { - break; - } - this.getChar() - out += c0; - } - return out; - } - - private getCurrentPosition(): TextPosition { - return this.currPos.clone(); - } - - public read(): Token { - - let c0: string; - - // Skip whitespace and comments - for (;;) { - - for (;;) { - c0 = this.peekChar(); - if (isWhiteSpace(c0)) { - this.getChar(); - continue; - } - if (c0 === '#') { - const line = this.currPos.line; - this.getChar(); - for (;;) { - const c1 = this.peekChar(); - if (!isWhiteSpace(c1) || c1 === '\n' || c1 === EOF) { - break; - } - this.getChar(); - } - let text = ''; - for (;;) { - const c1 = this.getChar(); - if (c1 === '\n' || c1 === EOF) { - break; - } - text += c1; - } - if (text[0] === '@') { - const scanner = new Scanner(text, this.diagnostics, this.file, this.getCurrentPosition()); - this.file.comments.set(line, scanner.getAll()); - } - continue; - } - - // We failed to match a newline or line comment, so there's nothing to skip - break; - - } - - const startPos = this.getCurrentPosition(); - this.getChar(); - - switch (c0) { - - case '"': - { - let contents = ''; - let escaping = false; - for (;;) { - if (escaping) { - const startPos = this.getCurrentPosition(); - const c1 = this.getChar(); - switch (c1) { - case 'a': contents += '\a'; break; - case 'b': contents += '\b'; break; - case 'f': contents += '\f'; break; - case 'n': contents += '\n'; break; - case 'r': contents += '\r'; break; - case 't': contents += '\t'; break; - case 'v': contents += '\v'; break; - case '0': contents += '\0'; break; - case '\'': contents += '\''; break; - case '\"': contents += '\"'; break; - default: - throw new ScanError(this.file, startPos, c1); - } - escaping = false; - } else { - const c1 = this.getChar(); - if (c1 === '"') { - break; - } else { - contents += c1; - } - } - } - return new StringLiteral(startPos, contents); - } - - case EOF: - { - return new EndOfFile(startPos); - } - - case '@': return new At(startPos); - case '\\': return new Backslash(startPos); - case '(': return new LParen(startPos); - case ')': return new RParen(startPos); - case '[': return new LBracket(startPos); - case ']': return new RBracket(startPos); - case '{': return new LBrace(startPos); - case '}': return new RBrace(startPos); - case ',': return new Comma(startPos); - case ':': - const text = this.takeWhile(isOperatorPart); - if (text === '') { - return new Colon(startPos); - } else if (text === '=') { - return new Assignment(startPos, ':'); - } else { - throw new ScanError(this.file, startPos, ':' + text); - } - case '.': { - const dots = c0 + this.takeWhile(ch => ch === '.'); - if (dots === '.') { - return new Dot(startPos); - } else if (dots === '..') { - return new DotDot(startPos); - } else { - throw new ScanError(this.file, startPos, dots); - } - } - - case '+': - case '-': - case '*': - case '/': - case '%': - case '&': - case '^': - case '|': - case '$': - case '<': - case '>': - case '=': - case '!': - case '?': - { - const text = c0 + this.takeWhile(isOperatorPart); - if (text === '->') { - return new RArrow(startPos); - } else if (text === '=>') { - return new RArrowAlt(startPos); - } else if (text === '|') { - return new VBar(startPos); - } else if (text === '=') { - return new Equals(startPos); - } else if (text.endsWith('=') && text[text.length-2] !== '=') { - return new Assignment(startPos, text.substring(0, text.length-1)); - } else { - return new CustomOperator(startPos, text); - } - } - - case '0': - { - const c1 = this.peekChar(); - switch (c1) { - case 'x': // TODO - case 'o': // TODO - case 'b': // TODO - } - } - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - { - let value = BigInt(toDecimal(c0)); - for (;;) { - const c1 = this.peekChar(); - if (!isDecimalDigit(c1)) { - break; - } - this.getChar(); - value = value * BigInt(10) + BigInt(toDecimal(c1)); - } - return new Integer(startPos, value, 10); - } - - case 'a': - case 'b': - case 'c': - case 'd': - case 'e': - case 'f': - case 'g': - case 'h': - case 'i': - case 'j': - case 'k': - case 'l': - case 'm': - case 'n': - case 'o': - case 'p': - case 'q': - case 'r': - case 's': - case 't': - case 'u': - case 'v': - case 'w': - case 'x': - case 'y': - case 'z': - case 'A': - case 'B': - case 'C': - case 'D': - case 'E': - case 'F': - case 'G': - case 'H': - case 'I': - case 'J': - case 'K': - case 'L': - case 'M': - case 'N': - case 'O': - case 'P': - case 'Q': - case 'R': - case 'S': - case 'T': - case 'U': - case 'V': - case 'W': - case 'X': - case 'Y': - case 'Z': - case '_': - { - const text = c0 + this.takeWhile(isIdentPart); - switch (text) { - case 'trait': return new ClassKeyword(startPos); - case 'impl': return new InstanceKeyword(startPos); - case 'import': return new ImportKeyword(startPos); - case 'pub': return new PubKeyword(startPos); - case 'mut': return new MutKeyword(startPos); - case 'let': return new LetKeyword(startPos); - case 'import': return new ImportKeyword(startPos); - case 'return': return new ReturnKeyword(startPos); - case 'type': return new TypeKeyword(startPos); - case 'if': return new IfKeyword(startPos); - case 'else': return new ElseKeyword(startPos); - case 'elif': return new ElifKeyword(startPos); - case 'struct': return new StructKeyword(startPos); - case 'enum': return new EnumKeyword(startPos); - case 'match': return new MatchKeyword(startPos); - case 'foreign': return new ForeignKeyword(startPos); - case 'mod': return new ModKeyword(startPos); - case 'forall': return new ForallKeyword(startPos); - default: - if (isUpper(text[0])) { - return new IdentifierAlt(startPos, text); - } else { - return new Identifier(startPos, text); - } - } - } - - default: - - // Nothing matched, so the current character is unrecognisable - throw new ScanError(this.file, startPos, c0); - } - - } - - } - - public getAll(): Token[] { - const tokens = []; - for (;;) { - const t0 = this.get(); - if (t0.kind === SyntaxKind.EndOfFile) { - break; - } - tokens.push(t0); - } - return tokens; - } - -} - -const enum FrameType { - Block, - LineFold, - Fallthrough, -} - -const INIT_POS = new TextPosition(0, 0, 0); - -export class Punctuator extends BufferedStream { - - private referencePositions: TextPosition[] = [ INIT_POS ]; - - private frameTypes: FrameType[] = [ FrameType.Block ]; - - public constructor( - private tokens: Stream, - ) { - super(); - } - - public read(): Token { - - const t0 = this.tokens.peek(1); - - switch (t0.kind) { - case SyntaxKind.LBrace: - this.frameTypes.push(FrameType.Fallthrough); - break; - case SyntaxKind.EndOfFile: - { - if (this.frameTypes.length === 1) { - return t0; - } - const frameType = this.frameTypes.pop()!; - switch (frameType) { - case FrameType.LineFold: - return new LineFoldEnd(t0.getStartPosition()); - case FrameType.Block: - return new BlockEnd(t0.getStartPosition()); - } - } - } - - const refPos = this.referencePositions[this.referencePositions.length-1]; - const frameType = this.frameTypes[this.frameTypes.length-1]; - - switch (frameType) { - - case FrameType.Fallthrough: - { - if (t0.kind === SyntaxKind.RBrace) { - this.frameTypes.pop()!; - } - this.tokens.get(); - return t0; - } - - case FrameType.LineFold: - { - - // This important check verifies we're still inside the line-fold. If - // we aren't, we need to clean up the stack a bit and eventually return - // a token that indicates the line-fold ended. - if (t0.getStartLine() > refPos.line - && t0.getStartColumn() <= refPos.column) { - this.frameTypes.pop(); - this.referencePositions.pop(); - return new LineFoldEnd(t0.getStartPosition()); - } - - const t1 = this.tokens.peek(2); - if (t0.kind === SyntaxKind.Dot && t0.getEndLine() < t1.getStartLine()) { - this.tokens.get(); - this.frameTypes.push(FrameType.Block); - return new BlockStart(t0.getStartPosition()); - } - - // If we got here, this is an ordinary token that is part of the - // line-fold. Make sure to consume it and return it to the caller. - this.tokens.get(); - return t0; - } - - case FrameType.Block: - { - - if (t0.getStartColumn() <= refPos.column) { - - // We only get here if the current token is less indented than the - // current reference token. Pop the block indicator and leave the - // reference position be for the edge case where the parent line-fold - // continues after the block. - this.frameTypes.pop(); - return new BlockEnd(t0.getStartPosition()); - - } - - this.frameTypes.push(FrameType.LineFold); - this.referencePositions.push(t0.getStartPosition()); - - // In theory, we could explictly issue a LineFoldStart and let all - // tokens be passed through in the FrameType.LineFold case. It does add - // more logic to the parser for no real benefit, which is why it was - // omitted. - this.tokens.get(); - return t0; - } - - } - - } - -} - - diff --git a/bootstrap/js/compiler/src/scope.ts b/bootstrap/js/compiler/src/scope.ts deleted file mode 100644 index 9adb9fe76..000000000 --- a/bootstrap/js/compiler/src/scope.ts +++ /dev/null @@ -1,190 +0,0 @@ -import { warn } from "console"; -import { LetDeclaration, Pattern, SourceFile, Syntax, SyntaxKind } from "./cst"; -import { MultiMap, assertNever } from "./util"; - -export type NodeWithScope - = SourceFile - | LetDeclaration - -export function isNodeWithScope(node: Syntax): node is NodeWithScope { - return node.kind === SyntaxKind.SourceFile - || node.kind === SyntaxKind.LetDeclaration; -} - -export const enum Symkind { - Var = 1, - Type = 2, - Module = 4, - Typeclass = 8, - Any = Var | Type | Module -} - -export class Scope { - - private mapping = new MultiMap(); - - public constructor( - public node: NodeWithScope, - ) { - this.scan(node); - } - - public get depth(): number { - let out = 0; - let curr = this.getParent(); - while (curr !== null) { - out++; - curr = curr.getParent(); - } - return out; - } - - private getParent(): Scope | null { - let curr = this.node.parent; - while (curr !== null) { - if (isNodeWithScope(curr)) { - return curr.getScope(); - } - curr = curr.parent; - } - return null; - } - - private add(name: string, node: Syntax, kind: Symkind): void { - this.mapping.add(name, [kind, node]); - } - - private scan(node: Syntax): void { - switch (node.kind) { - case SyntaxKind.ClassDeclaration: - { - this.add(node.name.text, node, Symkind.Typeclass); - } - case SyntaxKind.InstanceDeclaration: - case SyntaxKind.SourceFile: - { - for (const element of node.elements) { - this.scan(element); - } - break; - } - case SyntaxKind.ModuleDeclaration: - { - this.add(node.name.text, node, Symkind.Module); - for (const element of node.elements) { - this.scan(element); - } - break; - } - case SyntaxKind.ExpressionStatement: - case SyntaxKind.ReturnStatement: - case SyntaxKind.IfStatement: - break; - case SyntaxKind.TypeDeclaration: - { - this.add(node.name.text, node, Symkind.Type); - break; - } - case SyntaxKind.EnumDeclaration: - { - this.add(node.name.text, node, Symkind.Type); - if (node.members !== null) { - for (const member of node.members) { - this.add(member.name.text, member, Symkind.Var); - } - } - } - case SyntaxKind.StructDeclaration: - { - this.add(node.name.text, node, Symkind.Type); - // TODO remove this? - // this.add(node.name.text, node, Symkind.Var); - break; - } - case SyntaxKind.LetDeclaration: - { - for (const param of node.params) { - switch (param.kind) { - case SyntaxKind.PlainParam: - this.scanPattern(param.pattern, param); - break; - case SyntaxKind.InstanceParam: - this.add(node.name.text, param, Symkind.Var); - break; - default: - assertNever(param); - } - } - if (node === this.node) { - if (node.body !== null && node.body.kind === SyntaxKind.BlockBody) { - for (const element of node.body.elements) { - this.scan(element); - } - } - } else { - this.scanPattern(node.pattern, node); - } - break; - } - default: - assertNever(node); - } - } - - private scanPattern(node: Pattern, decl: Syntax): void { - switch (node.kind) { - case SyntaxKind.LiteralPattern: - break; - case SyntaxKind.NamedPattern: - { - this.add(node.name.text, decl, Symkind.Var); - break; - } - case SyntaxKind.NestedPattern: - this.scanPattern(node.pattern, decl); - break; - case SyntaxKind.NamedTuplePattern: - { - for (const element of node.elements) { - this.scanPattern(element, decl); - } - break; - } - case SyntaxKind.StructPattern: - { - for (const member of node.members) { - switch (member.kind) { - case SyntaxKind.StructPatternField: - { - this.scanPattern(member.pattern, decl); - break; - } - case SyntaxKind.PunnedStructPatternField: - { - this.add(member.name.text, decl, Symkind.Var); - break; - } - } - } - break; - } - default: - throw new Error(`Unexpected ${node}`); - } - } - - public lookup(name: string, expectedKind: Symkind = Symkind.Any): Syntax | null { - let curr: Scope | null = this; - do { - for (const [kind, decl] of curr.mapping.get(name)) { - if (kind & expectedKind) { - return decl; - } - } - curr = curr.getParent(); - } while (curr !== null); - return null; - } - -} - diff --git a/bootstrap/js/compiler/src/test/eager-solving-global.bolt b/bootstrap/js/compiler/src/test/eager-solving-global.bolt deleted file mode 100644 index 948ac4b39..000000000 --- a/bootstrap/js/compiler/src/test/eager-solving-global.bolt +++ /dev/null @@ -1,6 +0,0 @@ - -let foo n. - # @expect_diagnostic "TypeMismatch" - let f : String = 1 - return n - diff --git a/bootstrap/js/compiler/src/test/enum-declaration-app.bolt b/bootstrap/js/compiler/src/test/enum-declaration-app.bolt deleted file mode 100644 index 0964bf264..000000000 --- a/bootstrap/js/compiler/src/test/enum-declaration-app.bolt +++ /dev/null @@ -1,15 +0,0 @@ - -enum Maybe a. - Just a - Nothing - -enum App a b. - MkApp (a b) - -enum Foo. - MkFoo (App Maybe Int) - -let f : Foo = MkFoo (MkApp (Just 1)) - -# @expect_diagnostic "TypeMismatch" -let g : Foo = MkFoo (MkApp (Just "foo")) diff --git a/bootstrap/js/compiler/src/test/enum-declaration-maybe.bolt b/bootstrap/js/compiler/src/test/enum-declaration-maybe.bolt deleted file mode 100644 index a03e808c0..000000000 --- a/bootstrap/js/compiler/src/test/enum-declaration-maybe.bolt +++ /dev/null @@ -1,10 +0,0 @@ - -enum Maybe a. - Just a - Nothing - -let right_1 : Maybe Int = Just 1 -let right_2 : Maybe String = Just "foo" -# @expect_diagnostic "TypeMismatch" -let wrong : Maybe Int = Just "foo" - diff --git a/bootstrap/js/compiler/src/test/mutual-recursion-2.bolt b/bootstrap/js/compiler/src/test/mutual-recursion-2.bolt deleted file mode 100644 index 8c6ae999f..000000000 --- a/bootstrap/js/compiler/src/test/mutual-recursion-2.bolt +++ /dev/null @@ -1,16 +0,0 @@ - -let is_even x. - if x == 0. - return True - else. - return is_odd (x-1) - -let is_odd x. - if x == 1. - return False - else. - return is_even (x-1) - -@:Bool is_even 1 -# @expect_diagnostic "TypeMismatch" -is_even True diff --git a/bootstrap/js/compiler/src/test/mutual-recursion.bolt b/bootstrap/js/compiler/src/test/mutual-recursion.bolt deleted file mode 100644 index 6e8d41d2d..000000000 --- a/bootstrap/js/compiler/src/test/mutual-recursion.bolt +++ /dev/null @@ -1,8 +0,0 @@ - -let fac n = fac_2 n - -let fac_2 n = fac_3 n + fac n - -let fac_3 n = fac_2 (n-1) - -@:Int fac 1 diff --git a/bootstrap/js/compiler/src/test/nested-definitions.bolt b/bootstrap/js/compiler/src/test/nested-definitions.bolt deleted file mode 100644 index 3047a0c66..000000000 --- a/bootstrap/js/compiler/src/test/nested-definitions.bolt +++ /dev/null @@ -1,6 +0,0 @@ - -let foo x. - let bar y z = y + z - x - return bar 1 2 - -@:Int foo 3 diff --git a/bootstrap/js/compiler/src/test/return-types-polymorphic.bolt b/bootstrap/js/compiler/src/test/return-types-polymorphic.bolt deleted file mode 100644 index d6ee4bb74..000000000 --- a/bootstrap/js/compiler/src/test/return-types-polymorphic.bolt +++ /dev/null @@ -1,6 +0,0 @@ - -let id x = x - -@:Int id 1 -@:String id "foo" -@:Bool id True diff --git a/bootstrap/js/compiler/src/test/tuple-access.bolt b/bootstrap/js/compiler/src/test/tuple-access.bolt deleted file mode 100644 index 0a66acd87..000000000 --- a/bootstrap/js/compiler/src/test/tuple-access.bolt +++ /dev/null @@ -1,5 +0,0 @@ - -let t1 = (1, True) - -@:Int t1.0 -@:Bool t1.1 diff --git a/bootstrap/js/compiler/src/test/typecheck.md b/bootstrap/js/compiler/src/test/typecheck.md deleted file mode 100644 index 89af92632..000000000 --- a/bootstrap/js/compiler/src/test/typecheck.md +++ /dev/null @@ -1,271 +0,0 @@ - -## Record types can be unified without causing an error - -``` -struct Person. - email: String - age: Int - -let bert - = Person { - email = "bar@boo.com", - age = 32 - } -let bob - = Person { - email = "boo", - age = 43 - } - -bert == bob -``` - -## Return types are polymorphic - -``` -let id x = x - -id 1 -id "foo" -id True -``` - -## Nested definitions work - -``` -let foo x. - let bar y z = y + z - x - bar - -foo True -``` - -## Everything that can be type-checked will be type-checked - -``` -let foo n. - let f : String = 1 - return n -``` - -## Recursive definitions do not cause infinite loops in the type-checker - -``` -let fac n = fac_2 n - -let fac_2 n = fac_3 n + fac n - -let fac_3 n = fac_2 (n-1) - -not (fac 1) -``` - -## Example with mutual recursion works - -``` -let is_even x. - if x == 0. - return True - else. - return is_odd (x-1) - -let is_odd x. - if x == 1. - return False - else. - return is_even (x-1) - -not (is_even True) -``` - -## Polymorphic records can be partially typed - -``` -struct Timestamped a b. - first: a - second: b - timestamp: Int - -type Foo = Timestamped Int - -type Bar = Foo Int - -let t : Bar = Timestamped { first = "bar", second = 1, timestamp = 12345 } -``` - -## Extensible records work - -``` -struct Timestamped a. - data: a - timestamp: Int - -let t = Timestamped { data = "foo", timestamp = 12345 } - -t.data == 1 -t.data == "foo" - -let u = Timestamped { data = True, timestamp = 12345 } - -u.data == "foo" -u.data == False -``` - -## A recursive function is automatically instantiated - -``` -let fac n. - if n == 0. - return 1 - else. - return n * fac (n-"foo") -``` - -## Enum-declarations are correctly typed - -``` -enum Maybe a. - Just a - Nothing - -let right_1 : Maybe Int = Just 1 -let right_2 : Maybe String = Just "foo" -let wrong : Maybe Int = Just "foo" -``` - -## Kind inference works - -``` -enum Maybe a. - Just a - Nothing - -let foo_1 : Maybe -let foo_2 : Maybe Int -let foo_3 : Maybe Int Int -let foo_4 : Maybe Int Int Int -``` - -## Can indirectly apply a polymorphic datatype to some type - -``` -enum Maybe a. - Just a - Nothing - -enum App a b. - MkApp (a b) - -enum Foo. - MkFoo (App Maybe Int) - -let f : Foo = MkFoo (MkApp (Just 1)) -``` - -## Record-declarations inside enum-declarations work - -``` -enum Shape. - Circle. - radius: Int - Rect. - width: Int - height: Int - -let z = Circle { radius = 12 } -let a = Rect { width = 12, height = 12 } - -a == z -``` - -## Tuple types are correctly inferred and unified - -``` -let foo_1 : (Int, Int, Int) = (1, 2, 3) -let foo_2 : (Int, Int, Int) = (1, 2, "foo") -``` - -## Module references work - -``` -mod CD. - mod A. - struct Foo - mod B. - let alpha: A.Foo -``` - -## Rest-expressions on extensible records work - -``` -let foo { x, y, .. } = x + y - -foo { x = 1, y = 2 } -foo { x = 1, y = 2, z = 3 } -foo { x = 1, y = 2, z = 3, a = 4 } -``` - -## A polymorphic function is properly generalized when assigned to a new variable - -``` -let id x = x -let id2 = id -let id3 = id - -id3 1 -id3 "bla" - -id2 1 -id2 "bla" -```` - -## Can omit a field from a record type - -``` -let remove_x { x, ..rest } = rest -let p1 = { x = 1, y = 2, z = 3 } -(remove_x p1).x -``` - -## Can project a field from some other fields - -``` -struct Point. - x: Int - y: Int - -let project { x, y, .. } = { x, y } - -let p2 : Point = project { x = 1, y = 2 } -let p3 : Point = project { x = 1, y = 2, z = 3 } -let p3 : Point = project { x = 1, y = 2, z = 3, a = 4 } -``` - -## Can assign records to a struct-type - -``` -struct Vec2. - x: Int - y: Int - -let p1 : Vec2 = { x = 1, y = 2 } -``` - -``` -struct Vec3. - x: Int - y: Int - z: Int - -let p1 : Vec3 = { x = 1, y = 2, z = 3 } -``` - -This one should fail: - -``` -struct Vec2. - x: Int - y: Int - -let p1 : Vec2 = { x = 1, y = 2, z = 3 } -``` diff --git a/bootstrap/js/compiler/src/test/unify-similar-records.bolt b/bootstrap/js/compiler/src/test/unify-similar-records.bolt deleted file mode 100644 index 5fb205d3b..000000000 --- a/bootstrap/js/compiler/src/test/unify-similar-records.bolt +++ /dev/null @@ -1,18 +0,0 @@ - -struct Person. - email: String - age: Int - -let bert - = Person { - email = "bar@boo.com", - age = 32 - } -let bob - = Person { - email = "boo", - age = 43 - } - -# @expect_diagnostic TypeMismatch -bert == bob diff --git a/bootstrap/js/compiler/src/types.ts b/bootstrap/js/compiler/src/types.ts deleted file mode 100644 index 253e59a28..000000000 --- a/bootstrap/js/compiler/src/types.ts +++ /dev/null @@ -1,654 +0,0 @@ -import { InspectOptions } from "util"; -import { ClassDeclaration, EnumDeclaration, StructDeclaration, Syntax } from "./cst"; -import { InspectFn, assert, assertNever, toStringTag } from "./util"; -import { warn } from "console"; - -export enum TypeKind { - Arrow, - RegularVar, - RigidVar, - Con, - App, - Nominal, - Field, - Nil, - Absent, - Present, - Tag, -} - -export abstract class TypeBase { - - public abstract readonly kind: TypeKind; - - public parent: Type = this as unknown as Type; - - public next: Type = this as any; - - public abstract node: Syntax | null; - - public static join(a: Type, b: Type): void { - const keep = a.next; - a.next = b; - b.next = keep; - } - - public abstract getTypeVars(): Iterable; - - public abstract shallowClone(): Type; - - public abstract substitute(sub: TVSub): Type; - - public find(): Type { - let curr = this as unknown as Type; - while (curr.parent !== curr) { - curr.parent = curr.parent.parent; - curr = curr.parent; - } - return curr; - } - - public set(newType: Type): void { - this.find().parent = newType; - } - - public hasTypeVar(tv: TRegularVar): boolean { - for (const other of this.getTypeVars()) { - if (tv.id === other.id) { - return true; - } - } - return false; - } - - public abstract [toStringTag](depth: number, options: InspectOptions, inspect: InspectFn): string; - -} - -export function isType(value: any): value is Type { - return value !== undefined - && value !== null - && value instanceof TypeBase; -} - -abstract class TVarBase extends TypeBase { - - public context = new Set(); - -} - -export function isTVar(type: Type): type is TVar { - return type.kind === TypeKind.RegularVar - || type.kind === TypeKind.RigidVar; -} - -export class TRigidVar extends TVarBase { - - public readonly kind = TypeKind.RigidVar; - - public constructor( - public id: number, - public displayName: string, - public node: Syntax | null = null - ) { - super(); - } - - public *getTypeVars(): Iterable { - yield this; - } - - public shallowClone(): TRigidVar { - return new TRigidVar( - this.id, - this.displayName, - this.node - ); - } - - public substitute(sub: TVSub): Type { - const other = sub.get(this); - return other === undefined - ? this : other.substitute(sub); - } - - public [toStringTag]() { - return this.displayName; - } - -} - -export class TRegularVar extends TVarBase { - - public readonly kind = TypeKind.RegularVar; - - public constructor( - public id: number, - public node: Syntax | null = null, - ) { - super(); - } - - public *getTypeVars(): Iterable { - yield this; - } - - public shallowClone(): TRegularVar { - return new TRegularVar(this.id, this.node); - } - - public substitute(sub: TVSub): Type { - const other = sub.get(this); - return other === undefined - ? this : other.substitute(sub); - } - - public [toStringTag]() { - return 'a' + this.id; - } - -} - -export class TNil extends TypeBase { - - public readonly kind = TypeKind.Nil; - - public constructor( - public node: Syntax | null = null - ) { - super(); - } - - public substitute(_sub: TVSub): Type { - return this; - } - - public shallowClone(): Type { - return new TNil(this.node); - } - - public *getTypeVars(): Iterable { - - } - - public [toStringTag]() { - return '∂Abs'; - } - -} - -export class TAbsent extends TypeBase { - - public readonly kind = TypeKind.Absent; - - public constructor( - public node: Syntax | null = null, - ) { - super(); - } - - public substitute(_sub: TVSub): Type { - return this; - } - - public shallowClone(): Type { - return new TAbsent(this.node); - } - - public *getTypeVars(): Iterable { - - } - - public [toStringTag]() { - return 'Abs'; - } - -} - -export class TPresent extends TypeBase { - - public readonly kind = TypeKind.Present; - - public constructor( - public type: Type, - public node: Syntax | null = null, - ) { - super(); - } - - public substitute(sub: TVSub): Type { - return new TPresent(this.type.substitute(sub), this.node); - } - - public getTypeVars(): Iterable { - return this.type.getTypeVars(); - } - - public shallowClone(): Type { - return new TPresent(this.type, this.node); - } - - public [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn) { - return 'Pre ' + inspect(this.type, options); - } - -} - -export class TArrow extends TypeBase { - - public readonly kind = TypeKind.Arrow; - - public constructor( - public paramType: Type, - public returnType: Type, - public node: Syntax | null = null, - ) { - super(); - } - - public static build(paramTypes: Type[], returnType: Type, node: Syntax | null = null): Type { - let result = returnType; - for (let i = paramTypes.length-1; i >= 0; i--) { - result = new TArrow(paramTypes[i], result, node); - } - return result; - } - - public *getTypeVars(): Iterable { - yield* this.paramType.getTypeVars(); - yield* this.returnType.getTypeVars(); - } - - public shallowClone(): TArrow { - return new TArrow( - this.paramType, - this.returnType, - this.node, - ) - } - - public substitute(sub: TVSub): Type { - let changed = false; - const newParamType = this.paramType.substitute(sub); - if (newParamType !== this.paramType) { - changed = true; - } - const newReturnType = this.returnType.substitute(sub); - if (newReturnType !== this.returnType) { - changed = true; - } - return changed ? new TArrow(newParamType, newReturnType, this.node) : this; - } - - public [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn) { - return inspect(this.paramType, options) + ' -> ' + inspect(this.returnType, options); - } - -} - -export class TCon extends TypeBase { - - public readonly kind = TypeKind.Con; - - public constructor( - public id: number, - public displayName: string, - public node: Syntax | null = null, - ) { - super(); - } - - public *getTypeVars(): Iterable { - - } - - public shallowClone(): TCon { - return new TCon( - this.id, - this.displayName, - this.node, - ); - } - - public substitute(_sub: TVSub): Type { - return this; - } - - public [toStringTag](_depth: number, _options: InspectOptions, _inspect: InspectFn) { - return this.displayName; - } - -} - -export function buildTupleType(types: Type[]): Type { - let out: Type = new TNil(); - types.forEach((type, i) => { - out = new TField(i, new TPresent(type), out); - }); - return out; -} - -export function buildTupleTypeWithLoc(elements: Array<[Syntax, Type]>, node: Syntax) { - let out: Type = new TNil(node); - elements.forEach(([el, type], i) => { - out = new TField(i, new TPresent(type, el), out); - }); - return out; -} - -export class TField extends TypeBase { - - public readonly kind = TypeKind.Field; - - public constructor( - public name: string | number, - public type: Type, - public restType: Type, - public node: Syntax | null = null, - ) { - super(); - } - - public getTypeVars(): Iterable { - return this.type.getTypeVars(); - } - - public shallowClone(): TField { - return new TField( - this.name, - this.type, - this.restType, - this.node, - ); - } - - public static build(fields: Map, restType: Type): Type { - let out = restType; - for (const [name, type] of fields) { - out = new TField(name, new TPresent(type, type.node), out, type.node); - } - return out - } - - public static sort(type: Type): Type { - const fields = new Map(); - while (type.kind === TypeKind.Field) { - fields.set(type.name, type); - type = type.restType; - } - const keys = [...fields.keys()].sort().reverse(); - let out: Type = type; - for (const key of keys) { - const field = fields.get(key)!; - out = new TField(key, field.type, out, field.node); - } - return out - } - - public substitute(sub: TVSub): Type { - const newType = this.type.substitute(sub); - const newRestType = this.restType.substitute(sub); - return newType !== this.type || newRestType !== this.restType - ? new TField(this.name, newType, newRestType, this.node) : this; - } - - public [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn) { - let out = '{ ' + this.name + ': ' + inspect(this.type, options); - let type = this.restType; - while (type.kind === TypeKind.Field) { - out += '; ' + type.name + ': ' + inspect(type.type, options); - type = type.restType; - } - if (type.kind !== TypeKind.Nil) { - out += '; ' + inspect(type, options); - } - return out + ' }' - } - -} - -export class TApp extends TypeBase { - - public readonly kind = TypeKind.App; - - public constructor( - public left: Type, - public right: Type, - public node: Syntax | null = null - ) { - super(); - } - - public static build(resultType: Type, types: Type[], node: Syntax | null = null): Type { - for (let i = 0; i < types.length; i++) { - resultType = new TApp(resultType, types[i], node); - } - return resultType; - } - - public *getTypeVars(): Iterable { - yield* this.left.getTypeVars(); - yield* this.right.getTypeVars(); - } - - public shallowClone() { - return new TApp( - this.left, - this.right, - this.node - ); - } - - public substitute(sub: TVSub): Type { - let changed = false; - const newOperatorType = this.left.substitute(sub); - if (newOperatorType !== this.left) { - changed = true; - } - const newArgType = this.right.substitute(sub); - if (newArgType !== this.right) { - changed = true; - } - return changed ? new TApp(newOperatorType, newArgType, this.node) : this; - } - - public [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn) { - return inspect(this.left, options) + ' ' + inspect(this.right, options); - } - -} - -export const labelTag = '____tag'; - -// export class TTag extends TypeBase { - -// public readonly kind = TypeKind.Tag; - -// public constructor( -// public name: string, -// public node: Syntax | null = null, -// ) { -// super(); -// } - -// public shallowClone(): Type { -// return new TTag( -// this.name, -// this.node, -// ); -// } - -// public *getTypeVars(): Iterable { -// // noop -// } - -// public substitute(sub: TVSub): Type { -// return this; -// } - -// public [toStringTag]() { -// return this.name; -// } - -// } - -export type Type - = TCon - | TArrow - | TRigidVar - | TRegularVar - | TApp - | TField - | TNil - | TPresent - | TAbsent - // | TTag - -export type TVar - = TRegularVar - | TRigidVar - - -export function getSignature(type: Type): Type[] { - const out = []; - let stack = [ type ]; - for (;;) { - const child = stack.pop()!; - if (child.kind === TypeKind.App) { - stack.push(child.left); - stack.push(child.right); - } else { - out.push(child); - } - if (stack.length === 0) { - break; - } - } - return out; -} - -export function isSignature(type: Type): boolean { - return type.kind === TypeKind.Con - || type.kind === TypeKind.App; -} - -export function assignableTo(left: Type, right: Type): boolean { - if (left.kind === TypeKind.Con && right.kind == TypeKind.Con) { - return left.id === right.id; - } - return false; -} - -export function typesEqual(a: Type, b: Type): boolean { - if (a.kind !== b.kind) { - return false; - } - switch (a.kind) { - case TypeKind.Con: - assert(b.kind === TypeKind.Con); - return a.id === b.id; - case TypeKind.RegularVar: - assert(b.kind === TypeKind.RegularVar); - return a.id === b.id; - case TypeKind.RigidVar: - assert(b.kind === TypeKind.RigidVar); - return a.id === b.id; - case TypeKind.Nil: - case TypeKind.Absent: - return true; - case TypeKind.App: - assert(b.kind === TypeKind.App); - return typesEqual(a.left, b.left) && typesEqual(a.right, b.right); - case TypeKind.Field: - assert(b.kind === TypeKind.Field); - return a.name === b.name && typesEqual(a.type, b.type) && typesEqual(a.restType, b.restType); - case TypeKind.Arrow: - assert(b.kind === TypeKind.Arrow); - return typesEqual(a.paramType, b.paramType) && typesEqual(a.returnType, b.returnType); - case TypeKind.Present: - assert(b.kind === TypeKind.Present); - return typesEqual(a.type, b.type); - default: - assertNever(a); - } -} - -export class TVSet { - - private mapping = new Map(); - - public constructor(iterable?: Iterable) { - if (iterable !== undefined) { - for (const tv of iterable) { - this.add(tv); - } - } - } - - public add(tv: TVar): void { - this.mapping.set(tv.id, tv); - } - - public has(tv: TVar): boolean { - return this.mapping.has(tv.id); - } - - public intersectsType(type: Type): boolean { - for (const tv of type.getTypeVars()) { - if (this.has(tv)) { - return true; - } - } - return false; - } - - public delete(tv: TVar): void { - this.mapping.delete(tv.id); - } - - public get size(): number { - return this.mapping.size; - } - - public [Symbol.iterator](): Iterator { - return this.mapping.values(); - } - - public [toStringTag](_depth: number, options: InspectOptions, inspect: InspectFn) { - let out = '{ '; - let first = true; - for (const tv of this) { - if (first) first = false; - else out += ', '; - out += inspect(tv, options); - } - return out + ' }'; - } - -} - -export class TVSub { - - private mapping = new Map(); - - public set(tv: TVar, type: Type): void { - this.mapping.set(tv.id, type); - } - - public get(tv: TVar): Type | undefined { - return this.mapping.get(tv.id); - } - - public has(tv: TVar): boolean { - return this.mapping.has(tv.id); - } - - public delete(tv: TVar): void { - this.mapping.delete(tv.id); - } - - public values(): Iterable { - return this.mapping.values(); - } - -} diff --git a/bootstrap/js/compiler/src/util.ts b/bootstrap/js/compiler/src/util.ts deleted file mode 100644 index 027ede410..000000000 --- a/bootstrap/js/compiler/src/util.ts +++ /dev/null @@ -1,262 +0,0 @@ - -import path from "path" -import stream from "stream" -import { InspectOptions } from "util"; - -export const isDebug = process.env['NODE_ENV'] === 'development'; - -export const toStringTag = Symbol.for('nodejs.util.inspect.custom'); - -export type InspectFn = (value: any, options: InspectOptions) => string; - -export function isIterable(value: any): value is Iterable { - if (value === undefined || value === null) { - return false; - } - return typeof(value[Symbol.iterator]) === 'function'; -} - -export function first(iter: Iterator): T | undefined { - return iter.next().value; -} - -export function last(iter: Iterator): T | undefined { - let prevValue; - for (;;) { - const { done, value } = iter.next(); - if (done) { - return prevValue; - } - prevValue = value; - } -} - -export function stripExtension(filepath: string): string { - const basename = path.basename(filepath); - const i = basename.lastIndexOf('.'); - if (i === -1) { - return filepath; - } - return path.join(path.dirname(filepath), basename.substring(0, i)); -} - -export class IndentWriter { - - private atBlankLine = true; - private indentLevel = 0; - - public constructor( - private output: stream.Writable, - private indentation = ' ', - ) { - - } - - public write(text: string): void { - for (const ch of text) { - if (ch === '\n') { - this.atBlankLine = true; - } else if (!/[\t ]/.test(ch) && this.atBlankLine) { - this.output.write(this.indentation.repeat(this.indentLevel)); - this.atBlankLine = false; - } - this.output.write(ch); - } - } - - public indent(): void { - this.indentLevel++; - } - - public dedent(): void { - this.indentLevel--; - } - -} - -const GITHUB_ISSUE_URL = 'https://github.com/boltlang/bolt/issues/' - -export function assert(test: boolean): asserts test { - if (!test) { - throw new Error(`Assertion failed. See the stack trace for more information. You are invited to search this issue on GitHub or to create a new one at ${GITHUB_ISSUE_URL} .`); - } -} - -export function implementationLimitation(test: boolean): asserts test { - if (!test) { - throw new Error(`We encountered a limitation to the implementation of this compiler. You are invited to search this issue on GitHub or to create a new one at ${GITHUB_ISSUE_URL} .`); - } -} - -export function unreachable(): never { - throw new Error(`Code that should never be executed was reached during operation.`); -} - -export function assertNever(value: never): never { - console.error(value); - throw new Error(`Assertion failed. See the stack trace for more information.`); -} - -export function countDigits(x: number, base: number = 10) { - return x === 0 ? 1 : Math.ceil(Math.log(x+1) / Math.log(base)) -} - -export function isEmpty(iter: Iterable | Iterator): boolean { - if ((iter as any)[Symbol.iterator] !== undefined) { - iter = (iter as any)[Symbol.iterator](); - } - return !!(iter as Iterator).next().done; -} - -export type JSONValue = null | boolean | number | string | JSONArray | JSONObject -export type JSONArray = Array; -export type JSONObject = { [key: string]: JSONValue }; - -export class MultiDict { - - private mapping = new Map(); - - public constructor(iterable?: Iterable<[K, V]>) { - if (iterable) { - for (const [key, value] of iterable) { - this.add(key, value); - } - } - } - - public get(key: K): Iterable { - return this.mapping.get(key) ?? []; - } - - public add(key: K, value: V): void { - const values = this.mapping.get(key); - if (values) { - values.push(value); - } else { - this.mapping.set(key, [ value ]) - } - } - - public *[Symbol.iterator](): Iterator<[K, V]> { - for (const [key, values] of this.mapping) { - for (const value of values) { - yield [key, value]; - } - } - } - -} - -export interface Stream { - get(): T; - peek(offset?: number): T; -} - -export abstract class BufferedStream { - - private buffer: Array = []; - - public abstract read(): T; - - public get(): T { - if (this.buffer.length > 0) { - return this.buffer.shift()!; - } - return this.read(); - } - - public peek(offset = 1): T { - while (this.buffer.length < offset) { - this.buffer.push(this.read()); - } - return this.buffer[offset-1]; - } - -} - -export class MultiMap { - - private mapping = new Map(); - - public get(key: K): V[] { - return this.mapping.get(key) ?? []; - } - - public add(key: K, value: V): void { - let elements = this.mapping.get(key); - if (elements === undefined) { - elements = []; - this.mapping.set(key, elements); - } - elements.push(value); - } - - public has(key: K, value?: V): boolean { - if (value === undefined) { - return this.mapping.has(key); - } - const elements = this.mapping.get(key); - if (elements === undefined) { - return false; - } - return elements.indexOf(value) !== -1; - } - - public keys(): Iterable { - return this.mapping.keys(); - } - - public *values(): Iterable { - for (const elements of this.mapping.values()) { - yield* elements; - } - } - - public *[Symbol.iterator](): Iterator<[K, V]> { - for (const [key, elements] of this.mapping) { - for (const value of elements) { - yield [key, value]; - } - } - } - - public delete(key: K, value?: V): number { - const elements = this.mapping.get(key); - if (elements === undefined) { - return 0; - } - if (value === undefined) { - this.mapping.delete(key); - return elements.length; - } - const i = elements.indexOf(value); - if (i !== -1) { - elements.splice(i, 1); - if (elements.length === 0) { - this.mapping.delete(key); - } - return 1; - } - return 0; - } - -} - -export const nonenumerable: { - (target: any, name: string): void; - (target: any, name: string, desc: PropertyDescriptor): PropertyDescriptor; -} = (target: any, name: string, desc?: any) => { - if (desc) { - desc.enumerable = false; - return desc; - } - Object.defineProperty(target, name, { - set(value) { - Object.defineProperty(this, name, { - value, writable: true, configurable: true, - }); - }, - configurable: true, - }); -}; - diff --git a/bootstrap/js/compiler/tsconfig.json b/bootstrap/js/compiler/tsconfig.json deleted file mode 100644 index ed87293a4..000000000 --- a/bootstrap/js/compiler/tsconfig.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2016", - "lib": [ "ES2016" ], - "module": "commonjs", - "moduleResolution": "node", - "declaration": true, - "declarationMap": true, - "sourceMap": true, - "outDir": "./lib", - "removeComments": true, - "importHelpers": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "strict": true, - "skipLibCheck": true, - "experimentalDecorators": true - }, - "include": ["src"] -} diff --git a/bootstrap/js/package-lock.json b/bootstrap/js/package-lock.json deleted file mode 100644 index 73c538617..000000000 --- a/bootstrap/js/package-lock.json +++ /dev/null @@ -1,190 +0,0 @@ -{ - "name": "bolt-workspace", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "bolt-workspace", - "workspaces": [ - "compiler" - ], - "dependencies": { - "typescript": "^5.1.3" - } - }, - "babel-plugin": { - "name": "babel-plugin-metadata", - "version": "1.0.0", - "extraneous": true, - "license": "MIT", - "devDependencies": { - "@babel/types": "^7.21.4", - "@types/babel__core": "^7.20.0" - } - }, - "babel-plugin-metadata": { - "version": "1.0.0", - "extraneous": true, - "license": "MIT", - "devDependencies": { - "@babel/types": "^7.21.4", - "@types/babel__core": "^7.20.0" - } - }, - "compiler": { - "name": "@boltlang/bolt", - "version": "0.0.1", - "license": "MIT", - "dependencies": { - "@types/which": "^3.0.0", - "commander": "^11.0.0", - "reflect-metadata": "^0.1.13", - "source-map-support": "^0.5.21", - "tslib": "^2.5.3", - "which": "^3.0.1", - "yagl": "^0.5.1" - }, - "bin": { - "bolt": "lib/bin/bolt.js" - }, - "devDependencies": { - "@types/node": "^20.3.1" - } - }, - "compiler/node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", - "engines": { - "node": ">=16" - } - }, - "harness": { - "name": "@boltlang/harness", - "version": "0.0.1", - "extraneous": true, - "license": "MIT", - "dependencies": { - "@boltlang/bolt": "^0.0.1", - "chalk": "^4.1.2", - "commander": "^10.0.0", - "commonmark": "^0.30.0", - "fs-extra": "^11.1.1", - "glob": "^10.0.0", - "minimatch": "^9.0.0", - "reflect-metadata": "^0.1.13", - "typescript-rtti": "^0.8.3" - }, - "bin": { - "bolt-self-harness-commit": "lib/bin/bolt-self-harness-commit.js" - }, - "devDependencies": { - "@types/commonmark": "^0.27.6", - "@types/fs-extra": "^11.0.1", - "@types/glob": "^8.1.0", - "ava": "^5.2.0" - } - }, - "node_modules/@boltlang/bolt": { - "resolved": "compiler", - "link": true - }, - "node_modules/@types/node": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", - "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", - "dev": true - }, - "node_modules/@types/which": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/which/-/which-3.0.0.tgz", - "integrity": "sha512-ASCxdbsrwNfSMXALlC3Decif9rwDMu+80KGp5zI2RLRotfMsTv7fHL8W8VDp24wymzDyIFudhUeSCugrgRFfHQ==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" - }, - "node_modules/typescript": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.3.tgz", - "integrity": "sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/which": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", - "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/yagl": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/yagl/-/yagl-0.5.1.tgz", - "integrity": "sha512-DfJygWCefAq5eEOmwvVkiMFBUEQJs9aijGdhaYGSdj1TM2OqSbe/Vp37e/nMGXsgmWiryZapKMOtpYx3ECUrJQ==" - }, - "testing": { - "version": "0.0.1", - "extraneous": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.2.0", - "commander": "^10.0.0", - "commonmark": "^0.30.0", - "fs-extra": "^11.1.1", - "glob": "^10.0.0", - "minimatch": "^9.0.0" - }, - "devDependencies": { - "@types/commonmark": "^0.27.6", - "@types/fs-extra": "^11.0.1", - "@types/glob": "^8.1.0" - } - } - } -} diff --git a/bootstrap/js/package.json b/bootstrap/js/package.json deleted file mode 100644 index 89f3a5170..000000000 --- a/bootstrap/js/package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "name": "bolt-workspace", - "private": true, - "workspaces": [ - "compiler" - ], - "dependencies": { - "typescript": "^5.1.3" - } -} diff --git a/cmake/Modules/FindLLVM.cmake b/cmake/Modules/FindLLVM.cmake new file mode 100644 index 000000000..0be58ebf5 --- /dev/null +++ b/cmake/Modules/FindLLVM.cmake @@ -0,0 +1,205 @@ +# Code taken from LDC – the LLVM-based D Compiler +# https://github.com/ldc-developers/ldc +# +# A given list of COMPONENTS is passed to llvm-config. +# +# The following variables are defined: +# LLVM_FOUND - true if LLVM was found +# LLVM_CXXFLAGS - C++ compiler flags for files that include LLVM headers. +# LLVM_ENABLE_ASSERTIONS - Whether LLVM was built with enabled assertions (ON/OFF). +# LLVM_INCLUDE_DIRS - Directory containing LLVM include files. +# LLVM_IS_SHARED - Whether LLVM is going to be linked dynamically (ON) or statically (OFF). +# LLVM_LDFLAGS - Linker flags to add when linking against LLVM +# (includes -LLLVM_LIBRARY_DIRS). +# LLVM_LIBRARIES - Full paths to the library files to link against. +# LLVM_LIBRARY_DIRS - Directory containing LLVM libraries. +# LLVM_NATIVE_ARCH - Backend corresponding to LLVM_HOST_TARGET, e.g., +# X86 for x86_64 and i686 hosts. +# LLVM_ROOT_DIR - The root directory of the LLVM installation. +# llvm-config is searched for in ${LLVM_ROOT_DIR}/bin. +# LLVM_TARGETS_TO_BUILD - List of built LLVM targets. +# LLVM_VERSION_MAJOR - Major version of LLVM. +# LLVM_VERSION_MINOR - Minor version of LLVM. +# LLVM_VERSION_STRING - Full LLVM version string (e.g. 6.0.0svn). +# LLVM_VERSION_BASE_STRING - Base LLVM version string without git/svn suffix (e.g. 6.0.0). +# +# Note: The variable names were chosen in conformance with the offical CMake +# guidelines, see ${CMAKE_ROOT}/Modules/readme.txt. + +# Try suffixed versions to pick up the newest LLVM install available on Debian +# derivatives. +# We also want an user-specified LLVM_ROOT_DIR to take precedence over the +# system default locations such as /usr/local/bin. Executing find_program() +# multiples times is the approach recommended in the docs. +set(llvm_config_names llvm-config-17.0 llvm-config170 llvm-config-17 + llvm-config-16.0 llvm-config160 llvm-config-16 + llvm-config-15.0 llvm-config150 llvm-config-15 + llvm-config-14.0 llvm-config140 llvm-config-14 + llvm-config-13.0 llvm-config130 llvm-config-13 + llvm-config-12.0 llvm-config120 llvm-config-12 + llvm-config-11.0 llvm-config110 llvm-config-11 + llvm-config) +find_program(LLVM_CONFIG + NAMES ${llvm_config_names} + PATHS ${LLVM_ROOT_DIR}/bin NO_DEFAULT_PATH + DOC "Path to llvm-config tool.") +find_program(LLVM_CONFIG NAMES ${llvm_config_names}) +if(APPLE) + # extra fallbacks for MacPorts & Homebrew + find_program(LLVM_CONFIG + NAMES ${llvm_config_names} + PATHS /opt/local/libexec/llvm-17/bin + /opt/local/libexec/llvm-16/bin /opt/local/libexec/llvm-15/bin + /opt/local/libexec/llvm-14/bin /opt/local/libexec/llvm-13/bin + /opt/local/libexec/llvm-12/bin /opt/local/libexec/llvm-11/bin + /opt/local/libexec/llvm/bin + /usr/local/opt/llvm@17/bin + /usr/local/opt/llvm@16/bin /usr/local/opt/llvm@15/bin + /usr/local/opt/llvm@14/bin /usr/local/opt/llvm@13/bin + /usr/local/opt/llvm@12/bin /usr/local/opt/llvm@11/bin + /usr/local/opt/llvm/bin + NO_DEFAULT_PATH) +endif() + +# Prints a warning/failure message depending on the required/quiet flags. Copied +# from FindPackageHandleStandardArgs.cmake because it doesn't seem to be exposed. +macro(_LLVM_FAIL _msg) + if(LLVM_FIND_REQUIRED) + message(FATAL_ERROR "${_msg}") + else() + if(NOT LLVM_FIND_QUIETLY) + message(WARNING "${_msg}") + endif() + endif() +endmacro() + + +if(NOT LLVM_CONFIG) + if(NOT LLVM_FIND_QUIETLY) + _LLVM_FAIL("No LLVM installation (>= ${LLVM_FIND_VERSION}) found. Try manually setting the 'LLVM_ROOT_DIR' or 'LLVM_CONFIG' variables.") + endif() +else() + macro(llvm_set var flag) + if(LLVM_FIND_QUIETLY) + set(_quiet_arg ERROR_QUIET) + endif() + set(result_code) + execute_process( + COMMAND ${LLVM_CONFIG} --${flag} + RESULT_VARIABLE result_code + OUTPUT_VARIABLE LLVM_${var} + OUTPUT_STRIP_TRAILING_WHITESPACE + ${_quiet_arg} + ) + if(result_code) + _LLVM_FAIL("Failed to execute llvm-config ('${LLVM_CONFIG}', result code: '${result_code})'") + else() + if(${ARGV2}) + file(TO_CMAKE_PATH "${LLVM_${var}}" LLVM_${var}) + endif() + endif() + endmacro() + macro(llvm_set_libs var flag components) + if(LLVM_FIND_QUIETLY) + set(_quiet_arg ERROR_QUIET) + endif() + set(result_code) + execute_process( + COMMAND ${LLVM_CONFIG} --${flag} ${components} + RESULT_VARIABLE result_code + OUTPUT_VARIABLE tmplibs + OUTPUT_STRIP_TRAILING_WHITESPACE + ${_quiet_arg} + ) + if(result_code) + _LLVM_FAIL("Failed to execute llvm-config ('${LLVM_CONFIG}', result code: '${result_code})'") + else() + file(TO_CMAKE_PATH "${tmplibs}" tmplibs) + string(REGEX MATCHALL "${pattern}[^ ]+" LLVM_${var} ${tmplibs}) + endif() + endmacro() + + llvm_set(VERSION_STRING version) + llvm_set(CXXFLAGS cxxflags) + llvm_set(INCLUDE_DIRS includedir true) + llvm_set(ROOT_DIR prefix true) + llvm_set(ENABLE_ASSERTIONS assertion-mode) + + # The LLVM version string _may_ contain a git/svn suffix, so match only the x.y.z part + string(REGEX MATCH "^[0-9]+[.][0-9]+[.][0-9]+" LLVM_VERSION_BASE_STRING "${LLVM_VERSION_STRING}") + string(REGEX REPLACE "([0-9]+).*" "\\1" LLVM_VERSION_MAJOR "${LLVM_VERSION_STRING}" ) + string(REGEX REPLACE "[0-9]+\\.([0-9]+).*[A-Za-z]*" "\\1" LLVM_VERSION_MINOR "${LLVM_VERSION_STRING}" ) + + llvm_set(SHARED_MODE shared-mode) + if(LLVM_SHARED_MODE STREQUAL "shared") + set(LLVM_IS_SHARED ON) + else() + set(LLVM_IS_SHARED OFF) + endif() + + llvm_set(LDFLAGS ldflags) + llvm_set(SYSTEM_LIBS system-libs) + string(REPLACE "\n" " " LLVM_LDFLAGS "${LLVM_LDFLAGS} ${LLVM_SYSTEM_LIBS}") + if(APPLE) # unclear why/how this happens + string(REPLACE "-llibxml2.tbd" "-lxml2" LLVM_LDFLAGS ${LLVM_LDFLAGS}) + endif() + + if(${LLVM_VERSION_MAJOR} LESS "15") + # Versions below 15.0 do not support component windowsdriver + list(REMOVE_ITEM LLVM_FIND_COMPONENTS "windowsdriver") + endif() + + llvm_set(LIBRARY_DIRS libdir true) + llvm_set_libs(LIBRARIES libs "${LLVM_FIND_COMPONENTS}") + # LLVM bug: llvm-config --libs tablegen returns -lLLVM-3.8.0 + # but code for it is not in shared library + if("${LLVM_FIND_COMPONENTS}" MATCHES "tablegen") + if (NOT "${LLVM_LIBRARIES}" MATCHES "LLVMTableGen") + set(LLVM_LIBRARIES "${LLVM_LIBRARIES};-lLLVMTableGen") + endif() + endif() + + llvm_set(CMAKEDIR cmakedir) + llvm_set(TARGETS_TO_BUILD targets-built) + string(REGEX MATCHALL "${pattern}[^ ]+" LLVM_TARGETS_TO_BUILD ${LLVM_TARGETS_TO_BUILD}) + + # Parse LLVM_NATIVE_ARCH manually from LLVMConfig.cmake; including it leads to issues like + # https://github.com/ldc-developers/ldc/issues/3079. + file(STRINGS "${LLVM_CMAKEDIR}/LLVMConfig.cmake" LLVM_NATIVE_ARCH LIMIT_COUNT 1 REGEX "^set\\(LLVM_NATIVE_ARCH (.+)\\)$") + string(REGEX MATCH "set\\(LLVM_NATIVE_ARCH (.+)\\)" LLVM_NATIVE_ARCH "${LLVM_NATIVE_ARCH}") + set(LLVM_NATIVE_ARCH ${CMAKE_MATCH_1}) + message(STATUS "LLVM_NATIVE_ARCH: ${LLVM_NATIVE_ARCH}") + + # On CMake builds of LLVM, the output of llvm-config --cxxflags does not + # include -fno-rtti, leading to linker errors. Be sure to add it. + if(NOT MSVC AND (CMAKE_COMPILER_IS_GNUCXX OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"))) + if(NOT ${LLVM_CXXFLAGS} MATCHES "-fno-rtti") + set(LLVM_CXXFLAGS "${LLVM_CXXFLAGS} -fno-rtti") + endif() + endif() + + # Remove some clang-specific flags for gcc. + if(CMAKE_COMPILER_IS_GNUCXX) + string(REPLACE "-Wcovered-switch-default " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + string(REPLACE "-Wstring-conversion " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + string(REPLACE "-fcolor-diagnostics " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + # this requires more recent gcc versions (not supported by 4.9) + string(REPLACE "-Werror=unguarded-availability-new " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + endif() + + # Remove gcc-specific flags for clang. + if(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang") + string(REPLACE "-Wno-maybe-uninitialized " "" LLVM_CXXFLAGS ${LLVM_CXXFLAGS}) + endif() + + if (${LLVM_VERSION_STRING} VERSION_LESS ${LLVM_FIND_VERSION}) + _LLVM_FAIL("Unsupported LLVM version ${LLVM_VERSION_STRING} found (${LLVM_CONFIG}). At least version ${LLVM_FIND_VERSION} is required. You can also set variables 'LLVM_ROOT_DIR' or 'LLVM_CONFIG' to use a different LLVM installation.") + endif() +endif() + +# Use the default CMake facilities for handling QUIET/REQUIRED. +include(FindPackageHandleStandardArgs) + +find_package_handle_standard_args(LLVM + REQUIRED_VARS LLVM_ROOT_DIR + VERSION_VAR LLVM_VERSION_STRING) diff --git a/bootstrap/cxx/deps/googletest/.clang-format b/deps/googletest/.clang-format similarity index 100% rename from bootstrap/cxx/deps/googletest/.clang-format rename to deps/googletest/.clang-format diff --git a/bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/00-bug_report.md b/deps/googletest/.github/ISSUE_TEMPLATE/00-bug_report.md similarity index 100% rename from bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/00-bug_report.md rename to deps/googletest/.github/ISSUE_TEMPLATE/00-bug_report.md diff --git a/bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/10-feature_request.md b/deps/googletest/.github/ISSUE_TEMPLATE/10-feature_request.md similarity index 100% rename from bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/10-feature_request.md rename to deps/googletest/.github/ISSUE_TEMPLATE/10-feature_request.md diff --git a/bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/config.yml b/deps/googletest/.github/ISSUE_TEMPLATE/config.yml similarity index 100% rename from bootstrap/cxx/deps/googletest/.github/ISSUE_TEMPLATE/config.yml rename to deps/googletest/.github/ISSUE_TEMPLATE/config.yml diff --git a/bootstrap/cxx/deps/googletest/.github/workflows/gtest-ci.yml b/deps/googletest/.github/workflows/gtest-ci.yml similarity index 100% rename from bootstrap/cxx/deps/googletest/.github/workflows/gtest-ci.yml rename to deps/googletest/.github/workflows/gtest-ci.yml diff --git a/bootstrap/cxx/deps/googletest/.gitignore b/deps/googletest/.gitignore similarity index 100% rename from bootstrap/cxx/deps/googletest/.gitignore rename to deps/googletest/.gitignore diff --git a/bootstrap/cxx/deps/googletest/BUILD.bazel b/deps/googletest/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/googletest/BUILD.bazel rename to deps/googletest/BUILD.bazel diff --git a/bootstrap/cxx/deps/googletest/CMakeLists.txt b/deps/googletest/CMakeLists.txt similarity index 100% rename from bootstrap/cxx/deps/googletest/CMakeLists.txt rename to deps/googletest/CMakeLists.txt diff --git a/bootstrap/cxx/deps/googletest/CONTRIBUTING.md b/deps/googletest/CONTRIBUTING.md similarity index 100% rename from bootstrap/cxx/deps/googletest/CONTRIBUTING.md rename to deps/googletest/CONTRIBUTING.md diff --git a/bootstrap/cxx/deps/googletest/CONTRIBUTORS b/deps/googletest/CONTRIBUTORS similarity index 100% rename from bootstrap/cxx/deps/googletest/CONTRIBUTORS rename to deps/googletest/CONTRIBUTORS diff --git a/bootstrap/cxx/deps/googletest/LICENSE b/deps/googletest/LICENSE similarity index 100% rename from bootstrap/cxx/deps/googletest/LICENSE rename to deps/googletest/LICENSE diff --git a/bootstrap/cxx/deps/googletest/README.md b/deps/googletest/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/README.md rename to deps/googletest/README.md diff --git a/bootstrap/cxx/deps/googletest/WORKSPACE b/deps/googletest/WORKSPACE similarity index 100% rename from bootstrap/cxx/deps/googletest/WORKSPACE rename to deps/googletest/WORKSPACE diff --git a/bootstrap/cxx/deps/googletest/ci/linux-presubmit.sh b/deps/googletest/ci/linux-presubmit.sh similarity index 100% rename from bootstrap/cxx/deps/googletest/ci/linux-presubmit.sh rename to deps/googletest/ci/linux-presubmit.sh diff --git a/bootstrap/cxx/deps/googletest/ci/macos-presubmit.sh b/deps/googletest/ci/macos-presubmit.sh similarity index 100% rename from bootstrap/cxx/deps/googletest/ci/macos-presubmit.sh rename to deps/googletest/ci/macos-presubmit.sh diff --git a/bootstrap/cxx/deps/googletest/docs/_config.yml b/deps/googletest/docs/_config.yml similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/_config.yml rename to deps/googletest/docs/_config.yml diff --git a/bootstrap/cxx/deps/googletest/docs/_data/navigation.yml b/deps/googletest/docs/_data/navigation.yml similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/_data/navigation.yml rename to deps/googletest/docs/_data/navigation.yml diff --git a/bootstrap/cxx/deps/googletest/docs/_layouts/default.html b/deps/googletest/docs/_layouts/default.html similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/_layouts/default.html rename to deps/googletest/docs/_layouts/default.html diff --git a/bootstrap/cxx/deps/googletest/docs/_sass/main.scss b/deps/googletest/docs/_sass/main.scss similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/_sass/main.scss rename to deps/googletest/docs/_sass/main.scss diff --git a/bootstrap/cxx/deps/googletest/docs/advanced.md b/deps/googletest/docs/advanced.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/advanced.md rename to deps/googletest/docs/advanced.md diff --git a/bootstrap/cxx/deps/googletest/docs/assets/css/style.scss b/deps/googletest/docs/assets/css/style.scss similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/assets/css/style.scss rename to deps/googletest/docs/assets/css/style.scss diff --git a/bootstrap/cxx/deps/googletest/docs/community_created_documentation.md b/deps/googletest/docs/community_created_documentation.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/community_created_documentation.md rename to deps/googletest/docs/community_created_documentation.md diff --git a/bootstrap/cxx/deps/googletest/docs/faq.md b/deps/googletest/docs/faq.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/faq.md rename to deps/googletest/docs/faq.md diff --git a/bootstrap/cxx/deps/googletest/docs/gmock_cheat_sheet.md b/deps/googletest/docs/gmock_cheat_sheet.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/gmock_cheat_sheet.md rename to deps/googletest/docs/gmock_cheat_sheet.md diff --git a/bootstrap/cxx/deps/googletest/docs/gmock_cook_book.md b/deps/googletest/docs/gmock_cook_book.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/gmock_cook_book.md rename to deps/googletest/docs/gmock_cook_book.md diff --git a/bootstrap/cxx/deps/googletest/docs/gmock_faq.md b/deps/googletest/docs/gmock_faq.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/gmock_faq.md rename to deps/googletest/docs/gmock_faq.md diff --git a/bootstrap/cxx/deps/googletest/docs/gmock_for_dummies.md b/deps/googletest/docs/gmock_for_dummies.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/gmock_for_dummies.md rename to deps/googletest/docs/gmock_for_dummies.md diff --git a/bootstrap/cxx/deps/googletest/docs/index.md b/deps/googletest/docs/index.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/index.md rename to deps/googletest/docs/index.md diff --git a/bootstrap/cxx/deps/googletest/docs/pkgconfig.md b/deps/googletest/docs/pkgconfig.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/pkgconfig.md rename to deps/googletest/docs/pkgconfig.md diff --git a/bootstrap/cxx/deps/googletest/docs/platforms.md b/deps/googletest/docs/platforms.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/platforms.md rename to deps/googletest/docs/platforms.md diff --git a/bootstrap/cxx/deps/googletest/docs/primer.md b/deps/googletest/docs/primer.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/primer.md rename to deps/googletest/docs/primer.md diff --git a/bootstrap/cxx/deps/googletest/docs/quickstart-bazel.md b/deps/googletest/docs/quickstart-bazel.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/quickstart-bazel.md rename to deps/googletest/docs/quickstart-bazel.md diff --git a/bootstrap/cxx/deps/googletest/docs/quickstart-cmake.md b/deps/googletest/docs/quickstart-cmake.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/quickstart-cmake.md rename to deps/googletest/docs/quickstart-cmake.md diff --git a/bootstrap/cxx/deps/googletest/docs/reference/actions.md b/deps/googletest/docs/reference/actions.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/reference/actions.md rename to deps/googletest/docs/reference/actions.md diff --git a/bootstrap/cxx/deps/googletest/docs/reference/assertions.md b/deps/googletest/docs/reference/assertions.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/reference/assertions.md rename to deps/googletest/docs/reference/assertions.md diff --git a/bootstrap/cxx/deps/googletest/docs/reference/matchers.md b/deps/googletest/docs/reference/matchers.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/reference/matchers.md rename to deps/googletest/docs/reference/matchers.md diff --git a/bootstrap/cxx/deps/googletest/docs/reference/mocking.md b/deps/googletest/docs/reference/mocking.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/reference/mocking.md rename to deps/googletest/docs/reference/mocking.md diff --git a/bootstrap/cxx/deps/googletest/docs/reference/testing.md b/deps/googletest/docs/reference/testing.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/reference/testing.md rename to deps/googletest/docs/reference/testing.md diff --git a/bootstrap/cxx/deps/googletest/docs/samples.md b/deps/googletest/docs/samples.md similarity index 100% rename from bootstrap/cxx/deps/googletest/docs/samples.md rename to deps/googletest/docs/samples.md diff --git a/bootstrap/cxx/deps/googletest/googlemock/CMakeLists.txt b/deps/googletest/googlemock/CMakeLists.txt similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/CMakeLists.txt rename to deps/googletest/googlemock/CMakeLists.txt diff --git a/bootstrap/cxx/deps/googletest/googlemock/README.md b/deps/googletest/googlemock/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/README.md rename to deps/googletest/googlemock/README.md diff --git a/bootstrap/cxx/deps/googletest/googlemock/cmake/gmock.pc.in b/deps/googletest/googlemock/cmake/gmock.pc.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/cmake/gmock.pc.in rename to deps/googletest/googlemock/cmake/gmock.pc.in diff --git a/bootstrap/cxx/deps/googletest/googlemock/cmake/gmock_main.pc.in b/deps/googletest/googlemock/cmake/gmock_main.pc.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/cmake/gmock_main.pc.in rename to deps/googletest/googlemock/cmake/gmock_main.pc.in diff --git a/bootstrap/cxx/deps/googletest/googlemock/docs/README.md b/deps/googletest/googlemock/docs/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/docs/README.md rename to deps/googletest/googlemock/docs/README.md diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-actions.h b/deps/googletest/googlemock/include/gmock/gmock-actions.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-actions.h rename to deps/googletest/googlemock/include/gmock/gmock-actions.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-cardinalities.h b/deps/googletest/googlemock/include/gmock/gmock-cardinalities.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-cardinalities.h rename to deps/googletest/googlemock/include/gmock/gmock-cardinalities.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-function-mocker.h b/deps/googletest/googlemock/include/gmock/gmock-function-mocker.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-function-mocker.h rename to deps/googletest/googlemock/include/gmock/gmock-function-mocker.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-matchers.h b/deps/googletest/googlemock/include/gmock/gmock-matchers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-matchers.h rename to deps/googletest/googlemock/include/gmock/gmock-matchers.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-more-actions.h b/deps/googletest/googlemock/include/gmock/gmock-more-actions.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-more-actions.h rename to deps/googletest/googlemock/include/gmock/gmock-more-actions.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-more-matchers.h b/deps/googletest/googlemock/include/gmock/gmock-more-matchers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-more-matchers.h rename to deps/googletest/googlemock/include/gmock/gmock-more-matchers.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-nice-strict.h b/deps/googletest/googlemock/include/gmock/gmock-nice-strict.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-nice-strict.h rename to deps/googletest/googlemock/include/gmock/gmock-nice-strict.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-spec-builders.h b/deps/googletest/googlemock/include/gmock/gmock-spec-builders.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock-spec-builders.h rename to deps/googletest/googlemock/include/gmock/gmock-spec-builders.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock.h b/deps/googletest/googlemock/include/gmock/gmock.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/gmock.h rename to deps/googletest/googlemock/include/gmock/gmock.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/README.md b/deps/googletest/googlemock/include/gmock/internal/custom/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/README.md rename to deps/googletest/googlemock/include/gmock/internal/custom/README.md diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h b/deps/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h rename to deps/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h b/deps/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h rename to deps/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-port.h b/deps/googletest/googlemock/include/gmock/internal/custom/gmock-port.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/custom/gmock-port.h rename to deps/googletest/googlemock/include/gmock/internal/custom/gmock-port.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h b/deps/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h rename to deps/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-port.h b/deps/googletest/googlemock/include/gmock/internal/gmock-port.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-port.h rename to deps/googletest/googlemock/include/gmock/internal/gmock-port.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-pp.h b/deps/googletest/googlemock/include/gmock/internal/gmock-pp.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/include/gmock/internal/gmock-pp.h rename to deps/googletest/googlemock/include/gmock/internal/gmock-pp.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock-all.cc b/deps/googletest/googlemock/src/gmock-all.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock-all.cc rename to deps/googletest/googlemock/src/gmock-all.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock-cardinalities.cc b/deps/googletest/googlemock/src/gmock-cardinalities.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock-cardinalities.cc rename to deps/googletest/googlemock/src/gmock-cardinalities.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock-internal-utils.cc b/deps/googletest/googlemock/src/gmock-internal-utils.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock-internal-utils.cc rename to deps/googletest/googlemock/src/gmock-internal-utils.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock-matchers.cc b/deps/googletest/googlemock/src/gmock-matchers.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock-matchers.cc rename to deps/googletest/googlemock/src/gmock-matchers.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock-spec-builders.cc b/deps/googletest/googlemock/src/gmock-spec-builders.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock-spec-builders.cc rename to deps/googletest/googlemock/src/gmock-spec-builders.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock.cc b/deps/googletest/googlemock/src/gmock.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock.cc rename to deps/googletest/googlemock/src/gmock.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/src/gmock_main.cc b/deps/googletest/googlemock/src/gmock_main.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/src/gmock_main.cc rename to deps/googletest/googlemock/src/gmock_main.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/BUILD.bazel b/deps/googletest/googlemock/test/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/BUILD.bazel rename to deps/googletest/googlemock/test/BUILD.bazel diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-actions_test.cc b/deps/googletest/googlemock/test/gmock-actions_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-actions_test.cc rename to deps/googletest/googlemock/test/gmock-actions_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-cardinalities_test.cc b/deps/googletest/googlemock/test/gmock-cardinalities_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-cardinalities_test.cc rename to deps/googletest/googlemock/test/gmock-cardinalities_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-function-mocker_test.cc b/deps/googletest/googlemock/test/gmock-function-mocker_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-function-mocker_test.cc rename to deps/googletest/googlemock/test/gmock-function-mocker_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-internal-utils_test.cc b/deps/googletest/googlemock/test/gmock-internal-utils_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-internal-utils_test.cc rename to deps/googletest/googlemock/test/gmock-internal-utils_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-arithmetic_test.cc b/deps/googletest/googlemock/test/gmock-matchers-arithmetic_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-arithmetic_test.cc rename to deps/googletest/googlemock/test/gmock-matchers-arithmetic_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-comparisons_test.cc b/deps/googletest/googlemock/test/gmock-matchers-comparisons_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-comparisons_test.cc rename to deps/googletest/googlemock/test/gmock-matchers-comparisons_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-containers_test.cc b/deps/googletest/googlemock/test/gmock-matchers-containers_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-containers_test.cc rename to deps/googletest/googlemock/test/gmock-matchers-containers_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-misc_test.cc b/deps/googletest/googlemock/test/gmock-matchers-misc_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers-misc_test.cc rename to deps/googletest/googlemock/test/gmock-matchers-misc_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers_test.h b/deps/googletest/googlemock/test/gmock-matchers_test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-matchers_test.h rename to deps/googletest/googlemock/test/gmock-matchers_test.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-more-actions_test.cc b/deps/googletest/googlemock/test/gmock-more-actions_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-more-actions_test.cc rename to deps/googletest/googlemock/test/gmock-more-actions_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-nice-strict_test.cc b/deps/googletest/googlemock/test/gmock-nice-strict_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-nice-strict_test.cc rename to deps/googletest/googlemock/test/gmock-nice-strict_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-port_test.cc b/deps/googletest/googlemock/test/gmock-port_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-port_test.cc rename to deps/googletest/googlemock/test/gmock-port_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-pp-string_test.cc b/deps/googletest/googlemock/test/gmock-pp-string_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-pp-string_test.cc rename to deps/googletest/googlemock/test/gmock-pp-string_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-pp_test.cc b/deps/googletest/googlemock/test/gmock-pp_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-pp_test.cc rename to deps/googletest/googlemock/test/gmock-pp_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock-spec-builders_test.cc b/deps/googletest/googlemock/test/gmock-spec-builders_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock-spec-builders_test.cc rename to deps/googletest/googlemock/test/gmock-spec-builders_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_all_test.cc b/deps/googletest/googlemock/test/gmock_all_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_all_test.cc rename to deps/googletest/googlemock/test/gmock_all_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_ex_test.cc b/deps/googletest/googlemock/test/gmock_ex_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_ex_test.cc rename to deps/googletest/googlemock/test/gmock_ex_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_leak_test.py b/deps/googletest/googlemock/test/gmock_leak_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_leak_test.py rename to deps/googletest/googlemock/test/gmock_leak_test.py diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_leak_test_.cc b/deps/googletest/googlemock/test/gmock_leak_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_leak_test_.cc rename to deps/googletest/googlemock/test/gmock_leak_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_link2_test.cc b/deps/googletest/googlemock/test/gmock_link2_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_link2_test.cc rename to deps/googletest/googlemock/test/gmock_link2_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_link_test.cc b/deps/googletest/googlemock/test/gmock_link_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_link_test.cc rename to deps/googletest/googlemock/test/gmock_link_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_link_test.h b/deps/googletest/googlemock/test/gmock_link_test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_link_test.h rename to deps/googletest/googlemock/test/gmock_link_test.h diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test.py b/deps/googletest/googlemock/test/gmock_output_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test.py rename to deps/googletest/googlemock/test/gmock_output_test.py diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test_.cc b/deps/googletest/googlemock/test/gmock_output_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test_.cc rename to deps/googletest/googlemock/test/gmock_output_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test_golden.txt b/deps/googletest/googlemock/test/gmock_output_test_golden.txt similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_output_test_golden.txt rename to deps/googletest/googlemock/test/gmock_output_test_golden.txt diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_stress_test.cc b/deps/googletest/googlemock/test/gmock_stress_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_stress_test.cc rename to deps/googletest/googlemock/test/gmock_stress_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_test.cc b/deps/googletest/googlemock/test/gmock_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_test.cc rename to deps/googletest/googlemock/test/gmock_test.cc diff --git a/bootstrap/cxx/deps/googletest/googlemock/test/gmock_test_utils.py b/deps/googletest/googlemock/test/gmock_test_utils.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googlemock/test/gmock_test_utils.py rename to deps/googletest/googlemock/test/gmock_test_utils.py diff --git a/bootstrap/cxx/deps/googletest/googletest/CMakeLists.txt b/deps/googletest/googletest/CMakeLists.txt similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/CMakeLists.txt rename to deps/googletest/googletest/CMakeLists.txt diff --git a/bootstrap/cxx/deps/googletest/googletest/README.md b/deps/googletest/googletest/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/README.md rename to deps/googletest/googletest/README.md diff --git a/bootstrap/cxx/deps/googletest/googletest/cmake/Config.cmake.in b/deps/googletest/googletest/cmake/Config.cmake.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/cmake/Config.cmake.in rename to deps/googletest/googletest/cmake/Config.cmake.in diff --git a/bootstrap/cxx/deps/googletest/googletest/cmake/gtest.pc.in b/deps/googletest/googletest/cmake/gtest.pc.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/cmake/gtest.pc.in rename to deps/googletest/googletest/cmake/gtest.pc.in diff --git a/bootstrap/cxx/deps/googletest/googletest/cmake/gtest_main.pc.in b/deps/googletest/googletest/cmake/gtest_main.pc.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/cmake/gtest_main.pc.in rename to deps/googletest/googletest/cmake/gtest_main.pc.in diff --git a/bootstrap/cxx/deps/googletest/googletest/cmake/internal_utils.cmake b/deps/googletest/googletest/cmake/internal_utils.cmake similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/cmake/internal_utils.cmake rename to deps/googletest/googletest/cmake/internal_utils.cmake diff --git a/bootstrap/cxx/deps/googletest/googletest/cmake/libgtest.la.in b/deps/googletest/googletest/cmake/libgtest.la.in similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/cmake/libgtest.la.in rename to deps/googletest/googletest/cmake/libgtest.la.in diff --git a/bootstrap/cxx/deps/googletest/googletest/docs/README.md b/deps/googletest/googletest/docs/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/docs/README.md rename to deps/googletest/googletest/docs/README.md diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-assertion-result.h b/deps/googletest/googletest/include/gtest/gtest-assertion-result.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-assertion-result.h rename to deps/googletest/googletest/include/gtest/gtest-assertion-result.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-death-test.h b/deps/googletest/googletest/include/gtest/gtest-death-test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-death-test.h rename to deps/googletest/googletest/include/gtest/gtest-death-test.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-matchers.h b/deps/googletest/googletest/include/gtest/gtest-matchers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-matchers.h rename to deps/googletest/googletest/include/gtest/gtest-matchers.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-message.h b/deps/googletest/googletest/include/gtest/gtest-message.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-message.h rename to deps/googletest/googletest/include/gtest/gtest-message.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-param-test.h b/deps/googletest/googletest/include/gtest/gtest-param-test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-param-test.h rename to deps/googletest/googletest/include/gtest/gtest-param-test.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-printers.h b/deps/googletest/googletest/include/gtest/gtest-printers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-printers.h rename to deps/googletest/googletest/include/gtest/gtest-printers.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-spi.h b/deps/googletest/googletest/include/gtest/gtest-spi.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-spi.h rename to deps/googletest/googletest/include/gtest/gtest-spi.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-test-part.h b/deps/googletest/googletest/include/gtest/gtest-test-part.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-test-part.h rename to deps/googletest/googletest/include/gtest/gtest-test-part.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-typed-test.h b/deps/googletest/googletest/include/gtest/gtest-typed-test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest-typed-test.h rename to deps/googletest/googletest/include/gtest/gtest-typed-test.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest.h b/deps/googletest/googletest/include/gtest/gtest.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest.h rename to deps/googletest/googletest/include/gtest/gtest.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest_pred_impl.h b/deps/googletest/googletest/include/gtest/gtest_pred_impl.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest_pred_impl.h rename to deps/googletest/googletest/include/gtest/gtest_pred_impl.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest_prod.h b/deps/googletest/googletest/include/gtest/gtest_prod.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/gtest_prod.h rename to deps/googletest/googletest/include/gtest/gtest_prod.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/README.md b/deps/googletest/googletest/include/gtest/internal/custom/README.md similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/README.md rename to deps/googletest/googletest/include/gtest/internal/custom/README.md diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest-port.h b/deps/googletest/googletest/include/gtest/internal/custom/gtest-port.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest-port.h rename to deps/googletest/googletest/include/gtest/internal/custom/gtest-port.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest-printers.h b/deps/googletest/googletest/include/gtest/internal/custom/gtest-printers.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest-printers.h rename to deps/googletest/googletest/include/gtest/internal/custom/gtest-printers.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest.h b/deps/googletest/googletest/include/gtest/internal/custom/gtest.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/custom/gtest.h rename to deps/googletest/googletest/include/gtest/internal/custom/gtest.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h b/deps/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h rename to deps/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-filepath.h b/deps/googletest/googletest/include/gtest/internal/gtest-filepath.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-filepath.h rename to deps/googletest/googletest/include/gtest/internal/gtest-filepath.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-internal.h b/deps/googletest/googletest/include/gtest/internal/gtest-internal.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-internal.h rename to deps/googletest/googletest/include/gtest/internal/gtest-internal.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-param-util.h b/deps/googletest/googletest/include/gtest/internal/gtest-param-util.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-param-util.h rename to deps/googletest/googletest/include/gtest/internal/gtest-param-util.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-port-arch.h b/deps/googletest/googletest/include/gtest/internal/gtest-port-arch.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-port-arch.h rename to deps/googletest/googletest/include/gtest/internal/gtest-port-arch.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-port.h b/deps/googletest/googletest/include/gtest/internal/gtest-port.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-port.h rename to deps/googletest/googletest/include/gtest/internal/gtest-port.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-string.h b/deps/googletest/googletest/include/gtest/internal/gtest-string.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-string.h rename to deps/googletest/googletest/include/gtest/internal/gtest-string.h diff --git a/bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-type-util.h b/deps/googletest/googletest/include/gtest/internal/gtest-type-util.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/include/gtest/internal/gtest-type-util.h rename to deps/googletest/googletest/include/gtest/internal/gtest-type-util.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/prime_tables.h b/deps/googletest/googletest/samples/prime_tables.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/prime_tables.h rename to deps/googletest/googletest/samples/prime_tables.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample1.cc b/deps/googletest/googletest/samples/sample1.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample1.cc rename to deps/googletest/googletest/samples/sample1.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample1.h b/deps/googletest/googletest/samples/sample1.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample1.h rename to deps/googletest/googletest/samples/sample1.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample10_unittest.cc b/deps/googletest/googletest/samples/sample10_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample10_unittest.cc rename to deps/googletest/googletest/samples/sample10_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample1_unittest.cc b/deps/googletest/googletest/samples/sample1_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample1_unittest.cc rename to deps/googletest/googletest/samples/sample1_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample2.cc b/deps/googletest/googletest/samples/sample2.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample2.cc rename to deps/googletest/googletest/samples/sample2.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample2.h b/deps/googletest/googletest/samples/sample2.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample2.h rename to deps/googletest/googletest/samples/sample2.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample2_unittest.cc b/deps/googletest/googletest/samples/sample2_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample2_unittest.cc rename to deps/googletest/googletest/samples/sample2_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample3-inl.h b/deps/googletest/googletest/samples/sample3-inl.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample3-inl.h rename to deps/googletest/googletest/samples/sample3-inl.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample3_unittest.cc b/deps/googletest/googletest/samples/sample3_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample3_unittest.cc rename to deps/googletest/googletest/samples/sample3_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample4.cc b/deps/googletest/googletest/samples/sample4.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample4.cc rename to deps/googletest/googletest/samples/sample4.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample4.h b/deps/googletest/googletest/samples/sample4.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample4.h rename to deps/googletest/googletest/samples/sample4.h diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample4_unittest.cc b/deps/googletest/googletest/samples/sample4_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample4_unittest.cc rename to deps/googletest/googletest/samples/sample4_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample5_unittest.cc b/deps/googletest/googletest/samples/sample5_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample5_unittest.cc rename to deps/googletest/googletest/samples/sample5_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample6_unittest.cc b/deps/googletest/googletest/samples/sample6_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample6_unittest.cc rename to deps/googletest/googletest/samples/sample6_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample7_unittest.cc b/deps/googletest/googletest/samples/sample7_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample7_unittest.cc rename to deps/googletest/googletest/samples/sample7_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample8_unittest.cc b/deps/googletest/googletest/samples/sample8_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample8_unittest.cc rename to deps/googletest/googletest/samples/sample8_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/samples/sample9_unittest.cc b/deps/googletest/googletest/samples/sample9_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/samples/sample9_unittest.cc rename to deps/googletest/googletest/samples/sample9_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-all.cc b/deps/googletest/googletest/src/gtest-all.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-all.cc rename to deps/googletest/googletest/src/gtest-all.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-assertion-result.cc b/deps/googletest/googletest/src/gtest-assertion-result.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-assertion-result.cc rename to deps/googletest/googletest/src/gtest-assertion-result.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-death-test.cc b/deps/googletest/googletest/src/gtest-death-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-death-test.cc rename to deps/googletest/googletest/src/gtest-death-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-filepath.cc b/deps/googletest/googletest/src/gtest-filepath.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-filepath.cc rename to deps/googletest/googletest/src/gtest-filepath.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-internal-inl.h b/deps/googletest/googletest/src/gtest-internal-inl.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-internal-inl.h rename to deps/googletest/googletest/src/gtest-internal-inl.h diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-matchers.cc b/deps/googletest/googletest/src/gtest-matchers.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-matchers.cc rename to deps/googletest/googletest/src/gtest-matchers.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-port.cc b/deps/googletest/googletest/src/gtest-port.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-port.cc rename to deps/googletest/googletest/src/gtest-port.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-printers.cc b/deps/googletest/googletest/src/gtest-printers.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-printers.cc rename to deps/googletest/googletest/src/gtest-printers.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-test-part.cc b/deps/googletest/googletest/src/gtest-test-part.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-test-part.cc rename to deps/googletest/googletest/src/gtest-test-part.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest-typed-test.cc b/deps/googletest/googletest/src/gtest-typed-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest-typed-test.cc rename to deps/googletest/googletest/src/gtest-typed-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest.cc b/deps/googletest/googletest/src/gtest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest.cc rename to deps/googletest/googletest/src/gtest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/src/gtest_main.cc b/deps/googletest/googletest/src/gtest_main.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/src/gtest_main.cc rename to deps/googletest/googletest/src/gtest_main.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/BUILD.bazel b/deps/googletest/googletest/test/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/BUILD.bazel rename to deps/googletest/googletest/test/BUILD.bazel diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-break-on-failure-unittest.py b/deps/googletest/googletest/test/googletest-break-on-failure-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-break-on-failure-unittest.py rename to deps/googletest/googletest/test/googletest-break-on-failure-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-break-on-failure-unittest_.cc b/deps/googletest/googletest/test/googletest-break-on-failure-unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-break-on-failure-unittest_.cc rename to deps/googletest/googletest/test/googletest-break-on-failure-unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-catch-exceptions-test.py b/deps/googletest/googletest/test/googletest-catch-exceptions-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-catch-exceptions-test.py rename to deps/googletest/googletest/test/googletest-catch-exceptions-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-catch-exceptions-test_.cc b/deps/googletest/googletest/test/googletest-catch-exceptions-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-catch-exceptions-test_.cc rename to deps/googletest/googletest/test/googletest-catch-exceptions-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-color-test.py b/deps/googletest/googletest/test/googletest-color-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-color-test.py rename to deps/googletest/googletest/test/googletest-color-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-color-test_.cc b/deps/googletest/googletest/test/googletest-color-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-color-test_.cc rename to deps/googletest/googletest/test/googletest-color-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-death-test-test.cc b/deps/googletest/googletest/test/googletest-death-test-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-death-test-test.cc rename to deps/googletest/googletest/test/googletest-death-test-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-death-test_ex_test.cc b/deps/googletest/googletest/test/googletest-death-test_ex_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-death-test_ex_test.cc rename to deps/googletest/googletest/test/googletest-death-test_ex_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-env-var-test.py b/deps/googletest/googletest/test/googletest-env-var-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-env-var-test.py rename to deps/googletest/googletest/test/googletest-env-var-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-env-var-test_.cc b/deps/googletest/googletest/test/googletest-env-var-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-env-var-test_.cc rename to deps/googletest/googletest/test/googletest-env-var-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-failfast-unittest.py b/deps/googletest/googletest/test/googletest-failfast-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-failfast-unittest.py rename to deps/googletest/googletest/test/googletest-failfast-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-failfast-unittest_.cc b/deps/googletest/googletest/test/googletest-failfast-unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-failfast-unittest_.cc rename to deps/googletest/googletest/test/googletest-failfast-unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-filepath-test.cc b/deps/googletest/googletest/test/googletest-filepath-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-filepath-test.cc rename to deps/googletest/googletest/test/googletest-filepath-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-filter-unittest.py b/deps/googletest/googletest/test/googletest-filter-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-filter-unittest.py rename to deps/googletest/googletest/test/googletest-filter-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-filter-unittest_.cc b/deps/googletest/googletest/test/googletest-filter-unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-filter-unittest_.cc rename to deps/googletest/googletest/test/googletest-filter-unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-global-environment-unittest.py b/deps/googletest/googletest/test/googletest-global-environment-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-global-environment-unittest.py rename to deps/googletest/googletest/test/googletest-global-environment-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-global-environment-unittest_.cc b/deps/googletest/googletest/test/googletest-global-environment-unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-global-environment-unittest_.cc rename to deps/googletest/googletest/test/googletest-global-environment-unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-json-outfiles-test.py b/deps/googletest/googletest/test/googletest-json-outfiles-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-json-outfiles-test.py rename to deps/googletest/googletest/test/googletest-json-outfiles-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-json-output-unittest.py b/deps/googletest/googletest/test/googletest-json-output-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-json-output-unittest.py rename to deps/googletest/googletest/test/googletest-json-output-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-list-tests-unittest.py b/deps/googletest/googletest/test/googletest-list-tests-unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-list-tests-unittest.py rename to deps/googletest/googletest/test/googletest-list-tests-unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-list-tests-unittest_.cc b/deps/googletest/googletest/test/googletest-list-tests-unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-list-tests-unittest_.cc rename to deps/googletest/googletest/test/googletest-list-tests-unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-listener-test.cc b/deps/googletest/googletest/test/googletest-listener-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-listener-test.cc rename to deps/googletest/googletest/test/googletest-listener-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-message-test.cc b/deps/googletest/googletest/test/googletest-message-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-message-test.cc rename to deps/googletest/googletest/test/googletest-message-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-options-test.cc b/deps/googletest/googletest/test/googletest-options-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-options-test.cc rename to deps/googletest/googletest/test/googletest-options-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test-golden-lin.txt b/deps/googletest/googletest/test/googletest-output-test-golden-lin.txt similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test-golden-lin.txt rename to deps/googletest/googletest/test/googletest-output-test-golden-lin.txt diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test.py b/deps/googletest/googletest/test/googletest-output-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test.py rename to deps/googletest/googletest/test/googletest-output-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test_.cc b/deps/googletest/googletest/test/googletest-output-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-output-test_.cc rename to deps/googletest/googletest/test/googletest-output-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test.py b/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test.py rename to deps/googletest/googletest/test/googletest-param-test-invalid-name1-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc b/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc rename to deps/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test.py b/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test.py rename to deps/googletest/googletest/test/googletest-param-test-invalid-name2-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc b/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc rename to deps/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-test.cc b/deps/googletest/googletest/test/googletest-param-test-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-test.cc rename to deps/googletest/googletest/test/googletest-param-test-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-test.h b/deps/googletest/googletest/test/googletest-param-test-test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test-test.h rename to deps/googletest/googletest/test/googletest-param-test-test.h diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test2-test.cc b/deps/googletest/googletest/test/googletest-param-test2-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-param-test2-test.cc rename to deps/googletest/googletest/test/googletest-param-test2-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-port-test.cc b/deps/googletest/googletest/test/googletest-port-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-port-test.cc rename to deps/googletest/googletest/test/googletest-port-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-printers-test.cc b/deps/googletest/googletest/test/googletest-printers-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-printers-test.cc rename to deps/googletest/googletest/test/googletest-printers-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-setuptestsuite-test.py b/deps/googletest/googletest/test/googletest-setuptestsuite-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-setuptestsuite-test.py rename to deps/googletest/googletest/test/googletest-setuptestsuite-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-setuptestsuite-test_.cc b/deps/googletest/googletest/test/googletest-setuptestsuite-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-setuptestsuite-test_.cc rename to deps/googletest/googletest/test/googletest-setuptestsuite-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-shuffle-test.py b/deps/googletest/googletest/test/googletest-shuffle-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-shuffle-test.py rename to deps/googletest/googletest/test/googletest-shuffle-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-shuffle-test_.cc b/deps/googletest/googletest/test/googletest-shuffle-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-shuffle-test_.cc rename to deps/googletest/googletest/test/googletest-shuffle-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-test-part-test.cc b/deps/googletest/googletest/test/googletest-test-part-test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-test-part-test.cc rename to deps/googletest/googletest/test/googletest-test-part-test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-throw-on-failure-test.py b/deps/googletest/googletest/test/googletest-throw-on-failure-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-throw-on-failure-test.py rename to deps/googletest/googletest/test/googletest-throw-on-failure-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-throw-on-failure-test_.cc b/deps/googletest/googletest/test/googletest-throw-on-failure-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-throw-on-failure-test_.cc rename to deps/googletest/googletest/test/googletest-throw-on-failure-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-uninitialized-test.py b/deps/googletest/googletest/test/googletest-uninitialized-test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-uninitialized-test.py rename to deps/googletest/googletest/test/googletest-uninitialized-test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/googletest-uninitialized-test_.cc b/deps/googletest/googletest/test/googletest-uninitialized-test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/googletest-uninitialized-test_.cc rename to deps/googletest/googletest/test/googletest-uninitialized-test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test2_test.cc b/deps/googletest/googletest/test/gtest-typed-test2_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test2_test.cc rename to deps/googletest/googletest/test/gtest-typed-test2_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test_test.cc b/deps/googletest/googletest/test/gtest-typed-test_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test_test.cc rename to deps/googletest/googletest/test/gtest-typed-test_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test_test.h b/deps/googletest/googletest/test/gtest-typed-test_test.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest-typed-test_test.h rename to deps/googletest/googletest/test/gtest-typed-test_test.h diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest-unittest-api_test.cc b/deps/googletest/googletest/test/gtest-unittest-api_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest-unittest-api_test.cc rename to deps/googletest/googletest/test/gtest-unittest-api_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_all_test.cc b/deps/googletest/googletest/test/gtest_all_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_all_test.cc rename to deps/googletest/googletest/test/gtest_all_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_assert_by_exception_test.cc b/deps/googletest/googletest/test/gtest_assert_by_exception_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_assert_by_exception_test.cc rename to deps/googletest/googletest/test/gtest_assert_by_exception_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_environment_test.cc b/deps/googletest/googletest/test/gtest_environment_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_environment_test.cc rename to deps/googletest/googletest/test/gtest_environment_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_help_test.py b/deps/googletest/googletest/test/gtest_help_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_help_test.py rename to deps/googletest/googletest/test/gtest_help_test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_help_test_.cc b/deps/googletest/googletest/test/gtest_help_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_help_test_.cc rename to deps/googletest/googletest/test/gtest_help_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_json_test_utils.py b/deps/googletest/googletest/test/gtest_json_test_utils.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_json_test_utils.py rename to deps/googletest/googletest/test/gtest_json_test_utils.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_list_output_unittest.py b/deps/googletest/googletest/test/gtest_list_output_unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_list_output_unittest.py rename to deps/googletest/googletest/test/gtest_list_output_unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_list_output_unittest_.cc b/deps/googletest/googletest/test/gtest_list_output_unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_list_output_unittest_.cc rename to deps/googletest/googletest/test/gtest_list_output_unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_main_unittest.cc b/deps/googletest/googletest/test/gtest_main_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_main_unittest.cc rename to deps/googletest/googletest/test/gtest_main_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_no_test_unittest.cc b/deps/googletest/googletest/test/gtest_no_test_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_no_test_unittest.cc rename to deps/googletest/googletest/test/gtest_no_test_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_pred_impl_unittest.cc b/deps/googletest/googletest/test/gtest_pred_impl_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_pred_impl_unittest.cc rename to deps/googletest/googletest/test/gtest_pred_impl_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_premature_exit_test.cc b/deps/googletest/googletest/test/gtest_premature_exit_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_premature_exit_test.cc rename to deps/googletest/googletest/test/gtest_premature_exit_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_prod_test.cc b/deps/googletest/googletest/test/gtest_prod_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_prod_test.cc rename to deps/googletest/googletest/test/gtest_prod_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_repeat_test.cc b/deps/googletest/googletest/test/gtest_repeat_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_repeat_test.cc rename to deps/googletest/googletest/test/gtest_repeat_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_check_output_test.py b/deps/googletest/googletest/test/gtest_skip_check_output_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_check_output_test.py rename to deps/googletest/googletest/test/gtest_skip_check_output_test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_environment_check_output_test.py b/deps/googletest/googletest/test/gtest_skip_environment_check_output_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_environment_check_output_test.py rename to deps/googletest/googletest/test/gtest_skip_environment_check_output_test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc b/deps/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc rename to deps/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_test.cc b/deps/googletest/googletest/test/gtest_skip_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_skip_test.cc rename to deps/googletest/googletest/test/gtest_skip_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_sole_header_test.cc b/deps/googletest/googletest/test/gtest_sole_header_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_sole_header_test.cc rename to deps/googletest/googletest/test/gtest_sole_header_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_stress_test.cc b/deps/googletest/googletest/test/gtest_stress_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_stress_test.cc rename to deps/googletest/googletest/test/gtest_stress_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc b/deps/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc rename to deps/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_test_utils.py b/deps/googletest/googletest/test/gtest_test_utils.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_test_utils.py rename to deps/googletest/googletest/test/gtest_test_utils.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_testbridge_test.py b/deps/googletest/googletest/test/gtest_testbridge_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_testbridge_test.py rename to deps/googletest/googletest/test/gtest_testbridge_test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_testbridge_test_.cc b/deps/googletest/googletest/test/gtest_testbridge_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_testbridge_test_.cc rename to deps/googletest/googletest/test/gtest_testbridge_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc b/deps/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc rename to deps/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_unittest.cc b/deps/googletest/googletest/test/gtest_unittest.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_unittest.cc rename to deps/googletest/googletest/test/gtest_unittest.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfile1_test_.cc b/deps/googletest/googletest/test/gtest_xml_outfile1_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfile1_test_.cc rename to deps/googletest/googletest/test/gtest_xml_outfile1_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfile2_test_.cc b/deps/googletest/googletest/test/gtest_xml_outfile2_test_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfile2_test_.cc rename to deps/googletest/googletest/test/gtest_xml_outfile2_test_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfiles_test.py b/deps/googletest/googletest/test/gtest_xml_outfiles_test.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_outfiles_test.py rename to deps/googletest/googletest/test/gtest_xml_outfiles_test.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_output_unittest.py b/deps/googletest/googletest/test/gtest_xml_output_unittest.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_output_unittest.py rename to deps/googletest/googletest/test/gtest_xml_output_unittest.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_output_unittest_.cc b/deps/googletest/googletest/test/gtest_xml_output_unittest_.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_output_unittest_.cc rename to deps/googletest/googletest/test/gtest_xml_output_unittest_.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_test_utils.py b/deps/googletest/googletest/test/gtest_xml_test_utils.py similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/gtest_xml_test_utils.py rename to deps/googletest/googletest/test/gtest_xml_test_utils.py diff --git a/bootstrap/cxx/deps/googletest/googletest/test/production.cc b/deps/googletest/googletest/test/production.cc similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/production.cc rename to deps/googletest/googletest/test/production.cc diff --git a/bootstrap/cxx/deps/googletest/googletest/test/production.h b/deps/googletest/googletest/test/production.h similarity index 100% rename from bootstrap/cxx/deps/googletest/googletest/test/production.h rename to deps/googletest/googletest/test/production.h diff --git a/bootstrap/cxx/deps/icu/APIChangeReport.html b/deps/icu/APIChangeReport.html similarity index 100% rename from bootstrap/cxx/deps/icu/APIChangeReport.html rename to deps/icu/APIChangeReport.html diff --git a/bootstrap/cxx/deps/icu/APIChangeReport.md b/deps/icu/APIChangeReport.md similarity index 100% rename from bootstrap/cxx/deps/icu/APIChangeReport.md rename to deps/icu/APIChangeReport.md diff --git a/bootstrap/cxx/deps/icu/LICENSE b/deps/icu/LICENSE similarity index 100% rename from bootstrap/cxx/deps/icu/LICENSE rename to deps/icu/LICENSE diff --git a/bootstrap/cxx/deps/icu/as_is/bomlist.py b/deps/icu/as_is/bomlist.py similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/bomlist.py rename to deps/icu/as_is/bomlist.py diff --git a/bootstrap/cxx/deps/icu/as_is/bomlist.txt b/deps/icu/as_is/bomlist.txt similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/bomlist.txt rename to deps/icu/as_is/bomlist.txt diff --git a/bootstrap/cxx/deps/icu/as_is/os390/unpax-icu.sh b/deps/icu/as_is/os390/unpax-icu.sh similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os390/unpax-icu.sh rename to deps/icu/as_is/os390/unpax-icu.sh diff --git a/bootstrap/cxx/deps/icu/as_is/os400/bldiculd.sh b/deps/icu/as_is/os400/bldiculd.sh similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/bldiculd.sh rename to deps/icu/as_is/os400/bldiculd.sh diff --git a/bootstrap/cxx/deps/icu/as_is/os400/convertConfigure.sed b/deps/icu/as_is/os400/convertConfigure.sed similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/convertConfigure.sed rename to deps/icu/as_is/os400/convertConfigure.sed diff --git a/bootstrap/cxx/deps/icu/as_is/os400/cxxfilt.cpp b/deps/icu/as_is/os400/cxxfilt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/cxxfilt.cpp rename to deps/icu/as_is/os400/cxxfilt.cpp diff --git a/bootstrap/cxx/deps/icu/as_is/os400/fixup-icu.sh b/deps/icu/as_is/os400/fixup-icu.sh similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/fixup-icu.sh rename to deps/icu/as_is/os400/fixup-icu.sh diff --git a/bootstrap/cxx/deps/icu/as_is/os400/iculd.c b/deps/icu/as_is/os400/iculd.c similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/iculd.c rename to deps/icu/as_is/os400/iculd.c diff --git a/bootstrap/cxx/deps/icu/as_is/os400/unpax-icu.sh b/deps/icu/as_is/os400/unpax-icu.sh similarity index 100% rename from bootstrap/cxx/deps/icu/as_is/os400/unpax-icu.sh rename to deps/icu/as_is/os400/unpax-icu.sh diff --git a/bootstrap/cxx/deps/icu/icu4c.css b/deps/icu/icu4c.css similarity index 100% rename from bootstrap/cxx/deps/icu/icu4c.css rename to deps/icu/icu4c.css diff --git a/bootstrap/cxx/deps/icu/license.html b/deps/icu/license.html similarity index 100% rename from bootstrap/cxx/deps/icu/license.html rename to deps/icu/license.html diff --git a/bootstrap/cxx/deps/icu/packaging/PACKAGES b/deps/icu/packaging/PACKAGES similarity index 100% rename from bootstrap/cxx/deps/icu/packaging/PACKAGES rename to deps/icu/packaging/PACKAGES diff --git a/bootstrap/cxx/deps/icu/packaging/README b/deps/icu/packaging/README similarity index 100% rename from bootstrap/cxx/deps/icu/packaging/README rename to deps/icu/packaging/README diff --git a/bootstrap/cxx/deps/icu/packaging/distrelease.ps1 b/deps/icu/packaging/distrelease.ps1 similarity index 100% rename from bootstrap/cxx/deps/icu/packaging/distrelease.ps1 rename to deps/icu/packaging/distrelease.ps1 diff --git a/bootstrap/cxx/deps/icu/packaging/rpm/icu.spec b/deps/icu/packaging/rpm/icu.spec similarity index 100% rename from bootstrap/cxx/deps/icu/packaging/rpm/icu.spec rename to deps/icu/packaging/rpm/icu.spec diff --git a/bootstrap/cxx/deps/icu/readme.html b/deps/icu/readme.html similarity index 100% rename from bootstrap/cxx/deps/icu/readme.html rename to deps/icu/readme.html diff --git a/bootstrap/cxx/deps/icu/source/.clang-format b/deps/icu/source/.clang-format similarity index 100% rename from bootstrap/cxx/deps/icu/source/.clang-format rename to deps/icu/source/.clang-format diff --git a/bootstrap/cxx/deps/icu/source/Doxyfile.in b/deps/icu/source/Doxyfile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/Doxyfile.in rename to deps/icu/source/Doxyfile.in diff --git a/bootstrap/cxx/deps/icu/source/Makefile.in b/deps/icu/source/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/Makefile.in rename to deps/icu/source/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/acinclude.m4 b/deps/icu/source/acinclude.m4 similarity index 100% rename from bootstrap/cxx/deps/icu/source/acinclude.m4 rename to deps/icu/source/acinclude.m4 diff --git a/bootstrap/cxx/deps/icu/source/aclocal.m4 b/deps/icu/source/aclocal.m4 similarity index 100% rename from bootstrap/cxx/deps/icu/source/aclocal.m4 rename to deps/icu/source/aclocal.m4 diff --git a/bootstrap/cxx/deps/icu/source/allinone/Build.Windows.Library.ProjectConfiguration.props b/deps/icu/source/allinone/Build.Windows.Library.ProjectConfiguration.props similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Build.Windows.Library.ProjectConfiguration.props rename to deps/icu/source/allinone/Build.Windows.Library.ProjectConfiguration.props diff --git a/bootstrap/cxx/deps/icu/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props b/deps/icu/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props rename to deps/icu/source/allinone/Build.Windows.Library.WarningSettings.ProjectConfiguration.props diff --git a/bootstrap/cxx/deps/icu/source/allinone/Build.Windows.PlatformToolset.props b/deps/icu/source/allinone/Build.Windows.PlatformToolset.props similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Build.Windows.PlatformToolset.props rename to deps/icu/source/allinone/Build.Windows.PlatformToolset.props diff --git a/bootstrap/cxx/deps/icu/source/allinone/Build.Windows.ProjectConfiguration.props b/deps/icu/source/allinone/Build.Windows.ProjectConfiguration.props similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Build.Windows.ProjectConfiguration.props rename to deps/icu/source/allinone/Build.Windows.ProjectConfiguration.props diff --git a/bootstrap/cxx/deps/icu/source/allinone/Build.Windows.UWP.ProjectConfiguration.props b/deps/icu/source/allinone/Build.Windows.UWP.ProjectConfiguration.props similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Build.Windows.UWP.ProjectConfiguration.props rename to deps/icu/source/allinone/Build.Windows.UWP.ProjectConfiguration.props diff --git a/bootstrap/cxx/deps/icu/source/allinone/Windows.CopyUnicodeHeaderFiles.targets b/deps/icu/source/allinone/Windows.CopyUnicodeHeaderFiles.targets similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/Windows.CopyUnicodeHeaderFiles.targets rename to deps/icu/source/allinone/Windows.CopyUnicodeHeaderFiles.targets diff --git a/bootstrap/cxx/deps/icu/source/allinone/allinone.sln b/deps/icu/source/allinone/allinone.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/allinone.sln rename to deps/icu/source/allinone/allinone.sln diff --git a/bootstrap/cxx/deps/icu/source/allinone/icucheck.bat b/deps/icu/source/allinone/icucheck.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/allinone/icucheck.bat rename to deps/icu/source/allinone/icucheck.bat diff --git a/bootstrap/cxx/deps/icu/source/common/BUILD.bazel b/deps/icu/source/common/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/BUILD.bazel rename to deps/icu/source/common/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/common/Makefile.in b/deps/icu/source/common/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/Makefile.in rename to deps/icu/source/common/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/common/appendable.cpp b/deps/icu/source/common/appendable.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/appendable.cpp rename to deps/icu/source/common/appendable.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bmpset.cpp b/deps/icu/source/common/bmpset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bmpset.cpp rename to deps/icu/source/common/bmpset.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bmpset.h b/deps/icu/source/common/bmpset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bmpset.h rename to deps/icu/source/common/bmpset.h diff --git a/bootstrap/cxx/deps/icu/source/common/brkeng.cpp b/deps/icu/source/common/brkeng.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/brkeng.cpp rename to deps/icu/source/common/brkeng.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/brkeng.h b/deps/icu/source/common/brkeng.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/brkeng.h rename to deps/icu/source/common/brkeng.h diff --git a/bootstrap/cxx/deps/icu/source/common/brkiter.cpp b/deps/icu/source/common/brkiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/brkiter.cpp rename to deps/icu/source/common/brkiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bytesinkutil.cpp b/deps/icu/source/common/bytesinkutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytesinkutil.cpp rename to deps/icu/source/common/bytesinkutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bytesinkutil.h b/deps/icu/source/common/bytesinkutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytesinkutil.h rename to deps/icu/source/common/bytesinkutil.h diff --git a/bootstrap/cxx/deps/icu/source/common/bytestream.cpp b/deps/icu/source/common/bytestream.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytestream.cpp rename to deps/icu/source/common/bytestream.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bytestrie.cpp b/deps/icu/source/common/bytestrie.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytestrie.cpp rename to deps/icu/source/common/bytestrie.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bytestriebuilder.cpp b/deps/icu/source/common/bytestriebuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytestriebuilder.cpp rename to deps/icu/source/common/bytestriebuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/bytestrieiterator.cpp b/deps/icu/source/common/bytestrieiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/bytestrieiterator.cpp rename to deps/icu/source/common/bytestrieiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/caniter.cpp b/deps/icu/source/common/caniter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/caniter.cpp rename to deps/icu/source/common/caniter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/capi_helper.h b/deps/icu/source/common/capi_helper.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/capi_helper.h rename to deps/icu/source/common/capi_helper.h diff --git a/bootstrap/cxx/deps/icu/source/common/characterproperties.cpp b/deps/icu/source/common/characterproperties.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/characterproperties.cpp rename to deps/icu/source/common/characterproperties.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/chariter.cpp b/deps/icu/source/common/chariter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/chariter.cpp rename to deps/icu/source/common/chariter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/charstr.cpp b/deps/icu/source/common/charstr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/charstr.cpp rename to deps/icu/source/common/charstr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/charstr.h b/deps/icu/source/common/charstr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/charstr.h rename to deps/icu/source/common/charstr.h diff --git a/bootstrap/cxx/deps/icu/source/common/charstrmap.h b/deps/icu/source/common/charstrmap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/charstrmap.h rename to deps/icu/source/common/charstrmap.h diff --git a/bootstrap/cxx/deps/icu/source/common/cmemory.cpp b/deps/icu/source/common/cmemory.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cmemory.cpp rename to deps/icu/source/common/cmemory.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/cmemory.h b/deps/icu/source/common/cmemory.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cmemory.h rename to deps/icu/source/common/cmemory.h diff --git a/bootstrap/cxx/deps/icu/source/common/common.rc b/deps/icu/source/common/common.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/common.rc rename to deps/icu/source/common/common.rc diff --git a/bootstrap/cxx/deps/icu/source/common/common.vcxproj b/deps/icu/source/common/common.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/common.vcxproj rename to deps/icu/source/common/common.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/common/common.vcxproj.filters b/deps/icu/source/common/common.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/common.vcxproj.filters rename to deps/icu/source/common/common.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/common/common_uwp.vcxproj b/deps/icu/source/common/common_uwp.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/common_uwp.vcxproj rename to deps/icu/source/common/common_uwp.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/common/cpputils.h b/deps/icu/source/common/cpputils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cpputils.h rename to deps/icu/source/common/cpputils.h diff --git a/bootstrap/cxx/deps/icu/source/common/cstr.cpp b/deps/icu/source/common/cstr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cstr.cpp rename to deps/icu/source/common/cstr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/cstr.h b/deps/icu/source/common/cstr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cstr.h rename to deps/icu/source/common/cstr.h diff --git a/bootstrap/cxx/deps/icu/source/common/cstring.cpp b/deps/icu/source/common/cstring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cstring.cpp rename to deps/icu/source/common/cstring.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/cstring.h b/deps/icu/source/common/cstring.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cstring.h rename to deps/icu/source/common/cstring.h diff --git a/bootstrap/cxx/deps/icu/source/common/cwchar.cpp b/deps/icu/source/common/cwchar.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cwchar.cpp rename to deps/icu/source/common/cwchar.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/cwchar.h b/deps/icu/source/common/cwchar.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/cwchar.h rename to deps/icu/source/common/cwchar.h diff --git a/bootstrap/cxx/deps/icu/source/common/dictbe.cpp b/deps/icu/source/common/dictbe.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/dictbe.cpp rename to deps/icu/source/common/dictbe.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/dictbe.h b/deps/icu/source/common/dictbe.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/dictbe.h rename to deps/icu/source/common/dictbe.h diff --git a/bootstrap/cxx/deps/icu/source/common/dictionarydata.cpp b/deps/icu/source/common/dictionarydata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/dictionarydata.cpp rename to deps/icu/source/common/dictionarydata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/dictionarydata.h b/deps/icu/source/common/dictionarydata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/dictionarydata.h rename to deps/icu/source/common/dictionarydata.h diff --git a/bootstrap/cxx/deps/icu/source/common/dtintrv.cpp b/deps/icu/source/common/dtintrv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/dtintrv.cpp rename to deps/icu/source/common/dtintrv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/edits.cpp b/deps/icu/source/common/edits.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/edits.cpp rename to deps/icu/source/common/edits.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/emojiprops.cpp b/deps/icu/source/common/emojiprops.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/emojiprops.cpp rename to deps/icu/source/common/emojiprops.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/emojiprops.h b/deps/icu/source/common/emojiprops.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/emojiprops.h rename to deps/icu/source/common/emojiprops.h diff --git a/bootstrap/cxx/deps/icu/source/common/errorcode.cpp b/deps/icu/source/common/errorcode.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/errorcode.cpp rename to deps/icu/source/common/errorcode.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/filteredbrk.cpp b/deps/icu/source/common/filteredbrk.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/filteredbrk.cpp rename to deps/icu/source/common/filteredbrk.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/filterednormalizer2.cpp b/deps/icu/source/common/filterednormalizer2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/filterednormalizer2.cpp rename to deps/icu/source/common/filterednormalizer2.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/hash.h b/deps/icu/source/common/hash.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/hash.h rename to deps/icu/source/common/hash.h diff --git a/bootstrap/cxx/deps/icu/source/common/icudataver.cpp b/deps/icu/source/common/icudataver.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/icudataver.cpp rename to deps/icu/source/common/icudataver.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/icuplug.cpp b/deps/icu/source/common/icuplug.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/icuplug.cpp rename to deps/icu/source/common/icuplug.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/icuplugimp.h b/deps/icu/source/common/icuplugimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/icuplugimp.h rename to deps/icu/source/common/icuplugimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/loadednormalizer2impl.cpp b/deps/icu/source/common/loadednormalizer2impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/loadednormalizer2impl.cpp rename to deps/icu/source/common/loadednormalizer2impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/localebuilder.cpp b/deps/icu/source/common/localebuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/localebuilder.cpp rename to deps/icu/source/common/localebuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/localematcher.cpp b/deps/icu/source/common/localematcher.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/localematcher.cpp rename to deps/icu/source/common/localematcher.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/localeprioritylist.cpp b/deps/icu/source/common/localeprioritylist.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/localeprioritylist.cpp rename to deps/icu/source/common/localeprioritylist.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/localeprioritylist.h b/deps/icu/source/common/localeprioritylist.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/localeprioritylist.h rename to deps/icu/source/common/localeprioritylist.h diff --git a/bootstrap/cxx/deps/icu/source/common/localsvc.h b/deps/icu/source/common/localsvc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/localsvc.h rename to deps/icu/source/common/localsvc.h diff --git a/bootstrap/cxx/deps/icu/source/common/locavailable.cpp b/deps/icu/source/common/locavailable.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locavailable.cpp rename to deps/icu/source/common/locavailable.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locbased.cpp b/deps/icu/source/common/locbased.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locbased.cpp rename to deps/icu/source/common/locbased.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locbased.h b/deps/icu/source/common/locbased.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locbased.h rename to deps/icu/source/common/locbased.h diff --git a/bootstrap/cxx/deps/icu/source/common/locdispnames.cpp b/deps/icu/source/common/locdispnames.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locdispnames.cpp rename to deps/icu/source/common/locdispnames.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locdistance.cpp b/deps/icu/source/common/locdistance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locdistance.cpp rename to deps/icu/source/common/locdistance.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locdistance.h b/deps/icu/source/common/locdistance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locdistance.h rename to deps/icu/source/common/locdistance.h diff --git a/bootstrap/cxx/deps/icu/source/common/locdspnm.cpp b/deps/icu/source/common/locdspnm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locdspnm.cpp rename to deps/icu/source/common/locdspnm.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locid.cpp b/deps/icu/source/common/locid.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locid.cpp rename to deps/icu/source/common/locid.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/loclikely.cpp b/deps/icu/source/common/loclikely.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/loclikely.cpp rename to deps/icu/source/common/loclikely.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/loclikelysubtags.cpp b/deps/icu/source/common/loclikelysubtags.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/loclikelysubtags.cpp rename to deps/icu/source/common/loclikelysubtags.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/loclikelysubtags.h b/deps/icu/source/common/loclikelysubtags.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/loclikelysubtags.h rename to deps/icu/source/common/loclikelysubtags.h diff --git a/bootstrap/cxx/deps/icu/source/common/locmap.cpp b/deps/icu/source/common/locmap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locmap.cpp rename to deps/icu/source/common/locmap.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locmap.h b/deps/icu/source/common/locmap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locmap.h rename to deps/icu/source/common/locmap.h diff --git a/bootstrap/cxx/deps/icu/source/common/locresdata.cpp b/deps/icu/source/common/locresdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locresdata.cpp rename to deps/icu/source/common/locresdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locutil.cpp b/deps/icu/source/common/locutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locutil.cpp rename to deps/icu/source/common/locutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/locutil.h b/deps/icu/source/common/locutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/locutil.h rename to deps/icu/source/common/locutil.h diff --git a/bootstrap/cxx/deps/icu/source/common/lsr.cpp b/deps/icu/source/common/lsr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/lsr.cpp rename to deps/icu/source/common/lsr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/lsr.h b/deps/icu/source/common/lsr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/lsr.h rename to deps/icu/source/common/lsr.h diff --git a/bootstrap/cxx/deps/icu/source/common/lstmbe.cpp b/deps/icu/source/common/lstmbe.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/lstmbe.cpp rename to deps/icu/source/common/lstmbe.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/lstmbe.h b/deps/icu/source/common/lstmbe.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/lstmbe.h rename to deps/icu/source/common/lstmbe.h diff --git a/bootstrap/cxx/deps/icu/source/common/messageimpl.h b/deps/icu/source/common/messageimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/messageimpl.h rename to deps/icu/source/common/messageimpl.h diff --git a/bootstrap/cxx/deps/icu/source/common/messagepattern.cpp b/deps/icu/source/common/messagepattern.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/messagepattern.cpp rename to deps/icu/source/common/messagepattern.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/msvcres.h b/deps/icu/source/common/msvcres.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/msvcres.h rename to deps/icu/source/common/msvcres.h diff --git a/bootstrap/cxx/deps/icu/source/common/mutex.h b/deps/icu/source/common/mutex.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/mutex.h rename to deps/icu/source/common/mutex.h diff --git a/bootstrap/cxx/deps/icu/source/common/norm2_nfc_data.h b/deps/icu/source/common/norm2_nfc_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/norm2_nfc_data.h rename to deps/icu/source/common/norm2_nfc_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/norm2allmodes.h b/deps/icu/source/common/norm2allmodes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/norm2allmodes.h rename to deps/icu/source/common/norm2allmodes.h diff --git a/bootstrap/cxx/deps/icu/source/common/normalizer2.cpp b/deps/icu/source/common/normalizer2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/normalizer2.cpp rename to deps/icu/source/common/normalizer2.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/normalizer2impl.cpp b/deps/icu/source/common/normalizer2impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/normalizer2impl.cpp rename to deps/icu/source/common/normalizer2impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/normalizer2impl.h b/deps/icu/source/common/normalizer2impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/normalizer2impl.h rename to deps/icu/source/common/normalizer2impl.h diff --git a/bootstrap/cxx/deps/icu/source/common/normlzr.cpp b/deps/icu/source/common/normlzr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/normlzr.cpp rename to deps/icu/source/common/normlzr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/parsepos.cpp b/deps/icu/source/common/parsepos.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/parsepos.cpp rename to deps/icu/source/common/parsepos.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/patternprops.cpp b/deps/icu/source/common/patternprops.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/patternprops.cpp rename to deps/icu/source/common/patternprops.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/patternprops.h b/deps/icu/source/common/patternprops.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/patternprops.h rename to deps/icu/source/common/patternprops.h diff --git a/bootstrap/cxx/deps/icu/source/common/pluralmap.cpp b/deps/icu/source/common/pluralmap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/pluralmap.cpp rename to deps/icu/source/common/pluralmap.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/pluralmap.h b/deps/icu/source/common/pluralmap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/pluralmap.h rename to deps/icu/source/common/pluralmap.h diff --git a/bootstrap/cxx/deps/icu/source/common/propname.cpp b/deps/icu/source/common/propname.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/propname.cpp rename to deps/icu/source/common/propname.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/propname.h b/deps/icu/source/common/propname.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/propname.h rename to deps/icu/source/common/propname.h diff --git a/bootstrap/cxx/deps/icu/source/common/propname_data.h b/deps/icu/source/common/propname_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/propname_data.h rename to deps/icu/source/common/propname_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/propsvec.cpp b/deps/icu/source/common/propsvec.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/propsvec.cpp rename to deps/icu/source/common/propsvec.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/propsvec.h b/deps/icu/source/common/propsvec.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/propsvec.h rename to deps/icu/source/common/propsvec.h diff --git a/bootstrap/cxx/deps/icu/source/common/punycode.cpp b/deps/icu/source/common/punycode.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/punycode.cpp rename to deps/icu/source/common/punycode.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/punycode.h b/deps/icu/source/common/punycode.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/punycode.h rename to deps/icu/source/common/punycode.h diff --git a/bootstrap/cxx/deps/icu/source/common/putil.cpp b/deps/icu/source/common/putil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/putil.cpp rename to deps/icu/source/common/putil.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/putilimp.h b/deps/icu/source/common/putilimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/putilimp.h rename to deps/icu/source/common/putilimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbi.cpp b/deps/icu/source/common/rbbi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbi.cpp rename to deps/icu/source/common/rbbi.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbi_cache.cpp b/deps/icu/source/common/rbbi_cache.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbi_cache.cpp rename to deps/icu/source/common/rbbi_cache.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbi_cache.h b/deps/icu/source/common/rbbi_cache.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbi_cache.h rename to deps/icu/source/common/rbbi_cache.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbicst.pl b/deps/icu/source/common/rbbicst.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbicst.pl rename to deps/icu/source/common/rbbicst.pl diff --git a/bootstrap/cxx/deps/icu/source/common/rbbidata.cpp b/deps/icu/source/common/rbbidata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbidata.cpp rename to deps/icu/source/common/rbbidata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbidata.h b/deps/icu/source/common/rbbidata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbidata.h rename to deps/icu/source/common/rbbidata.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbinode.cpp b/deps/icu/source/common/rbbinode.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbinode.cpp rename to deps/icu/source/common/rbbinode.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbinode.h b/deps/icu/source/common/rbbinode.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbinode.h rename to deps/icu/source/common/rbbinode.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbirb.cpp b/deps/icu/source/common/rbbirb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbirb.cpp rename to deps/icu/source/common/rbbirb.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbirb.h b/deps/icu/source/common/rbbirb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbirb.h rename to deps/icu/source/common/rbbirb.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbirpt.h b/deps/icu/source/common/rbbirpt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbirpt.h rename to deps/icu/source/common/rbbirpt.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbirpt.txt b/deps/icu/source/common/rbbirpt.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbirpt.txt rename to deps/icu/source/common/rbbirpt.txt diff --git a/bootstrap/cxx/deps/icu/source/common/rbbiscan.cpp b/deps/icu/source/common/rbbiscan.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbiscan.cpp rename to deps/icu/source/common/rbbiscan.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbiscan.h b/deps/icu/source/common/rbbiscan.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbiscan.h rename to deps/icu/source/common/rbbiscan.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbisetb.cpp b/deps/icu/source/common/rbbisetb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbisetb.cpp rename to deps/icu/source/common/rbbisetb.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbisetb.h b/deps/icu/source/common/rbbisetb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbisetb.h rename to deps/icu/source/common/rbbisetb.h diff --git a/bootstrap/cxx/deps/icu/source/common/rbbistbl.cpp b/deps/icu/source/common/rbbistbl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbistbl.cpp rename to deps/icu/source/common/rbbistbl.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbitblb.cpp b/deps/icu/source/common/rbbitblb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbitblb.cpp rename to deps/icu/source/common/rbbitblb.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/rbbitblb.h b/deps/icu/source/common/rbbitblb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/rbbitblb.h rename to deps/icu/source/common/rbbitblb.h diff --git a/bootstrap/cxx/deps/icu/source/common/resbund.cpp b/deps/icu/source/common/resbund.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/resbund.cpp rename to deps/icu/source/common/resbund.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/resbund_cnv.cpp b/deps/icu/source/common/resbund_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/resbund_cnv.cpp rename to deps/icu/source/common/resbund_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/resource.cpp b/deps/icu/source/common/resource.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/resource.cpp rename to deps/icu/source/common/resource.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/resource.h b/deps/icu/source/common/resource.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/resource.h rename to deps/icu/source/common/resource.h diff --git a/bootstrap/cxx/deps/icu/source/common/restrace.cpp b/deps/icu/source/common/restrace.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/restrace.cpp rename to deps/icu/source/common/restrace.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/restrace.h b/deps/icu/source/common/restrace.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/restrace.h rename to deps/icu/source/common/restrace.h diff --git a/bootstrap/cxx/deps/icu/source/common/ruleiter.cpp b/deps/icu/source/common/ruleiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ruleiter.cpp rename to deps/icu/source/common/ruleiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ruleiter.h b/deps/icu/source/common/ruleiter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ruleiter.h rename to deps/icu/source/common/ruleiter.h diff --git a/bootstrap/cxx/deps/icu/source/common/schriter.cpp b/deps/icu/source/common/schriter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/schriter.cpp rename to deps/icu/source/common/schriter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/serv.cpp b/deps/icu/source/common/serv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/serv.cpp rename to deps/icu/source/common/serv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/serv.h b/deps/icu/source/common/serv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/serv.h rename to deps/icu/source/common/serv.h diff --git a/bootstrap/cxx/deps/icu/source/common/servlk.cpp b/deps/icu/source/common/servlk.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servlk.cpp rename to deps/icu/source/common/servlk.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/servlkf.cpp b/deps/icu/source/common/servlkf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servlkf.cpp rename to deps/icu/source/common/servlkf.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/servloc.h b/deps/icu/source/common/servloc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servloc.h rename to deps/icu/source/common/servloc.h diff --git a/bootstrap/cxx/deps/icu/source/common/servls.cpp b/deps/icu/source/common/servls.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servls.cpp rename to deps/icu/source/common/servls.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/servnotf.cpp b/deps/icu/source/common/servnotf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servnotf.cpp rename to deps/icu/source/common/servnotf.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/servnotf.h b/deps/icu/source/common/servnotf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servnotf.h rename to deps/icu/source/common/servnotf.h diff --git a/bootstrap/cxx/deps/icu/source/common/servrbf.cpp b/deps/icu/source/common/servrbf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servrbf.cpp rename to deps/icu/source/common/servrbf.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/servslkf.cpp b/deps/icu/source/common/servslkf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/servslkf.cpp rename to deps/icu/source/common/servslkf.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/sharedobject.cpp b/deps/icu/source/common/sharedobject.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/sharedobject.cpp rename to deps/icu/source/common/sharedobject.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/sharedobject.h b/deps/icu/source/common/sharedobject.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/sharedobject.h rename to deps/icu/source/common/sharedobject.h diff --git a/bootstrap/cxx/deps/icu/source/common/simpleformatter.cpp b/deps/icu/source/common/simpleformatter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/simpleformatter.cpp rename to deps/icu/source/common/simpleformatter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/sources.txt b/deps/icu/source/common/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/sources.txt rename to deps/icu/source/common/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/common/sprpimpl.h b/deps/icu/source/common/sprpimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/sprpimpl.h rename to deps/icu/source/common/sprpimpl.h diff --git a/bootstrap/cxx/deps/icu/source/common/static_unicode_sets.cpp b/deps/icu/source/common/static_unicode_sets.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/static_unicode_sets.cpp rename to deps/icu/source/common/static_unicode_sets.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/static_unicode_sets.h b/deps/icu/source/common/static_unicode_sets.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/static_unicode_sets.h rename to deps/icu/source/common/static_unicode_sets.h diff --git a/bootstrap/cxx/deps/icu/source/common/stringpiece.cpp b/deps/icu/source/common/stringpiece.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/stringpiece.cpp rename to deps/icu/source/common/stringpiece.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/stringtriebuilder.cpp b/deps/icu/source/common/stringtriebuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/stringtriebuilder.cpp rename to deps/icu/source/common/stringtriebuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uarrsort.cpp b/deps/icu/source/common/uarrsort.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uarrsort.cpp rename to deps/icu/source/common/uarrsort.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uarrsort.h b/deps/icu/source/common/uarrsort.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uarrsort.h rename to deps/icu/source/common/uarrsort.h diff --git a/bootstrap/cxx/deps/icu/source/common/uassert.h b/deps/icu/source/common/uassert.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uassert.h rename to deps/icu/source/common/uassert.h diff --git a/bootstrap/cxx/deps/icu/source/common/ubidi.cpp b/deps/icu/source/common/ubidi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidi.cpp rename to deps/icu/source/common/ubidi.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubidi_props.cpp b/deps/icu/source/common/ubidi_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidi_props.cpp rename to deps/icu/source/common/ubidi_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubidi_props.h b/deps/icu/source/common/ubidi_props.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidi_props.h rename to deps/icu/source/common/ubidi_props.h diff --git a/bootstrap/cxx/deps/icu/source/common/ubidi_props_data.h b/deps/icu/source/common/ubidi_props_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidi_props_data.h rename to deps/icu/source/common/ubidi_props_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/ubidiimp.h b/deps/icu/source/common/ubidiimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidiimp.h rename to deps/icu/source/common/ubidiimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ubidiln.cpp b/deps/icu/source/common/ubidiln.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidiln.cpp rename to deps/icu/source/common/ubidiln.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubiditransform.cpp b/deps/icu/source/common/ubiditransform.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubiditransform.cpp rename to deps/icu/source/common/ubiditransform.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubidiwrt.cpp b/deps/icu/source/common/ubidiwrt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubidiwrt.cpp rename to deps/icu/source/common/ubidiwrt.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubrk.cpp b/deps/icu/source/common/ubrk.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubrk.cpp rename to deps/icu/source/common/ubrk.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ubrkimpl.h b/deps/icu/source/common/ubrkimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ubrkimpl.h rename to deps/icu/source/common/ubrkimpl.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucase.cpp b/deps/icu/source/common/ucase.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucase.cpp rename to deps/icu/source/common/ucase.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucase.h b/deps/icu/source/common/ucase.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucase.h rename to deps/icu/source/common/ucase.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucase_props_data.h b/deps/icu/source/common/ucase_props_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucase_props_data.h rename to deps/icu/source/common/ucase_props_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucasemap.cpp b/deps/icu/source/common/ucasemap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucasemap.cpp rename to deps/icu/source/common/ucasemap.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucasemap_imp.h b/deps/icu/source/common/ucasemap_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucasemap_imp.h rename to deps/icu/source/common/ucasemap_imp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucasemap_titlecase_brkiter.cpp b/deps/icu/source/common/ucasemap_titlecase_brkiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucasemap_titlecase_brkiter.cpp rename to deps/icu/source/common/ucasemap_titlecase_brkiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucat.cpp b/deps/icu/source/common/ucat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucat.cpp rename to deps/icu/source/common/ucat.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uchar.cpp b/deps/icu/source/common/uchar.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uchar.cpp rename to deps/icu/source/common/uchar.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uchar_props_data.h b/deps/icu/source/common/uchar_props_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uchar_props_data.h rename to deps/icu/source/common/uchar_props_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucharstrie.cpp b/deps/icu/source/common/ucharstrie.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucharstrie.cpp rename to deps/icu/source/common/ucharstrie.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucharstriebuilder.cpp b/deps/icu/source/common/ucharstriebuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucharstriebuilder.cpp rename to deps/icu/source/common/ucharstriebuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucharstrieiterator.cpp b/deps/icu/source/common/ucharstrieiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucharstrieiterator.cpp rename to deps/icu/source/common/ucharstrieiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uchriter.cpp b/deps/icu/source/common/uchriter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uchriter.cpp rename to deps/icu/source/common/uchriter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucln.h b/deps/icu/source/common/ucln.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucln.h rename to deps/icu/source/common/ucln.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucln_cmn.cpp b/deps/icu/source/common/ucln_cmn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucln_cmn.cpp rename to deps/icu/source/common/ucln_cmn.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucln_cmn.h b/deps/icu/source/common/ucln_cmn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucln_cmn.h rename to deps/icu/source/common/ucln_cmn.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucln_imp.h b/deps/icu/source/common/ucln_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucln_imp.h rename to deps/icu/source/common/ucln_imp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucmndata.cpp b/deps/icu/source/common/ucmndata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucmndata.cpp rename to deps/icu/source/common/ucmndata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucmndata.h b/deps/icu/source/common/ucmndata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucmndata.h rename to deps/icu/source/common/ucmndata.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv.cpp b/deps/icu/source/common/ucnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv.cpp rename to deps/icu/source/common/ucnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv2022.cpp b/deps/icu/source/common/ucnv2022.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv2022.cpp rename to deps/icu/source/common/ucnv2022.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_bld.cpp b/deps/icu/source/common/ucnv_bld.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_bld.cpp rename to deps/icu/source/common/ucnv_bld.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_bld.h b/deps/icu/source/common/ucnv_bld.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_bld.h rename to deps/icu/source/common/ucnv_bld.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_cb.cpp b/deps/icu/source/common/ucnv_cb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_cb.cpp rename to deps/icu/source/common/ucnv_cb.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_cnv.cpp b/deps/icu/source/common/ucnv_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_cnv.cpp rename to deps/icu/source/common/ucnv_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_cnv.h b/deps/icu/source/common/ucnv_cnv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_cnv.h rename to deps/icu/source/common/ucnv_cnv.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_ct.cpp b/deps/icu/source/common/ucnv_ct.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_ct.cpp rename to deps/icu/source/common/ucnv_ct.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_err.cpp b/deps/icu/source/common/ucnv_err.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_err.cpp rename to deps/icu/source/common/ucnv_err.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_ext.cpp b/deps/icu/source/common/ucnv_ext.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_ext.cpp rename to deps/icu/source/common/ucnv_ext.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_ext.h b/deps/icu/source/common/ucnv_ext.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_ext.h rename to deps/icu/source/common/ucnv_ext.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_imp.h b/deps/icu/source/common/ucnv_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_imp.h rename to deps/icu/source/common/ucnv_imp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_io.cpp b/deps/icu/source/common/ucnv_io.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_io.cpp rename to deps/icu/source/common/ucnv_io.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_io.h b/deps/icu/source/common/ucnv_io.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_io.h rename to deps/icu/source/common/ucnv_io.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_lmb.cpp b/deps/icu/source/common/ucnv_lmb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_lmb.cpp rename to deps/icu/source/common/ucnv_lmb.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_set.cpp b/deps/icu/source/common/ucnv_set.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_set.cpp rename to deps/icu/source/common/ucnv_set.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_u16.cpp b/deps/icu/source/common/ucnv_u16.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_u16.cpp rename to deps/icu/source/common/ucnv_u16.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_u32.cpp b/deps/icu/source/common/ucnv_u32.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_u32.cpp rename to deps/icu/source/common/ucnv_u32.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_u7.cpp b/deps/icu/source/common/ucnv_u7.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_u7.cpp rename to deps/icu/source/common/ucnv_u7.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnv_u8.cpp b/deps/icu/source/common/ucnv_u8.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnv_u8.cpp rename to deps/icu/source/common/ucnv_u8.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvbocu.cpp b/deps/icu/source/common/ucnvbocu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvbocu.cpp rename to deps/icu/source/common/ucnvbocu.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvdisp.cpp b/deps/icu/source/common/ucnvdisp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvdisp.cpp rename to deps/icu/source/common/ucnvdisp.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvhz.cpp b/deps/icu/source/common/ucnvhz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvhz.cpp rename to deps/icu/source/common/ucnvhz.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvisci.cpp b/deps/icu/source/common/ucnvisci.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvisci.cpp rename to deps/icu/source/common/ucnvisci.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvlat1.cpp b/deps/icu/source/common/ucnvlat1.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvlat1.cpp rename to deps/icu/source/common/ucnvlat1.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvmbcs.cpp b/deps/icu/source/common/ucnvmbcs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvmbcs.cpp rename to deps/icu/source/common/ucnvmbcs.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvmbcs.h b/deps/icu/source/common/ucnvmbcs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvmbcs.h rename to deps/icu/source/common/ucnvmbcs.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvscsu.cpp b/deps/icu/source/common/ucnvscsu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvscsu.cpp rename to deps/icu/source/common/ucnvscsu.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucnvsel.cpp b/deps/icu/source/common/ucnvsel.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucnvsel.cpp rename to deps/icu/source/common/ucnvsel.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucol_data.h b/deps/icu/source/common/ucol_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucol_data.h rename to deps/icu/source/common/ucol_data.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucol_swp.cpp b/deps/icu/source/common/ucol_swp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucol_swp.cpp rename to deps/icu/source/common/ucol_swp.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucol_swp.h b/deps/icu/source/common/ucol_swp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucol_swp.h rename to deps/icu/source/common/ucol_swp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucptrie.cpp b/deps/icu/source/common/ucptrie.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucptrie.cpp rename to deps/icu/source/common/ucptrie.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucptrie_impl.h b/deps/icu/source/common/ucptrie_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucptrie_impl.h rename to deps/icu/source/common/ucptrie_impl.h diff --git a/bootstrap/cxx/deps/icu/source/common/ucurr.cpp b/deps/icu/source/common/ucurr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucurr.cpp rename to deps/icu/source/common/ucurr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ucurrimp.h b/deps/icu/source/common/ucurrimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ucurrimp.h rename to deps/icu/source/common/ucurrimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/udata.cpp b/deps/icu/source/common/udata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/udata.cpp rename to deps/icu/source/common/udata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/udatamem.cpp b/deps/icu/source/common/udatamem.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/udatamem.cpp rename to deps/icu/source/common/udatamem.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/udatamem.h b/deps/icu/source/common/udatamem.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/udatamem.h rename to deps/icu/source/common/udatamem.h diff --git a/bootstrap/cxx/deps/icu/source/common/udataswp.cpp b/deps/icu/source/common/udataswp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/udataswp.cpp rename to deps/icu/source/common/udataswp.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/udataswp.h b/deps/icu/source/common/udataswp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/udataswp.h rename to deps/icu/source/common/udataswp.h diff --git a/bootstrap/cxx/deps/icu/source/common/uelement.h b/deps/icu/source/common/uelement.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uelement.h rename to deps/icu/source/common/uelement.h diff --git a/bootstrap/cxx/deps/icu/source/common/uenum.cpp b/deps/icu/source/common/uenum.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uenum.cpp rename to deps/icu/source/common/uenum.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uenumimp.h b/deps/icu/source/common/uenumimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uenumimp.h rename to deps/icu/source/common/uenumimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/uhash.cpp b/deps/icu/source/common/uhash.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uhash.cpp rename to deps/icu/source/common/uhash.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uhash.h b/deps/icu/source/common/uhash.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uhash.h rename to deps/icu/source/common/uhash.h diff --git a/bootstrap/cxx/deps/icu/source/common/uhash_us.cpp b/deps/icu/source/common/uhash_us.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uhash_us.cpp rename to deps/icu/source/common/uhash_us.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uidna.cpp b/deps/icu/source/common/uidna.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uidna.cpp rename to deps/icu/source/common/uidna.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uinit.cpp b/deps/icu/source/common/uinit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uinit.cpp rename to deps/icu/source/common/uinit.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uinvchar.cpp b/deps/icu/source/common/uinvchar.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uinvchar.cpp rename to deps/icu/source/common/uinvchar.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uinvchar.h b/deps/icu/source/common/uinvchar.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uinvchar.h rename to deps/icu/source/common/uinvchar.h diff --git a/bootstrap/cxx/deps/icu/source/common/uiter.cpp b/deps/icu/source/common/uiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uiter.cpp rename to deps/icu/source/common/uiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ulayout_props.h b/deps/icu/source/common/ulayout_props.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ulayout_props.h rename to deps/icu/source/common/ulayout_props.h diff --git a/bootstrap/cxx/deps/icu/source/common/ulist.cpp b/deps/icu/source/common/ulist.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ulist.cpp rename to deps/icu/source/common/ulist.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ulist.h b/deps/icu/source/common/ulist.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ulist.h rename to deps/icu/source/common/ulist.h diff --git a/bootstrap/cxx/deps/icu/source/common/uloc.cpp b/deps/icu/source/common/uloc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uloc.cpp rename to deps/icu/source/common/uloc.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uloc_keytype.cpp b/deps/icu/source/common/uloc_keytype.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uloc_keytype.cpp rename to deps/icu/source/common/uloc_keytype.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uloc_tag.cpp b/deps/icu/source/common/uloc_tag.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uloc_tag.cpp rename to deps/icu/source/common/uloc_tag.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ulocimp.h b/deps/icu/source/common/ulocimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ulocimp.h rename to deps/icu/source/common/ulocimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/umapfile.cpp b/deps/icu/source/common/umapfile.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umapfile.cpp rename to deps/icu/source/common/umapfile.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/umapfile.h b/deps/icu/source/common/umapfile.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umapfile.h rename to deps/icu/source/common/umapfile.h diff --git a/bootstrap/cxx/deps/icu/source/common/umath.cpp b/deps/icu/source/common/umath.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umath.cpp rename to deps/icu/source/common/umath.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/umutablecptrie.cpp b/deps/icu/source/common/umutablecptrie.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umutablecptrie.cpp rename to deps/icu/source/common/umutablecptrie.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/umutex.cpp b/deps/icu/source/common/umutex.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umutex.cpp rename to deps/icu/source/common/umutex.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/umutex.h b/deps/icu/source/common/umutex.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/umutex.h rename to deps/icu/source/common/umutex.h diff --git a/bootstrap/cxx/deps/icu/source/common/unames.cpp b/deps/icu/source/common/unames.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unames.cpp rename to deps/icu/source/common/unames.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/appendable.h b/deps/icu/source/common/unicode/appendable.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/appendable.h rename to deps/icu/source/common/unicode/appendable.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/brkiter.h b/deps/icu/source/common/unicode/brkiter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/brkiter.h rename to deps/icu/source/common/unicode/brkiter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/bytestream.h b/deps/icu/source/common/unicode/bytestream.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/bytestream.h rename to deps/icu/source/common/unicode/bytestream.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/bytestrie.h b/deps/icu/source/common/unicode/bytestrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/bytestrie.h rename to deps/icu/source/common/unicode/bytestrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/bytestriebuilder.h b/deps/icu/source/common/unicode/bytestriebuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/bytestriebuilder.h rename to deps/icu/source/common/unicode/bytestriebuilder.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/caniter.h b/deps/icu/source/common/unicode/caniter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/caniter.h rename to deps/icu/source/common/unicode/caniter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/casemap.h b/deps/icu/source/common/unicode/casemap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/casemap.h rename to deps/icu/source/common/unicode/casemap.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/char16ptr.h b/deps/icu/source/common/unicode/char16ptr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/char16ptr.h rename to deps/icu/source/common/unicode/char16ptr.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/chariter.h b/deps/icu/source/common/unicode/chariter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/chariter.h rename to deps/icu/source/common/unicode/chariter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/dbbi.h b/deps/icu/source/common/unicode/dbbi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/dbbi.h rename to deps/icu/source/common/unicode/dbbi.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/docmain.h b/deps/icu/source/common/unicode/docmain.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/docmain.h rename to deps/icu/source/common/unicode/docmain.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/dtintrv.h b/deps/icu/source/common/unicode/dtintrv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/dtintrv.h rename to deps/icu/source/common/unicode/dtintrv.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/edits.h b/deps/icu/source/common/unicode/edits.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/edits.h rename to deps/icu/source/common/unicode/edits.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/enumset.h b/deps/icu/source/common/unicode/enumset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/enumset.h rename to deps/icu/source/common/unicode/enumset.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/errorcode.h b/deps/icu/source/common/unicode/errorcode.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/errorcode.h rename to deps/icu/source/common/unicode/errorcode.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/filteredbrk.h b/deps/icu/source/common/unicode/filteredbrk.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/filteredbrk.h rename to deps/icu/source/common/unicode/filteredbrk.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/icudataver.h b/deps/icu/source/common/unicode/icudataver.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/icudataver.h rename to deps/icu/source/common/unicode/icudataver.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/icuplug.h b/deps/icu/source/common/unicode/icuplug.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/icuplug.h rename to deps/icu/source/common/unicode/icuplug.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/idna.h b/deps/icu/source/common/unicode/idna.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/idna.h rename to deps/icu/source/common/unicode/idna.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/localebuilder.h b/deps/icu/source/common/unicode/localebuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/localebuilder.h rename to deps/icu/source/common/unicode/localebuilder.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/localematcher.h b/deps/icu/source/common/unicode/localematcher.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/localematcher.h rename to deps/icu/source/common/unicode/localematcher.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/localpointer.h b/deps/icu/source/common/unicode/localpointer.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/localpointer.h rename to deps/icu/source/common/unicode/localpointer.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/locdspnm.h b/deps/icu/source/common/unicode/locdspnm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/locdspnm.h rename to deps/icu/source/common/unicode/locdspnm.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/locid.h b/deps/icu/source/common/unicode/locid.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/locid.h rename to deps/icu/source/common/unicode/locid.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/messagepattern.h b/deps/icu/source/common/unicode/messagepattern.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/messagepattern.h rename to deps/icu/source/common/unicode/messagepattern.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/normalizer2.h b/deps/icu/source/common/unicode/normalizer2.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/normalizer2.h rename to deps/icu/source/common/unicode/normalizer2.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/normlzr.h b/deps/icu/source/common/unicode/normlzr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/normlzr.h rename to deps/icu/source/common/unicode/normlzr.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/parseerr.h b/deps/icu/source/common/unicode/parseerr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/parseerr.h rename to deps/icu/source/common/unicode/parseerr.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/parsepos.h b/deps/icu/source/common/unicode/parsepos.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/parsepos.h rename to deps/icu/source/common/unicode/parsepos.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/platform.h b/deps/icu/source/common/unicode/platform.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/platform.h rename to deps/icu/source/common/unicode/platform.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ptypes.h b/deps/icu/source/common/unicode/ptypes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ptypes.h rename to deps/icu/source/common/unicode/ptypes.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/putil.h b/deps/icu/source/common/unicode/putil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/putil.h rename to deps/icu/source/common/unicode/putil.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/rbbi.h b/deps/icu/source/common/unicode/rbbi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/rbbi.h rename to deps/icu/source/common/unicode/rbbi.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/rep.h b/deps/icu/source/common/unicode/rep.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/rep.h rename to deps/icu/source/common/unicode/rep.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/resbund.h b/deps/icu/source/common/unicode/resbund.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/resbund.h rename to deps/icu/source/common/unicode/resbund.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/schriter.h b/deps/icu/source/common/unicode/schriter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/schriter.h rename to deps/icu/source/common/unicode/schriter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/simpleformatter.h b/deps/icu/source/common/unicode/simpleformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/simpleformatter.h rename to deps/icu/source/common/unicode/simpleformatter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/std_string.h b/deps/icu/source/common/unicode/std_string.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/std_string.h rename to deps/icu/source/common/unicode/std_string.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/strenum.h b/deps/icu/source/common/unicode/strenum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/strenum.h rename to deps/icu/source/common/unicode/strenum.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/stringoptions.h b/deps/icu/source/common/unicode/stringoptions.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/stringoptions.h rename to deps/icu/source/common/unicode/stringoptions.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/stringpiece.h b/deps/icu/source/common/unicode/stringpiece.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/stringpiece.h rename to deps/icu/source/common/unicode/stringpiece.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/stringtriebuilder.h b/deps/icu/source/common/unicode/stringtriebuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/stringtriebuilder.h rename to deps/icu/source/common/unicode/stringtriebuilder.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/symtable.h b/deps/icu/source/common/unicode/symtable.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/symtable.h rename to deps/icu/source/common/unicode/symtable.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ubidi.h b/deps/icu/source/common/unicode/ubidi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ubidi.h rename to deps/icu/source/common/unicode/ubidi.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ubiditransform.h b/deps/icu/source/common/unicode/ubiditransform.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ubiditransform.h rename to deps/icu/source/common/unicode/ubiditransform.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ubrk.h b/deps/icu/source/common/unicode/ubrk.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ubrk.h rename to deps/icu/source/common/unicode/ubrk.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucasemap.h b/deps/icu/source/common/unicode/ucasemap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucasemap.h rename to deps/icu/source/common/unicode/ucasemap.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucat.h b/deps/icu/source/common/unicode/ucat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucat.h rename to deps/icu/source/common/unicode/ucat.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uchar.h b/deps/icu/source/common/unicode/uchar.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uchar.h rename to deps/icu/source/common/unicode/uchar.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucharstrie.h b/deps/icu/source/common/unicode/ucharstrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucharstrie.h rename to deps/icu/source/common/unicode/ucharstrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucharstriebuilder.h b/deps/icu/source/common/unicode/ucharstriebuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucharstriebuilder.h rename to deps/icu/source/common/unicode/ucharstriebuilder.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uchriter.h b/deps/icu/source/common/unicode/uchriter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uchriter.h rename to deps/icu/source/common/unicode/uchriter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uclean.h b/deps/icu/source/common/unicode/uclean.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uclean.h rename to deps/icu/source/common/unicode/uclean.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucnv.h b/deps/icu/source/common/unicode/ucnv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucnv.h rename to deps/icu/source/common/unicode/ucnv.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucnv_cb.h b/deps/icu/source/common/unicode/ucnv_cb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucnv_cb.h rename to deps/icu/source/common/unicode/ucnv_cb.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucnv_err.h b/deps/icu/source/common/unicode/ucnv_err.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucnv_err.h rename to deps/icu/source/common/unicode/ucnv_err.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucnvsel.h b/deps/icu/source/common/unicode/ucnvsel.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucnvsel.h rename to deps/icu/source/common/unicode/ucnvsel.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uconfig.h b/deps/icu/source/common/unicode/uconfig.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uconfig.h rename to deps/icu/source/common/unicode/uconfig.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucpmap.h b/deps/icu/source/common/unicode/ucpmap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucpmap.h rename to deps/icu/source/common/unicode/ucpmap.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucptrie.h b/deps/icu/source/common/unicode/ucptrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucptrie.h rename to deps/icu/source/common/unicode/ucptrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ucurr.h b/deps/icu/source/common/unicode/ucurr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ucurr.h rename to deps/icu/source/common/unicode/ucurr.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/udata.h b/deps/icu/source/common/unicode/udata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/udata.h rename to deps/icu/source/common/unicode/udata.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/udisplaycontext.h b/deps/icu/source/common/unicode/udisplaycontext.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/udisplaycontext.h rename to deps/icu/source/common/unicode/udisplaycontext.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uenum.h b/deps/icu/source/common/unicode/uenum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uenum.h rename to deps/icu/source/common/unicode/uenum.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uidna.h b/deps/icu/source/common/unicode/uidna.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uidna.h rename to deps/icu/source/common/unicode/uidna.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uiter.h b/deps/icu/source/common/unicode/uiter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uiter.h rename to deps/icu/source/common/unicode/uiter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uldnames.h b/deps/icu/source/common/unicode/uldnames.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uldnames.h rename to deps/icu/source/common/unicode/uldnames.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uloc.h b/deps/icu/source/common/unicode/uloc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uloc.h rename to deps/icu/source/common/unicode/uloc.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/umachine.h b/deps/icu/source/common/unicode/umachine.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/umachine.h rename to deps/icu/source/common/unicode/umachine.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/umisc.h b/deps/icu/source/common/unicode/umisc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/umisc.h rename to deps/icu/source/common/unicode/umisc.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/umutablecptrie.h b/deps/icu/source/common/unicode/umutablecptrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/umutablecptrie.h rename to deps/icu/source/common/unicode/umutablecptrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unifilt.h b/deps/icu/source/common/unicode/unifilt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unifilt.h rename to deps/icu/source/common/unicode/unifilt.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unifunct.h b/deps/icu/source/common/unicode/unifunct.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unifunct.h rename to deps/icu/source/common/unicode/unifunct.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unimatch.h b/deps/icu/source/common/unicode/unimatch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unimatch.h rename to deps/icu/source/common/unicode/unimatch.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uniset.h b/deps/icu/source/common/unicode/uniset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uniset.h rename to deps/icu/source/common/unicode/uniset.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unistr.h b/deps/icu/source/common/unicode/unistr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unistr.h rename to deps/icu/source/common/unicode/unistr.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unorm.h b/deps/icu/source/common/unicode/unorm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unorm.h rename to deps/icu/source/common/unicode/unorm.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/unorm2.h b/deps/icu/source/common/unicode/unorm2.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/unorm2.h rename to deps/icu/source/common/unicode/unorm2.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uobject.h b/deps/icu/source/common/unicode/uobject.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uobject.h rename to deps/icu/source/common/unicode/uobject.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/urename.h b/deps/icu/source/common/unicode/urename.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/urename.h rename to deps/icu/source/common/unicode/urename.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/urep.h b/deps/icu/source/common/unicode/urep.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/urep.h rename to deps/icu/source/common/unicode/urep.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ures.h b/deps/icu/source/common/unicode/ures.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ures.h rename to deps/icu/source/common/unicode/ures.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uscript.h b/deps/icu/source/common/unicode/uscript.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uscript.h rename to deps/icu/source/common/unicode/uscript.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uset.h b/deps/icu/source/common/unicode/uset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uset.h rename to deps/icu/source/common/unicode/uset.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/usetiter.h b/deps/icu/source/common/unicode/usetiter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/usetiter.h rename to deps/icu/source/common/unicode/usetiter.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ushape.h b/deps/icu/source/common/unicode/ushape.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ushape.h rename to deps/icu/source/common/unicode/ushape.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/usprep.h b/deps/icu/source/common/unicode/usprep.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/usprep.h rename to deps/icu/source/common/unicode/usprep.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ustring.h b/deps/icu/source/common/unicode/ustring.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ustring.h rename to deps/icu/source/common/unicode/ustring.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/ustringtrie.h b/deps/icu/source/common/unicode/ustringtrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/ustringtrie.h rename to deps/icu/source/common/unicode/ustringtrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utext.h b/deps/icu/source/common/unicode/utext.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utext.h rename to deps/icu/source/common/unicode/utext.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utf.h b/deps/icu/source/common/unicode/utf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utf.h rename to deps/icu/source/common/unicode/utf.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utf16.h b/deps/icu/source/common/unicode/utf16.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utf16.h rename to deps/icu/source/common/unicode/utf16.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utf32.h b/deps/icu/source/common/unicode/utf32.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utf32.h rename to deps/icu/source/common/unicode/utf32.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utf8.h b/deps/icu/source/common/unicode/utf8.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utf8.h rename to deps/icu/source/common/unicode/utf8.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utf_old.h b/deps/icu/source/common/unicode/utf_old.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utf_old.h rename to deps/icu/source/common/unicode/utf_old.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utrace.h b/deps/icu/source/common/unicode/utrace.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utrace.h rename to deps/icu/source/common/unicode/utrace.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/utypes.h b/deps/icu/source/common/unicode/utypes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/utypes.h rename to deps/icu/source/common/unicode/utypes.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uvernum.h b/deps/icu/source/common/unicode/uvernum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uvernum.h rename to deps/icu/source/common/unicode/uvernum.h diff --git a/bootstrap/cxx/deps/icu/source/common/unicode/uversion.h b/deps/icu/source/common/unicode/uversion.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unicode/uversion.h rename to deps/icu/source/common/unicode/uversion.h diff --git a/bootstrap/cxx/deps/icu/source/common/unifiedcache.cpp b/deps/icu/source/common/unifiedcache.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unifiedcache.cpp rename to deps/icu/source/common/unifiedcache.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unifiedcache.h b/deps/icu/source/common/unifiedcache.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unifiedcache.h rename to deps/icu/source/common/unifiedcache.h diff --git a/bootstrap/cxx/deps/icu/source/common/unifilt.cpp b/deps/icu/source/common/unifilt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unifilt.cpp rename to deps/icu/source/common/unifilt.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unifunct.cpp b/deps/icu/source/common/unifunct.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unifunct.cpp rename to deps/icu/source/common/unifunct.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uniquecharstr.h b/deps/icu/source/common/uniquecharstr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uniquecharstr.h rename to deps/icu/source/common/uniquecharstr.h diff --git a/bootstrap/cxx/deps/icu/source/common/uniset.cpp b/deps/icu/source/common/uniset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uniset.cpp rename to deps/icu/source/common/uniset.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uniset_closure.cpp b/deps/icu/source/common/uniset_closure.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uniset_closure.cpp rename to deps/icu/source/common/uniset_closure.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uniset_props.cpp b/deps/icu/source/common/uniset_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uniset_props.cpp rename to deps/icu/source/common/uniset_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unisetspan.cpp b/deps/icu/source/common/unisetspan.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unisetspan.cpp rename to deps/icu/source/common/unisetspan.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unisetspan.h b/deps/icu/source/common/unisetspan.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unisetspan.h rename to deps/icu/source/common/unisetspan.h diff --git a/bootstrap/cxx/deps/icu/source/common/unistr.cpp b/deps/icu/source/common/unistr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr.cpp rename to deps/icu/source/common/unistr.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistr_case.cpp b/deps/icu/source/common/unistr_case.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr_case.cpp rename to deps/icu/source/common/unistr_case.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistr_case_locale.cpp b/deps/icu/source/common/unistr_case_locale.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr_case_locale.cpp rename to deps/icu/source/common/unistr_case_locale.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistr_cnv.cpp b/deps/icu/source/common/unistr_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr_cnv.cpp rename to deps/icu/source/common/unistr_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistr_props.cpp b/deps/icu/source/common/unistr_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr_props.cpp rename to deps/icu/source/common/unistr_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistr_titlecase_brkiter.cpp b/deps/icu/source/common/unistr_titlecase_brkiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistr_titlecase_brkiter.cpp rename to deps/icu/source/common/unistr_titlecase_brkiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unistrappender.h b/deps/icu/source/common/unistrappender.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unistrappender.h rename to deps/icu/source/common/unistrappender.h diff --git a/bootstrap/cxx/deps/icu/source/common/unorm.cpp b/deps/icu/source/common/unorm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unorm.cpp rename to deps/icu/source/common/unorm.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unormcmp.cpp b/deps/icu/source/common/unormcmp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unormcmp.cpp rename to deps/icu/source/common/unormcmp.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/unormimp.h b/deps/icu/source/common/unormimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/unormimp.h rename to deps/icu/source/common/unormimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/uobject.cpp b/deps/icu/source/common/uobject.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uobject.cpp rename to deps/icu/source/common/uobject.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uposixdefs.h b/deps/icu/source/common/uposixdefs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uposixdefs.h rename to deps/icu/source/common/uposixdefs.h diff --git a/bootstrap/cxx/deps/icu/source/common/uprops.cpp b/deps/icu/source/common/uprops.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uprops.cpp rename to deps/icu/source/common/uprops.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uprops.h b/deps/icu/source/common/uprops.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uprops.h rename to deps/icu/source/common/uprops.h diff --git a/bootstrap/cxx/deps/icu/source/common/ures_cnv.cpp b/deps/icu/source/common/ures_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ures_cnv.cpp rename to deps/icu/source/common/ures_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uresbund.cpp b/deps/icu/source/common/uresbund.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uresbund.cpp rename to deps/icu/source/common/uresbund.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uresdata.cpp b/deps/icu/source/common/uresdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uresdata.cpp rename to deps/icu/source/common/uresdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uresdata.h b/deps/icu/source/common/uresdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uresdata.h rename to deps/icu/source/common/uresdata.h diff --git a/bootstrap/cxx/deps/icu/source/common/uresimp.h b/deps/icu/source/common/uresimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uresimp.h rename to deps/icu/source/common/uresimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ureslocs.h b/deps/icu/source/common/ureslocs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ureslocs.h rename to deps/icu/source/common/ureslocs.h diff --git a/bootstrap/cxx/deps/icu/source/common/usc_impl.cpp b/deps/icu/source/common/usc_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/usc_impl.cpp rename to deps/icu/source/common/usc_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/usc_impl.h b/deps/icu/source/common/usc_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/usc_impl.h rename to deps/icu/source/common/usc_impl.h diff --git a/bootstrap/cxx/deps/icu/source/common/uscript.cpp b/deps/icu/source/common/uscript.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uscript.cpp rename to deps/icu/source/common/uscript.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uscript_props.cpp b/deps/icu/source/common/uscript_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uscript_props.cpp rename to deps/icu/source/common/uscript_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uset.cpp b/deps/icu/source/common/uset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uset.cpp rename to deps/icu/source/common/uset.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uset_imp.h b/deps/icu/source/common/uset_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uset_imp.h rename to deps/icu/source/common/uset_imp.h diff --git a/bootstrap/cxx/deps/icu/source/common/uset_props.cpp b/deps/icu/source/common/uset_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uset_props.cpp rename to deps/icu/source/common/uset_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/usetiter.cpp b/deps/icu/source/common/usetiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/usetiter.cpp rename to deps/icu/source/common/usetiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ushape.cpp b/deps/icu/source/common/ushape.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ushape.cpp rename to deps/icu/source/common/ushape.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/usprep.cpp b/deps/icu/source/common/usprep.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/usprep.cpp rename to deps/icu/source/common/usprep.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustack.cpp b/deps/icu/source/common/ustack.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustack.cpp rename to deps/icu/source/common/ustack.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustr_cnv.cpp b/deps/icu/source/common/ustr_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustr_cnv.cpp rename to deps/icu/source/common/ustr_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustr_cnv.h b/deps/icu/source/common/ustr_cnv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustr_cnv.h rename to deps/icu/source/common/ustr_cnv.h diff --git a/bootstrap/cxx/deps/icu/source/common/ustr_imp.h b/deps/icu/source/common/ustr_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustr_imp.h rename to deps/icu/source/common/ustr_imp.h diff --git a/bootstrap/cxx/deps/icu/source/common/ustr_titlecase_brkiter.cpp b/deps/icu/source/common/ustr_titlecase_brkiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustr_titlecase_brkiter.cpp rename to deps/icu/source/common/ustr_titlecase_brkiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustr_wcs.cpp b/deps/icu/source/common/ustr_wcs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustr_wcs.cpp rename to deps/icu/source/common/ustr_wcs.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrcase.cpp b/deps/icu/source/common/ustrcase.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrcase.cpp rename to deps/icu/source/common/ustrcase.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrcase_locale.cpp b/deps/icu/source/common/ustrcase_locale.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrcase_locale.cpp rename to deps/icu/source/common/ustrcase_locale.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrenum.cpp b/deps/icu/source/common/ustrenum.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrenum.cpp rename to deps/icu/source/common/ustrenum.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrenum.h b/deps/icu/source/common/ustrenum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrenum.h rename to deps/icu/source/common/ustrenum.h diff --git a/bootstrap/cxx/deps/icu/source/common/ustrfmt.cpp b/deps/icu/source/common/ustrfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrfmt.cpp rename to deps/icu/source/common/ustrfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrfmt.h b/deps/icu/source/common/ustrfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrfmt.h rename to deps/icu/source/common/ustrfmt.h diff --git a/bootstrap/cxx/deps/icu/source/common/ustring.cpp b/deps/icu/source/common/ustring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustring.cpp rename to deps/icu/source/common/ustring.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/ustrtrns.cpp b/deps/icu/source/common/ustrtrns.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/ustrtrns.cpp rename to deps/icu/source/common/ustrtrns.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utext.cpp b/deps/icu/source/common/utext.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utext.cpp rename to deps/icu/source/common/utext.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utf_impl.cpp b/deps/icu/source/common/utf_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utf_impl.cpp rename to deps/icu/source/common/utf_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/util.cpp b/deps/icu/source/common/util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/util.cpp rename to deps/icu/source/common/util.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/util.h b/deps/icu/source/common/util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/util.h rename to deps/icu/source/common/util.h diff --git a/bootstrap/cxx/deps/icu/source/common/util_props.cpp b/deps/icu/source/common/util_props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/util_props.cpp rename to deps/icu/source/common/util_props.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utrace.cpp b/deps/icu/source/common/utrace.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrace.cpp rename to deps/icu/source/common/utrace.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utracimp.h b/deps/icu/source/common/utracimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utracimp.h rename to deps/icu/source/common/utracimp.h diff --git a/bootstrap/cxx/deps/icu/source/common/utrie.cpp b/deps/icu/source/common/utrie.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie.cpp rename to deps/icu/source/common/utrie.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utrie.h b/deps/icu/source/common/utrie.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie.h rename to deps/icu/source/common/utrie.h diff --git a/bootstrap/cxx/deps/icu/source/common/utrie2.cpp b/deps/icu/source/common/utrie2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie2.cpp rename to deps/icu/source/common/utrie2.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utrie2.h b/deps/icu/source/common/utrie2.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie2.h rename to deps/icu/source/common/utrie2.h diff --git a/bootstrap/cxx/deps/icu/source/common/utrie2_builder.cpp b/deps/icu/source/common/utrie2_builder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie2_builder.cpp rename to deps/icu/source/common/utrie2_builder.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utrie2_impl.h b/deps/icu/source/common/utrie2_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie2_impl.h rename to deps/icu/source/common/utrie2_impl.h diff --git a/bootstrap/cxx/deps/icu/source/common/utrie_swap.cpp b/deps/icu/source/common/utrie_swap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utrie_swap.cpp rename to deps/icu/source/common/utrie_swap.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uts46.cpp b/deps/icu/source/common/uts46.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uts46.cpp rename to deps/icu/source/common/uts46.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/utypeinfo.h b/deps/icu/source/common/utypeinfo.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utypeinfo.h rename to deps/icu/source/common/utypeinfo.h diff --git a/bootstrap/cxx/deps/icu/source/common/utypes.cpp b/deps/icu/source/common/utypes.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/utypes.cpp rename to deps/icu/source/common/utypes.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uvector.cpp b/deps/icu/source/common/uvector.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvector.cpp rename to deps/icu/source/common/uvector.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uvector.h b/deps/icu/source/common/uvector.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvector.h rename to deps/icu/source/common/uvector.h diff --git a/bootstrap/cxx/deps/icu/source/common/uvectr32.cpp b/deps/icu/source/common/uvectr32.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvectr32.cpp rename to deps/icu/source/common/uvectr32.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uvectr32.h b/deps/icu/source/common/uvectr32.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvectr32.h rename to deps/icu/source/common/uvectr32.h diff --git a/bootstrap/cxx/deps/icu/source/common/uvectr64.cpp b/deps/icu/source/common/uvectr64.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvectr64.cpp rename to deps/icu/source/common/uvectr64.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/uvectr64.h b/deps/icu/source/common/uvectr64.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/uvectr64.h rename to deps/icu/source/common/uvectr64.h diff --git a/bootstrap/cxx/deps/icu/source/common/wintz.cpp b/deps/icu/source/common/wintz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/wintz.cpp rename to deps/icu/source/common/wintz.cpp diff --git a/bootstrap/cxx/deps/icu/source/common/wintz.h b/deps/icu/source/common/wintz.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/common/wintz.h rename to deps/icu/source/common/wintz.h diff --git a/bootstrap/cxx/deps/icu/source/config.guess b/deps/icu/source/config.guess similarity index 100% rename from bootstrap/cxx/deps/icu/source/config.guess rename to deps/icu/source/config.guess diff --git a/bootstrap/cxx/deps/icu/source/config.sub b/deps/icu/source/config.sub similarity index 100% rename from bootstrap/cxx/deps/icu/source/config.sub rename to deps/icu/source/config.sub diff --git a/bootstrap/cxx/deps/icu/source/config/Makefile.inc.in b/deps/icu/source/config/Makefile.inc.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/Makefile.inc.in rename to deps/icu/source/config/Makefile.inc.in diff --git a/bootstrap/cxx/deps/icu/source/config/dist-data.sh b/deps/icu/source/config/dist-data.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/dist-data.sh rename to deps/icu/source/config/dist-data.sh diff --git a/bootstrap/cxx/deps/icu/source/config/dist.mk b/deps/icu/source/config/dist.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/dist.mk rename to deps/icu/source/config/dist.mk diff --git a/bootstrap/cxx/deps/icu/source/config/gmakever.mk b/deps/icu/source/config/gmakever.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/gmakever.mk rename to deps/icu/source/config/gmakever.mk diff --git a/bootstrap/cxx/deps/icu/source/config/icu-config-bottom b/deps/icu/source/config/icu-config-bottom similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/icu-config-bottom rename to deps/icu/source/config/icu-config-bottom diff --git a/bootstrap/cxx/deps/icu/source/config/icu-config-top b/deps/icu/source/config/icu-config-top similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/icu-config-top rename to deps/icu/source/config/icu-config-top diff --git a/bootstrap/cxx/deps/icu/source/config/icu-config.1.in b/deps/icu/source/config/icu-config.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/icu-config.1.in rename to deps/icu/source/config/icu-config.1.in diff --git a/bootstrap/cxx/deps/icu/source/config/icu.pc.in b/deps/icu/source/config/icu.pc.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/icu.pc.in rename to deps/icu/source/config/icu.pc.in diff --git a/bootstrap/cxx/deps/icu/source/config/m4/icu-conditional.m4 b/deps/icu/source/config/m4/icu-conditional.m4 similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/m4/icu-conditional.m4 rename to deps/icu/source/config/m4/icu-conditional.m4 diff --git a/bootstrap/cxx/deps/icu/source/config/make2sh.sed b/deps/icu/source/config/make2sh.sed similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/make2sh.sed rename to deps/icu/source/config/make2sh.sed diff --git a/bootstrap/cxx/deps/icu/source/config/mh-aix-gcc b/deps/icu/source/config/mh-aix-gcc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-aix-gcc rename to deps/icu/source/config/mh-aix-gcc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-aix-va b/deps/icu/source/config/mh-aix-va similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-aix-va rename to deps/icu/source/config/mh-aix-va diff --git a/bootstrap/cxx/deps/icu/source/config/mh-alpha-linux-cc b/deps/icu/source/config/mh-alpha-linux-cc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-alpha-linux-cc rename to deps/icu/source/config/mh-alpha-linux-cc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-alpha-linux-gcc b/deps/icu/source/config/mh-alpha-linux-gcc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-alpha-linux-gcc rename to deps/icu/source/config/mh-alpha-linux-gcc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-alpha-osf b/deps/icu/source/config/mh-alpha-osf similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-alpha-osf rename to deps/icu/source/config/mh-alpha-osf diff --git a/bootstrap/cxx/deps/icu/source/config/mh-beos b/deps/icu/source/config/mh-beos similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-beos rename to deps/icu/source/config/mh-beos diff --git a/bootstrap/cxx/deps/icu/source/config/mh-bsd-gcc b/deps/icu/source/config/mh-bsd-gcc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-bsd-gcc rename to deps/icu/source/config/mh-bsd-gcc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-cygwin b/deps/icu/source/config/mh-cygwin similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-cygwin rename to deps/icu/source/config/mh-cygwin diff --git a/bootstrap/cxx/deps/icu/source/config/mh-cygwin-msvc b/deps/icu/source/config/mh-cygwin-msvc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-cygwin-msvc rename to deps/icu/source/config/mh-cygwin-msvc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-cygwin64 b/deps/icu/source/config/mh-cygwin64 similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-cygwin64 rename to deps/icu/source/config/mh-cygwin64 diff --git a/bootstrap/cxx/deps/icu/source/config/mh-darwin b/deps/icu/source/config/mh-darwin similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-darwin rename to deps/icu/source/config/mh-darwin diff --git a/bootstrap/cxx/deps/icu/source/config/mh-haiku b/deps/icu/source/config/mh-haiku similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-haiku rename to deps/icu/source/config/mh-haiku diff --git a/bootstrap/cxx/deps/icu/source/config/mh-hpux-acc b/deps/icu/source/config/mh-hpux-acc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-hpux-acc rename to deps/icu/source/config/mh-hpux-acc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-hpux-gcc b/deps/icu/source/config/mh-hpux-gcc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-hpux-gcc rename to deps/icu/source/config/mh-hpux-gcc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-irix b/deps/icu/source/config/mh-irix similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-irix rename to deps/icu/source/config/mh-irix diff --git a/bootstrap/cxx/deps/icu/source/config/mh-linux b/deps/icu/source/config/mh-linux similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-linux rename to deps/icu/source/config/mh-linux diff --git a/bootstrap/cxx/deps/icu/source/config/mh-linux-va b/deps/icu/source/config/mh-linux-va similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-linux-va rename to deps/icu/source/config/mh-linux-va diff --git a/bootstrap/cxx/deps/icu/source/config/mh-mingw b/deps/icu/source/config/mh-mingw similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-mingw rename to deps/icu/source/config/mh-mingw diff --git a/bootstrap/cxx/deps/icu/source/config/mh-mingw64 b/deps/icu/source/config/mh-mingw64 similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-mingw64 rename to deps/icu/source/config/mh-mingw64 diff --git a/bootstrap/cxx/deps/icu/source/config/mh-mpras b/deps/icu/source/config/mh-mpras similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-mpras rename to deps/icu/source/config/mh-mpras diff --git a/bootstrap/cxx/deps/icu/source/config/mh-msys-msvc b/deps/icu/source/config/mh-msys-msvc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-msys-msvc rename to deps/icu/source/config/mh-msys-msvc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-os390 b/deps/icu/source/config/mh-os390 similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-os390 rename to deps/icu/source/config/mh-os390 diff --git a/bootstrap/cxx/deps/icu/source/config/mh-os400 b/deps/icu/source/config/mh-os400 similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-os400 rename to deps/icu/source/config/mh-os400 diff --git a/bootstrap/cxx/deps/icu/source/config/mh-qnx b/deps/icu/source/config/mh-qnx similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-qnx rename to deps/icu/source/config/mh-qnx diff --git a/bootstrap/cxx/deps/icu/source/config/mh-solaris b/deps/icu/source/config/mh-solaris similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-solaris rename to deps/icu/source/config/mh-solaris diff --git a/bootstrap/cxx/deps/icu/source/config/mh-solaris-gcc b/deps/icu/source/config/mh-solaris-gcc similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-solaris-gcc rename to deps/icu/source/config/mh-solaris-gcc diff --git a/bootstrap/cxx/deps/icu/source/config/mh-unknown b/deps/icu/source/config/mh-unknown similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/mh-unknown rename to deps/icu/source/config/mh-unknown diff --git a/bootstrap/cxx/deps/icu/source/config/pkgdataMakefile.in b/deps/icu/source/config/pkgdataMakefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/pkgdataMakefile.in rename to deps/icu/source/config/pkgdataMakefile.in diff --git a/bootstrap/cxx/deps/icu/source/config/test-icu-config.sh b/deps/icu/source/config/test-icu-config.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/test-icu-config.sh rename to deps/icu/source/config/test-icu-config.sh diff --git a/bootstrap/cxx/deps/icu/source/config/windows-update.sed.in b/deps/icu/source/config/windows-update.sed.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/config/windows-update.sed.in rename to deps/icu/source/config/windows-update.sed.in diff --git a/bootstrap/cxx/deps/icu/source/configure b/deps/icu/source/configure similarity index 100% rename from bootstrap/cxx/deps/icu/source/configure rename to deps/icu/source/configure diff --git a/bootstrap/cxx/deps/icu/source/configure.ac b/deps/icu/source/configure.ac similarity index 100% rename from bootstrap/cxx/deps/icu/source/configure.ac rename to deps/icu/source/configure.ac diff --git a/bootstrap/cxx/deps/icu/source/data/BUILDRULES.py b/deps/icu/source/data/BUILDRULES.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/BUILDRULES.py rename to deps/icu/source/data/BUILDRULES.py diff --git a/bootstrap/cxx/deps/icu/source/data/Makefile.in b/deps/icu/source/data/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/Makefile.in rename to deps/icu/source/data/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/data/build.xml b/deps/icu/source/data/build.xml similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/build.xml rename to deps/icu/source/data/build.xml diff --git a/bootstrap/cxx/deps/icu/source/data/cldr-icu-readme.txt b/deps/icu/source/data/cldr-icu-readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/cldr-icu-readme.txt rename to deps/icu/source/data/cldr-icu-readme.txt diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldml.dtd b/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldml.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldml.dtd rename to deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldml.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd b/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd rename to deps/icu/source/data/dtd/cldr-35.1/common/dtd/ldmlICU.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr-40/common/dtd/ldml.dtd b/deps/icu/source/data/dtd/cldr-40/common/dtd/ldml.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr-40/common/dtd/ldml.dtd rename to deps/icu/source/data/dtd/cldr-40/common/dtd/ldml.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr-40/common/dtd/ldmlICU.dtd b/deps/icu/source/data/dtd/cldr-40/common/dtd/ldmlICU.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr-40/common/dtd/ldmlICU.dtd rename to deps/icu/source/data/dtd/cldr-40/common/dtd/ldmlICU.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr/common/dtd/ldml.dtd b/deps/icu/source/data/dtd/cldr/common/dtd/ldml.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr/common/dtd/ldml.dtd rename to deps/icu/source/data/dtd/cldr/common/dtd/ldml.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/dtd/cldr/common/dtd/ldmlICU.dtd b/deps/icu/source/data/dtd/cldr/common/dtd/ldmlICU.dtd similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/dtd/cldr/common/dtd/ldmlICU.dtd rename to deps/icu/source/data/dtd/cldr/common/dtd/ldmlICU.dtd diff --git a/bootstrap/cxx/deps/icu/source/data/icu4j-readme.txt b/deps/icu/source/data/icu4j-readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/icu4j-readme.txt rename to deps/icu/source/data/icu4j-readme.txt diff --git a/bootstrap/cxx/deps/icu/source/data/icupkg.inc.in b/deps/icu/source/data/icupkg.inc.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/icupkg.inc.in rename to deps/icu/source/data/icupkg.inc.in diff --git a/bootstrap/cxx/deps/icu/source/data/in/coll/ucadata-implicithan.icu b/deps/icu/source/data/in/coll/ucadata-implicithan.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/coll/ucadata-implicithan.icu rename to deps/icu/source/data/in/coll/ucadata-implicithan.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/coll/ucadata-unihan.icu b/deps/icu/source/data/in/coll/ucadata-unihan.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/coll/ucadata-unihan.icu rename to deps/icu/source/data/in/coll/ucadata-unihan.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/icudt71l.dat b/deps/icu/source/data/in/icudt71l.dat similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/icudt71l.dat rename to deps/icu/source/data/in/icudt71l.dat diff --git a/bootstrap/cxx/deps/icu/source/data/in/nfc.nrm b/deps/icu/source/data/in/nfc.nrm similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/nfc.nrm rename to deps/icu/source/data/in/nfc.nrm diff --git a/bootstrap/cxx/deps/icu/source/data/in/nfkc.nrm b/deps/icu/source/data/in/nfkc.nrm similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/nfkc.nrm rename to deps/icu/source/data/in/nfkc.nrm diff --git a/bootstrap/cxx/deps/icu/source/data/in/nfkc_cf.nrm b/deps/icu/source/data/in/nfkc_cf.nrm similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/nfkc_cf.nrm rename to deps/icu/source/data/in/nfkc_cf.nrm diff --git a/bootstrap/cxx/deps/icu/source/data/in/pnames.icu b/deps/icu/source/data/in/pnames.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/pnames.icu rename to deps/icu/source/data/in/pnames.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/ubidi.icu b/deps/icu/source/data/in/ubidi.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/ubidi.icu rename to deps/icu/source/data/in/ubidi.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/ucase.icu b/deps/icu/source/data/in/ucase.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/ucase.icu rename to deps/icu/source/data/in/ucase.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/uemoji.icu b/deps/icu/source/data/in/uemoji.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/uemoji.icu rename to deps/icu/source/data/in/uemoji.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/ulayout.icu b/deps/icu/source/data/in/ulayout.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/ulayout.icu rename to deps/icu/source/data/in/ulayout.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/unames.icu b/deps/icu/source/data/in/unames.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/unames.icu rename to deps/icu/source/data/in/unames.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/uprops.icu b/deps/icu/source/data/in/uprops.icu similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/uprops.icu rename to deps/icu/source/data/in/uprops.icu diff --git a/bootstrap/cxx/deps/icu/source/data/in/uts46.nrm b/deps/icu/source/data/in/uts46.nrm similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/in/uts46.nrm rename to deps/icu/source/data/in/uts46.nrm diff --git a/bootstrap/cxx/deps/icu/source/data/makedata.mak b/deps/icu/source/data/makedata.mak similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/makedata.mak rename to deps/icu/source/data/makedata.mak diff --git a/bootstrap/cxx/deps/icu/source/data/makedata.vcxproj b/deps/icu/source/data/makedata.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/makedata.vcxproj rename to deps/icu/source/data/makedata.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/data/makedata.vcxproj.filters b/deps/icu/source/data/makedata.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/makedata.vcxproj.filters rename to deps/icu/source/data/makedata.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/data/makedata_uwp.vcxproj b/deps/icu/source/data/makedata_uwp.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/makedata_uwp.vcxproj rename to deps/icu/source/data/makedata_uwp.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/data/misc/icudata.rc b/deps/icu/source/data/misc/icudata.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/misc/icudata.rc rename to deps/icu/source/data/misc/icudata.rc diff --git a/bootstrap/cxx/deps/icu/source/data/pkgdataMakefile.in b/deps/icu/source/data/pkgdataMakefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/pkgdataMakefile.in rename to deps/icu/source/data/pkgdataMakefile.in diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3491.txt b/deps/icu/source/data/sprep/rfc3491.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3491.txt rename to deps/icu/source/data/sprep/rfc3491.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3530cs.txt b/deps/icu/source/data/sprep/rfc3530cs.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3530cs.txt rename to deps/icu/source/data/sprep/rfc3530cs.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3530csci.txt b/deps/icu/source/data/sprep/rfc3530csci.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3530csci.txt rename to deps/icu/source/data/sprep/rfc3530csci.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3530mixp.txt b/deps/icu/source/data/sprep/rfc3530mixp.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3530mixp.txt rename to deps/icu/source/data/sprep/rfc3530mixp.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3722.txt b/deps/icu/source/data/sprep/rfc3722.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3722.txt rename to deps/icu/source/data/sprep/rfc3722.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3920node.txt b/deps/icu/source/data/sprep/rfc3920node.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3920node.txt rename to deps/icu/source/data/sprep/rfc3920node.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc3920res.txt b/deps/icu/source/data/sprep/rfc3920res.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc3920res.txt rename to deps/icu/source/data/sprep/rfc3920res.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc4011.txt b/deps/icu/source/data/sprep/rfc4011.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc4011.txt rename to deps/icu/source/data/sprep/rfc4011.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc4013.txt b/deps/icu/source/data/sprep/rfc4013.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc4013.txt rename to deps/icu/source/data/sprep/rfc4013.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc4505.txt b/deps/icu/source/data/sprep/rfc4505.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc4505.txt rename to deps/icu/source/data/sprep/rfc4505.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc4518.txt b/deps/icu/source/data/sprep/rfc4518.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc4518.txt rename to deps/icu/source/data/sprep/rfc4518.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/rfc4518ci.txt b/deps/icu/source/data/sprep/rfc4518ci.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/rfc4518ci.txt rename to deps/icu/source/data/sprep/rfc4518ci.txt diff --git a/bootstrap/cxx/deps/icu/source/data/sprep/sprepfiles.mk b/deps/icu/source/data/sprep/sprepfiles.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/sprep/sprepfiles.mk rename to deps/icu/source/data/sprep/sprepfiles.mk diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/CaseFolding.txt b/deps/icu/source/data/unidata/CaseFolding.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/CaseFolding.txt rename to deps/icu/source/data/unidata/CaseFolding.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/DerivedCoreProperties.txt b/deps/icu/source/data/unidata/DerivedCoreProperties.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/DerivedCoreProperties.txt rename to deps/icu/source/data/unidata/DerivedCoreProperties.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/DerivedNormalizationProps.txt b/deps/icu/source/data/unidata/DerivedNormalizationProps.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/DerivedNormalizationProps.txt rename to deps/icu/source/data/unidata/DerivedNormalizationProps.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/FractionalUCA.txt b/deps/icu/source/data/unidata/FractionalUCA.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/FractionalUCA.txt rename to deps/icu/source/data/unidata/FractionalUCA.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/NormalizationCorrections.txt b/deps/icu/source/data/unidata/NormalizationCorrections.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/NormalizationCorrections.txt rename to deps/icu/source/data/unidata/NormalizationCorrections.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/NormalizationTest.txt b/deps/icu/source/data/unidata/NormalizationTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/NormalizationTest.txt rename to deps/icu/source/data/unidata/NormalizationTest.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/SpecialCasing.txt b/deps/icu/source/data/unidata/SpecialCasing.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/SpecialCasing.txt rename to deps/icu/source/data/unidata/SpecialCasing.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/UCARules.txt b/deps/icu/source/data/unidata/UCARules.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/UCARules.txt rename to deps/icu/source/data/unidata/UCARules.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/UnicodeData.txt b/deps/icu/source/data/unidata/UnicodeData.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/UnicodeData.txt rename to deps/icu/source/data/unidata/UnicodeData.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/changes.txt b/deps/icu/source/data/unidata/changes.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/changes.txt rename to deps/icu/source/data/unidata/changes.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/clean.sh b/deps/icu/source/data/unidata/clean.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/clean.sh rename to deps/icu/source/data/unidata/clean.sh diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/confusables.txt b/deps/icu/source/data/unidata/confusables.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/confusables.txt rename to deps/icu/source/data/unidata/confusables.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/confusablesWholeScript.txt b/deps/icu/source/data/unidata/confusablesWholeScript.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/confusablesWholeScript.txt rename to deps/icu/source/data/unidata/confusablesWholeScript.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/emoji-sequences.txt b/deps/icu/source/data/unidata/emoji-sequences.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/emoji-sequences.txt rename to deps/icu/source/data/unidata/emoji-sequences.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/emoji-zwj-sequences.txt b/deps/icu/source/data/unidata/emoji-zwj-sequences.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/emoji-zwj-sequences.txt rename to deps/icu/source/data/unidata/emoji-zwj-sequences.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/generate.sh b/deps/icu/source/data/unidata/generate.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/generate.sh rename to deps/icu/source/data/unidata/generate.sh diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/norm2/BUILD.bazel b/deps/icu/source/data/unidata/norm2/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/norm2/BUILD.bazel rename to deps/icu/source/data/unidata/norm2/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfc.txt b/deps/icu/source/data/unidata/norm2/nfc.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfc.txt rename to deps/icu/source/data/unidata/norm2/nfc.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfkc.txt b/deps/icu/source/data/unidata/norm2/nfkc.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfkc.txt rename to deps/icu/source/data/unidata/norm2/nfkc.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfkc_cf.txt b/deps/icu/source/data/unidata/norm2/nfkc_cf.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/norm2/nfkc_cf.txt rename to deps/icu/source/data/unidata/norm2/nfkc_cf.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/norm2/uts46.txt b/deps/icu/source/data/unidata/norm2/uts46.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/norm2/uts46.txt rename to deps/icu/source/data/unidata/norm2/uts46.txt diff --git a/bootstrap/cxx/deps/icu/source/data/unidata/ppucd.txt b/deps/icu/source/data/unidata/ppucd.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/data/unidata/ppucd.txt rename to deps/icu/source/data/unidata/ppucd.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/Makefile.in b/deps/icu/source/extra/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/Makefile.in rename to deps/icu/source/extra/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/Makefile.in b/deps/icu/source/extra/scrptrun/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/Makefile.in rename to deps/icu/source/extra/scrptrun/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/readme.html b/deps/icu/source/extra/scrptrun/readme.html similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/readme.html rename to deps/icu/source/extra/scrptrun/readme.html diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/scrptrun.cpp b/deps/icu/source/extra/scrptrun/scrptrun.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/scrptrun.cpp rename to deps/icu/source/extra/scrptrun/scrptrun.cpp diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/scrptrun.h b/deps/icu/source/extra/scrptrun/scrptrun.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/scrptrun.h rename to deps/icu/source/extra/scrptrun/scrptrun.h diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/sources.txt b/deps/icu/source/extra/scrptrun/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/sources.txt rename to deps/icu/source/extra/scrptrun/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.cpp b/deps/icu/source/extra/scrptrun/srtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.cpp rename to deps/icu/source/extra/scrptrun/srtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.dsp b/deps/icu/source/extra/scrptrun/srtest.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.dsp rename to deps/icu/source/extra/scrptrun/srtest.dsp diff --git a/bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.dsw b/deps/icu/source/extra/scrptrun/srtest.dsw similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/scrptrun/srtest.dsw rename to deps/icu/source/extra/scrptrun/srtest.dsw diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/Makefile.in b/deps/icu/source/extra/uconv/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/Makefile.in rename to deps/icu/source/extra/uconv/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/README b/deps/icu/source/extra/uconv/README similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/README rename to deps/icu/source/extra/uconv/README diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/makedata.mak b/deps/icu/source/extra/uconv/makedata.mak similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/makedata.mak rename to deps/icu/source/extra/uconv/makedata.mak diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/pkgdata.inc.in b/deps/icu/source/extra/uconv/pkgdata.inc.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/pkgdata.inc.in rename to deps/icu/source/extra/uconv/pkgdata.inc.in diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/pkgdataMakefile.in b/deps/icu/source/extra/uconv/pkgdataMakefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/pkgdataMakefile.in rename to deps/icu/source/extra/uconv/pkgdataMakefile.in diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/resfiles.mk b/deps/icu/source/extra/uconv/resfiles.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/resfiles.mk rename to deps/icu/source/extra/uconv/resfiles.mk diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/resources/fr.txt b/deps/icu/source/extra/uconv/resources/fr.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/resources/fr.txt rename to deps/icu/source/extra/uconv/resources/fr.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/resources/root.txt b/deps/icu/source/extra/uconv/resources/root.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/resources/root.txt rename to deps/icu/source/extra/uconv/resources/root.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/ISO-8859-2.txt b/deps/icu/source/extra/uconv/samples/ISO-8859-2.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/ISO-8859-2.txt rename to deps/icu/source/extra/uconv/samples/ISO-8859-2.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/ISO-8859-3.txt b/deps/icu/source/extra/uconv/samples/ISO-8859-3.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/ISO-8859-3.txt rename to deps/icu/source/extra/uconv/samples/ISO-8859-3.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt b/deps/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt rename to deps/icu/source/extra/uconv/samples/danish-ISO-8859-1.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/eucJP.txt b/deps/icu/source/extra/uconv/samples/eucJP.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/eucJP.txt rename to deps/icu/source/extra/uconv/samples/eucJP.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/hangul-eucKR.txt b/deps/icu/source/extra/uconv/samples/hangul-eucKR.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/hangul-eucKR.txt rename to deps/icu/source/extra/uconv/samples/hangul-eucKR.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/hania-eucKR.txt b/deps/icu/source/extra/uconv/samples/hania-eucKR.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/hania-eucKR.txt rename to deps/icu/source/extra/uconv/samples/hania-eucKR.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/ibm-37-test.txt b/deps/icu/source/extra/uconv/samples/ibm-37-test.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/ibm-37-test.txt rename to deps/icu/source/extra/uconv/samples/ibm-37-test.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/iso8859-1.txt b/deps/icu/source/extra/uconv/samples/iso8859-1.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/iso8859-1.txt rename to deps/icu/source/extra/uconv/samples/iso8859-1.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/koi8r.txt b/deps/icu/source/extra/uconv/samples/koi8r.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/koi8r.txt rename to deps/icu/source/extra/uconv/samples/koi8r.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/armenian.txt b/deps/icu/source/extra/uconv/samples/utf8/armenian.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/armenian.txt rename to deps/icu/source/extra/uconv/samples/utf8/armenian.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/banviet.txt b/deps/icu/source/extra/uconv/samples/utf8/banviet.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/banviet.txt rename to deps/icu/source/extra/uconv/samples/utf8/banviet.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt b/deps/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt rename to deps/icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/croat.txt b/deps/icu/source/extra/uconv/samples/utf8/croat.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/croat.txt rename to deps/icu/source/extra/uconv/samples/utf8/croat.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/danish.txt b/deps/icu/source/extra/uconv/samples/utf8/danish.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/danish.txt rename to deps/icu/source/extra/uconv/samples/utf8/danish.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/greek.txt b/deps/icu/source/extra/uconv/samples/utf8/greek.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/greek.txt rename to deps/icu/source/extra/uconv/samples/utf8/greek.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/hangul.txt b/deps/icu/source/extra/uconv/samples/utf8/hangul.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/hangul.txt rename to deps/icu/source/extra/uconv/samples/utf8/hangul.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/hania.txt b/deps/icu/source/extra/uconv/samples/utf8/hania.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/hania.txt rename to deps/icu/source/extra/uconv/samples/utf8/hania.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/jap.txt b/deps/icu/source/extra/uconv/samples/utf8/jap.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/jap.txt rename to deps/icu/source/extra/uconv/samples/utf8/jap.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/korean.txt b/deps/icu/source/extra/uconv/samples/utf8/korean.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/korean.txt rename to deps/icu/source/extra/uconv/samples/utf8/korean.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/linji.txt b/deps/icu/source/extra/uconv/samples/utf8/linji.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/linji.txt rename to deps/icu/source/extra/uconv/samples/utf8/linji.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/many.txt b/deps/icu/source/extra/uconv/samples/utf8/many.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/many.txt rename to deps/icu/source/extra/uconv/samples/utf8/many.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/maopoem.txt b/deps/icu/source/extra/uconv/samples/utf8/maopoem.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/maopoem.txt rename to deps/icu/source/extra/uconv/samples/utf8/maopoem.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/russian.txt b/deps/icu/source/extra/uconv/samples/utf8/russian.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/russian.txt rename to deps/icu/source/extra/uconv/samples/utf8/russian.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/simplechinese.txt b/deps/icu/source/extra/uconv/samples/utf8/simplechinese.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/simplechinese.txt rename to deps/icu/source/extra/uconv/samples/utf8/simplechinese.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/turkish.txt b/deps/icu/source/extra/uconv/samples/utf8/turkish.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/turkish.txt rename to deps/icu/source/extra/uconv/samples/utf8/turkish.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt b/deps/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt rename to deps/icu/source/extra/uconv/samples/utf8/utf-8-demo.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/sources.txt b/deps/icu/source/extra/uconv/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/sources.txt rename to deps/icu/source/extra/uconv/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/uconv.1.in b/deps/icu/source/extra/uconv/uconv.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/uconv.1.in rename to deps/icu/source/extra/uconv/uconv.1.in diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/uconv.cpp b/deps/icu/source/extra/uconv/uconv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/uconv.cpp rename to deps/icu/source/extra/uconv/uconv.cpp diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/uconv.vcxproj b/deps/icu/source/extra/uconv/uconv.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/uconv.vcxproj rename to deps/icu/source/extra/uconv/uconv.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/uconv.vcxproj.filters b/deps/icu/source/extra/uconv/uconv.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/uconv.vcxproj.filters rename to deps/icu/source/extra/uconv/uconv.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/unicode/uwmsg.h b/deps/icu/source/extra/uconv/unicode/uwmsg.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/unicode/uwmsg.h rename to deps/icu/source/extra/uconv/unicode/uwmsg.h diff --git a/bootstrap/cxx/deps/icu/source/extra/uconv/uwmsg.c b/deps/icu/source/extra/uconv/uwmsg.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/extra/uconv/uwmsg.c rename to deps/icu/source/extra/uconv/uwmsg.c diff --git a/bootstrap/cxx/deps/icu/source/i18n/BUILD.bazel b/deps/icu/source/i18n/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/BUILD.bazel rename to deps/icu/source/i18n/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/i18n/Makefile.in b/deps/icu/source/i18n/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/Makefile.in rename to deps/icu/source/i18n/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/i18n/alphaindex.cpp b/deps/icu/source/i18n/alphaindex.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/alphaindex.cpp rename to deps/icu/source/i18n/alphaindex.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/anytrans.cpp b/deps/icu/source/i18n/anytrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/anytrans.cpp rename to deps/icu/source/i18n/anytrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/anytrans.h b/deps/icu/source/i18n/anytrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/anytrans.h rename to deps/icu/source/i18n/anytrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/astro.cpp b/deps/icu/source/i18n/astro.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/astro.cpp rename to deps/icu/source/i18n/astro.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/astro.h b/deps/icu/source/i18n/astro.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/astro.h rename to deps/icu/source/i18n/astro.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/basictz.cpp b/deps/icu/source/i18n/basictz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/basictz.cpp rename to deps/icu/source/i18n/basictz.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/bocsu.cpp b/deps/icu/source/i18n/bocsu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/bocsu.cpp rename to deps/icu/source/i18n/bocsu.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/bocsu.h b/deps/icu/source/i18n/bocsu.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/bocsu.h rename to deps/icu/source/i18n/bocsu.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/brktrans.cpp b/deps/icu/source/i18n/brktrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/brktrans.cpp rename to deps/icu/source/i18n/brktrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/brktrans.h b/deps/icu/source/i18n/brktrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/brktrans.h rename to deps/icu/source/i18n/brktrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/buddhcal.cpp b/deps/icu/source/i18n/buddhcal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/buddhcal.cpp rename to deps/icu/source/i18n/buddhcal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/buddhcal.h b/deps/icu/source/i18n/buddhcal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/buddhcal.h rename to deps/icu/source/i18n/buddhcal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/calendar.cpp b/deps/icu/source/i18n/calendar.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/calendar.cpp rename to deps/icu/source/i18n/calendar.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/casetrn.cpp b/deps/icu/source/i18n/casetrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/casetrn.cpp rename to deps/icu/source/i18n/casetrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/casetrn.h b/deps/icu/source/i18n/casetrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/casetrn.h rename to deps/icu/source/i18n/casetrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/cecal.cpp b/deps/icu/source/i18n/cecal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/cecal.cpp rename to deps/icu/source/i18n/cecal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/cecal.h b/deps/icu/source/i18n/cecal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/cecal.h rename to deps/icu/source/i18n/cecal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/chnsecal.cpp b/deps/icu/source/i18n/chnsecal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/chnsecal.cpp rename to deps/icu/source/i18n/chnsecal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/chnsecal.h b/deps/icu/source/i18n/chnsecal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/chnsecal.h rename to deps/icu/source/i18n/chnsecal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/choicfmt.cpp b/deps/icu/source/i18n/choicfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/choicfmt.cpp rename to deps/icu/source/i18n/choicfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/coleitr.cpp b/deps/icu/source/i18n/coleitr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/coleitr.cpp rename to deps/icu/source/i18n/coleitr.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/coll.cpp b/deps/icu/source/i18n/coll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/coll.cpp rename to deps/icu/source/i18n/coll.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collation.cpp b/deps/icu/source/i18n/collation.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collation.cpp rename to deps/icu/source/i18n/collation.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collation.h b/deps/icu/source/i18n/collation.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collation.h rename to deps/icu/source/i18n/collation.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationbuilder.cpp b/deps/icu/source/i18n/collationbuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationbuilder.cpp rename to deps/icu/source/i18n/collationbuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationbuilder.h b/deps/icu/source/i18n/collationbuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationbuilder.h rename to deps/icu/source/i18n/collationbuilder.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationcompare.cpp b/deps/icu/source/i18n/collationcompare.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationcompare.cpp rename to deps/icu/source/i18n/collationcompare.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationcompare.h b/deps/icu/source/i18n/collationcompare.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationcompare.h rename to deps/icu/source/i18n/collationcompare.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdata.cpp b/deps/icu/source/i18n/collationdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdata.cpp rename to deps/icu/source/i18n/collationdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdata.h b/deps/icu/source/i18n/collationdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdata.h rename to deps/icu/source/i18n/collationdata.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatabuilder.cpp b/deps/icu/source/i18n/collationdatabuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatabuilder.cpp rename to deps/icu/source/i18n/collationdatabuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatabuilder.h b/deps/icu/source/i18n/collationdatabuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatabuilder.h rename to deps/icu/source/i18n/collationdatabuilder.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatareader.cpp b/deps/icu/source/i18n/collationdatareader.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatareader.cpp rename to deps/icu/source/i18n/collationdatareader.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatareader.h b/deps/icu/source/i18n/collationdatareader.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatareader.h rename to deps/icu/source/i18n/collationdatareader.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatawriter.cpp b/deps/icu/source/i18n/collationdatawriter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatawriter.cpp rename to deps/icu/source/i18n/collationdatawriter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationdatawriter.h b/deps/icu/source/i18n/collationdatawriter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationdatawriter.h rename to deps/icu/source/i18n/collationdatawriter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfastlatin.cpp b/deps/icu/source/i18n/collationfastlatin.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfastlatin.cpp rename to deps/icu/source/i18n/collationfastlatin.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfastlatin.h b/deps/icu/source/i18n/collationfastlatin.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfastlatin.h rename to deps/icu/source/i18n/collationfastlatin.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfastlatinbuilder.cpp b/deps/icu/source/i18n/collationfastlatinbuilder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfastlatinbuilder.cpp rename to deps/icu/source/i18n/collationfastlatinbuilder.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfastlatinbuilder.h b/deps/icu/source/i18n/collationfastlatinbuilder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfastlatinbuilder.h rename to deps/icu/source/i18n/collationfastlatinbuilder.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfcd.cpp b/deps/icu/source/i18n/collationfcd.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfcd.cpp rename to deps/icu/source/i18n/collationfcd.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationfcd.h b/deps/icu/source/i18n/collationfcd.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationfcd.h rename to deps/icu/source/i18n/collationfcd.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationiterator.cpp b/deps/icu/source/i18n/collationiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationiterator.cpp rename to deps/icu/source/i18n/collationiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationiterator.h b/deps/icu/source/i18n/collationiterator.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationiterator.h rename to deps/icu/source/i18n/collationiterator.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationkeys.cpp b/deps/icu/source/i18n/collationkeys.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationkeys.cpp rename to deps/icu/source/i18n/collationkeys.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationkeys.h b/deps/icu/source/i18n/collationkeys.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationkeys.h rename to deps/icu/source/i18n/collationkeys.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationroot.cpp b/deps/icu/source/i18n/collationroot.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationroot.cpp rename to deps/icu/source/i18n/collationroot.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationroot.h b/deps/icu/source/i18n/collationroot.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationroot.h rename to deps/icu/source/i18n/collationroot.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationrootelements.cpp b/deps/icu/source/i18n/collationrootelements.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationrootelements.cpp rename to deps/icu/source/i18n/collationrootelements.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationrootelements.h b/deps/icu/source/i18n/collationrootelements.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationrootelements.h rename to deps/icu/source/i18n/collationrootelements.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationruleparser.cpp b/deps/icu/source/i18n/collationruleparser.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationruleparser.cpp rename to deps/icu/source/i18n/collationruleparser.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationruleparser.h b/deps/icu/source/i18n/collationruleparser.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationruleparser.h rename to deps/icu/source/i18n/collationruleparser.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationsets.cpp b/deps/icu/source/i18n/collationsets.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationsets.cpp rename to deps/icu/source/i18n/collationsets.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationsets.h b/deps/icu/source/i18n/collationsets.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationsets.h rename to deps/icu/source/i18n/collationsets.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationsettings.cpp b/deps/icu/source/i18n/collationsettings.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationsettings.cpp rename to deps/icu/source/i18n/collationsettings.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationsettings.h b/deps/icu/source/i18n/collationsettings.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationsettings.h rename to deps/icu/source/i18n/collationsettings.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationtailoring.cpp b/deps/icu/source/i18n/collationtailoring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationtailoring.cpp rename to deps/icu/source/i18n/collationtailoring.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationtailoring.h b/deps/icu/source/i18n/collationtailoring.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationtailoring.h rename to deps/icu/source/i18n/collationtailoring.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationweights.cpp b/deps/icu/source/i18n/collationweights.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationweights.cpp rename to deps/icu/source/i18n/collationweights.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/collationweights.h b/deps/icu/source/i18n/collationweights.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collationweights.h rename to deps/icu/source/i18n/collationweights.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/collunsafe.h b/deps/icu/source/i18n/collunsafe.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/collunsafe.h rename to deps/icu/source/i18n/collunsafe.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/compactdecimalformat.cpp b/deps/icu/source/i18n/compactdecimalformat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/compactdecimalformat.cpp rename to deps/icu/source/i18n/compactdecimalformat.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/coptccal.cpp b/deps/icu/source/i18n/coptccal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/coptccal.cpp rename to deps/icu/source/i18n/coptccal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/coptccal.h b/deps/icu/source/i18n/coptccal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/coptccal.h rename to deps/icu/source/i18n/coptccal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/cpdtrans.cpp b/deps/icu/source/i18n/cpdtrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/cpdtrans.cpp rename to deps/icu/source/i18n/cpdtrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/cpdtrans.h b/deps/icu/source/i18n/cpdtrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/cpdtrans.h rename to deps/icu/source/i18n/cpdtrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csdetect.cpp b/deps/icu/source/i18n/csdetect.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csdetect.cpp rename to deps/icu/source/i18n/csdetect.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csdetect.h b/deps/icu/source/i18n/csdetect.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csdetect.h rename to deps/icu/source/i18n/csdetect.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csmatch.cpp b/deps/icu/source/i18n/csmatch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csmatch.cpp rename to deps/icu/source/i18n/csmatch.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csmatch.h b/deps/icu/source/i18n/csmatch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csmatch.h rename to deps/icu/source/i18n/csmatch.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csr2022.cpp b/deps/icu/source/i18n/csr2022.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csr2022.cpp rename to deps/icu/source/i18n/csr2022.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csr2022.h b/deps/icu/source/i18n/csr2022.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csr2022.h rename to deps/icu/source/i18n/csr2022.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrecog.cpp b/deps/icu/source/i18n/csrecog.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrecog.cpp rename to deps/icu/source/i18n/csrecog.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrecog.h b/deps/icu/source/i18n/csrecog.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrecog.h rename to deps/icu/source/i18n/csrecog.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrmbcs.cpp b/deps/icu/source/i18n/csrmbcs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrmbcs.cpp rename to deps/icu/source/i18n/csrmbcs.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrmbcs.h b/deps/icu/source/i18n/csrmbcs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrmbcs.h rename to deps/icu/source/i18n/csrmbcs.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrsbcs.cpp b/deps/icu/source/i18n/csrsbcs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrsbcs.cpp rename to deps/icu/source/i18n/csrsbcs.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrsbcs.h b/deps/icu/source/i18n/csrsbcs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrsbcs.h rename to deps/icu/source/i18n/csrsbcs.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrucode.cpp b/deps/icu/source/i18n/csrucode.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrucode.cpp rename to deps/icu/source/i18n/csrucode.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrucode.h b/deps/icu/source/i18n/csrucode.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrucode.h rename to deps/icu/source/i18n/csrucode.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrutf8.cpp b/deps/icu/source/i18n/csrutf8.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrutf8.cpp rename to deps/icu/source/i18n/csrutf8.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/csrutf8.h b/deps/icu/source/i18n/csrutf8.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/csrutf8.h rename to deps/icu/source/i18n/csrutf8.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/curramt.cpp b/deps/icu/source/i18n/curramt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/curramt.cpp rename to deps/icu/source/i18n/curramt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/currfmt.cpp b/deps/icu/source/i18n/currfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/currfmt.cpp rename to deps/icu/source/i18n/currfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/currfmt.h b/deps/icu/source/i18n/currfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/currfmt.h rename to deps/icu/source/i18n/currfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/currpinf.cpp b/deps/icu/source/i18n/currpinf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/currpinf.cpp rename to deps/icu/source/i18n/currpinf.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/currunit.cpp b/deps/icu/source/i18n/currunit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/currunit.cpp rename to deps/icu/source/i18n/currunit.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dangical.cpp b/deps/icu/source/i18n/dangical.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dangical.cpp rename to deps/icu/source/i18n/dangical.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dangical.h b/deps/icu/source/i18n/dangical.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dangical.h rename to deps/icu/source/i18n/dangical.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/datefmt.cpp b/deps/icu/source/i18n/datefmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/datefmt.cpp rename to deps/icu/source/i18n/datefmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dayperiodrules.cpp b/deps/icu/source/i18n/dayperiodrules.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dayperiodrules.cpp rename to deps/icu/source/i18n/dayperiodrules.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dayperiodrules.h b/deps/icu/source/i18n/dayperiodrules.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dayperiodrules.h rename to deps/icu/source/i18n/dayperiodrules.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/dcfmtsym.cpp b/deps/icu/source/i18n/dcfmtsym.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dcfmtsym.cpp rename to deps/icu/source/i18n/dcfmtsym.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/decContext.cpp b/deps/icu/source/i18n/decContext.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decContext.cpp rename to deps/icu/source/i18n/decContext.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/decContext.h b/deps/icu/source/i18n/decContext.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decContext.h rename to deps/icu/source/i18n/decContext.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/decNumber.cpp b/deps/icu/source/i18n/decNumber.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decNumber.cpp rename to deps/icu/source/i18n/decNumber.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/decNumber.h b/deps/icu/source/i18n/decNumber.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decNumber.h rename to deps/icu/source/i18n/decNumber.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/decNumberLocal.h b/deps/icu/source/i18n/decNumberLocal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decNumberLocal.h rename to deps/icu/source/i18n/decNumberLocal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/decimfmt.cpp b/deps/icu/source/i18n/decimfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/decimfmt.cpp rename to deps/icu/source/i18n/decimfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum-dtoa.cpp b/deps/icu/source/i18n/double-conversion-bignum-dtoa.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum-dtoa.cpp rename to deps/icu/source/i18n/double-conversion-bignum-dtoa.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum-dtoa.h b/deps/icu/source/i18n/double-conversion-bignum-dtoa.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum-dtoa.h rename to deps/icu/source/i18n/double-conversion-bignum-dtoa.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum.cpp b/deps/icu/source/i18n/double-conversion-bignum.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum.cpp rename to deps/icu/source/i18n/double-conversion-bignum.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum.h b/deps/icu/source/i18n/double-conversion-bignum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-bignum.h rename to deps/icu/source/i18n/double-conversion-bignum.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-cached-powers.cpp b/deps/icu/source/i18n/double-conversion-cached-powers.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-cached-powers.cpp rename to deps/icu/source/i18n/double-conversion-cached-powers.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-cached-powers.h b/deps/icu/source/i18n/double-conversion-cached-powers.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-cached-powers.h rename to deps/icu/source/i18n/double-conversion-cached-powers.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-diy-fp.h b/deps/icu/source/i18n/double-conversion-diy-fp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-diy-fp.h rename to deps/icu/source/i18n/double-conversion-diy-fp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-double-to-string.cpp b/deps/icu/source/i18n/double-conversion-double-to-string.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-double-to-string.cpp rename to deps/icu/source/i18n/double-conversion-double-to-string.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-double-to-string.h b/deps/icu/source/i18n/double-conversion-double-to-string.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-double-to-string.h rename to deps/icu/source/i18n/double-conversion-double-to-string.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-fast-dtoa.cpp b/deps/icu/source/i18n/double-conversion-fast-dtoa.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-fast-dtoa.cpp rename to deps/icu/source/i18n/double-conversion-fast-dtoa.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-fast-dtoa.h b/deps/icu/source/i18n/double-conversion-fast-dtoa.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-fast-dtoa.h rename to deps/icu/source/i18n/double-conversion-fast-dtoa.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-ieee.h b/deps/icu/source/i18n/double-conversion-ieee.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-ieee.h rename to deps/icu/source/i18n/double-conversion-ieee.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-string-to-double.cpp b/deps/icu/source/i18n/double-conversion-string-to-double.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-string-to-double.cpp rename to deps/icu/source/i18n/double-conversion-string-to-double.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-string-to-double.h b/deps/icu/source/i18n/double-conversion-string-to-double.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-string-to-double.h rename to deps/icu/source/i18n/double-conversion-string-to-double.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-strtod.cpp b/deps/icu/source/i18n/double-conversion-strtod.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-strtod.cpp rename to deps/icu/source/i18n/double-conversion-strtod.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-strtod.h b/deps/icu/source/i18n/double-conversion-strtod.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-strtod.h rename to deps/icu/source/i18n/double-conversion-strtod.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion-utils.h b/deps/icu/source/i18n/double-conversion-utils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion-utils.h rename to deps/icu/source/i18n/double-conversion-utils.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/double-conversion.h b/deps/icu/source/i18n/double-conversion.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/double-conversion.h rename to deps/icu/source/i18n/double-conversion.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/dt_impl.h b/deps/icu/source/i18n/dt_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dt_impl.h rename to deps/icu/source/i18n/dt_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtfmtsym.cpp b/deps/icu/source/i18n/dtfmtsym.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtfmtsym.cpp rename to deps/icu/source/i18n/dtfmtsym.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtitv_impl.h b/deps/icu/source/i18n/dtitv_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtitv_impl.h rename to deps/icu/source/i18n/dtitv_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtitvfmt.cpp b/deps/icu/source/i18n/dtitvfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtitvfmt.cpp rename to deps/icu/source/i18n/dtitvfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtitvinf.cpp b/deps/icu/source/i18n/dtitvinf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtitvinf.cpp rename to deps/icu/source/i18n/dtitvinf.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtptngen.cpp b/deps/icu/source/i18n/dtptngen.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtptngen.cpp rename to deps/icu/source/i18n/dtptngen.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtptngen_impl.h b/deps/icu/source/i18n/dtptngen_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtptngen_impl.h rename to deps/icu/source/i18n/dtptngen_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/dtrule.cpp b/deps/icu/source/i18n/dtrule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/dtrule.cpp rename to deps/icu/source/i18n/dtrule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/erarules.cpp b/deps/icu/source/i18n/erarules.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/erarules.cpp rename to deps/icu/source/i18n/erarules.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/erarules.h b/deps/icu/source/i18n/erarules.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/erarules.h rename to deps/icu/source/i18n/erarules.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/esctrn.cpp b/deps/icu/source/i18n/esctrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/esctrn.cpp rename to deps/icu/source/i18n/esctrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/esctrn.h b/deps/icu/source/i18n/esctrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/esctrn.h rename to deps/icu/source/i18n/esctrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/ethpccal.cpp b/deps/icu/source/i18n/ethpccal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ethpccal.cpp rename to deps/icu/source/i18n/ethpccal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ethpccal.h b/deps/icu/source/i18n/ethpccal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ethpccal.h rename to deps/icu/source/i18n/ethpccal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/fmtable.cpp b/deps/icu/source/i18n/fmtable.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fmtable.cpp rename to deps/icu/source/i18n/fmtable.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/fmtable_cnv.cpp b/deps/icu/source/i18n/fmtable_cnv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fmtable_cnv.cpp rename to deps/icu/source/i18n/fmtable_cnv.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/fmtableimp.h b/deps/icu/source/i18n/fmtableimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fmtableimp.h rename to deps/icu/source/i18n/fmtableimp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/format.cpp b/deps/icu/source/i18n/format.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/format.cpp rename to deps/icu/source/i18n/format.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/formatted_string_builder.cpp b/deps/icu/source/i18n/formatted_string_builder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formatted_string_builder.cpp rename to deps/icu/source/i18n/formatted_string_builder.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/formatted_string_builder.h b/deps/icu/source/i18n/formatted_string_builder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formatted_string_builder.h rename to deps/icu/source/i18n/formatted_string_builder.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/formattedval_impl.h b/deps/icu/source/i18n/formattedval_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formattedval_impl.h rename to deps/icu/source/i18n/formattedval_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/formattedval_iterimpl.cpp b/deps/icu/source/i18n/formattedval_iterimpl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formattedval_iterimpl.cpp rename to deps/icu/source/i18n/formattedval_iterimpl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/formattedval_sbimpl.cpp b/deps/icu/source/i18n/formattedval_sbimpl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formattedval_sbimpl.cpp rename to deps/icu/source/i18n/formattedval_sbimpl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/formattedvalue.cpp b/deps/icu/source/i18n/formattedvalue.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/formattedvalue.cpp rename to deps/icu/source/i18n/formattedvalue.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/fphdlimp.cpp b/deps/icu/source/i18n/fphdlimp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fphdlimp.cpp rename to deps/icu/source/i18n/fphdlimp.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/fphdlimp.h b/deps/icu/source/i18n/fphdlimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fphdlimp.h rename to deps/icu/source/i18n/fphdlimp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/fpositer.cpp b/deps/icu/source/i18n/fpositer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/fpositer.cpp rename to deps/icu/source/i18n/fpositer.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/funcrepl.cpp b/deps/icu/source/i18n/funcrepl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/funcrepl.cpp rename to deps/icu/source/i18n/funcrepl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/funcrepl.h b/deps/icu/source/i18n/funcrepl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/funcrepl.h rename to deps/icu/source/i18n/funcrepl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/gender.cpp b/deps/icu/source/i18n/gender.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/gender.cpp rename to deps/icu/source/i18n/gender.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/gregocal.cpp b/deps/icu/source/i18n/gregocal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/gregocal.cpp rename to deps/icu/source/i18n/gregocal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/gregoimp.cpp b/deps/icu/source/i18n/gregoimp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/gregoimp.cpp rename to deps/icu/source/i18n/gregoimp.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/gregoimp.h b/deps/icu/source/i18n/gregoimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/gregoimp.h rename to deps/icu/source/i18n/gregoimp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/hebrwcal.cpp b/deps/icu/source/i18n/hebrwcal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/hebrwcal.cpp rename to deps/icu/source/i18n/hebrwcal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/hebrwcal.h b/deps/icu/source/i18n/hebrwcal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/hebrwcal.h rename to deps/icu/source/i18n/hebrwcal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/i18n.rc b/deps/icu/source/i18n/i18n.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/i18n.rc rename to deps/icu/source/i18n/i18n.rc diff --git a/bootstrap/cxx/deps/icu/source/i18n/i18n.vcxproj b/deps/icu/source/i18n/i18n.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/i18n.vcxproj rename to deps/icu/source/i18n/i18n.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/i18n/i18n.vcxproj.filters b/deps/icu/source/i18n/i18n.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/i18n.vcxproj.filters rename to deps/icu/source/i18n/i18n.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/i18n/i18n_uwp.vcxproj b/deps/icu/source/i18n/i18n_uwp.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/i18n_uwp.vcxproj rename to deps/icu/source/i18n/i18n_uwp.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/i18n/indiancal.cpp b/deps/icu/source/i18n/indiancal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/indiancal.cpp rename to deps/icu/source/i18n/indiancal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/indiancal.h b/deps/icu/source/i18n/indiancal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/indiancal.h rename to deps/icu/source/i18n/indiancal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/inputext.cpp b/deps/icu/source/i18n/inputext.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/inputext.cpp rename to deps/icu/source/i18n/inputext.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/inputext.h b/deps/icu/source/i18n/inputext.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/inputext.h rename to deps/icu/source/i18n/inputext.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/islamcal.cpp b/deps/icu/source/i18n/islamcal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/islamcal.cpp rename to deps/icu/source/i18n/islamcal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/islamcal.h b/deps/icu/source/i18n/islamcal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/islamcal.h rename to deps/icu/source/i18n/islamcal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/japancal.cpp b/deps/icu/source/i18n/japancal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/japancal.cpp rename to deps/icu/source/i18n/japancal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/japancal.h b/deps/icu/source/i18n/japancal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/japancal.h rename to deps/icu/source/i18n/japancal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/listformatter.cpp b/deps/icu/source/i18n/listformatter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/listformatter.cpp rename to deps/icu/source/i18n/listformatter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/measfmt.cpp b/deps/icu/source/i18n/measfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/measfmt.cpp rename to deps/icu/source/i18n/measfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/measunit.cpp b/deps/icu/source/i18n/measunit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/measunit.cpp rename to deps/icu/source/i18n/measunit.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/measunit_extra.cpp b/deps/icu/source/i18n/measunit_extra.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/measunit_extra.cpp rename to deps/icu/source/i18n/measunit_extra.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/measunit_impl.h b/deps/icu/source/i18n/measunit_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/measunit_impl.h rename to deps/icu/source/i18n/measunit_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/measure.cpp b/deps/icu/source/i18n/measure.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/measure.cpp rename to deps/icu/source/i18n/measure.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/msgfmt.cpp b/deps/icu/source/i18n/msgfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/msgfmt.cpp rename to deps/icu/source/i18n/msgfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/msgfmt_impl.h b/deps/icu/source/i18n/msgfmt_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/msgfmt_impl.h rename to deps/icu/source/i18n/msgfmt_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/name2uni.cpp b/deps/icu/source/i18n/name2uni.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/name2uni.cpp rename to deps/icu/source/i18n/name2uni.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/name2uni.h b/deps/icu/source/i18n/name2uni.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/name2uni.h rename to deps/icu/source/i18n/name2uni.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfrlist.h b/deps/icu/source/i18n/nfrlist.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfrlist.h rename to deps/icu/source/i18n/nfrlist.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfrs.cpp b/deps/icu/source/i18n/nfrs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfrs.cpp rename to deps/icu/source/i18n/nfrs.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfrs.h b/deps/icu/source/i18n/nfrs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfrs.h rename to deps/icu/source/i18n/nfrs.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfrule.cpp b/deps/icu/source/i18n/nfrule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfrule.cpp rename to deps/icu/source/i18n/nfrule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfrule.h b/deps/icu/source/i18n/nfrule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfrule.h rename to deps/icu/source/i18n/nfrule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfsubs.cpp b/deps/icu/source/i18n/nfsubs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfsubs.cpp rename to deps/icu/source/i18n/nfsubs.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/nfsubs.h b/deps/icu/source/i18n/nfsubs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nfsubs.h rename to deps/icu/source/i18n/nfsubs.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nortrans.cpp b/deps/icu/source/i18n/nortrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nortrans.cpp rename to deps/icu/source/i18n/nortrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/nortrans.h b/deps/icu/source/i18n/nortrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nortrans.h rename to deps/icu/source/i18n/nortrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/nultrans.cpp b/deps/icu/source/i18n/nultrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nultrans.cpp rename to deps/icu/source/i18n/nultrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/nultrans.h b/deps/icu/source/i18n/nultrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/nultrans.h rename to deps/icu/source/i18n/nultrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_affixutils.cpp b/deps/icu/source/i18n/number_affixutils.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_affixutils.cpp rename to deps/icu/source/i18n/number_affixutils.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_affixutils.h b/deps/icu/source/i18n/number_affixutils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_affixutils.h rename to deps/icu/source/i18n/number_affixutils.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_asformat.cpp b/deps/icu/source/i18n/number_asformat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_asformat.cpp rename to deps/icu/source/i18n/number_asformat.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_asformat.h b/deps/icu/source/i18n/number_asformat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_asformat.h rename to deps/icu/source/i18n/number_asformat.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_capi.cpp b/deps/icu/source/i18n/number_capi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_capi.cpp rename to deps/icu/source/i18n/number_capi.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_compact.cpp b/deps/icu/source/i18n/number_compact.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_compact.cpp rename to deps/icu/source/i18n/number_compact.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_compact.h b/deps/icu/source/i18n/number_compact.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_compact.h rename to deps/icu/source/i18n/number_compact.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_currencysymbols.cpp b/deps/icu/source/i18n/number_currencysymbols.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_currencysymbols.cpp rename to deps/icu/source/i18n/number_currencysymbols.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_currencysymbols.h b/deps/icu/source/i18n/number_currencysymbols.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_currencysymbols.h rename to deps/icu/source/i18n/number_currencysymbols.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_decimalquantity.cpp b/deps/icu/source/i18n/number_decimalquantity.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_decimalquantity.cpp rename to deps/icu/source/i18n/number_decimalquantity.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_decimalquantity.h b/deps/icu/source/i18n/number_decimalquantity.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_decimalquantity.h rename to deps/icu/source/i18n/number_decimalquantity.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_decimfmtprops.cpp b/deps/icu/source/i18n/number_decimfmtprops.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_decimfmtprops.cpp rename to deps/icu/source/i18n/number_decimfmtprops.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_decimfmtprops.h b/deps/icu/source/i18n/number_decimfmtprops.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_decimfmtprops.h rename to deps/icu/source/i18n/number_decimfmtprops.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_decnum.h b/deps/icu/source/i18n/number_decnum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_decnum.h rename to deps/icu/source/i18n/number_decnum.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_fluent.cpp b/deps/icu/source/i18n/number_fluent.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_fluent.cpp rename to deps/icu/source/i18n/number_fluent.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_formatimpl.cpp b/deps/icu/source/i18n/number_formatimpl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_formatimpl.cpp rename to deps/icu/source/i18n/number_formatimpl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_formatimpl.h b/deps/icu/source/i18n/number_formatimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_formatimpl.h rename to deps/icu/source/i18n/number_formatimpl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_grouping.cpp b/deps/icu/source/i18n/number_grouping.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_grouping.cpp rename to deps/icu/source/i18n/number_grouping.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_integerwidth.cpp b/deps/icu/source/i18n/number_integerwidth.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_integerwidth.cpp rename to deps/icu/source/i18n/number_integerwidth.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_longnames.cpp b/deps/icu/source/i18n/number_longnames.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_longnames.cpp rename to deps/icu/source/i18n/number_longnames.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_longnames.h b/deps/icu/source/i18n/number_longnames.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_longnames.h rename to deps/icu/source/i18n/number_longnames.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_mapper.cpp b/deps/icu/source/i18n/number_mapper.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_mapper.cpp rename to deps/icu/source/i18n/number_mapper.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_mapper.h b/deps/icu/source/i18n/number_mapper.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_mapper.h rename to deps/icu/source/i18n/number_mapper.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_microprops.h b/deps/icu/source/i18n/number_microprops.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_microprops.h rename to deps/icu/source/i18n/number_microprops.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_modifiers.cpp b/deps/icu/source/i18n/number_modifiers.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_modifiers.cpp rename to deps/icu/source/i18n/number_modifiers.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_modifiers.h b/deps/icu/source/i18n/number_modifiers.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_modifiers.h rename to deps/icu/source/i18n/number_modifiers.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_multiplier.cpp b/deps/icu/source/i18n/number_multiplier.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_multiplier.cpp rename to deps/icu/source/i18n/number_multiplier.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_multiplier.h b/deps/icu/source/i18n/number_multiplier.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_multiplier.h rename to deps/icu/source/i18n/number_multiplier.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_notation.cpp b/deps/icu/source/i18n/number_notation.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_notation.cpp rename to deps/icu/source/i18n/number_notation.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_output.cpp b/deps/icu/source/i18n/number_output.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_output.cpp rename to deps/icu/source/i18n/number_output.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_padding.cpp b/deps/icu/source/i18n/number_padding.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_padding.cpp rename to deps/icu/source/i18n/number_padding.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_patternmodifier.cpp b/deps/icu/source/i18n/number_patternmodifier.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_patternmodifier.cpp rename to deps/icu/source/i18n/number_patternmodifier.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_patternmodifier.h b/deps/icu/source/i18n/number_patternmodifier.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_patternmodifier.h rename to deps/icu/source/i18n/number_patternmodifier.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_patternstring.cpp b/deps/icu/source/i18n/number_patternstring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_patternstring.cpp rename to deps/icu/source/i18n/number_patternstring.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_patternstring.h b/deps/icu/source/i18n/number_patternstring.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_patternstring.h rename to deps/icu/source/i18n/number_patternstring.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_rounding.cpp b/deps/icu/source/i18n/number_rounding.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_rounding.cpp rename to deps/icu/source/i18n/number_rounding.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_roundingutils.h b/deps/icu/source/i18n/number_roundingutils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_roundingutils.h rename to deps/icu/source/i18n/number_roundingutils.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_scientific.cpp b/deps/icu/source/i18n/number_scientific.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_scientific.cpp rename to deps/icu/source/i18n/number_scientific.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_scientific.h b/deps/icu/source/i18n/number_scientific.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_scientific.h rename to deps/icu/source/i18n/number_scientific.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_skeletons.cpp b/deps/icu/source/i18n/number_skeletons.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_skeletons.cpp rename to deps/icu/source/i18n/number_skeletons.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_skeletons.h b/deps/icu/source/i18n/number_skeletons.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_skeletons.h rename to deps/icu/source/i18n/number_skeletons.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_symbolswrapper.cpp b/deps/icu/source/i18n/number_symbolswrapper.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_symbolswrapper.cpp rename to deps/icu/source/i18n/number_symbolswrapper.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_types.h b/deps/icu/source/i18n/number_types.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_types.h rename to deps/icu/source/i18n/number_types.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_usageprefs.cpp b/deps/icu/source/i18n/number_usageprefs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_usageprefs.cpp rename to deps/icu/source/i18n/number_usageprefs.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_usageprefs.h b/deps/icu/source/i18n/number_usageprefs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_usageprefs.h rename to deps/icu/source/i18n/number_usageprefs.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_utils.cpp b/deps/icu/source/i18n/number_utils.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_utils.cpp rename to deps/icu/source/i18n/number_utils.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_utils.h b/deps/icu/source/i18n/number_utils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_utils.h rename to deps/icu/source/i18n/number_utils.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/number_utypes.h b/deps/icu/source/i18n/number_utypes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/number_utypes.h rename to deps/icu/source/i18n/number_utypes.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numfmt.cpp b/deps/icu/source/i18n/numfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numfmt.cpp rename to deps/icu/source/i18n/numfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_affixes.cpp b/deps/icu/source/i18n/numparse_affixes.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_affixes.cpp rename to deps/icu/source/i18n/numparse_affixes.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_affixes.h b/deps/icu/source/i18n/numparse_affixes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_affixes.h rename to deps/icu/source/i18n/numparse_affixes.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_compositions.cpp b/deps/icu/source/i18n/numparse_compositions.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_compositions.cpp rename to deps/icu/source/i18n/numparse_compositions.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_compositions.h b/deps/icu/source/i18n/numparse_compositions.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_compositions.h rename to deps/icu/source/i18n/numparse_compositions.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_currency.cpp b/deps/icu/source/i18n/numparse_currency.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_currency.cpp rename to deps/icu/source/i18n/numparse_currency.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_currency.h b/deps/icu/source/i18n/numparse_currency.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_currency.h rename to deps/icu/source/i18n/numparse_currency.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_decimal.cpp b/deps/icu/source/i18n/numparse_decimal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_decimal.cpp rename to deps/icu/source/i18n/numparse_decimal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_decimal.h b/deps/icu/source/i18n/numparse_decimal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_decimal.h rename to deps/icu/source/i18n/numparse_decimal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_impl.cpp b/deps/icu/source/i18n/numparse_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_impl.cpp rename to deps/icu/source/i18n/numparse_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_impl.h b/deps/icu/source/i18n/numparse_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_impl.h rename to deps/icu/source/i18n/numparse_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_parsednumber.cpp b/deps/icu/source/i18n/numparse_parsednumber.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_parsednumber.cpp rename to deps/icu/source/i18n/numparse_parsednumber.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_scientific.cpp b/deps/icu/source/i18n/numparse_scientific.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_scientific.cpp rename to deps/icu/source/i18n/numparse_scientific.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_scientific.h b/deps/icu/source/i18n/numparse_scientific.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_scientific.h rename to deps/icu/source/i18n/numparse_scientific.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_symbols.cpp b/deps/icu/source/i18n/numparse_symbols.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_symbols.cpp rename to deps/icu/source/i18n/numparse_symbols.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_symbols.h b/deps/icu/source/i18n/numparse_symbols.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_symbols.h rename to deps/icu/source/i18n/numparse_symbols.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_types.h b/deps/icu/source/i18n/numparse_types.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_types.h rename to deps/icu/source/i18n/numparse_types.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_utils.h b/deps/icu/source/i18n/numparse_utils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_utils.h rename to deps/icu/source/i18n/numparse_utils.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_validators.cpp b/deps/icu/source/i18n/numparse_validators.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_validators.cpp rename to deps/icu/source/i18n/numparse_validators.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numparse_validators.h b/deps/icu/source/i18n/numparse_validators.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numparse_validators.h rename to deps/icu/source/i18n/numparse_validators.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numrange_capi.cpp b/deps/icu/source/i18n/numrange_capi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numrange_capi.cpp rename to deps/icu/source/i18n/numrange_capi.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numrange_fluent.cpp b/deps/icu/source/i18n/numrange_fluent.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numrange_fluent.cpp rename to deps/icu/source/i18n/numrange_fluent.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numrange_impl.cpp b/deps/icu/source/i18n/numrange_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numrange_impl.cpp rename to deps/icu/source/i18n/numrange_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numrange_impl.h b/deps/icu/source/i18n/numrange_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numrange_impl.h rename to deps/icu/source/i18n/numrange_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/numsys.cpp b/deps/icu/source/i18n/numsys.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numsys.cpp rename to deps/icu/source/i18n/numsys.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/numsys_impl.h b/deps/icu/source/i18n/numsys_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/numsys_impl.h rename to deps/icu/source/i18n/numsys_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/olsontz.cpp b/deps/icu/source/i18n/olsontz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/olsontz.cpp rename to deps/icu/source/i18n/olsontz.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/olsontz.h b/deps/icu/source/i18n/olsontz.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/olsontz.h rename to deps/icu/source/i18n/olsontz.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/persncal.cpp b/deps/icu/source/i18n/persncal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/persncal.cpp rename to deps/icu/source/i18n/persncal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/persncal.h b/deps/icu/source/i18n/persncal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/persncal.h rename to deps/icu/source/i18n/persncal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/pluralranges.cpp b/deps/icu/source/i18n/pluralranges.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/pluralranges.cpp rename to deps/icu/source/i18n/pluralranges.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/pluralranges.h b/deps/icu/source/i18n/pluralranges.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/pluralranges.h rename to deps/icu/source/i18n/pluralranges.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/plurfmt.cpp b/deps/icu/source/i18n/plurfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/plurfmt.cpp rename to deps/icu/source/i18n/plurfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/plurrule.cpp b/deps/icu/source/i18n/plurrule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/plurrule.cpp rename to deps/icu/source/i18n/plurrule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/plurrule_impl.h b/deps/icu/source/i18n/plurrule_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/plurrule_impl.h rename to deps/icu/source/i18n/plurrule_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/quant.cpp b/deps/icu/source/i18n/quant.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/quant.cpp rename to deps/icu/source/i18n/quant.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/quant.h b/deps/icu/source/i18n/quant.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/quant.h rename to deps/icu/source/i18n/quant.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/quantityformatter.cpp b/deps/icu/source/i18n/quantityformatter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/quantityformatter.cpp rename to deps/icu/source/i18n/quantityformatter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/quantityformatter.h b/deps/icu/source/i18n/quantityformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/quantityformatter.h rename to deps/icu/source/i18n/quantityformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbnf.cpp b/deps/icu/source/i18n/rbnf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbnf.cpp rename to deps/icu/source/i18n/rbnf.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt.cpp b/deps/icu/source/i18n/rbt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt.cpp rename to deps/icu/source/i18n/rbt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt.h b/deps/icu/source/i18n/rbt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt.h rename to deps/icu/source/i18n/rbt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_data.cpp b/deps/icu/source/i18n/rbt_data.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_data.cpp rename to deps/icu/source/i18n/rbt_data.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_data.h b/deps/icu/source/i18n/rbt_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_data.h rename to deps/icu/source/i18n/rbt_data.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_pars.cpp b/deps/icu/source/i18n/rbt_pars.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_pars.cpp rename to deps/icu/source/i18n/rbt_pars.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_pars.h b/deps/icu/source/i18n/rbt_pars.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_pars.h rename to deps/icu/source/i18n/rbt_pars.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_rule.cpp b/deps/icu/source/i18n/rbt_rule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_rule.cpp rename to deps/icu/source/i18n/rbt_rule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_rule.h b/deps/icu/source/i18n/rbt_rule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_rule.h rename to deps/icu/source/i18n/rbt_rule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_set.cpp b/deps/icu/source/i18n/rbt_set.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_set.cpp rename to deps/icu/source/i18n/rbt_set.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbt_set.h b/deps/icu/source/i18n/rbt_set.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbt_set.h rename to deps/icu/source/i18n/rbt_set.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rbtz.cpp b/deps/icu/source/i18n/rbtz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rbtz.cpp rename to deps/icu/source/i18n/rbtz.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexcmp.cpp b/deps/icu/source/i18n/regexcmp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexcmp.cpp rename to deps/icu/source/i18n/regexcmp.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexcmp.h b/deps/icu/source/i18n/regexcmp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexcmp.h rename to deps/icu/source/i18n/regexcmp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexcst.h b/deps/icu/source/i18n/regexcst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexcst.h rename to deps/icu/source/i18n/regexcst.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexcst.pl b/deps/icu/source/i18n/regexcst.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexcst.pl rename to deps/icu/source/i18n/regexcst.pl diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexcst.txt b/deps/icu/source/i18n/regexcst.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexcst.txt rename to deps/icu/source/i18n/regexcst.txt diff --git a/bootstrap/cxx/deps/icu/source/i18n/regeximp.cpp b/deps/icu/source/i18n/regeximp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regeximp.cpp rename to deps/icu/source/i18n/regeximp.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/regeximp.h b/deps/icu/source/i18n/regeximp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regeximp.h rename to deps/icu/source/i18n/regeximp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexst.cpp b/deps/icu/source/i18n/regexst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexst.cpp rename to deps/icu/source/i18n/regexst.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/regexst.h b/deps/icu/source/i18n/regexst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regexst.h rename to deps/icu/source/i18n/regexst.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/regextxt.cpp b/deps/icu/source/i18n/regextxt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regextxt.cpp rename to deps/icu/source/i18n/regextxt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/regextxt.h b/deps/icu/source/i18n/regextxt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/regextxt.h rename to deps/icu/source/i18n/regextxt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/region.cpp b/deps/icu/source/i18n/region.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/region.cpp rename to deps/icu/source/i18n/region.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/region_impl.h b/deps/icu/source/i18n/region_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/region_impl.h rename to deps/icu/source/i18n/region_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/reldatefmt.cpp b/deps/icu/source/i18n/reldatefmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/reldatefmt.cpp rename to deps/icu/source/i18n/reldatefmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/reldtfmt.cpp b/deps/icu/source/i18n/reldtfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/reldtfmt.cpp rename to deps/icu/source/i18n/reldtfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/reldtfmt.h b/deps/icu/source/i18n/reldtfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/reldtfmt.h rename to deps/icu/source/i18n/reldtfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/rematch.cpp b/deps/icu/source/i18n/rematch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rematch.cpp rename to deps/icu/source/i18n/rematch.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/remtrans.cpp b/deps/icu/source/i18n/remtrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/remtrans.cpp rename to deps/icu/source/i18n/remtrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/remtrans.h b/deps/icu/source/i18n/remtrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/remtrans.h rename to deps/icu/source/i18n/remtrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/repattrn.cpp b/deps/icu/source/i18n/repattrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/repattrn.cpp rename to deps/icu/source/i18n/repattrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/rulebasedcollator.cpp b/deps/icu/source/i18n/rulebasedcollator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/rulebasedcollator.cpp rename to deps/icu/source/i18n/rulebasedcollator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/scientificnumberformatter.cpp b/deps/icu/source/i18n/scientificnumberformatter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/scientificnumberformatter.cpp rename to deps/icu/source/i18n/scientificnumberformatter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/scriptset.cpp b/deps/icu/source/i18n/scriptset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/scriptset.cpp rename to deps/icu/source/i18n/scriptset.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/scriptset.h b/deps/icu/source/i18n/scriptset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/scriptset.h rename to deps/icu/source/i18n/scriptset.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/search.cpp b/deps/icu/source/i18n/search.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/search.cpp rename to deps/icu/source/i18n/search.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/selfmt.cpp b/deps/icu/source/i18n/selfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/selfmt.cpp rename to deps/icu/source/i18n/selfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/selfmtimpl.h b/deps/icu/source/i18n/selfmtimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/selfmtimpl.h rename to deps/icu/source/i18n/selfmtimpl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/sharedbreakiterator.cpp b/deps/icu/source/i18n/sharedbreakiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sharedbreakiterator.cpp rename to deps/icu/source/i18n/sharedbreakiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/sharedbreakiterator.h b/deps/icu/source/i18n/sharedbreakiterator.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sharedbreakiterator.h rename to deps/icu/source/i18n/sharedbreakiterator.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/sharedcalendar.h b/deps/icu/source/i18n/sharedcalendar.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sharedcalendar.h rename to deps/icu/source/i18n/sharedcalendar.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/shareddateformatsymbols.h b/deps/icu/source/i18n/shareddateformatsymbols.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/shareddateformatsymbols.h rename to deps/icu/source/i18n/shareddateformatsymbols.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/sharednumberformat.h b/deps/icu/source/i18n/sharednumberformat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sharednumberformat.h rename to deps/icu/source/i18n/sharednumberformat.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/sharedpluralrules.h b/deps/icu/source/i18n/sharedpluralrules.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sharedpluralrules.h rename to deps/icu/source/i18n/sharedpluralrules.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/simpletz.cpp b/deps/icu/source/i18n/simpletz.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/simpletz.cpp rename to deps/icu/source/i18n/simpletz.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/smpdtfmt.cpp b/deps/icu/source/i18n/smpdtfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/smpdtfmt.cpp rename to deps/icu/source/i18n/smpdtfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/smpdtfst.cpp b/deps/icu/source/i18n/smpdtfst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/smpdtfst.cpp rename to deps/icu/source/i18n/smpdtfst.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/smpdtfst.h b/deps/icu/source/i18n/smpdtfst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/smpdtfst.h rename to deps/icu/source/i18n/smpdtfst.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/sortkey.cpp b/deps/icu/source/i18n/sortkey.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sortkey.cpp rename to deps/icu/source/i18n/sortkey.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/sources.txt b/deps/icu/source/i18n/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/sources.txt rename to deps/icu/source/i18n/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/i18n/standardplural.cpp b/deps/icu/source/i18n/standardplural.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/standardplural.cpp rename to deps/icu/source/i18n/standardplural.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/standardplural.h b/deps/icu/source/i18n/standardplural.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/standardplural.h rename to deps/icu/source/i18n/standardplural.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/string_segment.cpp b/deps/icu/source/i18n/string_segment.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/string_segment.cpp rename to deps/icu/source/i18n/string_segment.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/string_segment.h b/deps/icu/source/i18n/string_segment.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/string_segment.h rename to deps/icu/source/i18n/string_segment.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/strmatch.cpp b/deps/icu/source/i18n/strmatch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/strmatch.cpp rename to deps/icu/source/i18n/strmatch.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/strmatch.h b/deps/icu/source/i18n/strmatch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/strmatch.h rename to deps/icu/source/i18n/strmatch.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/strrepl.cpp b/deps/icu/source/i18n/strrepl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/strrepl.cpp rename to deps/icu/source/i18n/strrepl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/strrepl.h b/deps/icu/source/i18n/strrepl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/strrepl.h rename to deps/icu/source/i18n/strrepl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/stsearch.cpp b/deps/icu/source/i18n/stsearch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/stsearch.cpp rename to deps/icu/source/i18n/stsearch.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/taiwncal.cpp b/deps/icu/source/i18n/taiwncal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/taiwncal.cpp rename to deps/icu/source/i18n/taiwncal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/taiwncal.h b/deps/icu/source/i18n/taiwncal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/taiwncal.h rename to deps/icu/source/i18n/taiwncal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/timezone.cpp b/deps/icu/source/i18n/timezone.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/timezone.cpp rename to deps/icu/source/i18n/timezone.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/titletrn.cpp b/deps/icu/source/i18n/titletrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/titletrn.cpp rename to deps/icu/source/i18n/titletrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/titletrn.h b/deps/icu/source/i18n/titletrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/titletrn.h rename to deps/icu/source/i18n/titletrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/tmunit.cpp b/deps/icu/source/i18n/tmunit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tmunit.cpp rename to deps/icu/source/i18n/tmunit.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tmutamt.cpp b/deps/icu/source/i18n/tmutamt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tmutamt.cpp rename to deps/icu/source/i18n/tmutamt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tmutfmt.cpp b/deps/icu/source/i18n/tmutfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tmutfmt.cpp rename to deps/icu/source/i18n/tmutfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tolowtrn.cpp b/deps/icu/source/i18n/tolowtrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tolowtrn.cpp rename to deps/icu/source/i18n/tolowtrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tolowtrn.h b/deps/icu/source/i18n/tolowtrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tolowtrn.h rename to deps/icu/source/i18n/tolowtrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/toupptrn.cpp b/deps/icu/source/i18n/toupptrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/toupptrn.cpp rename to deps/icu/source/i18n/toupptrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/toupptrn.h b/deps/icu/source/i18n/toupptrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/toupptrn.h rename to deps/icu/source/i18n/toupptrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/translit.cpp b/deps/icu/source/i18n/translit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/translit.cpp rename to deps/icu/source/i18n/translit.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/transreg.cpp b/deps/icu/source/i18n/transreg.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/transreg.cpp rename to deps/icu/source/i18n/transreg.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/transreg.h b/deps/icu/source/i18n/transreg.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/transreg.h rename to deps/icu/source/i18n/transreg.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/tridpars.cpp b/deps/icu/source/i18n/tridpars.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tridpars.cpp rename to deps/icu/source/i18n/tridpars.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tridpars.h b/deps/icu/source/i18n/tridpars.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tridpars.h rename to deps/icu/source/i18n/tridpars.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/tzfmt.cpp b/deps/icu/source/i18n/tzfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tzfmt.cpp rename to deps/icu/source/i18n/tzfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tzgnames.cpp b/deps/icu/source/i18n/tzgnames.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tzgnames.cpp rename to deps/icu/source/i18n/tzgnames.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tzgnames.h b/deps/icu/source/i18n/tzgnames.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tzgnames.h rename to deps/icu/source/i18n/tzgnames.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/tznames.cpp b/deps/icu/source/i18n/tznames.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tznames.cpp rename to deps/icu/source/i18n/tznames.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tznames_impl.cpp b/deps/icu/source/i18n/tznames_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tznames_impl.cpp rename to deps/icu/source/i18n/tznames_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tznames_impl.h b/deps/icu/source/i18n/tznames_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tznames_impl.h rename to deps/icu/source/i18n/tznames_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/tzrule.cpp b/deps/icu/source/i18n/tzrule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tzrule.cpp rename to deps/icu/source/i18n/tzrule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/tztrans.cpp b/deps/icu/source/i18n/tztrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/tztrans.cpp rename to deps/icu/source/i18n/tztrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucal.cpp b/deps/icu/source/i18n/ucal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucal.cpp rename to deps/icu/source/i18n/ucal.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucln_in.cpp b/deps/icu/source/i18n/ucln_in.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucln_in.cpp rename to deps/icu/source/i18n/ucln_in.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucln_in.h b/deps/icu/source/i18n/ucln_in.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucln_in.h rename to deps/icu/source/i18n/ucln_in.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucol.cpp b/deps/icu/source/i18n/ucol.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucol.cpp rename to deps/icu/source/i18n/ucol.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucol_imp.h b/deps/icu/source/i18n/ucol_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucol_imp.h rename to deps/icu/source/i18n/ucol_imp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucol_res.cpp b/deps/icu/source/i18n/ucol_res.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucol_res.cpp rename to deps/icu/source/i18n/ucol_res.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucol_sit.cpp b/deps/icu/source/i18n/ucol_sit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucol_sit.cpp rename to deps/icu/source/i18n/ucol_sit.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucoleitr.cpp b/deps/icu/source/i18n/ucoleitr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucoleitr.cpp rename to deps/icu/source/i18n/ucoleitr.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ucsdet.cpp b/deps/icu/source/i18n/ucsdet.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ucsdet.cpp rename to deps/icu/source/i18n/ucsdet.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/udat.cpp b/deps/icu/source/i18n/udat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/udat.cpp rename to deps/icu/source/i18n/udat.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/udateintervalformat.cpp b/deps/icu/source/i18n/udateintervalformat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/udateintervalformat.cpp rename to deps/icu/source/i18n/udateintervalformat.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/udatpg.cpp b/deps/icu/source/i18n/udatpg.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/udatpg.cpp rename to deps/icu/source/i18n/udatpg.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ufieldpositer.cpp b/deps/icu/source/i18n/ufieldpositer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ufieldpositer.cpp rename to deps/icu/source/i18n/ufieldpositer.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uitercollationiterator.cpp b/deps/icu/source/i18n/uitercollationiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uitercollationiterator.cpp rename to deps/icu/source/i18n/uitercollationiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uitercollationiterator.h b/deps/icu/source/i18n/uitercollationiterator.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uitercollationiterator.h rename to deps/icu/source/i18n/uitercollationiterator.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/ulistformatter.cpp b/deps/icu/source/i18n/ulistformatter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ulistformatter.cpp rename to deps/icu/source/i18n/ulistformatter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ulocdata.cpp b/deps/icu/source/i18n/ulocdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ulocdata.cpp rename to deps/icu/source/i18n/ulocdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/umsg.cpp b/deps/icu/source/i18n/umsg.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/umsg.cpp rename to deps/icu/source/i18n/umsg.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/umsg_imp.h b/deps/icu/source/i18n/umsg_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/umsg_imp.h rename to deps/icu/source/i18n/umsg_imp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unesctrn.cpp b/deps/icu/source/i18n/unesctrn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unesctrn.cpp rename to deps/icu/source/i18n/unesctrn.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/unesctrn.h b/deps/icu/source/i18n/unesctrn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unesctrn.h rename to deps/icu/source/i18n/unesctrn.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/uni2name.cpp b/deps/icu/source/i18n/uni2name.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uni2name.cpp rename to deps/icu/source/i18n/uni2name.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uni2name.h b/deps/icu/source/i18n/uni2name.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uni2name.h rename to deps/icu/source/i18n/uni2name.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/alphaindex.h b/deps/icu/source/i18n/unicode/alphaindex.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/alphaindex.h rename to deps/icu/source/i18n/unicode/alphaindex.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/basictz.h b/deps/icu/source/i18n/unicode/basictz.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/basictz.h rename to deps/icu/source/i18n/unicode/basictz.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/calendar.h b/deps/icu/source/i18n/unicode/calendar.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/calendar.h rename to deps/icu/source/i18n/unicode/calendar.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/choicfmt.h b/deps/icu/source/i18n/unicode/choicfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/choicfmt.h rename to deps/icu/source/i18n/unicode/choicfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/coleitr.h b/deps/icu/source/i18n/unicode/coleitr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/coleitr.h rename to deps/icu/source/i18n/unicode/coleitr.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/coll.h b/deps/icu/source/i18n/unicode/coll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/coll.h rename to deps/icu/source/i18n/unicode/coll.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/compactdecimalformat.h b/deps/icu/source/i18n/unicode/compactdecimalformat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/compactdecimalformat.h rename to deps/icu/source/i18n/unicode/compactdecimalformat.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/curramt.h b/deps/icu/source/i18n/unicode/curramt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/curramt.h rename to deps/icu/source/i18n/unicode/curramt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/currpinf.h b/deps/icu/source/i18n/unicode/currpinf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/currpinf.h rename to deps/icu/source/i18n/unicode/currpinf.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/currunit.h b/deps/icu/source/i18n/unicode/currunit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/currunit.h rename to deps/icu/source/i18n/unicode/currunit.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/datefmt.h b/deps/icu/source/i18n/unicode/datefmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/datefmt.h rename to deps/icu/source/i18n/unicode/datefmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dcfmtsym.h b/deps/icu/source/i18n/unicode/dcfmtsym.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dcfmtsym.h rename to deps/icu/source/i18n/unicode/dcfmtsym.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/decimfmt.h b/deps/icu/source/i18n/unicode/decimfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/decimfmt.h rename to deps/icu/source/i18n/unicode/decimfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dtfmtsym.h b/deps/icu/source/i18n/unicode/dtfmtsym.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dtfmtsym.h rename to deps/icu/source/i18n/unicode/dtfmtsym.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dtitvfmt.h b/deps/icu/source/i18n/unicode/dtitvfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dtitvfmt.h rename to deps/icu/source/i18n/unicode/dtitvfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dtitvinf.h b/deps/icu/source/i18n/unicode/dtitvinf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dtitvinf.h rename to deps/icu/source/i18n/unicode/dtitvinf.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dtptngen.h b/deps/icu/source/i18n/unicode/dtptngen.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dtptngen.h rename to deps/icu/source/i18n/unicode/dtptngen.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/dtrule.h b/deps/icu/source/i18n/unicode/dtrule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/dtrule.h rename to deps/icu/source/i18n/unicode/dtrule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/fieldpos.h b/deps/icu/source/i18n/unicode/fieldpos.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/fieldpos.h rename to deps/icu/source/i18n/unicode/fieldpos.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/fmtable.h b/deps/icu/source/i18n/unicode/fmtable.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/fmtable.h rename to deps/icu/source/i18n/unicode/fmtable.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/format.h b/deps/icu/source/i18n/unicode/format.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/format.h rename to deps/icu/source/i18n/unicode/format.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/formattedvalue.h b/deps/icu/source/i18n/unicode/formattedvalue.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/formattedvalue.h rename to deps/icu/source/i18n/unicode/formattedvalue.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/fpositer.h b/deps/icu/source/i18n/unicode/fpositer.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/fpositer.h rename to deps/icu/source/i18n/unicode/fpositer.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/gender.h b/deps/icu/source/i18n/unicode/gender.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/gender.h rename to deps/icu/source/i18n/unicode/gender.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/gregocal.h b/deps/icu/source/i18n/unicode/gregocal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/gregocal.h rename to deps/icu/source/i18n/unicode/gregocal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/listformatter.h b/deps/icu/source/i18n/unicode/listformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/listformatter.h rename to deps/icu/source/i18n/unicode/listformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/measfmt.h b/deps/icu/source/i18n/unicode/measfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/measfmt.h rename to deps/icu/source/i18n/unicode/measfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/measunit.h b/deps/icu/source/i18n/unicode/measunit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/measunit.h rename to deps/icu/source/i18n/unicode/measunit.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/measure.h b/deps/icu/source/i18n/unicode/measure.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/measure.h rename to deps/icu/source/i18n/unicode/measure.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/msgfmt.h b/deps/icu/source/i18n/unicode/msgfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/msgfmt.h rename to deps/icu/source/i18n/unicode/msgfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/nounit.h b/deps/icu/source/i18n/unicode/nounit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/nounit.h rename to deps/icu/source/i18n/unicode/nounit.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/numberformatter.h b/deps/icu/source/i18n/unicode/numberformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/numberformatter.h rename to deps/icu/source/i18n/unicode/numberformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/numberrangeformatter.h b/deps/icu/source/i18n/unicode/numberrangeformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/numberrangeformatter.h rename to deps/icu/source/i18n/unicode/numberrangeformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/numfmt.h b/deps/icu/source/i18n/unicode/numfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/numfmt.h rename to deps/icu/source/i18n/unicode/numfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/numsys.h b/deps/icu/source/i18n/unicode/numsys.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/numsys.h rename to deps/icu/source/i18n/unicode/numsys.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/plurfmt.h b/deps/icu/source/i18n/unicode/plurfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/plurfmt.h rename to deps/icu/source/i18n/unicode/plurfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/plurrule.h b/deps/icu/source/i18n/unicode/plurrule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/plurrule.h rename to deps/icu/source/i18n/unicode/plurrule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/rbnf.h b/deps/icu/source/i18n/unicode/rbnf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/rbnf.h rename to deps/icu/source/i18n/unicode/rbnf.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/rbtz.h b/deps/icu/source/i18n/unicode/rbtz.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/rbtz.h rename to deps/icu/source/i18n/unicode/rbtz.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/regex.h b/deps/icu/source/i18n/unicode/regex.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/regex.h rename to deps/icu/source/i18n/unicode/regex.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/region.h b/deps/icu/source/i18n/unicode/region.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/region.h rename to deps/icu/source/i18n/unicode/region.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/reldatefmt.h b/deps/icu/source/i18n/unicode/reldatefmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/reldatefmt.h rename to deps/icu/source/i18n/unicode/reldatefmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/scientificnumberformatter.h b/deps/icu/source/i18n/unicode/scientificnumberformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/scientificnumberformatter.h rename to deps/icu/source/i18n/unicode/scientificnumberformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/search.h b/deps/icu/source/i18n/unicode/search.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/search.h rename to deps/icu/source/i18n/unicode/search.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/selfmt.h b/deps/icu/source/i18n/unicode/selfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/selfmt.h rename to deps/icu/source/i18n/unicode/selfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/simpletz.h b/deps/icu/source/i18n/unicode/simpletz.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/simpletz.h rename to deps/icu/source/i18n/unicode/simpletz.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/smpdtfmt.h b/deps/icu/source/i18n/unicode/smpdtfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/smpdtfmt.h rename to deps/icu/source/i18n/unicode/smpdtfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/sortkey.h b/deps/icu/source/i18n/unicode/sortkey.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/sortkey.h rename to deps/icu/source/i18n/unicode/sortkey.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/stsearch.h b/deps/icu/source/i18n/unicode/stsearch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/stsearch.h rename to deps/icu/source/i18n/unicode/stsearch.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tblcoll.h b/deps/icu/source/i18n/unicode/tblcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tblcoll.h rename to deps/icu/source/i18n/unicode/tblcoll.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/timezone.h b/deps/icu/source/i18n/unicode/timezone.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/timezone.h rename to deps/icu/source/i18n/unicode/timezone.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tmunit.h b/deps/icu/source/i18n/unicode/tmunit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tmunit.h rename to deps/icu/source/i18n/unicode/tmunit.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tmutamt.h b/deps/icu/source/i18n/unicode/tmutamt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tmutamt.h rename to deps/icu/source/i18n/unicode/tmutamt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tmutfmt.h b/deps/icu/source/i18n/unicode/tmutfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tmutfmt.h rename to deps/icu/source/i18n/unicode/tmutfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/translit.h b/deps/icu/source/i18n/unicode/translit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/translit.h rename to deps/icu/source/i18n/unicode/translit.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tzfmt.h b/deps/icu/source/i18n/unicode/tzfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tzfmt.h rename to deps/icu/source/i18n/unicode/tzfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tznames.h b/deps/icu/source/i18n/unicode/tznames.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tznames.h rename to deps/icu/source/i18n/unicode/tznames.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tzrule.h b/deps/icu/source/i18n/unicode/tzrule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tzrule.h rename to deps/icu/source/i18n/unicode/tzrule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/tztrans.h b/deps/icu/source/i18n/unicode/tztrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/tztrans.h rename to deps/icu/source/i18n/unicode/tztrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ucal.h b/deps/icu/source/i18n/unicode/ucal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ucal.h rename to deps/icu/source/i18n/unicode/ucal.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ucol.h b/deps/icu/source/i18n/unicode/ucol.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ucol.h rename to deps/icu/source/i18n/unicode/ucol.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ucoleitr.h b/deps/icu/source/i18n/unicode/ucoleitr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ucoleitr.h rename to deps/icu/source/i18n/unicode/ucoleitr.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ucsdet.h b/deps/icu/source/i18n/unicode/ucsdet.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ucsdet.h rename to deps/icu/source/i18n/unicode/ucsdet.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/udat.h b/deps/icu/source/i18n/unicode/udat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/udat.h rename to deps/icu/source/i18n/unicode/udat.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/udateintervalformat.h b/deps/icu/source/i18n/unicode/udateintervalformat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/udateintervalformat.h rename to deps/icu/source/i18n/unicode/udateintervalformat.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/udatpg.h b/deps/icu/source/i18n/unicode/udatpg.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/udatpg.h rename to deps/icu/source/i18n/unicode/udatpg.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ufieldpositer.h b/deps/icu/source/i18n/unicode/ufieldpositer.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ufieldpositer.h rename to deps/icu/source/i18n/unicode/ufieldpositer.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/uformattable.h b/deps/icu/source/i18n/unicode/uformattable.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/uformattable.h rename to deps/icu/source/i18n/unicode/uformattable.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/uformattedvalue.h b/deps/icu/source/i18n/unicode/uformattedvalue.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/uformattedvalue.h rename to deps/icu/source/i18n/unicode/uformattedvalue.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ugender.h b/deps/icu/source/i18n/unicode/ugender.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ugender.h rename to deps/icu/source/i18n/unicode/ugender.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ulistformatter.h b/deps/icu/source/i18n/unicode/ulistformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ulistformatter.h rename to deps/icu/source/i18n/unicode/ulistformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ulocdata.h b/deps/icu/source/i18n/unicode/ulocdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ulocdata.h rename to deps/icu/source/i18n/unicode/ulocdata.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/umsg.h b/deps/icu/source/i18n/unicode/umsg.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/umsg.h rename to deps/icu/source/i18n/unicode/umsg.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unirepl.h b/deps/icu/source/i18n/unicode/unirepl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unirepl.h rename to deps/icu/source/i18n/unicode/unirepl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unounclass.h b/deps/icu/source/i18n/unicode/unounclass.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unounclass.h rename to deps/icu/source/i18n/unicode/unounclass.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unum.h b/deps/icu/source/i18n/unicode/unum.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unum.h rename to deps/icu/source/i18n/unicode/unum.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unumberformatter.h b/deps/icu/source/i18n/unicode/unumberformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unumberformatter.h rename to deps/icu/source/i18n/unicode/unumberformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unumberrangeformatter.h b/deps/icu/source/i18n/unicode/unumberrangeformatter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unumberrangeformatter.h rename to deps/icu/source/i18n/unicode/unumberrangeformatter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/unumsys.h b/deps/icu/source/i18n/unicode/unumsys.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/unumsys.h rename to deps/icu/source/i18n/unicode/unumsys.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/upluralrules.h b/deps/icu/source/i18n/unicode/upluralrules.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/upluralrules.h rename to deps/icu/source/i18n/unicode/upluralrules.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/uregex.h b/deps/icu/source/i18n/unicode/uregex.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/uregex.h rename to deps/icu/source/i18n/unicode/uregex.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/uregion.h b/deps/icu/source/i18n/unicode/uregion.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/uregion.h rename to deps/icu/source/i18n/unicode/uregion.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/ureldatefmt.h b/deps/icu/source/i18n/unicode/ureldatefmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/ureldatefmt.h rename to deps/icu/source/i18n/unicode/ureldatefmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/usearch.h b/deps/icu/source/i18n/unicode/usearch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/usearch.h rename to deps/icu/source/i18n/unicode/usearch.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/uspoof.h b/deps/icu/source/i18n/unicode/uspoof.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/uspoof.h rename to deps/icu/source/i18n/unicode/uspoof.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/utmscale.h b/deps/icu/source/i18n/unicode/utmscale.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/utmscale.h rename to deps/icu/source/i18n/unicode/utmscale.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/utrans.h b/deps/icu/source/i18n/unicode/utrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/utrans.h rename to deps/icu/source/i18n/unicode/utrans.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unicode/vtzone.h b/deps/icu/source/i18n/unicode/vtzone.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unicode/vtzone.h rename to deps/icu/source/i18n/unicode/vtzone.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_complexconverter.cpp b/deps/icu/source/i18n/units_complexconverter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_complexconverter.cpp rename to deps/icu/source/i18n/units_complexconverter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_complexconverter.h b/deps/icu/source/i18n/units_complexconverter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_complexconverter.h rename to deps/icu/source/i18n/units_complexconverter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_converter.cpp b/deps/icu/source/i18n/units_converter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_converter.cpp rename to deps/icu/source/i18n/units_converter.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_converter.h b/deps/icu/source/i18n/units_converter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_converter.h rename to deps/icu/source/i18n/units_converter.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_data.cpp b/deps/icu/source/i18n/units_data.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_data.cpp rename to deps/icu/source/i18n/units_data.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_data.h b/deps/icu/source/i18n/units_data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_data.h rename to deps/icu/source/i18n/units_data.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_router.cpp b/deps/icu/source/i18n/units_router.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_router.cpp rename to deps/icu/source/i18n/units_router.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/units_router.h b/deps/icu/source/i18n/units_router.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/units_router.h rename to deps/icu/source/i18n/units_router.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/unum.cpp b/deps/icu/source/i18n/unum.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unum.cpp rename to deps/icu/source/i18n/unum.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/unumsys.cpp b/deps/icu/source/i18n/unumsys.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/unumsys.cpp rename to deps/icu/source/i18n/unumsys.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/upluralrules.cpp b/deps/icu/source/i18n/upluralrules.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/upluralrules.cpp rename to deps/icu/source/i18n/upluralrules.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uregex.cpp b/deps/icu/source/i18n/uregex.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uregex.cpp rename to deps/icu/source/i18n/uregex.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uregexc.cpp b/deps/icu/source/i18n/uregexc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uregexc.cpp rename to deps/icu/source/i18n/uregexc.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uregion.cpp b/deps/icu/source/i18n/uregion.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uregion.cpp rename to deps/icu/source/i18n/uregion.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/usearch.cpp b/deps/icu/source/i18n/usearch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/usearch.cpp rename to deps/icu/source/i18n/usearch.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof.cpp b/deps/icu/source/i18n/uspoof.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof.cpp rename to deps/icu/source/i18n/uspoof.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof_build.cpp b/deps/icu/source/i18n/uspoof_build.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof_build.cpp rename to deps/icu/source/i18n/uspoof_build.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof_conf.cpp b/deps/icu/source/i18n/uspoof_conf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof_conf.cpp rename to deps/icu/source/i18n/uspoof_conf.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof_conf.h b/deps/icu/source/i18n/uspoof_conf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof_conf.h rename to deps/icu/source/i18n/uspoof_conf.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof_impl.cpp b/deps/icu/source/i18n/uspoof_impl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof_impl.cpp rename to deps/icu/source/i18n/uspoof_impl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/uspoof_impl.h b/deps/icu/source/i18n/uspoof_impl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/uspoof_impl.h rename to deps/icu/source/i18n/uspoof_impl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/usrchimp.h b/deps/icu/source/i18n/usrchimp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/usrchimp.h rename to deps/icu/source/i18n/usrchimp.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/utf16collationiterator.cpp b/deps/icu/source/i18n/utf16collationiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utf16collationiterator.cpp rename to deps/icu/source/i18n/utf16collationiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/utf16collationiterator.h b/deps/icu/source/i18n/utf16collationiterator.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utf16collationiterator.h rename to deps/icu/source/i18n/utf16collationiterator.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/utf8collationiterator.cpp b/deps/icu/source/i18n/utf8collationiterator.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utf8collationiterator.cpp rename to deps/icu/source/i18n/utf8collationiterator.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/utf8collationiterator.h b/deps/icu/source/i18n/utf8collationiterator.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utf8collationiterator.h rename to deps/icu/source/i18n/utf8collationiterator.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/utmscale.cpp b/deps/icu/source/i18n/utmscale.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utmscale.cpp rename to deps/icu/source/i18n/utmscale.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/utrans.cpp b/deps/icu/source/i18n/utrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/utrans.cpp rename to deps/icu/source/i18n/utrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/vtzone.cpp b/deps/icu/source/i18n/vtzone.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/vtzone.cpp rename to deps/icu/source/i18n/vtzone.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/vzone.cpp b/deps/icu/source/i18n/vzone.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/vzone.cpp rename to deps/icu/source/i18n/vzone.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/vzone.h b/deps/icu/source/i18n/vzone.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/vzone.h rename to deps/icu/source/i18n/vzone.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/windtfmt.cpp b/deps/icu/source/i18n/windtfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/windtfmt.cpp rename to deps/icu/source/i18n/windtfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/windtfmt.h b/deps/icu/source/i18n/windtfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/windtfmt.h rename to deps/icu/source/i18n/windtfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/winnmfmt.cpp b/deps/icu/source/i18n/winnmfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/winnmfmt.cpp rename to deps/icu/source/i18n/winnmfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/winnmfmt.h b/deps/icu/source/i18n/winnmfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/winnmfmt.h rename to deps/icu/source/i18n/winnmfmt.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/wintzimpl.cpp b/deps/icu/source/i18n/wintzimpl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/wintzimpl.cpp rename to deps/icu/source/i18n/wintzimpl.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/wintzimpl.h b/deps/icu/source/i18n/wintzimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/wintzimpl.h rename to deps/icu/source/i18n/wintzimpl.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/zonemeta.cpp b/deps/icu/source/i18n/zonemeta.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/zonemeta.cpp rename to deps/icu/source/i18n/zonemeta.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/zonemeta.h b/deps/icu/source/i18n/zonemeta.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/zonemeta.h rename to deps/icu/source/i18n/zonemeta.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/zrule.cpp b/deps/icu/source/i18n/zrule.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/zrule.cpp rename to deps/icu/source/i18n/zrule.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/zrule.h b/deps/icu/source/i18n/zrule.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/zrule.h rename to deps/icu/source/i18n/zrule.h diff --git a/bootstrap/cxx/deps/icu/source/i18n/ztrans.cpp b/deps/icu/source/i18n/ztrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ztrans.cpp rename to deps/icu/source/i18n/ztrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/i18n/ztrans.h b/deps/icu/source/i18n/ztrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/i18n/ztrans.h rename to deps/icu/source/i18n/ztrans.h diff --git a/bootstrap/cxx/deps/icu/source/icudefs.mk.in b/deps/icu/source/icudefs.mk.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/icudefs.mk.in rename to deps/icu/source/icudefs.mk.in diff --git a/bootstrap/cxx/deps/icu/source/install-sh b/deps/icu/source/install-sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/install-sh rename to deps/icu/source/install-sh diff --git a/bootstrap/cxx/deps/icu/source/io/Makefile.in b/deps/icu/source/io/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/Makefile.in rename to deps/icu/source/io/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/io/io.rc b/deps/icu/source/io/io.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/io.rc rename to deps/icu/source/io/io.rc diff --git a/bootstrap/cxx/deps/icu/source/io/io.vcxproj b/deps/icu/source/io/io.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/io.vcxproj rename to deps/icu/source/io/io.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/io/io.vcxproj.filters b/deps/icu/source/io/io.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/io.vcxproj.filters rename to deps/icu/source/io/io.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/io/locbund.cpp b/deps/icu/source/io/locbund.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/locbund.cpp rename to deps/icu/source/io/locbund.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/locbund.h b/deps/icu/source/io/locbund.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/locbund.h rename to deps/icu/source/io/locbund.h diff --git a/bootstrap/cxx/deps/icu/source/io/sources.txt b/deps/icu/source/io/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/sources.txt rename to deps/icu/source/io/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/io/sprintf.cpp b/deps/icu/source/io/sprintf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/sprintf.cpp rename to deps/icu/source/io/sprintf.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/sscanf.cpp b/deps/icu/source/io/sscanf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/sscanf.cpp rename to deps/icu/source/io/sscanf.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ucln_io.cpp b/deps/icu/source/io/ucln_io.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ucln_io.cpp rename to deps/icu/source/io/ucln_io.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ucln_io.h b/deps/icu/source/io/ucln_io.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ucln_io.h rename to deps/icu/source/io/ucln_io.h diff --git a/bootstrap/cxx/deps/icu/source/io/ufile.cpp b/deps/icu/source/io/ufile.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ufile.cpp rename to deps/icu/source/io/ufile.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ufile.h b/deps/icu/source/io/ufile.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ufile.h rename to deps/icu/source/io/ufile.h diff --git a/bootstrap/cxx/deps/icu/source/io/ufmt_cmn.cpp b/deps/icu/source/io/ufmt_cmn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ufmt_cmn.cpp rename to deps/icu/source/io/ufmt_cmn.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ufmt_cmn.h b/deps/icu/source/io/ufmt_cmn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ufmt_cmn.h rename to deps/icu/source/io/ufmt_cmn.h diff --git a/bootstrap/cxx/deps/icu/source/io/unicode/ustdio.h b/deps/icu/source/io/unicode/ustdio.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/unicode/ustdio.h rename to deps/icu/source/io/unicode/ustdio.h diff --git a/bootstrap/cxx/deps/icu/source/io/unicode/ustream.h b/deps/icu/source/io/unicode/ustream.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/unicode/ustream.h rename to deps/icu/source/io/unicode/ustream.h diff --git a/bootstrap/cxx/deps/icu/source/io/uprintf.cpp b/deps/icu/source/io/uprintf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uprintf.cpp rename to deps/icu/source/io/uprintf.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/uprintf.h b/deps/icu/source/io/uprintf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uprintf.h rename to deps/icu/source/io/uprintf.h diff --git a/bootstrap/cxx/deps/icu/source/io/uprntf_p.cpp b/deps/icu/source/io/uprntf_p.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uprntf_p.cpp rename to deps/icu/source/io/uprntf_p.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/uscanf.cpp b/deps/icu/source/io/uscanf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uscanf.cpp rename to deps/icu/source/io/uscanf.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/uscanf.h b/deps/icu/source/io/uscanf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uscanf.h rename to deps/icu/source/io/uscanf.h diff --git a/bootstrap/cxx/deps/icu/source/io/uscanf_p.cpp b/deps/icu/source/io/uscanf_p.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/uscanf_p.cpp rename to deps/icu/source/io/uscanf_p.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ustdio.cpp b/deps/icu/source/io/ustdio.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ustdio.cpp rename to deps/icu/source/io/ustdio.cpp diff --git a/bootstrap/cxx/deps/icu/source/io/ustream.cpp b/deps/icu/source/io/ustream.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/io/ustream.cpp rename to deps/icu/source/io/ustream.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/LXUtilities.cpp b/deps/icu/source/layoutex/LXUtilities.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/LXUtilities.cpp rename to deps/icu/source/layoutex/LXUtilities.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/LXUtilities.h b/deps/icu/source/layoutex/LXUtilities.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/LXUtilities.h rename to deps/icu/source/layoutex/LXUtilities.h diff --git a/bootstrap/cxx/deps/icu/source/layoutex/Makefile.in b/deps/icu/source/layoutex/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/Makefile.in rename to deps/icu/source/layoutex/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/layoutex/ParagraphLayout.cpp b/deps/icu/source/layoutex/ParagraphLayout.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/ParagraphLayout.cpp rename to deps/icu/source/layoutex/ParagraphLayout.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/RunArrays.cpp b/deps/icu/source/layoutex/RunArrays.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/RunArrays.cpp rename to deps/icu/source/layoutex/RunArrays.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layout/ParagraphLayout.h b/deps/icu/source/layoutex/layout/ParagraphLayout.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layout/ParagraphLayout.h rename to deps/icu/source/layoutex/layout/ParagraphLayout.h diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layout/RunArrays.h b/deps/icu/source/layoutex/layout/RunArrays.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layout/RunArrays.h rename to deps/icu/source/layoutex/layout/RunArrays.h diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layout/playout.h b/deps/icu/source/layoutex/layout/playout.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layout/playout.h rename to deps/icu/source/layoutex/layout/playout.h diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layout/plruns.h b/deps/icu/source/layoutex/layout/plruns.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layout/plruns.h rename to deps/icu/source/layoutex/layout/plruns.h diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layoutex.rc b/deps/icu/source/layoutex/layoutex.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layoutex.rc rename to deps/icu/source/layoutex/layoutex.rc diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layoutex.vcxproj b/deps/icu/source/layoutex/layoutex.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layoutex.vcxproj rename to deps/icu/source/layoutex/layoutex.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/layoutex/layoutex.vcxproj.filters b/deps/icu/source/layoutex/layoutex.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/layoutex.vcxproj.filters rename to deps/icu/source/layoutex/layoutex.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/layoutex/playout.cpp b/deps/icu/source/layoutex/playout.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/playout.cpp rename to deps/icu/source/layoutex/playout.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/plruns.cpp b/deps/icu/source/layoutex/plruns.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/plruns.cpp rename to deps/icu/source/layoutex/plruns.cpp diff --git a/bootstrap/cxx/deps/icu/source/layoutex/sources.txt b/deps/icu/source/layoutex/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/layoutex/sources.txt rename to deps/icu/source/layoutex/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/mkinstalldirs b/deps/icu/source/mkinstalldirs similarity index 100% rename from bootstrap/cxx/deps/icu/source/mkinstalldirs rename to deps/icu/source/mkinstalldirs diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/__init__.py b/deps/icu/source/python/icutools/__init__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/__init__.py rename to deps/icu/source/python/icutools/__init__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/__init__.py b/deps/icu/source/python/icutools/databuilder/__init__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/__init__.py rename to deps/icu/source/python/icutools/databuilder/__init__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/__main__.py b/deps/icu/source/python/icutools/databuilder/__main__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/__main__.py rename to deps/icu/source/python/icutools/databuilder/__main__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/comment_stripper.py b/deps/icu/source/python/icutools/databuilder/comment_stripper.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/comment_stripper.py rename to deps/icu/source/python/icutools/databuilder/comment_stripper.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/filtration.py b/deps/icu/source/python/icutools/databuilder/filtration.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/filtration.py rename to deps/icu/source/python/icutools/databuilder/filtration.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/filtration_schema.json b/deps/icu/source/python/icutools/databuilder/filtration_schema.json similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/filtration_schema.json rename to deps/icu/source/python/icutools/databuilder/filtration_schema.json diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/__init__.py b/deps/icu/source/python/icutools/databuilder/renderers/__init__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/__init__.py rename to deps/icu/source/python/icutools/databuilder/renderers/__init__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/common_exec.py b/deps/icu/source/python/icutools/databuilder/renderers/common_exec.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/common_exec.py rename to deps/icu/source/python/icutools/databuilder/renderers/common_exec.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/makefile.py b/deps/icu/source/python/icutools/databuilder/renderers/makefile.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/renderers/makefile.py rename to deps/icu/source/python/icutools/databuilder/renderers/makefile.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/request_types.py b/deps/icu/source/python/icutools/databuilder/request_types.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/request_types.py rename to deps/icu/source/python/icutools/databuilder/request_types.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/__init__.py b/deps/icu/source/python/icutools/databuilder/test/__init__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/__init__.py rename to deps/icu/source/python/icutools/databuilder/test/__init__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/__main__.py b/deps/icu/source/python/icutools/databuilder/test/__main__.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/__main__.py rename to deps/icu/source/python/icutools/databuilder/test/__main__.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/filtration_test.py b/deps/icu/source/python/icutools/databuilder/test/filtration_test.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/filtration_test.py rename to deps/icu/source/python/icutools/databuilder/test/filtration_test.py diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json b/deps/icu/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json rename to deps/icu/source/python/icutools/databuilder/test/sample_data/brkitr/LOCALE_DEPS.json diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json b/deps/icu/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json rename to deps/icu/source/python/icutools/databuilder/test/sample_data/locales/LOCALE_DEPS.json diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json b/deps/icu/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json rename to deps/icu/source/python/icutools/databuilder/test/sample_data/rbnf/LOCALE_DEPS.json diff --git a/bootstrap/cxx/deps/icu/source/python/icutools/databuilder/utils.py b/deps/icu/source/python/icutools/databuilder/utils.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/python/icutools/databuilder/utils.py rename to deps/icu/source/python/icutools/databuilder/utils.py diff --git a/bootstrap/cxx/deps/icu/source/runConfigureICU b/deps/icu/source/runConfigureICU similarity index 100% rename from bootstrap/cxx/deps/icu/source/runConfigureICU rename to deps/icu/source/runConfigureICU diff --git a/bootstrap/cxx/deps/icu/source/samples/Makefile.in b/deps/icu/source/samples/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/Makefile.in rename to deps/icu/source/samples/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/samples/all/all.sln b/deps/icu/source/samples/all/all.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/all/all.sln rename to deps/icu/source/samples/all/all.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/all/samplecheck.bat b/deps/icu/source/samples/all/samplecheck.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/all/samplecheck.bat rename to deps/icu/source/samples/all/samplecheck.bat diff --git a/bootstrap/cxx/deps/icu/source/samples/break/break.cpp b/deps/icu/source/samples/break/break.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/break.cpp rename to deps/icu/source/samples/break/break.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/break/break.sln b/deps/icu/source/samples/break/break.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/break.sln rename to deps/icu/source/samples/break/break.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/break/break.vcxproj b/deps/icu/source/samples/break/break.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/break.vcxproj rename to deps/icu/source/samples/break/break.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/break/break.vcxproj.filters b/deps/icu/source/samples/break/break.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/break.vcxproj.filters rename to deps/icu/source/samples/break/break.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/break/readme.txt b/deps/icu/source/samples/break/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/readme.txt rename to deps/icu/source/samples/break/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/break/ubreak.c b/deps/icu/source/samples/break/ubreak.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/break/ubreak.c rename to deps/icu/source/samples/break/ubreak.c diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/Makefile.in b/deps/icu/source/samples/cal/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/Makefile.in rename to deps/icu/source/samples/cal/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/cal.c b/deps/icu/source/samples/cal/cal.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/cal.c rename to deps/icu/source/samples/cal/cal.c diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/cal.sln b/deps/icu/source/samples/cal/cal.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/cal.sln rename to deps/icu/source/samples/cal/cal.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/cal.vcxproj b/deps/icu/source/samples/cal/cal.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/cal.vcxproj rename to deps/icu/source/samples/cal/cal.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/cal.vcxproj.filters b/deps/icu/source/samples/cal/cal.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/cal.vcxproj.filters rename to deps/icu/source/samples/cal/cal.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/readme.txt b/deps/icu/source/samples/cal/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/readme.txt rename to deps/icu/source/samples/cal/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/uprint.c b/deps/icu/source/samples/cal/uprint.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/uprint.c rename to deps/icu/source/samples/cal/uprint.c diff --git a/bootstrap/cxx/deps/icu/source/samples/cal/uprint.h b/deps/icu/source/samples/cal/uprint.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/cal/uprint.h rename to deps/icu/source/samples/cal/uprint.h diff --git a/bootstrap/cxx/deps/icu/source/samples/case/case.cpp b/deps/icu/source/samples/case/case.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/case.cpp rename to deps/icu/source/samples/case/case.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/case/case.sln b/deps/icu/source/samples/case/case.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/case.sln rename to deps/icu/source/samples/case/case.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/case/case.vcxproj b/deps/icu/source/samples/case/case.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/case.vcxproj rename to deps/icu/source/samples/case/case.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/case/case.vcxproj.filters b/deps/icu/source/samples/case/case.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/case.vcxproj.filters rename to deps/icu/source/samples/case/case.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/case/readme.txt b/deps/icu/source/samples/case/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/readme.txt rename to deps/icu/source/samples/case/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/case/ucase.c b/deps/icu/source/samples/case/ucase.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/case/ucase.c rename to deps/icu/source/samples/case/ucase.c diff --git a/bootstrap/cxx/deps/icu/source/samples/citer/citer.cpp b/deps/icu/source/samples/citer/citer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/citer/citer.cpp rename to deps/icu/source/samples/citer/citer.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/citer/citer.vcxproj b/deps/icu/source/samples/citer/citer.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/citer/citer.vcxproj rename to deps/icu/source/samples/citer/citer.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/citer/citer.vcxproj.filters b/deps/icu/source/samples/citer/citer.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/citer/citer.vcxproj.filters rename to deps/icu/source/samples/citer/citer.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/citer/readme.txt b/deps/icu/source/samples/citer/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/citer/readme.txt rename to deps/icu/source/samples/citer/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/coll/coll.cpp b/deps/icu/source/samples/coll/coll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/coll/coll.cpp rename to deps/icu/source/samples/coll/coll.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/coll/coll.sln b/deps/icu/source/samples/coll/coll.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/coll/coll.sln rename to deps/icu/source/samples/coll/coll.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/coll/coll.vcxproj b/deps/icu/source/samples/coll/coll.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/coll/coll.vcxproj rename to deps/icu/source/samples/coll/coll.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/coll/coll.vcxproj.filters b/deps/icu/source/samples/coll/coll.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/coll/coll.vcxproj.filters rename to deps/icu/source/samples/coll/coll.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/coll/readme.txt b/deps/icu/source/samples/coll/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/coll/readme.txt rename to deps/icu/source/samples/coll/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/csdet/csdet.c b/deps/icu/source/samples/csdet/csdet.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/csdet/csdet.c rename to deps/icu/source/samples/csdet/csdet.c diff --git a/bootstrap/cxx/deps/icu/source/samples/csdet/csdet.vcxproj b/deps/icu/source/samples/csdet/csdet.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/csdet/csdet.vcxproj rename to deps/icu/source/samples/csdet/csdet.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/csdet/csdet.vcxproj.filters b/deps/icu/source/samples/csdet/csdet.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/csdet/csdet.vcxproj.filters rename to deps/icu/source/samples/csdet/csdet.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/csdet/readme.txt b/deps/icu/source/samples/csdet/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/csdet/readme.txt rename to deps/icu/source/samples/csdet/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/date/Makefile.in b/deps/icu/source/samples/date/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/Makefile.in rename to deps/icu/source/samples/date/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/samples/date/date.c b/deps/icu/source/samples/date/date.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/date.c rename to deps/icu/source/samples/date/date.c diff --git a/bootstrap/cxx/deps/icu/source/samples/date/date.sln b/deps/icu/source/samples/date/date.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/date.sln rename to deps/icu/source/samples/date/date.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/date/date.vcxproj b/deps/icu/source/samples/date/date.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/date.vcxproj rename to deps/icu/source/samples/date/date.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/date/date.vcxproj.filters b/deps/icu/source/samples/date/date.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/date.vcxproj.filters rename to deps/icu/source/samples/date/date.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/date/readme.txt b/deps/icu/source/samples/date/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/readme.txt rename to deps/icu/source/samples/date/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/date/uprint.c b/deps/icu/source/samples/date/uprint.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/uprint.c rename to deps/icu/source/samples/date/uprint.c diff --git a/bootstrap/cxx/deps/icu/source/samples/date/uprint.h b/deps/icu/source/samples/date/uprint.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/date/uprint.h rename to deps/icu/source/samples/date/uprint.h diff --git a/bootstrap/cxx/deps/icu/source/samples/datecal/cal.cpp b/deps/icu/source/samples/datecal/cal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datecal/cal.cpp rename to deps/icu/source/samples/datecal/cal.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datecal/ccal.c b/deps/icu/source/samples/datecal/ccal.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datecal/ccal.c rename to deps/icu/source/samples/datecal/ccal.c diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/README.TXT b/deps/icu/source/samples/datefmt/README.TXT similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/README.TXT rename to deps/icu/source/samples/datefmt/README.TXT diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_0.cpp b/deps/icu/source/samples/datefmt/answers/main_0.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_0.cpp rename to deps/icu/source/samples/datefmt/answers/main_0.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_1.cpp b/deps/icu/source/samples/datefmt/answers/main_1.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_1.cpp rename to deps/icu/source/samples/datefmt/answers/main_1.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_2.cpp b/deps/icu/source/samples/datefmt/answers/main_2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_2.cpp rename to deps/icu/source/samples/datefmt/answers/main_2.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_3.cpp b/deps/icu/source/samples/datefmt/answers/main_3.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/answers/main_3.cpp rename to deps/icu/source/samples/datefmt/answers/main_3.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.sln b/deps/icu/source/samples/datefmt/datefmt.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.sln rename to deps/icu/source/samples/datefmt/datefmt.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.vcxproj b/deps/icu/source/samples/datefmt/datefmt.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.vcxproj rename to deps/icu/source/samples/datefmt/datefmt.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.vcxproj.filters b/deps/icu/source/samples/datefmt/datefmt.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/datefmt.vcxproj.filters rename to deps/icu/source/samples/datefmt/datefmt.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/main.cpp b/deps/icu/source/samples/datefmt/main.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/main.cpp rename to deps/icu/source/samples/datefmt/main.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/util.cpp b/deps/icu/source/samples/datefmt/util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/util.cpp rename to deps/icu/source/samples/datefmt/util.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/datefmt/util.h b/deps/icu/source/samples/datefmt/util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/datefmt/util.h rename to deps/icu/source/samples/datefmt/util.h diff --git a/bootstrap/cxx/deps/icu/source/samples/defs.mk b/deps/icu/source/samples/defs.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/defs.mk rename to deps/icu/source/samples/defs.mk diff --git a/bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.cpp b/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.cpp rename to deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj b/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj rename to deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters b/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters rename to deps/icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.cpp b/deps/icu/source/samples/dtptngsample/dtptngsample.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.cpp rename to deps/icu/source/samples/dtptngsample/dtptngsample.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj b/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj rename to deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters b/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters rename to deps/icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontMap.GDI b/deps/icu/source/samples/layout/FontMap.GDI similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontMap.GDI rename to deps/icu/source/samples/layout/FontMap.GDI diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontMap.Gnome b/deps/icu/source/samples/layout/FontMap.Gnome similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontMap.Gnome rename to deps/icu/source/samples/layout/FontMap.Gnome diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontMap.cpp b/deps/icu/source/samples/layout/FontMap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontMap.cpp rename to deps/icu/source/samples/layout/FontMap.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontMap.h b/deps/icu/source/samples/layout/FontMap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontMap.h rename to deps/icu/source/samples/layout/FontMap.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontTableCache.cpp b/deps/icu/source/samples/layout/FontTableCache.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontTableCache.cpp rename to deps/icu/source/samples/layout/FontTableCache.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/FontTableCache.h b/deps/icu/source/samples/layout/FontTableCache.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/FontTableCache.h rename to deps/icu/source/samples/layout/FontTableCache.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIFontInstance.cpp b/deps/icu/source/samples/layout/GDIFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIFontInstance.cpp rename to deps/icu/source/samples/layout/GDIFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIFontInstance.h b/deps/icu/source/samples/layout/GDIFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIFontInstance.h rename to deps/icu/source/samples/layout/GDIFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIFontMap.cpp b/deps/icu/source/samples/layout/GDIFontMap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIFontMap.cpp rename to deps/icu/source/samples/layout/GDIFontMap.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIFontMap.h b/deps/icu/source/samples/layout/GDIFontMap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIFontMap.h rename to deps/icu/source/samples/layout/GDIFontMap.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIGUISupport.cpp b/deps/icu/source/samples/layout/GDIGUISupport.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIGUISupport.cpp rename to deps/icu/source/samples/layout/GDIGUISupport.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GDIGUISupport.h b/deps/icu/source/samples/layout/GDIGUISupport.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GDIGUISupport.h rename to deps/icu/source/samples/layout/GDIGUISupport.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GUISupport.h b/deps/icu/source/samples/layout/GUISupport.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GUISupport.h rename to deps/icu/source/samples/layout/GUISupport.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontInstance.cpp b/deps/icu/source/samples/layout/GnomeFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontInstance.cpp rename to deps/icu/source/samples/layout/GnomeFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontInstance.h b/deps/icu/source/samples/layout/GnomeFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontInstance.h rename to deps/icu/source/samples/layout/GnomeFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontMap.cpp b/deps/icu/source/samples/layout/GnomeFontMap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontMap.cpp rename to deps/icu/source/samples/layout/GnomeFontMap.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontMap.h b/deps/icu/source/samples/layout/GnomeFontMap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeFontMap.h rename to deps/icu/source/samples/layout/GnomeFontMap.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeGUISupport.cpp b/deps/icu/source/samples/layout/GnomeGUISupport.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeGUISupport.cpp rename to deps/icu/source/samples/layout/GnomeGUISupport.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/GnomeGUISupport.h b/deps/icu/source/samples/layout/GnomeGUISupport.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/GnomeGUISupport.h rename to deps/icu/source/samples/layout/GnomeGUISupport.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/LayoutSample.rc b/deps/icu/source/samples/layout/LayoutSample.rc similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/LayoutSample.rc rename to deps/icu/source/samples/layout/LayoutSample.rc diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/Makefile.in b/deps/icu/source/samples/layout/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/Makefile.in rename to deps/icu/source/samples/layout/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/RenderingSurface.h b/deps/icu/source/samples/layout/RenderingSurface.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/RenderingSurface.h rename to deps/icu/source/samples/layout/RenderingSurface.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/Sample.txt b/deps/icu/source/samples/layout/Sample.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/Sample.txt rename to deps/icu/source/samples/layout/Sample.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/ScriptCompositeFontInstance.cpp b/deps/icu/source/samples/layout/ScriptCompositeFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/ScriptCompositeFontInstance.cpp rename to deps/icu/source/samples/layout/ScriptCompositeFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/ScriptCompositeFontInstance.h b/deps/icu/source/samples/layout/ScriptCompositeFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/ScriptCompositeFontInstance.h rename to deps/icu/source/samples/layout/ScriptCompositeFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/Surface.cpp b/deps/icu/source/samples/layout/Surface.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/Surface.cpp rename to deps/icu/source/samples/layout/Surface.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/Surface.h b/deps/icu/source/samples/layout/Surface.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/Surface.h rename to deps/icu/source/samples/layout/Surface.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/UnicodeReader.cpp b/deps/icu/source/samples/layout/UnicodeReader.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/UnicodeReader.cpp rename to deps/icu/source/samples/layout/UnicodeReader.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/UnicodeReader.h b/deps/icu/source/samples/layout/UnicodeReader.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/UnicodeReader.h rename to deps/icu/source/samples/layout/UnicodeReader.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/arraymem.h b/deps/icu/source/samples/layout/arraymem.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/arraymem.h rename to deps/icu/source/samples/layout/arraymem.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/cgnomelayout.c b/deps/icu/source/samples/layout/cgnomelayout.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/cgnomelayout.c rename to deps/icu/source/samples/layout/cgnomelayout.c diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/clayout.c b/deps/icu/source/samples/layout/clayout.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/clayout.c rename to deps/icu/source/samples/layout/clayout.c diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/cmaps.cpp b/deps/icu/source/samples/layout/cmaps.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/cmaps.cpp rename to deps/icu/source/samples/layout/cmaps.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/cmaps.h b/deps/icu/source/samples/layout/cmaps.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/cmaps.h rename to deps/icu/source/samples/layout/cmaps.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gdiglue.cpp b/deps/icu/source/samples/layout/gdiglue.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gdiglue.cpp rename to deps/icu/source/samples/layout/gdiglue.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gdiglue.h b/deps/icu/source/samples/layout/gdiglue.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gdiglue.h rename to deps/icu/source/samples/layout/gdiglue.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gnomeglue.cpp b/deps/icu/source/samples/layout/gnomeglue.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gnomeglue.cpp rename to deps/icu/source/samples/layout/gnomeglue.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gnomeglue.h b/deps/icu/source/samples/layout/gnomeglue.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gnomeglue.h rename to deps/icu/source/samples/layout/gnomeglue.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gnomelayout.cpp b/deps/icu/source/samples/layout/gnomelayout.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gnomelayout.cpp rename to deps/icu/source/samples/layout/gnomelayout.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/gsupport.h b/deps/icu/source/samples/layout/gsupport.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/gsupport.h rename to deps/icu/source/samples/layout/gsupport.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/layout.cpp b/deps/icu/source/samples/layout/layout.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/layout.cpp rename to deps/icu/source/samples/layout/layout.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/layout.sln b/deps/icu/source/samples/layout/layout.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/layout.sln rename to deps/icu/source/samples/layout/layout.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/layout.vcxproj b/deps/icu/source/samples/layout/layout.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/layout.vcxproj rename to deps/icu/source/samples/layout/layout.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/layout.vcxproj.filters b/deps/icu/source/samples/layout/layout.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/layout.vcxproj.filters rename to deps/icu/source/samples/layout/layout.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/paragraph.cpp b/deps/icu/source/samples/layout/paragraph.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/paragraph.cpp rename to deps/icu/source/samples/layout/paragraph.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/paragraph.h b/deps/icu/source/samples/layout/paragraph.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/paragraph.h rename to deps/icu/source/samples/layout/paragraph.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/pflow.c b/deps/icu/source/samples/layout/pflow.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/pflow.c rename to deps/icu/source/samples/layout/pflow.c diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/pflow.h b/deps/icu/source/samples/layout/pflow.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/pflow.h rename to deps/icu/source/samples/layout/pflow.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/readme.html b/deps/icu/source/samples/layout/readme.html similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/readme.html rename to deps/icu/source/samples/layout/readme.html diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/resource.h b/deps/icu/source/samples/layout/resource.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/resource.h rename to deps/icu/source/samples/layout/resource.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/rsurface.cpp b/deps/icu/source/samples/layout/rsurface.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/rsurface.cpp rename to deps/icu/source/samples/layout/rsurface.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/rsurface.h b/deps/icu/source/samples/layout/rsurface.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/rsurface.h rename to deps/icu/source/samples/layout/rsurface.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/sfnt.h b/deps/icu/source/samples/layout/sfnt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/sfnt.h rename to deps/icu/source/samples/layout/sfnt.h diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/ucreader.cpp b/deps/icu/source/samples/layout/ucreader.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/ucreader.cpp rename to deps/icu/source/samples/layout/ucreader.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/layout/ucreader.h b/deps/icu/source/samples/layout/ucreader.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/layout/ucreader.h rename to deps/icu/source/samples/layout/ucreader.h diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/README b/deps/icu/source/samples/legacy/README similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/README rename to deps/icu/source/samples/legacy/README diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/legacy.cpp b/deps/icu/source/samples/legacy/legacy.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/legacy.cpp rename to deps/icu/source/samples/legacy/legacy.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/legacy.sln b/deps/icu/source/samples/legacy/legacy.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/legacy.sln rename to deps/icu/source/samples/legacy/legacy.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/legacy.vcxproj b/deps/icu/source/samples/legacy/legacy.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/legacy.vcxproj rename to deps/icu/source/samples/legacy/legacy.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/legacy.vcxproj.filters b/deps/icu/source/samples/legacy/legacy.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/legacy.vcxproj.filters rename to deps/icu/source/samples/legacy/legacy.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/newcol.cpp b/deps/icu/source/samples/legacy/newcol.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/newcol.cpp rename to deps/icu/source/samples/legacy/newcol.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/legacy/oldcol.cpp b/deps/icu/source/samples/legacy/oldcol.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/legacy/oldcol.cpp rename to deps/icu/source/samples/legacy/oldcol.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/README.TXT b/deps/icu/source/samples/msgfmt/README.TXT similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/README.TXT rename to deps/icu/source/samples/msgfmt/README.TXT diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_0.cpp b/deps/icu/source/samples/msgfmt/answers/main_0.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_0.cpp rename to deps/icu/source/samples/msgfmt/answers/main_0.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_1.cpp b/deps/icu/source/samples/msgfmt/answers/main_1.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_1.cpp rename to deps/icu/source/samples/msgfmt/answers/main_1.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_2.cpp b/deps/icu/source/samples/msgfmt/answers/main_2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_2.cpp rename to deps/icu/source/samples/msgfmt/answers/main_2.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_3.cpp b/deps/icu/source/samples/msgfmt/answers/main_3.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/answers/main_3.cpp rename to deps/icu/source/samples/msgfmt/answers/main_3.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/main.cpp b/deps/icu/source/samples/msgfmt/main.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/main.cpp rename to deps/icu/source/samples/msgfmt/main.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.sln b/deps/icu/source/samples/msgfmt/msgfmt.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.sln rename to deps/icu/source/samples/msgfmt/msgfmt.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.vcxproj b/deps/icu/source/samples/msgfmt/msgfmt.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.vcxproj rename to deps/icu/source/samples/msgfmt/msgfmt.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.vcxproj.filters b/deps/icu/source/samples/msgfmt/msgfmt.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/msgfmt.vcxproj.filters rename to deps/icu/source/samples/msgfmt/msgfmt.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/util.cpp b/deps/icu/source/samples/msgfmt/util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/util.cpp rename to deps/icu/source/samples/msgfmt/util.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/msgfmt/util.h b/deps/icu/source/samples/msgfmt/util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/msgfmt/util.h rename to deps/icu/source/samples/msgfmt/util.h diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/capi.c b/deps/icu/source/samples/numfmt/capi.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/capi.c rename to deps/icu/source/samples/numfmt/capi.c diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/main.cpp b/deps/icu/source/samples/numfmt/main.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/main.cpp rename to deps/icu/source/samples/numfmt/main.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.sln b/deps/icu/source/samples/numfmt/numfmt.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.sln rename to deps/icu/source/samples/numfmt/numfmt.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.vcxproj b/deps/icu/source/samples/numfmt/numfmt.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.vcxproj rename to deps/icu/source/samples/numfmt/numfmt.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.vcxproj.filters b/deps/icu/source/samples/numfmt/numfmt.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/numfmt.vcxproj.filters rename to deps/icu/source/samples/numfmt/numfmt.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/readme.txt b/deps/icu/source/samples/numfmt/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/readme.txt rename to deps/icu/source/samples/numfmt/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/util.cpp b/deps/icu/source/samples/numfmt/util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/util.cpp rename to deps/icu/source/samples/numfmt/util.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/numfmt/util.h b/deps/icu/source/samples/numfmt/util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/numfmt/util.h rename to deps/icu/source/samples/numfmt/util.h diff --git a/bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.cpp b/deps/icu/source/samples/plurfmtsample/plurfmtsample.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.cpp rename to deps/icu/source/samples/plurfmtsample/plurfmtsample.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj b/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj rename to deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters b/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters rename to deps/icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/props/props.cpp b/deps/icu/source/samples/props/props.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/props/props.cpp rename to deps/icu/source/samples/props/props.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/props/props.sln b/deps/icu/source/samples/props/props.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/props/props.sln rename to deps/icu/source/samples/props/props.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/props/props.vcxproj b/deps/icu/source/samples/props/props.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/props/props.vcxproj rename to deps/icu/source/samples/props/props.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/props/props.vcxproj.filters b/deps/icu/source/samples/props/props.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/props/props.vcxproj.filters rename to deps/icu/source/samples/props/props.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/props/readme.txt b/deps/icu/source/samples/props/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/props/readme.txt rename to deps/icu/source/samples/props/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/readme.txt b/deps/icu/source/samples/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/readme.txt rename to deps/icu/source/samples/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/rules.mk b/deps/icu/source/samples/rules.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/rules.mk rename to deps/icu/source/samples/rules.mk diff --git a/bootstrap/cxx/deps/icu/source/samples/strsrch/readme.txt b/deps/icu/source/samples/strsrch/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/strsrch/readme.txt rename to deps/icu/source/samples/strsrch/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.cpp b/deps/icu/source/samples/strsrch/strsrch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.cpp rename to deps/icu/source/samples/strsrch/strsrch.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.sln b/deps/icu/source/samples/strsrch/strsrch.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.sln rename to deps/icu/source/samples/strsrch/strsrch.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.vcxproj b/deps/icu/source/samples/strsrch/strsrch.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.vcxproj rename to deps/icu/source/samples/strsrch/strsrch.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.vcxproj.filters b/deps/icu/source/samples/strsrch/strsrch.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/strsrch/strsrch.vcxproj.filters rename to deps/icu/source/samples/strsrch/strsrch.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/README.TXT b/deps/icu/source/samples/translit/README.TXT similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/README.TXT rename to deps/icu/source/samples/translit/README.TXT diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/main_1.cpp b/deps/icu/source/samples/translit/answers/main_1.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/main_1.cpp rename to deps/icu/source/samples/translit/answers/main_1.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/main_2.cpp b/deps/icu/source/samples/translit/answers/main_2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/main_2.cpp rename to deps/icu/source/samples/translit/answers/main_2.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/main_3.cpp b/deps/icu/source/samples/translit/answers/main_3.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/main_3.cpp rename to deps/icu/source/samples/translit/answers/main_3.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/main_4.cpp b/deps/icu/source/samples/translit/answers/main_4.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/main_4.cpp rename to deps/icu/source/samples/translit/answers/main_4.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/unaccent.cpp b/deps/icu/source/samples/translit/answers/unaccent.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/unaccent.cpp rename to deps/icu/source/samples/translit/answers/unaccent.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/answers/unaccent.h b/deps/icu/source/samples/translit/answers/unaccent.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/answers/unaccent.h rename to deps/icu/source/samples/translit/answers/unaccent.h diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/main.cpp b/deps/icu/source/samples/translit/main.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/main.cpp rename to deps/icu/source/samples/translit/main.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/translit.sln b/deps/icu/source/samples/translit/translit.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/translit.sln rename to deps/icu/source/samples/translit/translit.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/translit.vcxproj b/deps/icu/source/samples/translit/translit.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/translit.vcxproj rename to deps/icu/source/samples/translit/translit.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/translit.vcxproj.filters b/deps/icu/source/samples/translit/translit.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/translit.vcxproj.filters rename to deps/icu/source/samples/translit/translit.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/unaccent.cpp b/deps/icu/source/samples/translit/unaccent.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/unaccent.cpp rename to deps/icu/source/samples/translit/unaccent.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/unaccent.h b/deps/icu/source/samples/translit/unaccent.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/unaccent.h rename to deps/icu/source/samples/translit/unaccent.h diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/util.cpp b/deps/icu/source/samples/translit/util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/util.cpp rename to deps/icu/source/samples/translit/util.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/translit/util.h b/deps/icu/source/samples/translit/util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/translit/util.h rename to deps/icu/source/samples/translit/util.h diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/readme.txt b/deps/icu/source/samples/uciter8/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/readme.txt rename to deps/icu/source/samples/uciter8/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.c b/deps/icu/source/samples/uciter8/uciter8.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.c rename to deps/icu/source/samples/uciter8/uciter8.c diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.sln b/deps/icu/source/samples/uciter8/uciter8.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.sln rename to deps/icu/source/samples/uciter8/uciter8.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.vcxproj b/deps/icu/source/samples/uciter8/uciter8.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.vcxproj rename to deps/icu/source/samples/uciter8/uciter8.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.vcxproj.filters b/deps/icu/source/samples/uciter8/uciter8.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uciter8.vcxproj.filters rename to deps/icu/source/samples/uciter8/uciter8.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uit_len8.c b/deps/icu/source/samples/uciter8/uit_len8.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uit_len8.c rename to deps/icu/source/samples/uciter8/uit_len8.c diff --git a/bootstrap/cxx/deps/icu/source/samples/uciter8/uit_len8.h b/deps/icu/source/samples/uciter8/uit_len8.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uciter8/uit_len8.h rename to deps/icu/source/samples/uciter8/uit_len8.h diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/convsamp.cpp b/deps/icu/source/samples/ucnv/convsamp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/convsamp.cpp rename to deps/icu/source/samples/ucnv/convsamp.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/data01.txt b/deps/icu/source/samples/ucnv/data01.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/data01.txt rename to deps/icu/source/samples/ucnv/data01.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/data02.bin b/deps/icu/source/samples/ucnv/data02.bin similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/data02.bin rename to deps/icu/source/samples/ucnv/data02.bin diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/data06.txt b/deps/icu/source/samples/ucnv/data06.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/data06.txt rename to deps/icu/source/samples/ucnv/data06.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/flagcb.c b/deps/icu/source/samples/ucnv/flagcb.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/flagcb.c rename to deps/icu/source/samples/ucnv/flagcb.c diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/flagcb.h b/deps/icu/source/samples/ucnv/flagcb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/flagcb.h rename to deps/icu/source/samples/ucnv/flagcb.h diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/readme.txt b/deps/icu/source/samples/ucnv/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/readme.txt rename to deps/icu/source/samples/ucnv/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.sln b/deps/icu/source/samples/ucnv/ucnv.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.sln rename to deps/icu/source/samples/ucnv/ucnv.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.vcxproj b/deps/icu/source/samples/ucnv/ucnv.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.vcxproj rename to deps/icu/source/samples/ucnv/ucnv.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.vcxproj.filters b/deps/icu/source/samples/ucnv/ucnv.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ucnv/ucnv.vcxproj.filters rename to deps/icu/source/samples/ucnv/ucnv.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/reader.c b/deps/icu/source/samples/udata/reader.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/reader.c rename to deps/icu/source/samples/udata/reader.c diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/reader.vcxproj b/deps/icu/source/samples/udata/reader.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/reader.vcxproj rename to deps/icu/source/samples/udata/reader.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/reader.vcxproj.filters b/deps/icu/source/samples/udata/reader.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/reader.vcxproj.filters rename to deps/icu/source/samples/udata/reader.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/readme.txt b/deps/icu/source/samples/udata/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/readme.txt rename to deps/icu/source/samples/udata/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/udata.sln b/deps/icu/source/samples/udata/udata.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/udata.sln rename to deps/icu/source/samples/udata/udata.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/writer.c b/deps/icu/source/samples/udata/writer.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/writer.c rename to deps/icu/source/samples/udata/writer.c diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/writer.vcxproj b/deps/icu/source/samples/udata/writer.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/writer.vcxproj rename to deps/icu/source/samples/udata/writer.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/udata/writer.vcxproj.filters b/deps/icu/source/samples/udata/writer.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/udata/writer.vcxproj.filters rename to deps/icu/source/samples/udata/writer.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/fortunedefs.mk b/deps/icu/source/samples/ufortune/fortunedefs.mk similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/fortunedefs.mk rename to deps/icu/source/samples/ufortune/fortunedefs.mk diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/readme.txt b/deps/icu/source/samples/ufortune/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/readme.txt rename to deps/icu/source/samples/ufortune/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/resources/es.txt b/deps/icu/source/samples/ufortune/resources/es.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/resources/es.txt rename to deps/icu/source/samples/ufortune/resources/es.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/resources/fortune_resources.mak b/deps/icu/source/samples/ufortune/resources/fortune_resources.mak similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/resources/fortune_resources.mak rename to deps/icu/source/samples/ufortune/resources/fortune_resources.mak diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/resources/res-file-list.txt b/deps/icu/source/samples/ufortune/resources/res-file-list.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/resources/res-file-list.txt rename to deps/icu/source/samples/ufortune/resources/res-file-list.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/resources/root.txt b/deps/icu/source/samples/ufortune/resources/root.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/resources/root.txt rename to deps/icu/source/samples/ufortune/resources/root.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.c b/deps/icu/source/samples/ufortune/ufortune.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.c rename to deps/icu/source/samples/ufortune/ufortune.c diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.sln b/deps/icu/source/samples/ufortune/ufortune.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.sln rename to deps/icu/source/samples/ufortune/ufortune.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.vcxproj b/deps/icu/source/samples/ufortune/ufortune.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.vcxproj rename to deps/icu/source/samples/ufortune/ufortune.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.vcxproj.filters b/deps/icu/source/samples/ufortune/ufortune.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ufortune/ufortune.vcxproj.filters rename to deps/icu/source/samples/ufortune/ufortune.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/ugrep/readme.txt b/deps/icu/source/samples/ugrep/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ugrep/readme.txt rename to deps/icu/source/samples/ugrep/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.cpp b/deps/icu/source/samples/ugrep/ugrep.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.cpp rename to deps/icu/source/samples/ugrep/ugrep.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.sln b/deps/icu/source/samples/ugrep/ugrep.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.sln rename to deps/icu/source/samples/ugrep/ugrep.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.vcxproj b/deps/icu/source/samples/ugrep/ugrep.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.vcxproj rename to deps/icu/source/samples/ugrep/ugrep.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.vcxproj.filters b/deps/icu/source/samples/ugrep/ugrep.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ugrep/ugrep.vcxproj.filters rename to deps/icu/source/samples/ugrep/ugrep.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/en.txt b/deps/icu/source/samples/uresb/en.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/en.txt rename to deps/icu/source/samples/uresb/en.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/readme.txt b/deps/icu/source/samples/uresb/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/readme.txt rename to deps/icu/source/samples/uresb/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/resources.mak b/deps/icu/source/samples/uresb/resources.mak similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/resources.mak rename to deps/icu/source/samples/uresb/resources.mak diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/resources.vcxproj b/deps/icu/source/samples/uresb/resources.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/resources.vcxproj rename to deps/icu/source/samples/uresb/resources.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/resources.vcxproj.filters b/deps/icu/source/samples/uresb/resources.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/resources.vcxproj.filters rename to deps/icu/source/samples/uresb/resources.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/root.txt b/deps/icu/source/samples/uresb/root.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/root.txt rename to deps/icu/source/samples/uresb/root.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/sr.txt b/deps/icu/source/samples/uresb/sr.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/sr.txt rename to deps/icu/source/samples/uresb/sr.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/uresb.c b/deps/icu/source/samples/uresb/uresb.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/uresb.c rename to deps/icu/source/samples/uresb/uresb.c diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/uresb.sln b/deps/icu/source/samples/uresb/uresb.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/uresb.sln rename to deps/icu/source/samples/uresb/uresb.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/uresb.vcxproj b/deps/icu/source/samples/uresb/uresb.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/uresb.vcxproj rename to deps/icu/source/samples/uresb/uresb.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/uresb/uresb.vcxproj.filters b/deps/icu/source/samples/uresb/uresb.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/uresb/uresb.vcxproj.filters rename to deps/icu/source/samples/uresb/uresb.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/samples/ustring/readme.txt b/deps/icu/source/samples/ustring/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ustring/readme.txt rename to deps/icu/source/samples/ustring/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/samples/ustring/ustring.cpp b/deps/icu/source/samples/ustring/ustring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ustring/ustring.cpp rename to deps/icu/source/samples/ustring/ustring.cpp diff --git a/bootstrap/cxx/deps/icu/source/samples/ustring/ustring.sln b/deps/icu/source/samples/ustring/ustring.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ustring/ustring.sln rename to deps/icu/source/samples/ustring/ustring.sln diff --git a/bootstrap/cxx/deps/icu/source/samples/ustring/ustring.vcxproj b/deps/icu/source/samples/ustring/ustring.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ustring/ustring.vcxproj rename to deps/icu/source/samples/ustring/ustring.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/samples/ustring/ustring.vcxproj.filters b/deps/icu/source/samples/ustring/ustring.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/samples/ustring/ustring.vcxproj.filters rename to deps/icu/source/samples/ustring/ustring.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/stubdata/BUILD.bazel b/deps/icu/source/stubdata/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/BUILD.bazel rename to deps/icu/source/stubdata/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/stubdata/Makefile.in b/deps/icu/source/stubdata/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/Makefile.in rename to deps/icu/source/stubdata/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/stubdata/sources.txt b/deps/icu/source/stubdata/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/sources.txt rename to deps/icu/source/stubdata/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/stubdata/stubdata.cpp b/deps/icu/source/stubdata/stubdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/stubdata.cpp rename to deps/icu/source/stubdata/stubdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/stubdata/stubdata.vcxproj b/deps/icu/source/stubdata/stubdata.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/stubdata.vcxproj rename to deps/icu/source/stubdata/stubdata.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/stubdata/stubdata.vcxproj.filters b/deps/icu/source/stubdata/stubdata.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/stubdata/stubdata.vcxproj.filters rename to deps/icu/source/stubdata/stubdata.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/Makefile.in b/deps/icu/source/test/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/Makefile.in rename to deps/icu/source/test/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/Makefile.in b/deps/icu/source/test/cintltst/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/Makefile.in rename to deps/icu/source/test/cintltst/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/bocu1tst.c b/deps/icu/source/test/cintltst/bocu1tst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/bocu1tst.c rename to deps/icu/source/test/cintltst/bocu1tst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/callcoll.c b/deps/icu/source/test/cintltst/callcoll.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/callcoll.c rename to deps/icu/source/test/cintltst/callcoll.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/callcoll.h b/deps/icu/source/test/cintltst/callcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/callcoll.h rename to deps/icu/source/test/cintltst/callcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/calldata.h b/deps/icu/source/test/cintltst/calldata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/calldata.h rename to deps/icu/source/test/cintltst/calldata.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/calltest.c b/deps/icu/source/test/cintltst/calltest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/calltest.c rename to deps/icu/source/test/cintltst/calltest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/capitst.c b/deps/icu/source/test/cintltst/capitst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/capitst.c rename to deps/icu/source/test/cintltst/capitst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/capitst.h b/deps/icu/source/test/cintltst/capitst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/capitst.h rename to deps/icu/source/test/cintltst/capitst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbiapts.c b/deps/icu/source/test/cintltst/cbiapts.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbiapts.c rename to deps/icu/source/test/cintltst/cbiapts.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbiapts.h b/deps/icu/source/test/cintltst/cbiapts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbiapts.h rename to deps/icu/source/test/cintltst/cbiapts.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbididat.c b/deps/icu/source/test/cintltst/cbididat.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbididat.c rename to deps/icu/source/test/cintltst/cbididat.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbiditransformtst.c b/deps/icu/source/test/cintltst/cbiditransformtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbiditransformtst.c rename to deps/icu/source/test/cintltst/cbiditransformtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbiditst.c b/deps/icu/source/test/cintltst/cbiditst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbiditst.c rename to deps/icu/source/test/cintltst/cbiditst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbiditst.h b/deps/icu/source/test/cintltst/cbiditst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbiditst.h rename to deps/icu/source/test/cintltst/cbiditst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cbkittst.c b/deps/icu/source/test/cintltst/cbkittst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cbkittst.c rename to deps/icu/source/test/cintltst/cbkittst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccaltst.c b/deps/icu/source/test/cintltst/ccaltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccaltst.c rename to deps/icu/source/test/cintltst/ccaltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccaltst.h b/deps/icu/source/test/cintltst/ccaltst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccaltst.h rename to deps/icu/source/test/cintltst/ccaltst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccapitst.c b/deps/icu/source/test/cintltst/ccapitst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccapitst.c rename to deps/icu/source/test/cintltst/ccapitst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccapitst.h b/deps/icu/source/test/cintltst/ccapitst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccapitst.h rename to deps/icu/source/test/cintltst/ccapitst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccolltst.c b/deps/icu/source/test/cintltst/ccolltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccolltst.c rename to deps/icu/source/test/cintltst/ccolltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccolltst.h b/deps/icu/source/test/cintltst/ccolltst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccolltst.h rename to deps/icu/source/test/cintltst/ccolltst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cconvtst.c b/deps/icu/source/test/cintltst/cconvtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cconvtst.c rename to deps/icu/source/test/cintltst/cconvtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cctest.c b/deps/icu/source/test/cintltst/cctest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cctest.c rename to deps/icu/source/test/cintltst/cctest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccurrtst.c b/deps/icu/source/test/cintltst/ccurrtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccurrtst.c rename to deps/icu/source/test/cintltst/ccurrtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ccurrtst.h b/deps/icu/source/test/cintltst/ccurrtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ccurrtst.h rename to deps/icu/source/test/cintltst/ccurrtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdateintervalformattest.c b/deps/icu/source/test/cintltst/cdateintervalformattest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdateintervalformattest.c rename to deps/icu/source/test/cintltst/cdateintervalformattest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdattst.c b/deps/icu/source/test/cintltst/cdattst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdattst.c rename to deps/icu/source/test/cintltst/cdattst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdattst.h b/deps/icu/source/test/cintltst/cdattst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdattst.h rename to deps/icu/source/test/cintltst/cdattst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdetst.c b/deps/icu/source/test/cintltst/cdetst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdetst.c rename to deps/icu/source/test/cintltst/cdetst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdetst.h b/deps/icu/source/test/cintltst/cdetst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdetst.h rename to deps/icu/source/test/cintltst/cdetst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdtdptst.c b/deps/icu/source/test/cintltst/cdtdptst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdtdptst.c rename to deps/icu/source/test/cintltst/cdtdptst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdtdptst.h b/deps/icu/source/test/cintltst/cdtdptst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdtdptst.h rename to deps/icu/source/test/cintltst/cdtdptst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdtrgtst.c b/deps/icu/source/test/cintltst/cdtrgtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdtrgtst.c rename to deps/icu/source/test/cintltst/cdtrgtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cdtrgtst.h b/deps/icu/source/test/cintltst/cdtrgtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cdtrgtst.h rename to deps/icu/source/test/cintltst/cdtrgtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cestst.c b/deps/icu/source/test/cintltst/cestst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cestst.c rename to deps/icu/source/test/cintltst/cestst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cestst.h b/deps/icu/source/test/cintltst/cestst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cestst.h rename to deps/icu/source/test/cintltst/cestst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cfintst.c b/deps/icu/source/test/cintltst/cfintst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cfintst.c rename to deps/icu/source/test/cintltst/cfintst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cfintst.h b/deps/icu/source/test/cintltst/cfintst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cfintst.h rename to deps/icu/source/test/cintltst/cfintst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cformtst.c b/deps/icu/source/test/cintltst/cformtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cformtst.c rename to deps/icu/source/test/cintltst/cformtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cformtst.h b/deps/icu/source/test/cintltst/cformtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cformtst.h rename to deps/icu/source/test/cintltst/cformtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cfrtst.c b/deps/icu/source/test/cintltst/cfrtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cfrtst.c rename to deps/icu/source/test/cintltst/cfrtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cfrtst.h b/deps/icu/source/test/cintltst/cfrtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cfrtst.h rename to deps/icu/source/test/cintltst/cfrtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cg7coll.c b/deps/icu/source/test/cintltst/cg7coll.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cg7coll.c rename to deps/icu/source/test/cintltst/cg7coll.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cg7coll.h b/deps/icu/source/test/cintltst/cg7coll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cg7coll.h rename to deps/icu/source/test/cintltst/cg7coll.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cgendtst.c b/deps/icu/source/test/cintltst/cgendtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cgendtst.c rename to deps/icu/source/test/cintltst/cgendtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/chashtst.c b/deps/icu/source/test/cintltst/chashtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/chashtst.c rename to deps/icu/source/test/cintltst/chashtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.c b/deps/icu/source/test/cintltst/cintltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.c rename to deps/icu/source/test/cintltst/cintltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.h b/deps/icu/source/test/cintltst/cintltst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.h rename to deps/icu/source/test/cintltst/cintltst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.vcxproj b/deps/icu/source/test/cintltst/cintltst.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.vcxproj rename to deps/icu/source/test/cintltst/cintltst.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.vcxproj.filters b/deps/icu/source/test/cintltst/cintltst.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cintltst.vcxproj.filters rename to deps/icu/source/test/cintltst/cintltst.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/citertst.c b/deps/icu/source/test/cintltst/citertst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/citertst.c rename to deps/icu/source/test/cintltst/citertst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/citertst.h b/deps/icu/source/test/cintltst/citertst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/citertst.h rename to deps/icu/source/test/cintltst/citertst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cjaptst.c b/deps/icu/source/test/cintltst/cjaptst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cjaptst.c rename to deps/icu/source/test/cintltst/cjaptst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cjaptst.h b/deps/icu/source/test/cintltst/cjaptst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cjaptst.h rename to deps/icu/source/test/cintltst/cjaptst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cldrtest.c b/deps/icu/source/test/cintltst/cldrtest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cldrtest.c rename to deps/icu/source/test/cintltst/cldrtest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cloctst.c b/deps/icu/source/test/cintltst/cloctst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cloctst.c rename to deps/icu/source/test/cintltst/cloctst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cloctst.h b/deps/icu/source/test/cintltst/cloctst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cloctst.h rename to deps/icu/source/test/cintltst/cloctst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cmsccoll.c b/deps/icu/source/test/cintltst/cmsccoll.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cmsccoll.c rename to deps/icu/source/test/cintltst/cmsccoll.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cmsgtst.c b/deps/icu/source/test/cintltst/cmsgtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cmsgtst.c rename to deps/icu/source/test/cintltst/cmsgtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cmsgtst.h b/deps/icu/source/test/cintltst/cmsgtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cmsgtst.h rename to deps/icu/source/test/cintltst/cmsgtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnmdptst.c b/deps/icu/source/test/cintltst/cnmdptst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnmdptst.c rename to deps/icu/source/test/cintltst/cnmdptst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnmdptst.h b/deps/icu/source/test/cintltst/cnmdptst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnmdptst.h rename to deps/icu/source/test/cintltst/cnmdptst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnormtst.c b/deps/icu/source/test/cintltst/cnormtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnormtst.c rename to deps/icu/source/test/cintltst/cnormtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnormtst.h b/deps/icu/source/test/cintltst/cnormtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnormtst.h rename to deps/icu/source/test/cintltst/cnormtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnumtst.c b/deps/icu/source/test/cintltst/cnumtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnumtst.c rename to deps/icu/source/test/cintltst/cnumtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cnumtst.h b/deps/icu/source/test/cintltst/cnumtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cnumtst.h rename to deps/icu/source/test/cintltst/cnumtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cpluralrulestest.c b/deps/icu/source/test/cintltst/cpluralrulestest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cpluralrulestest.c rename to deps/icu/source/test/cintltst/cpluralrulestest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cposxtst.c b/deps/icu/source/test/cintltst/cposxtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cposxtst.c rename to deps/icu/source/test/cintltst/cposxtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/crelativedateformattest.c b/deps/icu/source/test/cintltst/crelativedateformattest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/crelativedateformattest.c rename to deps/icu/source/test/cintltst/crelativedateformattest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/crestst.c b/deps/icu/source/test/cintltst/crestst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/crestst.c rename to deps/icu/source/test/cintltst/crestst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/crestst.h b/deps/icu/source/test/cintltst/crestst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/crestst.h rename to deps/icu/source/test/cintltst/crestst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/creststn.c b/deps/icu/source/test/cintltst/creststn.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/creststn.c rename to deps/icu/source/test/cintltst/creststn.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/creststn.h b/deps/icu/source/test/cintltst/creststn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/creststn.h rename to deps/icu/source/test/cintltst/creststn.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cstrcase.c b/deps/icu/source/test/cintltst/cstrcase.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cstrcase.c rename to deps/icu/source/test/cintltst/cstrcase.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cstrtest.c b/deps/icu/source/test/cintltst/cstrtest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cstrtest.c rename to deps/icu/source/test/cintltst/cstrtest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cturtst.c b/deps/icu/source/test/cintltst/cturtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cturtst.c rename to deps/icu/source/test/cintltst/cturtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cturtst.h b/deps/icu/source/test/cintltst/cturtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cturtst.h rename to deps/icu/source/test/cintltst/cturtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cucdapi.c b/deps/icu/source/test/cintltst/cucdapi.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cucdapi.c rename to deps/icu/source/test/cintltst/cucdapi.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cucdapi.h b/deps/icu/source/test/cintltst/cucdapi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cucdapi.h rename to deps/icu/source/test/cintltst/cucdapi.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cucdtst.c b/deps/icu/source/test/cintltst/cucdtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cucdtst.c rename to deps/icu/source/test/cintltst/cucdtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/currtest.c b/deps/icu/source/test/cintltst/currtest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/currtest.c rename to deps/icu/source/test/cintltst/currtest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/custrtrn.c b/deps/icu/source/test/cintltst/custrtrn.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/custrtrn.c rename to deps/icu/source/test/cintltst/custrtrn.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/custrtst.c b/deps/icu/source/test/cintltst/custrtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/custrtst.c rename to deps/icu/source/test/cintltst/custrtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/cutiltst.c b/deps/icu/source/test/cintltst/cutiltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/cutiltst.c rename to deps/icu/source/test/cintltst/cutiltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/encoll.c b/deps/icu/source/test/cintltst/encoll.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/encoll.c rename to deps/icu/source/test/cintltst/encoll.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/encoll.h b/deps/icu/source/test/cintltst/encoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/encoll.h rename to deps/icu/source/test/cintltst/encoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/eurocreg.c b/deps/icu/source/test/cintltst/eurocreg.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/eurocreg.c rename to deps/icu/source/test/cintltst/eurocreg.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/hpmufn.c b/deps/icu/source/test/cintltst/hpmufn.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/hpmufn.c rename to deps/icu/source/test/cintltst/hpmufn.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/idnatest.c b/deps/icu/source/test/cintltst/idnatest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/idnatest.c rename to deps/icu/source/test/cintltst/idnatest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nccbtst.c b/deps/icu/source/test/cintltst/nccbtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nccbtst.c rename to deps/icu/source/test/cintltst/nccbtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nccbtst.h b/deps/icu/source/test/cintltst/nccbtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nccbtst.h rename to deps/icu/source/test/cintltst/nccbtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ncnvfbts.c b/deps/icu/source/test/cintltst/ncnvfbts.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ncnvfbts.c rename to deps/icu/source/test/cintltst/ncnvfbts.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ncnvfbts.h b/deps/icu/source/test/cintltst/ncnvfbts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ncnvfbts.h rename to deps/icu/source/test/cintltst/ncnvfbts.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ncnvtst.c b/deps/icu/source/test/cintltst/ncnvtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ncnvtst.c rename to deps/icu/source/test/cintltst/ncnvtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nfsprep.c b/deps/icu/source/test/cintltst/nfsprep.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nfsprep.c rename to deps/icu/source/test/cintltst/nfsprep.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nfsprep.h b/deps/icu/source/test/cintltst/nfsprep.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nfsprep.h rename to deps/icu/source/test/cintltst/nfsprep.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nucnvtst.c b/deps/icu/source/test/cintltst/nucnvtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nucnvtst.c rename to deps/icu/source/test/cintltst/nucnvtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/nucnvtst.h b/deps/icu/source/test/cintltst/nucnvtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/nucnvtst.h rename to deps/icu/source/test/cintltst/nucnvtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/putiltst.c b/deps/icu/source/test/cintltst/putiltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/putiltst.c rename to deps/icu/source/test/cintltst/putiltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/reapits.c b/deps/icu/source/test/cintltst/reapits.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/reapits.c rename to deps/icu/source/test/cintltst/reapits.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/sorttest.c b/deps/icu/source/test/cintltst/sorttest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/sorttest.c rename to deps/icu/source/test/cintltst/sorttest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/spooftest.c b/deps/icu/source/test/cintltst/spooftest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/spooftest.c rename to deps/icu/source/test/cintltst/spooftest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/spreptst.c b/deps/icu/source/test/cintltst/spreptst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/spreptst.c rename to deps/icu/source/test/cintltst/spreptst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/sprpdata.c b/deps/icu/source/test/cintltst/sprpdata.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/sprpdata.c rename to deps/icu/source/test/cintltst/sprpdata.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/stdnmtst.c b/deps/icu/source/test/cintltst/stdnmtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/stdnmtst.c rename to deps/icu/source/test/cintltst/stdnmtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/tracetst.c b/deps/icu/source/test/cintltst/tracetst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/tracetst.c rename to deps/icu/source/test/cintltst/tracetst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/trie2test.c b/deps/icu/source/test/cintltst/trie2test.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/trie2test.c rename to deps/icu/source/test/cintltst/trie2test.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/trietest.c b/deps/icu/source/test/cintltst/trietest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/trietest.c rename to deps/icu/source/test/cintltst/trietest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ucnvseltst.c b/deps/icu/source/test/cintltst/ucnvseltst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ucnvseltst.c rename to deps/icu/source/test/cintltst/ucnvseltst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ucnvseltst.h b/deps/icu/source/test/cintltst/ucnvseltst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ucnvseltst.h rename to deps/icu/source/test/cintltst/ucnvseltst.h diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ucptrietest.c b/deps/icu/source/test/cintltst/ucptrietest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ucptrietest.c rename to deps/icu/source/test/cintltst/ucptrietest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ucsdetst.c b/deps/icu/source/test/cintltst/ucsdetst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ucsdetst.c rename to deps/icu/source/test/cintltst/ucsdetst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/udatatst.c b/deps/icu/source/test/cintltst/udatatst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/udatatst.c rename to deps/icu/source/test/cintltst/udatatst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/udatpg_test.c b/deps/icu/source/test/cintltst/udatpg_test.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/udatpg_test.c rename to deps/icu/source/test/cintltst/udatpg_test.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/uenumtst.c b/deps/icu/source/test/cintltst/uenumtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/uenumtst.c rename to deps/icu/source/test/cintltst/uenumtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/uformattedvaluetst.c b/deps/icu/source/test/cintltst/uformattedvaluetst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/uformattedvaluetst.c rename to deps/icu/source/test/cintltst/uformattedvaluetst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/ulistfmttest.c b/deps/icu/source/test/cintltst/ulistfmttest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/ulistfmttest.c rename to deps/icu/source/test/cintltst/ulistfmttest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/unumberformattertst.c b/deps/icu/source/test/cintltst/unumberformattertst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/unumberformattertst.c rename to deps/icu/source/test/cintltst/unumberformattertst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/unumberrangeformattertst.c b/deps/icu/source/test/cintltst/unumberrangeformattertst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/unumberrangeformattertst.c rename to deps/icu/source/test/cintltst/unumberrangeformattertst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/uregiontest.c b/deps/icu/source/test/cintltst/uregiontest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/uregiontest.c rename to deps/icu/source/test/cintltst/uregiontest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/usettest.c b/deps/icu/source/test/cintltst/usettest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/usettest.c rename to deps/icu/source/test/cintltst/usettest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/usrchdat.c b/deps/icu/source/test/cintltst/usrchdat.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/usrchdat.c rename to deps/icu/source/test/cintltst/usrchdat.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/usrchtst.c b/deps/icu/source/test/cintltst/usrchtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/usrchtst.c rename to deps/icu/source/test/cintltst/usrchtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/utexttst.c b/deps/icu/source/test/cintltst/utexttst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/utexttst.c rename to deps/icu/source/test/cintltst/utexttst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/utf16tst.c b/deps/icu/source/test/cintltst/utf16tst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/utf16tst.c rename to deps/icu/source/test/cintltst/utf16tst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/utf8tst.c b/deps/icu/source/test/cintltst/utf8tst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/utf8tst.c rename to deps/icu/source/test/cintltst/utf8tst.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/utmstest.c b/deps/icu/source/test/cintltst/utmstest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/utmstest.c rename to deps/icu/source/test/cintltst/utmstest.c diff --git a/bootstrap/cxx/deps/icu/source/test/cintltst/utransts.c b/deps/icu/source/test/cintltst/utransts.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/cintltst/utransts.c rename to deps/icu/source/test/cintltst/utransts.c diff --git a/bootstrap/cxx/deps/icu/source/test/compat/Makefile.in b/deps/icu/source/test/compat/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/compat/Makefile.in rename to deps/icu/source/test/compat/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/compat/readme.txt b/deps/icu/source/test/compat/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/compat/readme.txt rename to deps/icu/source/test/compat/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/compat/tzdate.c b/deps/icu/source/test/compat/tzdate.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/compat/tzdate.c rename to deps/icu/source/test/compat/tzdate.c diff --git a/bootstrap/cxx/deps/icu/source/test/compat/tzone.pl b/deps/icu/source/test/compat/tzone.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/compat/tzone.pl rename to deps/icu/source/test/compat/tzone.pl diff --git a/bootstrap/cxx/deps/icu/source/test/depstest/dependencies.py b/deps/icu/source/test/depstest/dependencies.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/depstest/dependencies.py rename to deps/icu/source/test/depstest/dependencies.py diff --git a/bootstrap/cxx/deps/icu/source/test/depstest/dependencies.txt b/deps/icu/source/test/depstest/dependencies.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/depstest/dependencies.txt rename to deps/icu/source/test/depstest/dependencies.txt diff --git a/bootstrap/cxx/deps/icu/source/test/depstest/depstest.py b/deps/icu/source/test/depstest/depstest.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/depstest/depstest.py rename to deps/icu/source/test/depstest/depstest.py diff --git a/bootstrap/cxx/deps/icu/source/test/depstest/icu-dependencies-mode.el b/deps/icu/source/test/depstest/icu-dependencies-mode.el similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/depstest/icu-dependencies-mode.el rename to deps/icu/source/test/depstest/icu-dependencies-mode.el diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/Makefile.in b/deps/icu/source/test/fuzzer/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/Makefile.in rename to deps/icu/source/test/fuzzer/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/break_iterator_fuzzer.cpp b/deps/icu/source/test/fuzzer/break_iterator_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/break_iterator_fuzzer.cpp rename to deps/icu/source/test/fuzzer/break_iterator_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/collator_compare_fuzzer.cpp b/deps/icu/source/test/fuzzer/collator_compare_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/collator_compare_fuzzer.cpp rename to deps/icu/source/test/fuzzer/collator_compare_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz b/deps/icu/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz rename to deps/icu/source/test/fuzzer/collator_rulebased_ICU-21041.fuzz diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer.cpp b/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer.cpp rename to deps/icu/source/test/fuzzer/collator_rulebased_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/converter_fuzzer.cpp b/deps/icu/source/test/fuzzer/converter_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/converter_fuzzer.cpp rename to deps/icu/source/test/fuzzer/converter_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/fuzzer_driver.cpp b/deps/icu/source/test/fuzzer/fuzzer_driver.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/fuzzer_driver.cpp rename to deps/icu/source/test/fuzzer/fuzzer_driver.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/fuzzer_utils.h b/deps/icu/source/test/fuzzer/fuzzer_utils.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/fuzzer_utils.h rename to deps/icu/source/test/fuzzer/fuzzer_utils.h diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/locale_fuzzer.cpp b/deps/icu/source/test/fuzzer/locale_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/locale_fuzzer.cpp rename to deps/icu/source/test/fuzzer/locale_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/locale_util.cpp b/deps/icu/source/test/fuzzer/locale_util.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/locale_util.cpp rename to deps/icu/source/test/fuzzer/locale_util.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/locale_util.h b/deps/icu/source/test/fuzzer/locale_util.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/locale_util.h rename to deps/icu/source/test/fuzzer/locale_util.h diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/number_format_fuzzer.cpp b/deps/icu/source/test/fuzzer/number_format_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/number_format_fuzzer.cpp rename to deps/icu/source/test/fuzzer/number_format_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/ucasemap_fuzzer.cpp b/deps/icu/source/test/fuzzer/ucasemap_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/ucasemap_fuzzer.cpp rename to deps/icu/source/test/fuzzer/ucasemap_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp b/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/uloc_canonicalize_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp b/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/uloc_for_language_tag_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer.cpp b/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uloc_get_name_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_get_name_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/uloc_get_name_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp b/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/uloc_is_right_to_left_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp b/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer_seed_corpus.txt b/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer_seed_corpus.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer_seed_corpus.txt rename to deps/icu/source/test/fuzzer/uloc_open_keywords_fuzzer_seed_corpus.txt diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp b/deps/icu/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp rename to deps/icu/source/test/fuzzer/unicode_string_codepage_create_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uregex_open_fuzzer.cpp b/deps/icu/source/test/fuzzer/uregex_open_fuzzer.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uregex_open_fuzzer.cpp rename to deps/icu/source/test/fuzzer/uregex_open_fuzzer.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/fuzzer/uregex_open_fuzzer.dict b/deps/icu/source/test/fuzzer/uregex_open_fuzzer.dict similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/fuzzer/uregex_open_fuzzer.dict rename to deps/icu/source/test/fuzzer/uregex_open_fuzzer.dict diff --git a/bootstrap/cxx/deps/icu/source/test/hdrtst/Makefile.in b/deps/icu/source/test/hdrtst/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/hdrtst/Makefile.in rename to deps/icu/source/test/hdrtst/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/hdrtst/dfiles.txt b/deps/icu/source/test/hdrtst/dfiles.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/hdrtst/dfiles.txt rename to deps/icu/source/test/hdrtst/dfiles.txt diff --git a/bootstrap/cxx/deps/icu/source/test/hdrtst/testinternalheaders.sh b/deps/icu/source/test/hdrtst/testinternalheaders.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/hdrtst/testinternalheaders.sh rename to deps/icu/source/test/hdrtst/testinternalheaders.sh diff --git a/bootstrap/cxx/deps/icu/source/test/hdrtst/testtagsguards.sh b/deps/icu/source/test/hdrtst/testtagsguards.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/hdrtst/testtagsguards.sh rename to deps/icu/source/test/hdrtst/testtagsguards.sh diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/Makefile.in b/deps/icu/source/test/intltest/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/Makefile.in rename to deps/icu/source/test/intltest/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/aliastst.cpp b/deps/icu/source/test/intltest/aliastst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/aliastst.cpp rename to deps/icu/source/test/intltest/aliastst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/aliastst.h b/deps/icu/source/test/intltest/aliastst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/aliastst.h rename to deps/icu/source/test/intltest/aliastst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/allcoll.cpp b/deps/icu/source/test/intltest/allcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/allcoll.cpp rename to deps/icu/source/test/intltest/allcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/allcoll.h b/deps/icu/source/test/intltest/allcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/allcoll.h rename to deps/icu/source/test/intltest/allcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/alphaindextst.cpp b/deps/icu/source/test/intltest/alphaindextst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/alphaindextst.cpp rename to deps/icu/source/test/intltest/alphaindextst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/alphaindextst.h b/deps/icu/source/test/intltest/alphaindextst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/alphaindextst.h rename to deps/icu/source/test/intltest/alphaindextst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/apicoll.cpp b/deps/icu/source/test/intltest/apicoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/apicoll.cpp rename to deps/icu/source/test/intltest/apicoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/apicoll.h b/deps/icu/source/test/intltest/apicoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/apicoll.h rename to deps/icu/source/test/intltest/apicoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/astrotst.cpp b/deps/icu/source/test/intltest/astrotst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/astrotst.cpp rename to deps/icu/source/test/intltest/astrotst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/astrotst.h b/deps/icu/source/test/intltest/astrotst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/astrotst.h rename to deps/icu/source/test/intltest/astrotst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/bidiconf.cpp b/deps/icu/source/test/intltest/bidiconf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/bidiconf.cpp rename to deps/icu/source/test/intltest/bidiconf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/bytestrietest.cpp b/deps/icu/source/test/intltest/bytestrietest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/bytestrietest.cpp rename to deps/icu/source/test/intltest/bytestrietest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/calcasts.cpp b/deps/icu/source/test/intltest/calcasts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/calcasts.cpp rename to deps/icu/source/test/intltest/calcasts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/calcasts.h b/deps/icu/source/test/intltest/calcasts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/calcasts.h rename to deps/icu/source/test/intltest/calcasts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/callimts.cpp b/deps/icu/source/test/intltest/callimts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/callimts.cpp rename to deps/icu/source/test/intltest/callimts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/callimts.h b/deps/icu/source/test/intltest/callimts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/callimts.h rename to deps/icu/source/test/intltest/callimts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/calregts.cpp b/deps/icu/source/test/intltest/calregts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/calregts.cpp rename to deps/icu/source/test/intltest/calregts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/calregts.h b/deps/icu/source/test/intltest/calregts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/calregts.h rename to deps/icu/source/test/intltest/calregts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/caltest.cpp b/deps/icu/source/test/intltest/caltest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/caltest.cpp rename to deps/icu/source/test/intltest/caltest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/caltest.h b/deps/icu/source/test/intltest/caltest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/caltest.h rename to deps/icu/source/test/intltest/caltest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/caltestdata.h b/deps/icu/source/test/intltest/caltestdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/caltestdata.h rename to deps/icu/source/test/intltest/caltestdata.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/caltztst.cpp b/deps/icu/source/test/intltest/caltztst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/caltztst.cpp rename to deps/icu/source/test/intltest/caltztst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/caltztst.h b/deps/icu/source/test/intltest/caltztst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/caltztst.h rename to deps/icu/source/test/intltest/caltztst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/canittst.cpp b/deps/icu/source/test/intltest/canittst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/canittst.cpp rename to deps/icu/source/test/intltest/canittst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/canittst.h b/deps/icu/source/test/intltest/canittst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/canittst.h rename to deps/icu/source/test/intltest/canittst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/citrtest.cpp b/deps/icu/source/test/intltest/citrtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/citrtest.cpp rename to deps/icu/source/test/intltest/citrtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/citrtest.h b/deps/icu/source/test/intltest/citrtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/citrtest.h rename to deps/icu/source/test/intltest/citrtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/collationtest.cpp b/deps/icu/source/test/intltest/collationtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/collationtest.cpp rename to deps/icu/source/test/intltest/collationtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/colldata.cpp b/deps/icu/source/test/intltest/colldata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/colldata.cpp rename to deps/icu/source/test/intltest/colldata.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/colldata.h b/deps/icu/source/test/intltest/colldata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/colldata.h rename to deps/icu/source/test/intltest/colldata.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/compactdecimalformattest.cpp b/deps/icu/source/test/intltest/compactdecimalformattest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/compactdecimalformattest.cpp rename to deps/icu/source/test/intltest/compactdecimalformattest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/convtest.cpp b/deps/icu/source/test/intltest/convtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/convtest.cpp rename to deps/icu/source/test/intltest/convtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/convtest.h b/deps/icu/source/test/intltest/convtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/convtest.h rename to deps/icu/source/test/intltest/convtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/cpdtrtst.cpp b/deps/icu/source/test/intltest/cpdtrtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/cpdtrtst.cpp rename to deps/icu/source/test/intltest/cpdtrtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/cpdtrtst.h b/deps/icu/source/test/intltest/cpdtrtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/cpdtrtst.h rename to deps/icu/source/test/intltest/cpdtrtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/csdetest.cpp b/deps/icu/source/test/intltest/csdetest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/csdetest.cpp rename to deps/icu/source/test/intltest/csdetest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/csdetest.h b/deps/icu/source/test/intltest/csdetest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/csdetest.h rename to deps/icu/source/test/intltest/csdetest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/currcoll.cpp b/deps/icu/source/test/intltest/currcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/currcoll.cpp rename to deps/icu/source/test/intltest/currcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/currcoll.h b/deps/icu/source/test/intltest/currcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/currcoll.h rename to deps/icu/source/test/intltest/currcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dadrcal.cpp b/deps/icu/source/test/intltest/dadrcal.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dadrcal.cpp rename to deps/icu/source/test/intltest/dadrcal.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dadrcal.h b/deps/icu/source/test/intltest/dadrcal.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dadrcal.h rename to deps/icu/source/test/intltest/dadrcal.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dadrfmt.cpp b/deps/icu/source/test/intltest/dadrfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dadrfmt.cpp rename to deps/icu/source/test/intltest/dadrfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dadrfmt.h b/deps/icu/source/test/intltest/dadrfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dadrfmt.h rename to deps/icu/source/test/intltest/dadrfmt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/datadrivennumberformattestsuite.cpp b/deps/icu/source/test/intltest/datadrivennumberformattestsuite.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/datadrivennumberformattestsuite.cpp rename to deps/icu/source/test/intltest/datadrivennumberformattestsuite.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/datadrivennumberformattestsuite.h b/deps/icu/source/test/intltest/datadrivennumberformattestsuite.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/datadrivennumberformattestsuite.h rename to deps/icu/source/test/intltest/datadrivennumberformattestsuite.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dcfmapts.cpp b/deps/icu/source/test/intltest/dcfmapts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dcfmapts.cpp rename to deps/icu/source/test/intltest/dcfmapts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dcfmapts.h b/deps/icu/source/test/intltest/dcfmapts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dcfmapts.h rename to deps/icu/source/test/intltest/dcfmapts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dcfmtest.cpp b/deps/icu/source/test/intltest/dcfmtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dcfmtest.cpp rename to deps/icu/source/test/intltest/dcfmtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dcfmtest.h b/deps/icu/source/test/intltest/dcfmtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dcfmtest.h rename to deps/icu/source/test/intltest/dcfmtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/decoll.cpp b/deps/icu/source/test/intltest/decoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/decoll.cpp rename to deps/icu/source/test/intltest/decoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/decoll.h b/deps/icu/source/test/intltest/decoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/decoll.h rename to deps/icu/source/test/intltest/decoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmapts.cpp b/deps/icu/source/test/intltest/dtfmapts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmapts.cpp rename to deps/icu/source/test/intltest/dtfmapts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmapts.h b/deps/icu/source/test/intltest/dtfmapts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmapts.h rename to deps/icu/source/test/intltest/dtfmapts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmrgts.cpp b/deps/icu/source/test/intltest/dtfmrgts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmrgts.cpp rename to deps/icu/source/test/intltest/dtfmrgts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmrgts.h b/deps/icu/source/test/intltest/dtfmrgts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmrgts.h rename to deps/icu/source/test/intltest/dtfmrgts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmtrtts.cpp b/deps/icu/source/test/intltest/dtfmtrtts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmtrtts.cpp rename to deps/icu/source/test/intltest/dtfmtrtts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmtrtts.h b/deps/icu/source/test/intltest/dtfmtrtts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmtrtts.h rename to deps/icu/source/test/intltest/dtfmtrtts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmttst.cpp b/deps/icu/source/test/intltest/dtfmttst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmttst.cpp rename to deps/icu/source/test/intltest/dtfmttst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtfmttst.h b/deps/icu/source/test/intltest/dtfmttst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtfmttst.h rename to deps/icu/source/test/intltest/dtfmttst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtifmtts.cpp b/deps/icu/source/test/intltest/dtifmtts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtifmtts.cpp rename to deps/icu/source/test/intltest/dtifmtts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtifmtts.h b/deps/icu/source/test/intltest/dtifmtts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtifmtts.h rename to deps/icu/source/test/intltest/dtifmtts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtptngts.cpp b/deps/icu/source/test/intltest/dtptngts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtptngts.cpp rename to deps/icu/source/test/intltest/dtptngts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/dtptngts.h b/deps/icu/source/test/intltest/dtptngts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/dtptngts.h rename to deps/icu/source/test/intltest/dtptngts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/encoll.cpp b/deps/icu/source/test/intltest/encoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/encoll.cpp rename to deps/icu/source/test/intltest/encoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/encoll.h b/deps/icu/source/test/intltest/encoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/encoll.h rename to deps/icu/source/test/intltest/encoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/erarulestest.cpp b/deps/icu/source/test/intltest/erarulestest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/erarulestest.cpp rename to deps/icu/source/test/intltest/erarulestest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/erarulestest.h b/deps/icu/source/test/intltest/erarulestest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/erarulestest.h rename to deps/icu/source/test/intltest/erarulestest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/escoll.cpp b/deps/icu/source/test/intltest/escoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/escoll.cpp rename to deps/icu/source/test/intltest/escoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/escoll.h b/deps/icu/source/test/intltest/escoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/escoll.h rename to deps/icu/source/test/intltest/escoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ficoll.cpp b/deps/icu/source/test/intltest/ficoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ficoll.cpp rename to deps/icu/source/test/intltest/ficoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ficoll.h b/deps/icu/source/test/intltest/ficoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ficoll.h rename to deps/icu/source/test/intltest/ficoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/fldset.cpp b/deps/icu/source/test/intltest/fldset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/fldset.cpp rename to deps/icu/source/test/intltest/fldset.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/fldset.h b/deps/icu/source/test/intltest/fldset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/fldset.h rename to deps/icu/source/test/intltest/fldset.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/formatted_string_builder_test.cpp b/deps/icu/source/test/intltest/formatted_string_builder_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/formatted_string_builder_test.cpp rename to deps/icu/source/test/intltest/formatted_string_builder_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/formattedvaluetest.cpp b/deps/icu/source/test/intltest/formattedvaluetest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/formattedvaluetest.cpp rename to deps/icu/source/test/intltest/formattedvaluetest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/frcoll.cpp b/deps/icu/source/test/intltest/frcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/frcoll.cpp rename to deps/icu/source/test/intltest/frcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/frcoll.h b/deps/icu/source/test/intltest/frcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/frcoll.h rename to deps/icu/source/test/intltest/frcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/g7coll.cpp b/deps/icu/source/test/intltest/g7coll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/g7coll.cpp rename to deps/icu/source/test/intltest/g7coll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/g7coll.h b/deps/icu/source/test/intltest/g7coll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/g7coll.h rename to deps/icu/source/test/intltest/g7coll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/genderinfotest.cpp b/deps/icu/source/test/intltest/genderinfotest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/genderinfotest.cpp rename to deps/icu/source/test/intltest/genderinfotest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/icusvtst.cpp b/deps/icu/source/test/intltest/icusvtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/icusvtst.cpp rename to deps/icu/source/test/intltest/icusvtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/icusvtst.h b/deps/icu/source/test/intltest/icusvtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/icusvtst.h rename to deps/icu/source/test/intltest/icusvtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/idnaconf.cpp b/deps/icu/source/test/intltest/idnaconf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/idnaconf.cpp rename to deps/icu/source/test/intltest/idnaconf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/idnaconf.h b/deps/icu/source/test/intltest/idnaconf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/idnaconf.h rename to deps/icu/source/test/intltest/idnaconf.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/idnaref.cpp b/deps/icu/source/test/intltest/idnaref.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/idnaref.cpp rename to deps/icu/source/test/intltest/idnaref.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/idnaref.h b/deps/icu/source/test/intltest/idnaref.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/idnaref.h rename to deps/icu/source/test/intltest/idnaref.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/incaltst.cpp b/deps/icu/source/test/intltest/incaltst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/incaltst.cpp rename to deps/icu/source/test/intltest/incaltst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/incaltst.h b/deps/icu/source/test/intltest/incaltst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/incaltst.h rename to deps/icu/source/test/intltest/incaltst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/intltest.cpp b/deps/icu/source/test/intltest/intltest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/intltest.cpp rename to deps/icu/source/test/intltest/intltest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/intltest.h b/deps/icu/source/test/intltest/intltest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/intltest.h rename to deps/icu/source/test/intltest/intltest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/intltest.vcxproj b/deps/icu/source/test/intltest/intltest.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/intltest.vcxproj rename to deps/icu/source/test/intltest/intltest.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/intltest.vcxproj.filters b/deps/icu/source/test/intltest/intltest.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/intltest.vcxproj.filters rename to deps/icu/source/test/intltest/intltest.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itercoll.cpp b/deps/icu/source/test/intltest/itercoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itercoll.cpp rename to deps/icu/source/test/intltest/itercoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itercoll.h b/deps/icu/source/test/intltest/itercoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itercoll.h rename to deps/icu/source/test/intltest/itercoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itformat.cpp b/deps/icu/source/test/intltest/itformat.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itformat.cpp rename to deps/icu/source/test/intltest/itformat.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itformat.h b/deps/icu/source/test/intltest/itformat.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itformat.h rename to deps/icu/source/test/intltest/itformat.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itmajor.cpp b/deps/icu/source/test/intltest/itmajor.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itmajor.cpp rename to deps/icu/source/test/intltest/itmajor.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itmajor.h b/deps/icu/source/test/intltest/itmajor.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itmajor.h rename to deps/icu/source/test/intltest/itmajor.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbbi.cpp b/deps/icu/source/test/intltest/itrbbi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbbi.cpp rename to deps/icu/source/test/intltest/itrbbi.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbbi.h b/deps/icu/source/test/intltest/itrbbi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbbi.h rename to deps/icu/source/test/intltest/itrbbi.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnf.cpp b/deps/icu/source/test/intltest/itrbnf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnf.cpp rename to deps/icu/source/test/intltest/itrbnf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnf.h b/deps/icu/source/test/intltest/itrbnf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnf.h rename to deps/icu/source/test/intltest/itrbnf.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnfp.cpp b/deps/icu/source/test/intltest/itrbnfp.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnfp.cpp rename to deps/icu/source/test/intltest/itrbnfp.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnfp.h b/deps/icu/source/test/intltest/itrbnfp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnfp.h rename to deps/icu/source/test/intltest/itrbnfp.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnfrt.cpp b/deps/icu/source/test/intltest/itrbnfrt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnfrt.cpp rename to deps/icu/source/test/intltest/itrbnfrt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itrbnfrt.h b/deps/icu/source/test/intltest/itrbnfrt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itrbnfrt.h rename to deps/icu/source/test/intltest/itrbnfrt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itspoof.cpp b/deps/icu/source/test/intltest/itspoof.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itspoof.cpp rename to deps/icu/source/test/intltest/itspoof.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itspoof.h b/deps/icu/source/test/intltest/itspoof.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itspoof.h rename to deps/icu/source/test/intltest/itspoof.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ittrans.cpp b/deps/icu/source/test/intltest/ittrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ittrans.cpp rename to deps/icu/source/test/intltest/ittrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ittrans.h b/deps/icu/source/test/intltest/ittrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ittrans.h rename to deps/icu/source/test/intltest/ittrans.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itutil.cpp b/deps/icu/source/test/intltest/itutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itutil.cpp rename to deps/icu/source/test/intltest/itutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/itutil.h b/deps/icu/source/test/intltest/itutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/itutil.h rename to deps/icu/source/test/intltest/itutil.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/jacoll.cpp b/deps/icu/source/test/intltest/jacoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/jacoll.cpp rename to deps/icu/source/test/intltest/jacoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/jacoll.h b/deps/icu/source/test/intltest/jacoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/jacoll.h rename to deps/icu/source/test/intltest/jacoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/jamotest.cpp b/deps/icu/source/test/intltest/jamotest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/jamotest.cpp rename to deps/icu/source/test/intltest/jamotest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/jamotest.h b/deps/icu/source/test/intltest/jamotest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/jamotest.h rename to deps/icu/source/test/intltest/jamotest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/lcukocol.cpp b/deps/icu/source/test/intltest/lcukocol.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/lcukocol.cpp rename to deps/icu/source/test/intltest/lcukocol.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/lcukocol.h b/deps/icu/source/test/intltest/lcukocol.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/lcukocol.h rename to deps/icu/source/test/intltest/lcukocol.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/listformattertest.cpp b/deps/icu/source/test/intltest/listformattertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/listformattertest.cpp rename to deps/icu/source/test/intltest/listformattertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/listformattertest.h b/deps/icu/source/test/intltest/listformattertest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/listformattertest.h rename to deps/icu/source/test/intltest/listformattertest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/localebuildertest.cpp b/deps/icu/source/test/intltest/localebuildertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/localebuildertest.cpp rename to deps/icu/source/test/intltest/localebuildertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/localebuildertest.h b/deps/icu/source/test/intltest/localebuildertest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/localebuildertest.h rename to deps/icu/source/test/intltest/localebuildertest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/localematchertest.cpp b/deps/icu/source/test/intltest/localematchertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/localematchertest.cpp rename to deps/icu/source/test/intltest/localematchertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/locnmtst.cpp b/deps/icu/source/test/intltest/locnmtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/locnmtst.cpp rename to deps/icu/source/test/intltest/locnmtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/locnmtst.h b/deps/icu/source/test/intltest/locnmtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/locnmtst.h rename to deps/icu/source/test/intltest/locnmtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/loctest.cpp b/deps/icu/source/test/intltest/loctest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/loctest.cpp rename to deps/icu/source/test/intltest/loctest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/loctest.h b/deps/icu/source/test/intltest/loctest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/loctest.h rename to deps/icu/source/test/intltest/loctest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/lstmbetst.cpp b/deps/icu/source/test/intltest/lstmbetst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/lstmbetst.cpp rename to deps/icu/source/test/intltest/lstmbetst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/lstmbetst.h b/deps/icu/source/test/intltest/lstmbetst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/lstmbetst.h rename to deps/icu/source/test/intltest/lstmbetst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/measfmttest.cpp b/deps/icu/source/test/intltest/measfmttest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/measfmttest.cpp rename to deps/icu/source/test/intltest/measfmttest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/miscdtfm.cpp b/deps/icu/source/test/intltest/miscdtfm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/miscdtfm.cpp rename to deps/icu/source/test/intltest/miscdtfm.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/miscdtfm.h b/deps/icu/source/test/intltest/miscdtfm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/miscdtfm.h rename to deps/icu/source/test/intltest/miscdtfm.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/mnkytst.cpp b/deps/icu/source/test/intltest/mnkytst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/mnkytst.cpp rename to deps/icu/source/test/intltest/mnkytst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/mnkytst.h b/deps/icu/source/test/intltest/mnkytst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/mnkytst.h rename to deps/icu/source/test/intltest/mnkytst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/msfmrgts.cpp b/deps/icu/source/test/intltest/msfmrgts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/msfmrgts.cpp rename to deps/icu/source/test/intltest/msfmrgts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/msfmrgts.h b/deps/icu/source/test/intltest/msfmrgts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/msfmrgts.h rename to deps/icu/source/test/intltest/msfmrgts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nmfmapts.cpp b/deps/icu/source/test/intltest/nmfmapts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nmfmapts.cpp rename to deps/icu/source/test/intltest/nmfmapts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nmfmapts.h b/deps/icu/source/test/intltest/nmfmapts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nmfmapts.h rename to deps/icu/source/test/intltest/nmfmapts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nmfmtrt.cpp b/deps/icu/source/test/intltest/nmfmtrt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nmfmtrt.cpp rename to deps/icu/source/test/intltest/nmfmtrt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nmfmtrt.h b/deps/icu/source/test/intltest/nmfmtrt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nmfmtrt.h rename to deps/icu/source/test/intltest/nmfmtrt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/normconf.cpp b/deps/icu/source/test/intltest/normconf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/normconf.cpp rename to deps/icu/source/test/intltest/normconf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/normconf.h b/deps/icu/source/test/intltest/normconf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/normconf.h rename to deps/icu/source/test/intltest/normconf.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nptrans.cpp b/deps/icu/source/test/intltest/nptrans.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nptrans.cpp rename to deps/icu/source/test/intltest/nptrans.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/nptrans.h b/deps/icu/source/test/intltest/nptrans.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/nptrans.h rename to deps/icu/source/test/intltest/nptrans.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numberformattesttuple.cpp b/deps/icu/source/test/intltest/numberformattesttuple.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numberformattesttuple.cpp rename to deps/icu/source/test/intltest/numberformattesttuple.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numberformattesttuple.h b/deps/icu/source/test/intltest/numberformattesttuple.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numberformattesttuple.h rename to deps/icu/source/test/intltest/numberformattesttuple.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest.h b/deps/icu/source/test/intltest/numbertest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest.h rename to deps/icu/source/test/intltest/numbertest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_affixutils.cpp b/deps/icu/source/test/intltest/numbertest_affixutils.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_affixutils.cpp rename to deps/icu/source/test/intltest/numbertest_affixutils.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_api.cpp b/deps/icu/source/test/intltest/numbertest_api.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_api.cpp rename to deps/icu/source/test/intltest/numbertest_api.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_decimalquantity.cpp b/deps/icu/source/test/intltest/numbertest_decimalquantity.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_decimalquantity.cpp rename to deps/icu/source/test/intltest/numbertest_decimalquantity.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_doubleconversion.cpp b/deps/icu/source/test/intltest/numbertest_doubleconversion.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_doubleconversion.cpp rename to deps/icu/source/test/intltest/numbertest_doubleconversion.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_modifiers.cpp b/deps/icu/source/test/intltest/numbertest_modifiers.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_modifiers.cpp rename to deps/icu/source/test/intltest/numbertest_modifiers.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_parse.cpp b/deps/icu/source/test/intltest/numbertest_parse.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_parse.cpp rename to deps/icu/source/test/intltest/numbertest_parse.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_patternmodifier.cpp b/deps/icu/source/test/intltest/numbertest_patternmodifier.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_patternmodifier.cpp rename to deps/icu/source/test/intltest/numbertest_patternmodifier.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_patternstring.cpp b/deps/icu/source/test/intltest/numbertest_patternstring.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_patternstring.cpp rename to deps/icu/source/test/intltest/numbertest_patternstring.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_permutation.cpp b/deps/icu/source/test/intltest/numbertest_permutation.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_permutation.cpp rename to deps/icu/source/test/intltest/numbertest_permutation.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_range.cpp b/deps/icu/source/test/intltest/numbertest_range.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_range.cpp rename to deps/icu/source/test/intltest/numbertest_range.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numbertest_skeletons.cpp b/deps/icu/source/test/intltest/numbertest_skeletons.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numbertest_skeletons.cpp rename to deps/icu/source/test/intltest/numbertest_skeletons.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numfmtdatadriventest.cpp b/deps/icu/source/test/intltest/numfmtdatadriventest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numfmtdatadriventest.cpp rename to deps/icu/source/test/intltest/numfmtdatadriventest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numfmtspectest.cpp b/deps/icu/source/test/intltest/numfmtspectest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numfmtspectest.cpp rename to deps/icu/source/test/intltest/numfmtspectest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numfmtst.cpp b/deps/icu/source/test/intltest/numfmtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numfmtst.cpp rename to deps/icu/source/test/intltest/numfmtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numfmtst.h b/deps/icu/source/test/intltest/numfmtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numfmtst.h rename to deps/icu/source/test/intltest/numfmtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numrgts.cpp b/deps/icu/source/test/intltest/numrgts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numrgts.cpp rename to deps/icu/source/test/intltest/numrgts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/numrgts.h b/deps/icu/source/test/intltest/numrgts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/numrgts.h rename to deps/icu/source/test/intltest/numrgts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/pluralmaptest.cpp b/deps/icu/source/test/intltest/pluralmaptest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/pluralmaptest.cpp rename to deps/icu/source/test/intltest/pluralmaptest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/plurfmts.cpp b/deps/icu/source/test/intltest/plurfmts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/plurfmts.cpp rename to deps/icu/source/test/intltest/plurfmts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/plurfmts.h b/deps/icu/source/test/intltest/plurfmts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/plurfmts.h rename to deps/icu/source/test/intltest/plurfmts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/plurults.cpp b/deps/icu/source/test/intltest/plurults.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/plurults.cpp rename to deps/icu/source/test/intltest/plurults.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/plurults.h b/deps/icu/source/test/intltest/plurults.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/plurults.h rename to deps/icu/source/test/intltest/plurults.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/pptest.cpp b/deps/icu/source/test/intltest/pptest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/pptest.cpp rename to deps/icu/source/test/intltest/pptest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/pptest.h b/deps/icu/source/test/intltest/pptest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/pptest.h rename to deps/icu/source/test/intltest/pptest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/punyref.cpp b/deps/icu/source/test/intltest/punyref.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/punyref.cpp rename to deps/icu/source/test/intltest/punyref.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/punyref.h b/deps/icu/source/test/intltest/punyref.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/punyref.h rename to deps/icu/source/test/intltest/punyref.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/quantityformattertest.cpp b/deps/icu/source/test/intltest/quantityformattertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/quantityformattertest.cpp rename to deps/icu/source/test/intltest/quantityformattertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbiapts.cpp b/deps/icu/source/test/intltest/rbbiapts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbiapts.cpp rename to deps/icu/source/test/intltest/rbbiapts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbiapts.h b/deps/icu/source/test/intltest/rbbiapts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbiapts.h rename to deps/icu/source/test/intltest/rbbiapts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbimonkeytest.cpp b/deps/icu/source/test/intltest/rbbimonkeytest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbimonkeytest.cpp rename to deps/icu/source/test/intltest/rbbimonkeytest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbimonkeytest.h b/deps/icu/source/test/intltest/rbbimonkeytest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbimonkeytest.h rename to deps/icu/source/test/intltest/rbbimonkeytest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbitst.cpp b/deps/icu/source/test/intltest/rbbitst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbitst.cpp rename to deps/icu/source/test/intltest/rbbitst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/rbbitst.h b/deps/icu/source/test/intltest/rbbitst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/rbbitst.h rename to deps/icu/source/test/intltest/rbbitst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regcoll.cpp b/deps/icu/source/test/intltest/regcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regcoll.cpp rename to deps/icu/source/test/intltest/regcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regcoll.h b/deps/icu/source/test/intltest/regcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regcoll.h rename to deps/icu/source/test/intltest/regcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regextst.cpp b/deps/icu/source/test/intltest/regextst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regextst.cpp rename to deps/icu/source/test/intltest/regextst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regextst.h b/deps/icu/source/test/intltest/regextst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regextst.h rename to deps/icu/source/test/intltest/regextst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regiontst.cpp b/deps/icu/source/test/intltest/regiontst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regiontst.cpp rename to deps/icu/source/test/intltest/regiontst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/regiontst.h b/deps/icu/source/test/intltest/regiontst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/regiontst.h rename to deps/icu/source/test/intltest/regiontst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/reldatefmttest.cpp b/deps/icu/source/test/intltest/reldatefmttest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/reldatefmttest.cpp rename to deps/icu/source/test/intltest/reldatefmttest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/reptest.cpp b/deps/icu/source/test/intltest/reptest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/reptest.cpp rename to deps/icu/source/test/intltest/reptest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/reptest.h b/deps/icu/source/test/intltest/reptest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/reptest.h rename to deps/icu/source/test/intltest/reptest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/restest.cpp b/deps/icu/source/test/intltest/restest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/restest.cpp rename to deps/icu/source/test/intltest/restest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/restest.h b/deps/icu/source/test/intltest/restest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/restest.h rename to deps/icu/source/test/intltest/restest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/restsnew.cpp b/deps/icu/source/test/intltest/restsnew.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/restsnew.cpp rename to deps/icu/source/test/intltest/restsnew.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/restsnew.h b/deps/icu/source/test/intltest/restsnew.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/restsnew.h rename to deps/icu/source/test/intltest/restsnew.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/scientificnumberformattertest.cpp b/deps/icu/source/test/intltest/scientificnumberformattertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/scientificnumberformattertest.cpp rename to deps/icu/source/test/intltest/scientificnumberformattertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/sdtfmtts.cpp b/deps/icu/source/test/intltest/sdtfmtts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/sdtfmtts.cpp rename to deps/icu/source/test/intltest/sdtfmtts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/sdtfmtts.h b/deps/icu/source/test/intltest/sdtfmtts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/sdtfmtts.h rename to deps/icu/source/test/intltest/sdtfmtts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/selfmts.cpp b/deps/icu/source/test/intltest/selfmts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/selfmts.cpp rename to deps/icu/source/test/intltest/selfmts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/selfmts.h b/deps/icu/source/test/intltest/selfmts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/selfmts.h rename to deps/icu/source/test/intltest/selfmts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/sfwdchit.cpp b/deps/icu/source/test/intltest/sfwdchit.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/sfwdchit.cpp rename to deps/icu/source/test/intltest/sfwdchit.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/sfwdchit.h b/deps/icu/source/test/intltest/sfwdchit.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/sfwdchit.h rename to deps/icu/source/test/intltest/sfwdchit.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/simpleformattertest.cpp b/deps/icu/source/test/intltest/simpleformattertest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/simpleformattertest.cpp rename to deps/icu/source/test/intltest/simpleformattertest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/simplethread.cpp b/deps/icu/source/test/intltest/simplethread.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/simplethread.cpp rename to deps/icu/source/test/intltest/simplethread.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/simplethread.h b/deps/icu/source/test/intltest/simplethread.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/simplethread.h rename to deps/icu/source/test/intltest/simplethread.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/srchtest.cpp b/deps/icu/source/test/intltest/srchtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/srchtest.cpp rename to deps/icu/source/test/intltest/srchtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/srchtest.h b/deps/icu/source/test/intltest/srchtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/srchtest.h rename to deps/icu/source/test/intltest/srchtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ssearch.cpp b/deps/icu/source/test/intltest/ssearch.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ssearch.cpp rename to deps/icu/source/test/intltest/ssearch.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ssearch.h b/deps/icu/source/test/intltest/ssearch.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ssearch.h rename to deps/icu/source/test/intltest/ssearch.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/static_unisets_test.cpp b/deps/icu/source/test/intltest/static_unisets_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/static_unisets_test.cpp rename to deps/icu/source/test/intltest/static_unisets_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/strcase.cpp b/deps/icu/source/test/intltest/strcase.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/strcase.cpp rename to deps/icu/source/test/intltest/strcase.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/string_segment_test.cpp b/deps/icu/source/test/intltest/string_segment_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/string_segment_test.cpp rename to deps/icu/source/test/intltest/string_segment_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/strtest.cpp b/deps/icu/source/test/intltest/strtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/strtest.cpp rename to deps/icu/source/test/intltest/strtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/strtest.h b/deps/icu/source/test/intltest/strtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/strtest.h rename to deps/icu/source/test/intltest/strtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/svccoll.cpp b/deps/icu/source/test/intltest/svccoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/svccoll.cpp rename to deps/icu/source/test/intltest/svccoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/svccoll.h b/deps/icu/source/test/intltest/svccoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/svccoll.h rename to deps/icu/source/test/intltest/svccoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tchcfmt.cpp b/deps/icu/source/test/intltest/tchcfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tchcfmt.cpp rename to deps/icu/source/test/intltest/tchcfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tchcfmt.h b/deps/icu/source/test/intltest/tchcfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tchcfmt.h rename to deps/icu/source/test/intltest/tchcfmt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/testidn.cpp b/deps/icu/source/test/intltest/testidn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/testidn.cpp rename to deps/icu/source/test/intltest/testidn.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/testidna.cpp b/deps/icu/source/test/intltest/testidna.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/testidna.cpp rename to deps/icu/source/test/intltest/testidna.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/testidna.h b/deps/icu/source/test/intltest/testidna.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/testidna.h rename to deps/icu/source/test/intltest/testidna.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/testutil.cpp b/deps/icu/source/test/intltest/testutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/testutil.cpp rename to deps/icu/source/test/intltest/testutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/testutil.h b/deps/icu/source/test/intltest/testutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/testutil.h rename to deps/icu/source/test/intltest/testutil.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/textfile.cpp b/deps/icu/source/test/intltest/textfile.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/textfile.cpp rename to deps/icu/source/test/intltest/textfile.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/textfile.h b/deps/icu/source/test/intltest/textfile.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/textfile.h rename to deps/icu/source/test/intltest/textfile.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tfsmalls.cpp b/deps/icu/source/test/intltest/tfsmalls.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tfsmalls.cpp rename to deps/icu/source/test/intltest/tfsmalls.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tfsmalls.h b/deps/icu/source/test/intltest/tfsmalls.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tfsmalls.h rename to deps/icu/source/test/intltest/tfsmalls.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/thcoll.cpp b/deps/icu/source/test/intltest/thcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/thcoll.cpp rename to deps/icu/source/test/intltest/thcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/thcoll.h b/deps/icu/source/test/intltest/thcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/thcoll.h rename to deps/icu/source/test/intltest/thcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tmsgfmt.cpp b/deps/icu/source/test/intltest/tmsgfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tmsgfmt.cpp rename to deps/icu/source/test/intltest/tmsgfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tmsgfmt.h b/deps/icu/source/test/intltest/tmsgfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tmsgfmt.h rename to deps/icu/source/test/intltest/tmsgfmt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tokiter.cpp b/deps/icu/source/test/intltest/tokiter.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tokiter.cpp rename to deps/icu/source/test/intltest/tokiter.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tokiter.h b/deps/icu/source/test/intltest/tokiter.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tokiter.h rename to deps/icu/source/test/intltest/tokiter.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transapi.cpp b/deps/icu/source/test/intltest/transapi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transapi.cpp rename to deps/icu/source/test/intltest/transapi.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transapi.h b/deps/icu/source/test/intltest/transapi.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transapi.h rename to deps/icu/source/test/intltest/transapi.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transrt.cpp b/deps/icu/source/test/intltest/transrt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transrt.cpp rename to deps/icu/source/test/intltest/transrt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transrt.h b/deps/icu/source/test/intltest/transrt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transrt.h rename to deps/icu/source/test/intltest/transrt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transtst.cpp b/deps/icu/source/test/intltest/transtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transtst.cpp rename to deps/icu/source/test/intltest/transtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/transtst.h b/deps/icu/source/test/intltest/transtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/transtst.h rename to deps/icu/source/test/intltest/transtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/trcoll.cpp b/deps/icu/source/test/intltest/trcoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/trcoll.cpp rename to deps/icu/source/test/intltest/trcoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/trcoll.h b/deps/icu/source/test/intltest/trcoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/trcoll.h rename to deps/icu/source/test/intltest/trcoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/trnserr.cpp b/deps/icu/source/test/intltest/trnserr.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/trnserr.cpp rename to deps/icu/source/test/intltest/trnserr.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/trnserr.h b/deps/icu/source/test/intltest/trnserr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/trnserr.h rename to deps/icu/source/test/intltest/trnserr.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tscoll.cpp b/deps/icu/source/test/intltest/tscoll.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tscoll.cpp rename to deps/icu/source/test/intltest/tscoll.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tscoll.h b/deps/icu/source/test/intltest/tscoll.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tscoll.h rename to deps/icu/source/test/intltest/tscoll.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdate.cpp b/deps/icu/source/test/intltest/tsdate.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdate.cpp rename to deps/icu/source/test/intltest/tsdate.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdate.h b/deps/icu/source/test/intltest/tsdate.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdate.h rename to deps/icu/source/test/intltest/tsdate.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdcfmsy.cpp b/deps/icu/source/test/intltest/tsdcfmsy.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdcfmsy.cpp rename to deps/icu/source/test/intltest/tsdcfmsy.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdcfmsy.h b/deps/icu/source/test/intltest/tsdcfmsy.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdcfmsy.h rename to deps/icu/source/test/intltest/tsdcfmsy.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdtfmsy.cpp b/deps/icu/source/test/intltest/tsdtfmsy.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdtfmsy.cpp rename to deps/icu/source/test/intltest/tsdtfmsy.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsdtfmsy.h b/deps/icu/source/test/intltest/tsdtfmsy.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsdtfmsy.h rename to deps/icu/source/test/intltest/tsdtfmsy.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsmthred.cpp b/deps/icu/source/test/intltest/tsmthred.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsmthred.cpp rename to deps/icu/source/test/intltest/tsmthred.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsmthred.h b/deps/icu/source/test/intltest/tsmthred.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsmthred.h rename to deps/icu/source/test/intltest/tsmthred.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsnmfmt.cpp b/deps/icu/source/test/intltest/tsnmfmt.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsnmfmt.cpp rename to deps/icu/source/test/intltest/tsnmfmt.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsnmfmt.h b/deps/icu/source/test/intltest/tsnmfmt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsnmfmt.h rename to deps/icu/source/test/intltest/tsnmfmt.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsputil.cpp b/deps/icu/source/test/intltest/tsputil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsputil.cpp rename to deps/icu/source/test/intltest/tsputil.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tsputil.h b/deps/icu/source/test/intltest/tsputil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tsputil.h rename to deps/icu/source/test/intltest/tsputil.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tstnorm.cpp b/deps/icu/source/test/intltest/tstnorm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tstnorm.cpp rename to deps/icu/source/test/intltest/tstnorm.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tstnorm.h b/deps/icu/source/test/intltest/tstnorm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tstnorm.h rename to deps/icu/source/test/intltest/tstnorm.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tstnrapi.cpp b/deps/icu/source/test/intltest/tstnrapi.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tstnrapi.cpp rename to deps/icu/source/test/intltest/tstnrapi.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tufmtts.cpp b/deps/icu/source/test/intltest/tufmtts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tufmtts.cpp rename to deps/icu/source/test/intltest/tufmtts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzbdtest.cpp b/deps/icu/source/test/intltest/tzbdtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzbdtest.cpp rename to deps/icu/source/test/intltest/tzbdtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzbdtest.h b/deps/icu/source/test/intltest/tzbdtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzbdtest.h rename to deps/icu/source/test/intltest/tzbdtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzfmttst.cpp b/deps/icu/source/test/intltest/tzfmttst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzfmttst.cpp rename to deps/icu/source/test/intltest/tzfmttst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzfmttst.h b/deps/icu/source/test/intltest/tzfmttst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzfmttst.h rename to deps/icu/source/test/intltest/tzfmttst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzoffloc.cpp b/deps/icu/source/test/intltest/tzoffloc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzoffloc.cpp rename to deps/icu/source/test/intltest/tzoffloc.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzoffloc.h b/deps/icu/source/test/intltest/tzoffloc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzoffloc.h rename to deps/icu/source/test/intltest/tzoffloc.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzregts.cpp b/deps/icu/source/test/intltest/tzregts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzregts.cpp rename to deps/icu/source/test/intltest/tzregts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzregts.h b/deps/icu/source/test/intltest/tzregts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzregts.h rename to deps/icu/source/test/intltest/tzregts.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzrulets.cpp b/deps/icu/source/test/intltest/tzrulets.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzrulets.cpp rename to deps/icu/source/test/intltest/tzrulets.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tzrulets.h b/deps/icu/source/test/intltest/tzrulets.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tzrulets.h rename to deps/icu/source/test/intltest/tzrulets.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tztest.cpp b/deps/icu/source/test/intltest/tztest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tztest.cpp rename to deps/icu/source/test/intltest/tztest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/tztest.h b/deps/icu/source/test/intltest/tztest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/tztest.h rename to deps/icu/source/test/intltest/tztest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ucaconf.cpp b/deps/icu/source/test/intltest/ucaconf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ucaconf.cpp rename to deps/icu/source/test/intltest/ucaconf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ucaconf.h b/deps/icu/source/test/intltest/ucaconf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ucaconf.h rename to deps/icu/source/test/intltest/ucaconf.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ucdtest.cpp b/deps/icu/source/test/intltest/ucdtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ucdtest.cpp rename to deps/icu/source/test/intltest/ucdtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ucdtest.h b/deps/icu/source/test/intltest/ucdtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ucdtest.h rename to deps/icu/source/test/intltest/ucdtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ucharstrietest.cpp b/deps/icu/source/test/intltest/ucharstrietest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ucharstrietest.cpp rename to deps/icu/source/test/intltest/ucharstrietest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/unifiedcachetest.cpp b/deps/icu/source/test/intltest/unifiedcachetest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/unifiedcachetest.cpp rename to deps/icu/source/test/intltest/unifiedcachetest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/units_data_test.cpp b/deps/icu/source/test/intltest/units_data_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/units_data_test.cpp rename to deps/icu/source/test/intltest/units_data_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/units_router_test.cpp b/deps/icu/source/test/intltest/units_router_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/units_router_test.cpp rename to deps/icu/source/test/intltest/units_router_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/units_test.cpp b/deps/icu/source/test/intltest/units_test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/units_test.cpp rename to deps/icu/source/test/intltest/units_test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/uobjtest.cpp b/deps/icu/source/test/intltest/uobjtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/uobjtest.cpp rename to deps/icu/source/test/intltest/uobjtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/uobjtest.h b/deps/icu/source/test/intltest/uobjtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/uobjtest.h rename to deps/icu/source/test/intltest/uobjtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/usettest.cpp b/deps/icu/source/test/intltest/usettest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/usettest.cpp rename to deps/icu/source/test/intltest/usettest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/usettest.h b/deps/icu/source/test/intltest/usettest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/usettest.h rename to deps/icu/source/test/intltest/usettest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ustrtest.cpp b/deps/icu/source/test/intltest/ustrtest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ustrtest.cpp rename to deps/icu/source/test/intltest/ustrtest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/ustrtest.h b/deps/icu/source/test/intltest/ustrtest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/ustrtest.h rename to deps/icu/source/test/intltest/ustrtest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/uts46test.cpp b/deps/icu/source/test/intltest/uts46test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/uts46test.cpp rename to deps/icu/source/test/intltest/uts46test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/utxttest.cpp b/deps/icu/source/test/intltest/utxttest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/utxttest.cpp rename to deps/icu/source/test/intltest/utxttest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/utxttest.h b/deps/icu/source/test/intltest/utxttest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/utxttest.h rename to deps/icu/source/test/intltest/utxttest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/uvectest.cpp b/deps/icu/source/test/intltest/uvectest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/uvectest.cpp rename to deps/icu/source/test/intltest/uvectest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/uvectest.h b/deps/icu/source/test/intltest/uvectest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/uvectest.h rename to deps/icu/source/test/intltest/uvectest.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/v32test.cpp b/deps/icu/source/test/intltest/v32test.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/v32test.cpp rename to deps/icu/source/test/intltest/v32test.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/v32test.h b/deps/icu/source/test/intltest/v32test.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/v32test.h rename to deps/icu/source/test/intltest/v32test.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/windttst.cpp b/deps/icu/source/test/intltest/windttst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/windttst.cpp rename to deps/icu/source/test/intltest/windttst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/windttst.h b/deps/icu/source/test/intltest/windttst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/windttst.h rename to deps/icu/source/test/intltest/windttst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/winnmtst.cpp b/deps/icu/source/test/intltest/winnmtst.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/winnmtst.cpp rename to deps/icu/source/test/intltest/winnmtst.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/winnmtst.h b/deps/icu/source/test/intltest/winnmtst.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/winnmtst.h rename to deps/icu/source/test/intltest/winnmtst.h diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/winutil.cpp b/deps/icu/source/test/intltest/winutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/winutil.cpp rename to deps/icu/source/test/intltest/winutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/intltest/winutil.h b/deps/icu/source/test/intltest/winutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/intltest/winutil.h rename to deps/icu/source/test/intltest/winutil.h diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/Makefile.in b/deps/icu/source/test/iotest/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/Makefile.in rename to deps/icu/source/test/iotest/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/filetst.c b/deps/icu/source/test/iotest/filetst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/filetst.c rename to deps/icu/source/test/iotest/filetst.c diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/iotest.cpp b/deps/icu/source/test/iotest/iotest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/iotest.cpp rename to deps/icu/source/test/iotest/iotest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/iotest.h b/deps/icu/source/test/iotest/iotest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/iotest.h rename to deps/icu/source/test/iotest/iotest.h diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/iotest.vcxproj b/deps/icu/source/test/iotest/iotest.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/iotest.vcxproj rename to deps/icu/source/test/iotest/iotest.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/iotest.vcxproj.filters b/deps/icu/source/test/iotest/iotest.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/iotest.vcxproj.filters rename to deps/icu/source/test/iotest/iotest.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/stream.cpp b/deps/icu/source/test/iotest/stream.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/stream.cpp rename to deps/icu/source/test/iotest/stream.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/strtst.c b/deps/icu/source/test/iotest/strtst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/strtst.c rename to deps/icu/source/test/iotest/strtst.c diff --git a/bootstrap/cxx/deps/icu/source/test/iotest/trnstst.c b/deps/icu/source/test/iotest/trnstst.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/iotest/trnstst.c rename to deps/icu/source/test/iotest/trnstst.c diff --git a/bootstrap/cxx/deps/icu/source/test/letest/FontObject.cpp b/deps/icu/source/test/letest/FontObject.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/FontObject.cpp rename to deps/icu/source/test/letest/FontObject.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/FontObject.h b/deps/icu/source/test/letest/FontObject.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/FontObject.h rename to deps/icu/source/test/letest/FontObject.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/FontTableCache.cpp b/deps/icu/source/test/letest/FontTableCache.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/FontTableCache.cpp rename to deps/icu/source/test/letest/FontTableCache.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/FontTableCache.h b/deps/icu/source/test/letest/FontTableCache.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/FontTableCache.h rename to deps/icu/source/test/letest/FontTableCache.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/Makefile.in b/deps/icu/source/test/letest/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/Makefile.in rename to deps/icu/source/test/letest/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/letest/PortableFontInstance.cpp b/deps/icu/source/test/letest/PortableFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/PortableFontInstance.cpp rename to deps/icu/source/test/letest/PortableFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/PortableFontInstance.h b/deps/icu/source/test/letest/PortableFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/PortableFontInstance.h rename to deps/icu/source/test/letest/PortableFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/SimpleFontInstance.cpp b/deps/icu/source/test/letest/SimpleFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/SimpleFontInstance.cpp rename to deps/icu/source/test/letest/SimpleFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/SimpleFontInstance.h b/deps/icu/source/test/letest/SimpleFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/SimpleFontInstance.h rename to deps/icu/source/test/letest/SimpleFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cfonts.cpp b/deps/icu/source/test/letest/cfonts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cfonts.cpp rename to deps/icu/source/test/letest/cfonts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cfonts.h b/deps/icu/source/test/letest/cfonts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cfonts.h rename to deps/icu/source/test/letest/cfonts.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cletest.c b/deps/icu/source/test/letest/cletest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cletest.c rename to deps/icu/source/test/letest/cletest.c diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cletest.sln b/deps/icu/source/test/letest/cletest.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cletest.sln rename to deps/icu/source/test/letest/cletest.sln diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cletest.vcxproj b/deps/icu/source/test/letest/cletest.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cletest.vcxproj rename to deps/icu/source/test/letest/cletest.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cletest.vcxproj.filters b/deps/icu/source/test/letest/cletest.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cletest.vcxproj.filters rename to deps/icu/source/test/letest/cletest.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cmaps.cpp b/deps/icu/source/test/letest/cmaps.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cmaps.cpp rename to deps/icu/source/test/letest/cmaps.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/cmaps.h b/deps/icu/source/test/letest/cmaps.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/cmaps.h rename to deps/icu/source/test/letest/cmaps.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/gendata.cpp b/deps/icu/source/test/letest/gendata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/gendata.cpp rename to deps/icu/source/test/letest/gendata.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/gendata.sln b/deps/icu/source/test/letest/gendata.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/gendata.sln rename to deps/icu/source/test/letest/gendata.sln diff --git a/bootstrap/cxx/deps/icu/source/test/letest/gendata.vcxproj b/deps/icu/source/test/letest/gendata.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/gendata.vcxproj rename to deps/icu/source/test/letest/gendata.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/letest/gendata.vcxproj.filters b/deps/icu/source/test/letest/gendata.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/gendata.vcxproj.filters rename to deps/icu/source/test/letest/gendata.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/letest/gendata.xml b/deps/icu/source/test/letest/gendata.xml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/gendata.xml rename to deps/icu/source/test/letest/gendata.xml diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letest.cpp b/deps/icu/source/test/letest/letest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letest.cpp rename to deps/icu/source/test/letest/letest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letest.h b/deps/icu/source/test/letest/letest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letest.h rename to deps/icu/source/test/letest/letest.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letest.sln b/deps/icu/source/test/letest/letest.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letest.sln rename to deps/icu/source/test/letest/letest.sln diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letest.vcxproj b/deps/icu/source/test/letest/letest.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letest.vcxproj rename to deps/icu/source/test/letest/letest.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letest.vcxproj.filters b/deps/icu/source/test/letest/letest.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letest.vcxproj.filters rename to deps/icu/source/test/letest/letest.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letsutil.cpp b/deps/icu/source/test/letest/letsutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letsutil.cpp rename to deps/icu/source/test/letest/letsutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/letsutil.h b/deps/icu/source/test/letest/letsutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/letsutil.h rename to deps/icu/source/test/letest/letsutil.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/readme.html b/deps/icu/source/test/letest/readme.html similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/readme.html rename to deps/icu/source/test/letest/readme.html diff --git a/bootstrap/cxx/deps/icu/source/test/letest/sfnt.h b/deps/icu/source/test/letest/sfnt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/sfnt.h rename to deps/icu/source/test/letest/sfnt.h diff --git a/bootstrap/cxx/deps/icu/source/test/letest/testdata.cpp b/deps/icu/source/test/letest/testdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/testdata.cpp rename to deps/icu/source/test/letest/testdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/xmlreader.cpp b/deps/icu/source/test/letest/xmlreader.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/xmlreader.cpp rename to deps/icu/source/test/letest/xmlreader.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/letest/xmlreader.h b/deps/icu/source/test/letest/xmlreader.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/letest/xmlreader.h rename to deps/icu/source/test/letest/xmlreader.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.cpp b/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.cpp rename to deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.h b/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.h rename to deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj b/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj rename to deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters b/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters rename to deps/icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/Makefile.in b/deps/icu/source/test/perf/DateFmtPerf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/Makefile.in rename to deps/icu/source/test/perf/DateFmtPerf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/ReadMe.txt b/deps/icu/source/test/perf/DateFmtPerf/ReadMe.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/ReadMe.txt rename to deps/icu/source/test/perf/DateFmtPerf/ReadMe.txt diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/breakdata.h b/deps/icu/source/test/perf/DateFmtPerf/breakdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/breakdata.h rename to deps/icu/source/test/perf/DateFmtPerf/breakdata.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/collationdata.h b/deps/icu/source/test/perf/DateFmtPerf/collationdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/collationdata.h rename to deps/icu/source/test/perf/DateFmtPerf/collationdata.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/datedata.h b/deps/icu/source/test/perf/DateFmtPerf/datedata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/DateFmtPerf/datedata.h rename to deps/icu/source/test/perf/DateFmtPerf/datedata.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/Makefile.in b/deps/icu/source/test/perf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/Makefile.in rename to deps/icu/source/test/perf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/README b/deps/icu/source/test/perf/README similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/README rename to deps/icu/source/test/perf/README diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/CharPerf.pl b/deps/icu/source/test/perf/charperf/CharPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/CharPerf.pl rename to deps/icu/source/test/perf/charperf/CharPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/CharPerf_r.pl b/deps/icu/source/test/perf/charperf/CharPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/CharPerf_r.pl rename to deps/icu/source/test/perf/charperf/CharPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/Makefile.in b/deps/icu/source/test/perf/charperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/Makefile.in rename to deps/icu/source/test/perf/charperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.cpp b/deps/icu/source/test/perf/charperf/charperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.cpp rename to deps/icu/source/test/perf/charperf/charperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.h b/deps/icu/source/test/perf/charperf/charperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.h rename to deps/icu/source/test/perf/charperf/charperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.vcxproj b/deps/icu/source/test/perf/charperf/charperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.vcxproj rename to deps/icu/source/test/perf/charperf/charperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.vcxproj.filters b/deps/icu/source/test/perf/charperf/charperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/charperf/charperf.vcxproj.filters rename to deps/icu/source/test/perf/charperf/charperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collationperf/CollPerf.pl b/deps/icu/source/test/perf/collationperf/CollPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collationperf/CollPerf.pl rename to deps/icu/source/test/perf/collationperf/CollPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collationperf/Makefile.in b/deps/icu/source/test/perf/collationperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collationperf/Makefile.in rename to deps/icu/source/test/perf/collationperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collationperf/collperf.cpp b/deps/icu/source/test/perf/collationperf/collperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collationperf/collperf.cpp rename to deps/icu/source/test/perf/collationperf/collperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collationperf/readme.html b/deps/icu/source/test/perf/collationperf/readme.html similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collationperf/readme.html rename to deps/icu/source/test/perf/collationperf/readme.html diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/CollPerf.pl b/deps/icu/source/test/perf/collperf/CollPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/CollPerf.pl rename to deps/icu/source/test/perf/collperf/CollPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/CollPerf_r.pl b/deps/icu/source/test/perf/collperf/CollPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/CollPerf_r.pl rename to deps/icu/source/test/perf/collperf/CollPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/Makefile.in b/deps/icu/source/test/perf/collperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/Makefile.in rename to deps/icu/source/test/perf/collperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.cpp b/deps/icu/source/test/perf/collperf/collperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.cpp rename to deps/icu/source/test/perf/collperf/collperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.vcxproj b/deps/icu/source/test/perf/collperf/collperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.vcxproj rename to deps/icu/source/test/perf/collperf/collperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.vcxproj.filters b/deps/icu/source/test/perf/collperf/collperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf/collperf.vcxproj.filters rename to deps/icu/source/test/perf/collperf/collperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf2/CollPerf2_r.pl b/deps/icu/source/test/perf/collperf2/CollPerf2_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf2/CollPerf2_r.pl rename to deps/icu/source/test/perf/collperf2/CollPerf2_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf2/Makefile.in b/deps/icu/source/test/perf/collperf2/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf2/Makefile.in rename to deps/icu/source/test/perf/collperf2/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.cpp b/deps/icu/source/test/perf/collperf2/collperf2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.cpp rename to deps/icu/source/test/perf/collperf2/collperf2.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.vcxproj b/deps/icu/source/test/perf/collperf2/collperf2.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.vcxproj rename to deps/icu/source/test/perf/collperf2/collperf2.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.vcxproj.filters b/deps/icu/source/test/perf/collperf2/collperf2.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/collperf2/collperf2.vcxproj.filters rename to deps/icu/source/test/perf/collperf2/collperf2.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/ConvPerf_r.pl b/deps/icu/source/test/perf/convperf/ConvPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/ConvPerf_r.pl rename to deps/icu/source/test/perf/convperf/ConvPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/Makefile.in b/deps/icu/source/test/perf/convperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/Makefile.in rename to deps/icu/source/test/perf/convperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.cpp b/deps/icu/source/test/perf/convperf/convperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.cpp rename to deps/icu/source/test/perf/convperf/convperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.h b/deps/icu/source/test/perf/convperf/convperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.h rename to deps/icu/source/test/perf/convperf/convperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.vcxproj b/deps/icu/source/test/perf/convperf/convperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.vcxproj rename to deps/icu/source/test/perf/convperf/convperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.vcxproj.filters b/deps/icu/source/test/perf/convperf/convperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf.vcxproj.filters rename to deps/icu/source/test/perf/convperf/convperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf_ansi.pl b/deps/icu/source/test/perf/convperf/convperf_ansi.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf_ansi.pl rename to deps/icu/source/test/perf/convperf/convperf_ansi.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf_iml.pl b/deps/icu/source/test/perf/convperf/convperf_iml.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/convperf_iml.pl rename to deps/icu/source/test/perf/convperf/convperf_iml.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/convperf/data.h b/deps/icu/source/test/perf/convperf/data.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/convperf/data.h rename to deps/icu/source/test/perf/convperf/data.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/dicttrieperf/Makefile.in b/deps/icu/source/test/perf/dicttrieperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/dicttrieperf/Makefile.in rename to deps/icu/source/test/perf/dicttrieperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/dicttrieperf/dicttrieperf.cpp b/deps/icu/source/test/perf/dicttrieperf/dicttrieperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/dicttrieperf/dicttrieperf.cpp rename to deps/icu/source/test/perf/dicttrieperf/dicttrieperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/Makefile.in b/deps/icu/source/test/perf/howExpensiveIs/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/Makefile.in rename to deps/icu/source/test/perf/howExpensiveIs/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/howExpensiveIs.cpp b/deps/icu/source/test/perf/howExpensiveIs/howExpensiveIs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/howExpensiveIs.cpp rename to deps/icu/source/test/perf/howExpensiveIs/howExpensiveIs.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/readme.txt b/deps/icu/source/test/perf/howExpensiveIs/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/readme.txt rename to deps/icu/source/test/perf/howExpensiveIs/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/sieve.cpp b/deps/icu/source/test/perf/howExpensiveIs/sieve.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/sieve.cpp rename to deps/icu/source/test/perf/howExpensiveIs/sieve.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/sieve.h b/deps/icu/source/test/perf/howExpensiveIs/sieve.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/howExpensiveIs/sieve.h rename to deps/icu/source/test/perf/howExpensiveIs/sieve.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/icuperf2report.xsl b/deps/icu/source/test/perf/icuperf2report.xsl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/icuperf2report.xsl rename to deps/icu/source/test/perf/icuperf2report.xsl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/FontObject.cpp b/deps/icu/source/test/perf/leperf/FontObject.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/FontObject.cpp rename to deps/icu/source/test/perf/leperf/FontObject.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/FontObject.h b/deps/icu/source/test/perf/leperf/FontObject.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/FontObject.h rename to deps/icu/source/test/perf/leperf/FontObject.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/FontTableCache.cpp b/deps/icu/source/test/perf/leperf/FontTableCache.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/FontTableCache.cpp rename to deps/icu/source/test/perf/leperf/FontTableCache.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/FontTableCache.h b/deps/icu/source/test/perf/leperf/FontTableCache.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/FontTableCache.h rename to deps/icu/source/test/perf/leperf/FontTableCache.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/Makefile.in b/deps/icu/source/test/perf/leperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/Makefile.in rename to deps/icu/source/test/perf/leperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/PortableFontInstance.cpp b/deps/icu/source/test/perf/leperf/PortableFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/PortableFontInstance.cpp rename to deps/icu/source/test/perf/leperf/PortableFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/PortableFontInstance.h b/deps/icu/source/test/perf/leperf/PortableFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/PortableFontInstance.h rename to deps/icu/source/test/perf/leperf/PortableFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/SimpleFontInstance.cpp b/deps/icu/source/test/perf/leperf/SimpleFontInstance.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/SimpleFontInstance.cpp rename to deps/icu/source/test/perf/leperf/SimpleFontInstance.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/SimpleFontInstance.h b/deps/icu/source/test/perf/leperf/SimpleFontInstance.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/SimpleFontInstance.h rename to deps/icu/source/test/perf/leperf/SimpleFontInstance.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/cfonts.cpp b/deps/icu/source/test/perf/leperf/cfonts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/cfonts.cpp rename to deps/icu/source/test/perf/leperf/cfonts.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/cfonts.h b/deps/icu/source/test/perf/leperf/cfonts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/cfonts.h rename to deps/icu/source/test/perf/leperf/cfonts.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/cmaps.cpp b/deps/icu/source/test/perf/leperf/cmaps.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/cmaps.cpp rename to deps/icu/source/test/perf/leperf/cmaps.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/cmaps.h b/deps/icu/source/test/perf/leperf/cmaps.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/cmaps.h rename to deps/icu/source/test/perf/leperf/cmaps.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/leperf.cpp b/deps/icu/source/test/perf/leperf/leperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/leperf.cpp rename to deps/icu/source/test/perf/leperf/leperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/letrperf.cpp b/deps/icu/source/test/perf/leperf/letrperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/letrperf.cpp rename to deps/icu/source/test/perf/leperf/letrperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/sfnt.h b/deps/icu/source/test/perf/leperf/sfnt.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/sfnt.h rename to deps/icu/source/test/perf/leperf/sfnt.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/xmlreader.cpp b/deps/icu/source/test/perf/leperf/xmlreader.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/xmlreader.cpp rename to deps/icu/source/test/perf/leperf/xmlreader.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/leperf/xmlreader.h b/deps/icu/source/test/perf/leperf/xmlreader.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/leperf/xmlreader.h rename to deps/icu/source/test/perf/leperf/xmlreader.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/localecanperf/Makefile.in b/deps/icu/source/test/perf/localecanperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/localecanperf/Makefile.in rename to deps/icu/source/test/perf/localecanperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/localecanperf/localecanperf.cpp b/deps/icu/source/test/perf/localecanperf/localecanperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/localecanperf/localecanperf.cpp rename to deps/icu/source/test/perf/localecanperf/localecanperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/localecanperf/runTest.sh b/deps/icu/source/test/perf/localecanperf/runTest.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/localecanperf/runTest.sh rename to deps/icu/source/test/perf/localecanperf/runTest.sh diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/Makefile.in b/deps/icu/source/test/perf/normperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/Makefile.in rename to deps/icu/source/test/perf/normperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/NormPerf.pl b/deps/icu/source/test/perf/normperf/NormPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/NormPerf.pl rename to deps/icu/source/test/perf/normperf/NormPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/NormPerf_r.pl b/deps/icu/source/test/perf/normperf/NormPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/NormPerf_r.pl rename to deps/icu/source/test/perf/normperf/NormPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.cpp b/deps/icu/source/test/perf/normperf/dtfmtrtperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.cpp rename to deps/icu/source/test/perf/normperf/dtfmtrtperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.h b/deps/icu/source/test/perf/normperf/dtfmtrtperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.h rename to deps/icu/source/test/perf/normperf/dtfmtrtperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj b/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj rename to deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters b/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters rename to deps/icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.cpp b/deps/icu/source/test/perf/normperf/normperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.cpp rename to deps/icu/source/test/perf/normperf/normperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.h b/deps/icu/source/test/perf/normperf/normperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.h rename to deps/icu/source/test/perf/normperf/normperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.vcxproj b/deps/icu/source/test/perf/normperf/normperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.vcxproj rename to deps/icu/source/test/perf/normperf/normperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.vcxproj.filters b/deps/icu/source/test/perf/normperf/normperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/normperf.vcxproj.filters rename to deps/icu/source/test/perf/normperf/normperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/normperf/simplenormperf.cpp b/deps/icu/source/test/perf/normperf/simplenormperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/normperf/simplenormperf.cpp rename to deps/icu/source/test/perf/normperf/simplenormperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perf.sln b/deps/icu/source/test/perf/perf.sln similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perf.sln rename to deps/icu/source/test/perf/perf.sln diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perldriver/Common.pl.template b/deps/icu/source/test/perf/perldriver/Common.pl.template similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perldriver/Common.pl.template rename to deps/icu/source/test/perf/perldriver/Common.pl.template diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perldriver/Dataset.pm b/deps/icu/source/test/perf/perldriver/Dataset.pm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perldriver/Dataset.pm rename to deps/icu/source/test/perf/perldriver/Dataset.pm diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perldriver/Format.pm b/deps/icu/source/test/perf/perldriver/Format.pm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perldriver/Format.pm rename to deps/icu/source/test/perf/perldriver/Format.pm diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perldriver/Output.pm b/deps/icu/source/test/perf/perldriver/Output.pm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perldriver/Output.pm rename to deps/icu/source/test/perf/perldriver/Output.pm diff --git a/bootstrap/cxx/deps/icu/source/test/perf/perldriver/PerfFramework.pm b/deps/icu/source/test/perf/perldriver/PerfFramework.pm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/perldriver/PerfFramework.pm rename to deps/icu/source/test/perf/perldriver/PerfFramework.pm diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/Makefile.in b/deps/icu/source/test/perf/strsrchperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/Makefile.in rename to deps/icu/source/test/perf/strsrchperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/StrSrchPerf_r.pl b/deps/icu/source/test/perf/strsrchperf/StrSrchPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/StrSrchPerf_r.pl rename to deps/icu/source/test/perf/strsrchperf/StrSrchPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.cpp b/deps/icu/source/test/perf/strsrchperf/strsrchperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.cpp rename to deps/icu/source/test/perf/strsrchperf/strsrchperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.h b/deps/icu/source/test/perf/strsrchperf/strsrchperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.h rename to deps/icu/source/test/perf/strsrchperf/strsrchperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj b/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj rename to deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters b/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters rename to deps/icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/Makefile.in b/deps/icu/source/test/perf/ubrkperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/Makefile.in rename to deps/icu/source/test/perf/ubrkperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/UBrkPerf_r.pl b/deps/icu/source/test/perf/ubrkperf/UBrkPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/UBrkPerf_r.pl rename to deps/icu/source/test/perf/ubrkperf/UBrkPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.cpp b/deps/icu/source/test/perf/ubrkperf/ubrkperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.cpp rename to deps/icu/source/test/perf/ubrkperf/ubrkperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.dsp b/deps/icu/source/test/perf/ubrkperf/ubrkperf.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.dsp rename to deps/icu/source/test/perf/ubrkperf/ubrkperf.dsp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.h b/deps/icu/source/test/perf/ubrkperf/ubrkperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.h rename to deps/icu/source/test/perf/ubrkperf/ubrkperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj b/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj rename to deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters b/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters rename to deps/icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf20.dsp b/deps/icu/source/test/perf/ubrkperf/ubrkperf20.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperf20.dsp rename to deps/icu/source/test/perf/ubrkperf/ubrkperf20.dsp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperfold.cpp b/deps/icu/source/test/perf/ubrkperf/ubrkperfold.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperfold.cpp rename to deps/icu/source/test/perf/ubrkperf/ubrkperfold.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperfold.dsp b/deps/icu/source/test/perf/ubrkperf/ubrkperfold.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ubrkperf/ubrkperfold.dsp rename to deps/icu/source/test/perf/ubrkperf/ubrkperfold.dsp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.cpp b/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.cpp rename to deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj b/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj rename to deps/icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/Makefile.in b/deps/icu/source/test/perf/unisetperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/Makefile.in rename to deps/icu/source/test/perf/unisetperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/bitset.cpp b/deps/icu/source/test/perf/unisetperf/draft/bitset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/bitset.cpp rename to deps/icu/source/test/perf/unisetperf/draft/bitset.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/contperf.bat b/deps/icu/source/test/perf/unisetperf/draft/contperf.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/contperf.bat rename to deps/icu/source/test/perf/unisetperf/draft/contperf.bat diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/contperf.sh b/deps/icu/source/test/perf/unisetperf/draft/contperf.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/contperf.sh rename to deps/icu/source/test/perf/unisetperf/draft/contperf.sh diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span16perf.bat b/deps/icu/source/test/perf/unisetperf/draft/span16perf.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span16perf.bat rename to deps/icu/source/test/perf/unisetperf/draft/span16perf.bat diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span16perf.sh b/deps/icu/source/test/perf/unisetperf/draft/span16perf.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span16perf.sh rename to deps/icu/source/test/perf/unisetperf/draft/span16perf.sh diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span8perf.bat b/deps/icu/source/test/perf/unisetperf/draft/span8perf.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span8perf.bat rename to deps/icu/source/test/perf/unisetperf/draft/span8perf.bat diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span8perf.sh b/deps/icu/source/test/perf/unisetperf/draft/span8perf.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/span8perf.sh rename to deps/icu/source/test/perf/unisetperf/draft/span8perf.sh diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/trieset.cpp b/deps/icu/source/test/perf/unisetperf/draft/trieset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/trieset.cpp rename to deps/icu/source/test/perf/unisetperf/draft/trieset.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/unicont.h b/deps/icu/source/test/perf/unisetperf/draft/unicont.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/draft/unicont.h rename to deps/icu/source/test/perf/unisetperf/draft/unicont.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.cpp b/deps/icu/source/test/perf/unisetperf/unisetperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.cpp rename to deps/icu/source/test/perf/unisetperf/unisetperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.pl b/deps/icu/source/test/perf/unisetperf/unisetperf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.pl rename to deps/icu/source/test/perf/unisetperf/unisetperf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.vcxproj b/deps/icu/source/test/perf/unisetperf/unisetperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/unisetperf/unisetperf.vcxproj rename to deps/icu/source/test/perf/unisetperf/unisetperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/Makefile.in b/deps/icu/source/test/perf/usetperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/Makefile.in rename to deps/icu/source/test/perf/usetperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/UsetPerf.pl b/deps/icu/source/test/perf/usetperf/UsetPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/UsetPerf.pl rename to deps/icu/source/test/perf/usetperf/UsetPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/bitset.cpp b/deps/icu/source/test/perf/usetperf/bitset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/bitset.cpp rename to deps/icu/source/test/perf/usetperf/bitset.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/bitset.h b/deps/icu/source/test/perf/usetperf/bitset.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/bitset.h rename to deps/icu/source/test/perf/usetperf/bitset.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.cpp b/deps/icu/source/test/perf/usetperf/usetperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.cpp rename to deps/icu/source/test/perf/usetperf/usetperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.vcxproj b/deps/icu/source/test/perf/usetperf/usetperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.vcxproj rename to deps/icu/source/test/perf/usetperf/usetperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.vcxproj.filters b/deps/icu/source/test/perf/usetperf/usetperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/usetperf/usetperf.vcxproj.filters rename to deps/icu/source/test/perf/usetperf/usetperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/Makefile.in b/deps/icu/source/test/perf/ustrperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/Makefile.in rename to deps/icu/source/test/perf/ustrperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/StringPerf.pl b/deps/icu/source/test/perf/ustrperf/StringPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/StringPerf.pl rename to deps/icu/source/test/perf/ustrperf/StringPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/StringPerf_r.pl b/deps/icu/source/test/perf/ustrperf/StringPerf_r.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/StringPerf_r.pl rename to deps/icu/source/test/perf/ustrperf/StringPerf_r.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.cpp b/deps/icu/source/test/perf/ustrperf/stringperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.cpp rename to deps/icu/source/test/perf/ustrperf/stringperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.h b/deps/icu/source/test/perf/ustrperf/stringperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.h rename to deps/icu/source/test/perf/ustrperf/stringperf.h diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj b/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj rename to deps/icu/source/test/perf/ustrperf/stringperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj.filters b/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/ustrperf/stringperf.vcxproj.filters rename to deps/icu/source/test/perf/ustrperf/stringperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utfperf/Makefile.in b/deps/icu/source/test/perf/utfperf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utfperf/Makefile.in rename to deps/icu/source/test/perf/utfperf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utfperf/UtfPerf.pl b/deps/icu/source/test/perf/utfperf/UtfPerf.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utfperf/UtfPerf.pl rename to deps/icu/source/test/perf/utfperf/UtfPerf.pl diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.cpp b/deps/icu/source/test/perf/utfperf/utfperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.cpp rename to deps/icu/source/test/perf/utfperf/utfperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.vcxproj b/deps/icu/source/test/perf/utfperf/utfperf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.vcxproj rename to deps/icu/source/test/perf/utfperf/utfperf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.vcxproj.filters b/deps/icu/source/test/perf/utfperf/utfperf.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utfperf/utfperf.vcxproj.filters rename to deps/icu/source/test/perf/utfperf/utfperf.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/Makefile.in b/deps/icu/source/test/perf/utrie2perf/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/Makefile.in rename to deps/icu/source/test/perf/utrie2perf/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.bat b/deps/icu/source/test/perf/utrie2perf/utrie2perf.bat similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.bat rename to deps/icu/source/test/perf/utrie2perf/utrie2perf.bat diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.cpp b/deps/icu/source/test/perf/utrie2perf/utrie2perf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.cpp rename to deps/icu/source/test/perf/utrie2perf/utrie2perf.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.sh b/deps/icu/source/test/perf/utrie2perf/utrie2perf.sh similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.sh rename to deps/icu/source/test/perf/utrie2perf/utrie2perf.sh diff --git a/bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.vcxproj b/deps/icu/source/test/perf/utrie2perf/utrie2perf.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/perf/utrie2perf/utrie2perf.vcxproj rename to deps/icu/source/test/perf/utrie2perf/utrie2perf.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/BUILDRULES.py b/deps/icu/source/test/testdata/BUILDRULES.py similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/BUILDRULES.py rename to deps/icu/source/test/testdata/BUILDRULES.py diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/BidiCharacterTest.txt b/deps/icu/source/test/testdata/BidiCharacterTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/BidiCharacterTest.txt rename to deps/icu/source/test/testdata/BidiCharacterTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/BidiTest.txt b/deps/icu/source/test/testdata/BidiTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/BidiTest.txt rename to deps/icu/source/test/testdata/BidiTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy.txt b/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy.txt rename to deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy_Test.txt b/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy_Test.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy_Test.txt rename to deps/icu/source/test/testdata/Burmese_graphclust_model5_heavy_Test.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt b/deps/icu/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt rename to deps/icu/source/test/testdata/CollationTest_NON_IGNORABLE_SHORT.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/CollationTest_SHIFTED_SHORT.txt b/deps/icu/source/test/testdata/CollationTest_SHIFTED_SHORT.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/CollationTest_SHIFTED_SHORT.txt rename to deps/icu/source/test/testdata/CollationTest_SHIFTED_SHORT.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/ConverterSelectorTestUTF8.txt b/deps/icu/source/test/testdata/ConverterSelectorTestUTF8.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/ConverterSelectorTestUTF8.txt rename to deps/icu/source/test/testdata/ConverterSelectorTestUTF8.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/GraphemeBreakTest.txt b/deps/icu/source/test/testdata/GraphemeBreakTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/GraphemeBreakTest.txt rename to deps/icu/source/test/testdata/GraphemeBreakTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/IdnaTestV2.txt b/deps/icu/source/test/testdata/IdnaTestV2.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/IdnaTestV2.txt rename to deps/icu/source/test/testdata/IdnaTestV2.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/LineBreakTest.txt b/deps/icu/source/test/testdata/LineBreakTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/LineBreakTest.txt rename to deps/icu/source/test/testdata/LineBreakTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Makefile.in b/deps/icu/source/test/testdata/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Makefile.in rename to deps/icu/source/test/testdata/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/NormalizationTest-3.2.0.txt b/deps/icu/source/test/testdata/NormalizationTest-3.2.0.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/NormalizationTest-3.2.0.txt rename to deps/icu/source/test/testdata/NormalizationTest-3.2.0.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/NumberFormatTestCases.txt b/deps/icu/source/test/testdata/NumberFormatTestCases.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/NumberFormatTestCases.txt rename to deps/icu/source/test/testdata/NumberFormatTestCases.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/SentenceBreakTest.txt b/deps/icu/source/test/testdata/SentenceBreakTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/SentenceBreakTest.txt rename to deps/icu/source/test/testdata/SentenceBreakTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/TestFont1.otf b/deps/icu/source/test/testdata/TestFont1.otf similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/TestFont1.otf rename to deps/icu/source/test/testdata/TestFont1.otf diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy.txt b/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy.txt rename to deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy_Test.txt b/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy_Test.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy_Test.txt rename to deps/icu/source/test/testdata/Thai_codepoints_exclusive_model5_heavy_Test.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy.txt b/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy.txt rename to deps/icu/source/test/testdata/Thai_graphclust_model4_heavy.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy_Test.txt b/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy_Test.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/Thai_graphclust_model4_heavy_Test.txt rename to deps/icu/source/test/testdata/Thai_graphclust_model4_heavy_Test.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/WordBreakTest.txt b/deps/icu/source/test/testdata/WordBreakTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/WordBreakTest.txt rename to deps/icu/source/test/testdata/WordBreakTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/README.md b/deps/icu/source/test/testdata/break_rules/README.md similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/README.md rename to deps/icu/source/test/testdata/break_rules/README.md diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/grapheme.txt b/deps/icu/source/test/testdata/break_rules/grapheme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/grapheme.txt rename to deps/icu/source/test/testdata/break_rules/grapheme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line.txt b/deps/icu/source/test/testdata/break_rules/line.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line.txt rename to deps/icu/source/test/testdata/break_rules/line.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_cj.txt b/deps/icu/source/test/testdata/break_rules/line_cj.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_cj.txt rename to deps/icu/source/test/testdata/break_rules/line_cj.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_loose.txt b/deps/icu/source/test/testdata/break_rules/line_loose.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_loose.txt rename to deps/icu/source/test/testdata/break_rules/line_loose.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_loose_cj.txt b/deps/icu/source/test/testdata/break_rules/line_loose_cj.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_loose_cj.txt rename to deps/icu/source/test/testdata/break_rules/line_loose_cj.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_normal.txt b/deps/icu/source/test/testdata/break_rules/line_normal.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_normal.txt rename to deps/icu/source/test/testdata/break_rules/line_normal.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_normal_cj.txt b/deps/icu/source/test/testdata/break_rules/line_normal_cj.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/line_normal_cj.txt rename to deps/icu/source/test/testdata/break_rules/line_normal_cj.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/sentence.txt b/deps/icu/source/test/testdata/break_rules/sentence.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/sentence.txt rename to deps/icu/source/test/testdata/break_rules/sentence.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/word.txt b/deps/icu/source/test/testdata/break_rules/word.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/word.txt rename to deps/icu/source/test/testdata/break_rules/word.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/break_rules/word_POSIX.txt b/deps/icu/source/test/testdata/break_rules/word_POSIX.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/break_rules/word_POSIX.txt rename to deps/icu/source/test/testdata/break_rules/word_POSIX.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/calendar.txt b/deps/icu/source/test/testdata/calendar.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/calendar.txt rename to deps/icu/source/test/testdata/calendar.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/casing.txt b/deps/icu/source/test/testdata/casing.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/casing.txt rename to deps/icu/source/test/testdata/casing.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/_readme.txt b/deps/icu/source/test/testdata/cldr/units/_readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/_readme.txt rename to deps/icu/source/test/testdata/cldr/units/_readme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/unitPreferencesTest.txt b/deps/icu/source/test/testdata/cldr/units/unitPreferencesTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/unitPreferencesTest.txt rename to deps/icu/source/test/testdata/cldr/units/unitPreferencesTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/unitsTest.txt b/deps/icu/source/test/testdata/cldr/units/unitsTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/cldr/units/unitsTest.txt rename to deps/icu/source/test/testdata/cldr/units/unitsTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.16.toml b/deps/icu/source/test/testdata/codepointtrie/free-blocks.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.16.toml rename to deps/icu/source/test/testdata/codepointtrie/free-blocks.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.32.toml b/deps/icu/source/test/testdata/codepointtrie/free-blocks.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.32.toml rename to deps/icu/source/test/testdata/codepointtrie/free-blocks.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.8.toml b/deps/icu/source/test/testdata/codepointtrie/free-blocks.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.8.toml rename to deps/icu/source/test/testdata/codepointtrie/free-blocks.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.small16.toml b/deps/icu/source/test/testdata/codepointtrie/free-blocks.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/free-blocks.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/free-blocks.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.16.toml b/deps/icu/source/test/testdata/codepointtrie/grow-data.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.16.toml rename to deps/icu/source/test/testdata/codepointtrie/grow-data.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.32.toml b/deps/icu/source/test/testdata/codepointtrie/grow-data.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.32.toml rename to deps/icu/source/test/testdata/codepointtrie/grow-data.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.8.toml b/deps/icu/source/test/testdata/codepointtrie/grow-data.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.8.toml rename to deps/icu/source/test/testdata/codepointtrie/grow-data.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.small16.toml b/deps/icu/source/test/testdata/codepointtrie/grow-data.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/grow-data.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/grow-data.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.16.toml b/deps/icu/source/test/testdata/codepointtrie/set-empty.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.16.toml rename to deps/icu/source/test/testdata/codepointtrie/set-empty.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.32.toml b/deps/icu/source/test/testdata/codepointtrie/set-empty.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.32.toml rename to deps/icu/source/test/testdata/codepointtrie/set-empty.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.8.toml b/deps/icu/source/test/testdata/codepointtrie/set-empty.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.8.toml rename to deps/icu/source/test/testdata/codepointtrie/set-empty.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.small16.toml b/deps/icu/source/test/testdata/codepointtrie/set-empty.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-empty.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/set-empty.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.16.toml b/deps/icu/source/test/testdata/codepointtrie/set-single-value.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.16.toml rename to deps/icu/source/test/testdata/codepointtrie/set-single-value.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.32.toml b/deps/icu/source/test/testdata/codepointtrie/set-single-value.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.32.toml rename to deps/icu/source/test/testdata/codepointtrie/set-single-value.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.8.toml b/deps/icu/source/test/testdata/codepointtrie/set-single-value.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.8.toml rename to deps/icu/source/test/testdata/codepointtrie/set-single-value.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.small16.toml b/deps/icu/source/test/testdata/codepointtrie/set-single-value.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set-single-value.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/set-single-value.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.16.toml b/deps/icu/source/test/testdata/codepointtrie/set1.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.16.toml rename to deps/icu/source/test/testdata/codepointtrie/set1.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.32.toml b/deps/icu/source/test/testdata/codepointtrie/set1.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.32.toml rename to deps/icu/source/test/testdata/codepointtrie/set1.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.8.toml b/deps/icu/source/test/testdata/codepointtrie/set1.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.8.toml rename to deps/icu/source/test/testdata/codepointtrie/set1.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.small16.toml b/deps/icu/source/test/testdata/codepointtrie/set1.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set1.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/set1.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.16.toml b/deps/icu/source/test/testdata/codepointtrie/set2-overlap.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.16.toml rename to deps/icu/source/test/testdata/codepointtrie/set2-overlap.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.32.toml b/deps/icu/source/test/testdata/codepointtrie/set2-overlap.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.32.toml rename to deps/icu/source/test/testdata/codepointtrie/set2-overlap.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.small16.toml b/deps/icu/source/test/testdata/codepointtrie/set2-overlap.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set2-overlap.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/set2-overlap.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.16.toml b/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.16.toml rename to deps/icu/source/test/testdata/codepointtrie/set3-initial-9.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.32.toml b/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.32.toml rename to deps/icu/source/test/testdata/codepointtrie/set3-initial-9.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.8.toml b/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.8.toml rename to deps/icu/source/test/testdata/codepointtrie/set3-initial-9.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.small16.toml b/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/set3-initial-9.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/set3-initial-9.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/short-all-same.8.toml b/deps/icu/source/test/testdata/codepointtrie/short-all-same.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/short-all-same.8.toml rename to deps/icu/source/test/testdata/codepointtrie/short-all-same.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/short-all-same.small16.toml b/deps/icu/source/test/testdata/codepointtrie/short-all-same.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/short-all-same.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/short-all-same.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.16.toml b/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.16.toml rename to deps/icu/source/test/testdata/codepointtrie/small0-in-fast.16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.32.toml b/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.32.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.32.toml rename to deps/icu/source/test/testdata/codepointtrie/small0-in-fast.32.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.8.toml b/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.8.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.8.toml rename to deps/icu/source/test/testdata/codepointtrie/small0-in-fast.8.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.small16.toml b/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.small16.toml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/codepointtrie/small0-in-fast.small16.toml rename to deps/icu/source/test/testdata/codepointtrie/small0-in-fast.small16.toml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/collationtest.txt b/deps/icu/source/test/testdata/collationtest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/collationtest.txt rename to deps/icu/source/test/testdata/collationtest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/conversion.txt b/deps/icu/source/test/testdata/conversion.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/conversion.txt rename to deps/icu/source/test/testdata/conversion.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/csdetest.xml b/deps/icu/source/test/testdata/csdetest.xml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/csdetest.xml rename to deps/icu/source/test/testdata/csdetest.xml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/dcfmtest.txt b/deps/icu/source/test/testdata/dcfmtest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/dcfmtest.txt rename to deps/icu/source/test/testdata/dcfmtest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/default.txt b/deps/icu/source/test/testdata/default.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/default.txt rename to deps/icu/source/test/testdata/default.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/emoji-test.txt b/deps/icu/source/test/testdata/emoji-test.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/emoji-test.txt rename to deps/icu/source/test/testdata/emoji-test.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/encoded.utf16be b/deps/icu/source/test/testdata/encoded.utf16be similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/encoded.utf16be rename to deps/icu/source/test/testdata/encoded.utf16be diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/filters/filtertest.txt b/deps/icu/source/test/testdata/filters/filtertest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/filters/filtertest.txt rename to deps/icu/source/test/testdata/filters/filtertest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/filtertest.txt b/deps/icu/source/test/testdata/filtertest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/filtertest.txt rename to deps/icu/source/test/testdata/filtertest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/format.txt b/deps/icu/source/test/testdata/format.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/format.txt rename to deps/icu/source/test/testdata/format.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/ibm9027.ucm b/deps/icu/source/test/testdata/ibm9027.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/ibm9027.ucm rename to deps/icu/source/test/testdata/ibm9027.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/icuio.txt b/deps/icu/source/test/testdata/icuio.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/icuio.txt rename to deps/icu/source/test/testdata/icuio.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/idna_conf.txt b/deps/icu/source/test/testdata/idna_conf.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/idna_conf.txt rename to deps/icu/source/test/testdata/idna_conf.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/idna_rules.txt b/deps/icu/source/test/testdata/idna_rules.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/idna_rules.txt rename to deps/icu/source/test/testdata/idna_rules.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/importtest.bin b/deps/icu/source/test/testdata/importtest.bin similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/importtest.bin rename to deps/icu/source/test/testdata/importtest.bin diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/letest.xml b/deps/icu/source/test/testdata/letest.xml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/letest.xml rename to deps/icu/source/test/testdata/letest.xml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/localeCanonicalization.txt b/deps/icu/source/test/testdata/localeCanonicalization.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/localeCanonicalization.txt rename to deps/icu/source/test/testdata/localeCanonicalization.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/localeMatcherTest.txt b/deps/icu/source/test/testdata/localeMatcherTest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/localeMatcherTest.txt rename to deps/icu/source/test/testdata/localeMatcherTest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/mc.txt b/deps/icu/source/test/testdata/mc.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/mc.txt rename to deps/icu/source/test/testdata/mc.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/metaZones.txt b/deps/icu/source/test/testdata/metaZones.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/metaZones.txt rename to deps/icu/source/test/testdata/metaZones.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cis_prep.txt b/deps/icu/source/test/testdata/nfs4_cis_prep.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cis_prep.txt rename to deps/icu/source/test/testdata/nfs4_cis_prep.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cs_prep_ci.txt b/deps/icu/source/test/testdata/nfs4_cs_prep_ci.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cs_prep_ci.txt rename to deps/icu/source/test/testdata/nfs4_cs_prep_ci.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cs_prep_cs.txt b/deps/icu/source/test/testdata/nfs4_cs_prep_cs.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/nfs4_cs_prep_cs.txt rename to deps/icu/source/test/testdata/nfs4_cs_prep_cs.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/nfs4_mixed_prep_p.txt b/deps/icu/source/test/testdata/nfs4_mixed_prep_p.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/nfs4_mixed_prep_p.txt rename to deps/icu/source/test/testdata/nfs4_mixed_prep_p.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/nfs4_mixed_prep_s.txt b/deps/icu/source/test/testdata/nfs4_mixed_prep_s.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/nfs4_mixed_prep_s.txt rename to deps/icu/source/test/testdata/nfs4_mixed_prep_s.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/numberformattestspecification.txt b/deps/icu/source/test/testdata/numberformattestspecification.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/numberformattestspecification.txt rename to deps/icu/source/test/testdata/numberformattestspecification.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/numberpermutationtest.txt b/deps/icu/source/test/testdata/numberpermutationtest.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/numberpermutationtest.txt rename to deps/icu/source/test/testdata/numberpermutationtest.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/old_e_testtypes.res b/deps/icu/source/test/testdata/old_e_testtypes.res similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/old_e_testtypes.res rename to deps/icu/source/test/testdata/old_e_testtypes.res diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/old_l_testtypes.res b/deps/icu/source/test/testdata/old_l_testtypes.res similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/old_l_testtypes.res rename to deps/icu/source/test/testdata/old_l_testtypes.res diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/pkgdata.inc.in b/deps/icu/source/test/testdata/pkgdata.inc.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/pkgdata.inc.in rename to deps/icu/source/test/testdata/pkgdata.inc.in diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/pkgdataMakefile.in b/deps/icu/source/test/testdata/pkgdataMakefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/pkgdataMakefile.in rename to deps/icu/source/test/testdata/pkgdataMakefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/ra.txt b/deps/icu/source/test/testdata/ra.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/ra.txt rename to deps/icu/source/test/testdata/ra.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/ra.xlf b/deps/icu/source/test/testdata/ra.xlf similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/ra.xlf rename to deps/icu/source/test/testdata/ra.xlf diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/rbbitst.txt b/deps/icu/source/test/testdata/rbbitst.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/rbbitst.txt rename to deps/icu/source/test/testdata/rbbitst.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/re_tests.txt b/deps/icu/source/test/testdata/re_tests.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/re_tests.txt rename to deps/icu/source/test/testdata/re_tests.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/readme.txt b/deps/icu/source/test/testdata/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/readme.txt rename to deps/icu/source/test/testdata/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/regextst.txt b/deps/icu/source/test/testdata/regextst.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/regextst.txt rename to deps/icu/source/test/testdata/regextst.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/riwords.txt b/deps/icu/source/test/testdata/riwords.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/riwords.txt rename to deps/icu/source/test/testdata/riwords.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/root.txt b/deps/icu/source/test/testdata/root.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/root.txt rename to deps/icu/source/test/testdata/root.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/sh.txt b/deps/icu/source/test/testdata/sh.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/sh.txt rename to deps/icu/source/test/testdata/sh.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/sh_YU.txt b/deps/icu/source/test/testdata/sh_YU.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/sh_YU.txt rename to deps/icu/source/test/testdata/sh_YU.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/ssearch.xml b/deps/icu/source/test/testdata/ssearch.xml similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/ssearch.xml rename to deps/icu/source/test/testdata/ssearch.xml diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/structLocale.txt b/deps/icu/source/test/testdata/structLocale.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/structLocale.txt rename to deps/icu/source/test/testdata/structLocale.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/te.txt b/deps/icu/source/test/testdata/te.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/te.txt rename to deps/icu/source/test/testdata/te.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/te_IN.txt b/deps/icu/source/test/testdata/te_IN.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/te_IN.txt rename to deps/icu/source/test/testdata/te_IN.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/te_IN_REVISED.txt b/deps/icu/source/test/testdata/te_IN_REVISED.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/te_IN_REVISED.txt rename to deps/icu/source/test/testdata/te_IN_REVISED.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test1.ucm b/deps/icu/source/test/testdata/test1.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test1.ucm rename to deps/icu/source/test/testdata/test1.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test1bmp.ucm b/deps/icu/source/test/testdata/test1bmp.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test1bmp.ucm rename to deps/icu/source/test/testdata/test1bmp.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test2.ucm b/deps/icu/source/test/testdata/test2.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test2.ucm rename to deps/icu/source/test/testdata/test2.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test3.ucm b/deps/icu/source/test/testdata/test3.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test3.ucm rename to deps/icu/source/test/testdata/test3.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test4.ucm b/deps/icu/source/test/testdata/test4.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test4.ucm rename to deps/icu/source/test/testdata/test4.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test4x.ucm b/deps/icu/source/test/testdata/test4x.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test4x.ucm rename to deps/icu/source/test/testdata/test4x.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/test5.ucm b/deps/icu/source/test/testdata/test5.ucm similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/test5.ucm rename to deps/icu/source/test/testdata/test5.ucm diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/testaliases.txt b/deps/icu/source/test/testdata/testaliases.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/testaliases.txt rename to deps/icu/source/test/testdata/testaliases.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/testdata.mak b/deps/icu/source/test/testdata/testdata.mak similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/testdata.mak rename to deps/icu/source/test/testdata/testdata.mak diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/testempty.txt b/deps/icu/source/test/testdata/testempty.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/testempty.txt rename to deps/icu/source/test/testdata/testempty.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/testnorm.txt b/deps/icu/source/test/testdata/testnorm.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/testnorm.txt rename to deps/icu/source/test/testdata/testnorm.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/testtypes.txt b/deps/icu/source/test/testdata/testtypes.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/testtypes.txt rename to deps/icu/source/test/testdata/testtypes.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/timezoneTypes.txt b/deps/icu/source/test/testdata/timezoneTypes.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/timezoneTypes.txt rename to deps/icu/source/test/testdata/timezoneTypes.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/translit_rules.txt b/deps/icu/source/test/testdata/translit_rules.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/translit_rules.txt rename to deps/icu/source/test/testdata/translit_rules.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/uni-text.bin b/deps/icu/source/test/testdata/uni-text.bin similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/uni-text.bin rename to deps/icu/source/test/testdata/uni-text.bin diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/windowsZones.txt b/deps/icu/source/test/testdata/windowsZones.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/windowsZones.txt rename to deps/icu/source/test/testdata/windowsZones.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testdata/zoneinfo64.txt b/deps/icu/source/test/testdata/zoneinfo64.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testdata/zoneinfo64.txt rename to deps/icu/source/test/testdata/zoneinfo64.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testmap/Makefile.in b/deps/icu/source/test/testmap/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testmap/Makefile.in rename to deps/icu/source/test/testmap/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/testmap/readme.txt b/deps/icu/source/test/testmap/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testmap/readme.txt rename to deps/icu/source/test/testmap/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/test/testmap/testmap.c b/deps/icu/source/test/testmap/testmap.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testmap/testmap.c rename to deps/icu/source/test/testmap/testmap.c diff --git a/bootstrap/cxx/deps/icu/source/test/testmap/testmap.dsp b/deps/icu/source/test/testmap/testmap.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/testmap/testmap.dsp rename to deps/icu/source/test/testmap/testmap.dsp diff --git a/bootstrap/cxx/deps/icu/source/test/thaitest/Makefile.in b/deps/icu/source/test/thaitest/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/thaitest/Makefile.in rename to deps/icu/source/test/thaitest/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/test/thaitest/space.txt b/deps/icu/source/test/thaitest/space.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/thaitest/space.txt rename to deps/icu/source/test/thaitest/space.txt diff --git a/bootstrap/cxx/deps/icu/source/test/thaitest/thaitest.cpp b/deps/icu/source/test/thaitest/thaitest.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/thaitest/thaitest.cpp rename to deps/icu/source/test/thaitest/thaitest.cpp diff --git a/bootstrap/cxx/deps/icu/source/test/thaitest/thaitest.dsp b/deps/icu/source/test/thaitest/thaitest.dsp similarity index 100% rename from bootstrap/cxx/deps/icu/source/test/thaitest/thaitest.dsp rename to deps/icu/source/test/thaitest/thaitest.dsp diff --git a/bootstrap/cxx/deps/icu/source/tools/Makefile.in b/deps/icu/source/tools/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/Makefile.in rename to deps/icu/source/tools/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/Makefile.in b/deps/icu/source/tools/ctestfw/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/Makefile.in rename to deps/icu/source/tools/ctestfw/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/ctest.c b/deps/icu/source/tools/ctestfw/ctest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/ctest.c rename to deps/icu/source/tools/ctestfw/ctest.c diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/ctestfw.vcxproj b/deps/icu/source/tools/ctestfw/ctestfw.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/ctestfw.vcxproj rename to deps/icu/source/tools/ctestfw/ctestfw.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/ctestfw.vcxproj.filters b/deps/icu/source/tools/ctestfw/ctestfw.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/ctestfw.vcxproj.filters rename to deps/icu/source/tools/ctestfw/ctestfw.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/datamap.cpp b/deps/icu/source/tools/ctestfw/datamap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/datamap.cpp rename to deps/icu/source/tools/ctestfw/datamap.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/sources.txt b/deps/icu/source/tools/ctestfw/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/sources.txt rename to deps/icu/source/tools/ctestfw/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/testdata.cpp b/deps/icu/source/tools/ctestfw/testdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/testdata.cpp rename to deps/icu/source/tools/ctestfw/testdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/tstdtmod.cpp b/deps/icu/source/tools/ctestfw/tstdtmod.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/tstdtmod.cpp rename to deps/icu/source/tools/ctestfw/tstdtmod.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/ucln_ct.c b/deps/icu/source/tools/ctestfw/ucln_ct.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/ucln_ct.c rename to deps/icu/source/tools/ctestfw/ucln_ct.c diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/ctest.h b/deps/icu/source/tools/ctestfw/unicode/ctest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/ctest.h rename to deps/icu/source/tools/ctestfw/unicode/ctest.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/datamap.h b/deps/icu/source/tools/ctestfw/unicode/datamap.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/datamap.h rename to deps/icu/source/tools/ctestfw/unicode/datamap.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testdata.h b/deps/icu/source/tools/ctestfw/unicode/testdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testdata.h rename to deps/icu/source/tools/ctestfw/unicode/testdata.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testlog.h b/deps/icu/source/tools/ctestfw/unicode/testlog.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testlog.h rename to deps/icu/source/tools/ctestfw/unicode/testlog.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testtype.h b/deps/icu/source/tools/ctestfw/unicode/testtype.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/testtype.h rename to deps/icu/source/tools/ctestfw/unicode/testtype.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/tstdtmod.h b/deps/icu/source/tools/ctestfw/unicode/tstdtmod.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/tstdtmod.h rename to deps/icu/source/tools/ctestfw/unicode/tstdtmod.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/uperf.h b/deps/icu/source/tools/ctestfw/unicode/uperf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/uperf.h rename to deps/icu/source/tools/ctestfw/unicode/uperf.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/utimer.h b/deps/icu/source/tools/ctestfw/unicode/utimer.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/unicode/utimer.h rename to deps/icu/source/tools/ctestfw/unicode/utimer.h diff --git a/bootstrap/cxx/deps/icu/source/tools/ctestfw/uperf.cpp b/deps/icu/source/tools/ctestfw/uperf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/ctestfw/uperf.cpp rename to deps/icu/source/tools/ctestfw/uperf.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/Makefile.in b/deps/icu/source/tools/escapesrc/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/Makefile.in rename to deps/icu/source/tools/escapesrc/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/cptbl.h b/deps/icu/source/tools/escapesrc/cptbl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/cptbl.h rename to deps/icu/source/tools/escapesrc/cptbl.h diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/escapesrc.cpp b/deps/icu/source/tools/escapesrc/escapesrc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/escapesrc.cpp rename to deps/icu/source/tools/escapesrc/escapesrc.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/expect-simple.cpp b/deps/icu/source/tools/escapesrc/expect-simple.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/expect-simple.cpp rename to deps/icu/source/tools/escapesrc/expect-simple.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/tblgen.cpp b/deps/icu/source/tools/escapesrc/tblgen.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/tblgen.cpp rename to deps/icu/source/tools/escapesrc/tblgen.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/test-nochange.cpp b/deps/icu/source/tools/escapesrc/test-nochange.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/test-nochange.cpp rename to deps/icu/source/tools/escapesrc/test-nochange.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/escapesrc/test-simple.cpp b/deps/icu/source/tools/escapesrc/test-simple.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/escapesrc/test-simple.cpp rename to deps/icu/source/tools/escapesrc/test-simple.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/Makefile.in b/deps/icu/source/tools/genbrk/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/Makefile.in rename to deps/icu/source/tools/genbrk/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.1.in b/deps/icu/source/tools/genbrk/genbrk.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.1.in rename to deps/icu/source/tools/genbrk/genbrk.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.cpp b/deps/icu/source/tools/genbrk/genbrk.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.cpp rename to deps/icu/source/tools/genbrk/genbrk.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.vcxproj b/deps/icu/source/tools/genbrk/genbrk.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.vcxproj rename to deps/icu/source/tools/genbrk/genbrk.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.vcxproj.filters b/deps/icu/source/tools/genbrk/genbrk.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/genbrk.vcxproj.filters rename to deps/icu/source/tools/genbrk/genbrk.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/genbrk/sources.txt b/deps/icu/source/tools/genbrk/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genbrk/sources.txt rename to deps/icu/source/tools/genbrk/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/Makefile.in b/deps/icu/source/tools/genccode/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/Makefile.in rename to deps/icu/source/tools/genccode/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/genccode.8.in b/deps/icu/source/tools/genccode/genccode.8.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/genccode.8.in rename to deps/icu/source/tools/genccode/genccode.8.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/genccode.c b/deps/icu/source/tools/genccode/genccode.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/genccode.c rename to deps/icu/source/tools/genccode/genccode.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/genccode.vcxproj b/deps/icu/source/tools/genccode/genccode.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/genccode.vcxproj rename to deps/icu/source/tools/genccode/genccode.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/genccode.vcxproj.filters b/deps/icu/source/tools/genccode/genccode.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/genccode.vcxproj.filters rename to deps/icu/source/tools/genccode/genccode.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/genccode/sources.txt b/deps/icu/source/tools/genccode/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genccode/sources.txt rename to deps/icu/source/tools/genccode/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/Makefile.in b/deps/icu/source/tools/gencfu/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/Makefile.in rename to deps/icu/source/tools/gencfu/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.1.in b/deps/icu/source/tools/gencfu/gencfu.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.1.in rename to deps/icu/source/tools/gencfu/gencfu.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.cpp b/deps/icu/source/tools/gencfu/gencfu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.cpp rename to deps/icu/source/tools/gencfu/gencfu.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.vcxproj b/deps/icu/source/tools/gencfu/gencfu.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.vcxproj rename to deps/icu/source/tools/gencfu/gencfu.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.vcxproj.filters b/deps/icu/source/tools/gencfu/gencfu.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/gencfu.vcxproj.filters rename to deps/icu/source/tools/gencfu/gencfu.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gencfu/sources.txt b/deps/icu/source/tools/gencfu/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencfu/sources.txt rename to deps/icu/source/tools/gencfu/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/Makefile.in b/deps/icu/source/tools/gencmn/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/Makefile.in rename to deps/icu/source/tools/gencmn/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.8.in b/deps/icu/source/tools/gencmn/gencmn.8.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.8.in rename to deps/icu/source/tools/gencmn/gencmn.8.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.c b/deps/icu/source/tools/gencmn/gencmn.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.c rename to deps/icu/source/tools/gencmn/gencmn.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.vcxproj b/deps/icu/source/tools/gencmn/gencmn.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.vcxproj rename to deps/icu/source/tools/gencmn/gencmn.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.vcxproj.filters b/deps/icu/source/tools/gencmn/gencmn.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/gencmn.vcxproj.filters rename to deps/icu/source/tools/gencmn/gencmn.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gencmn/sources.txt b/deps/icu/source/tools/gencmn/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencmn/sources.txt rename to deps/icu/source/tools/gencmn/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/Makefile.in b/deps/icu/source/tools/gencnval/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/Makefile.in rename to deps/icu/source/tools/gencnval/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.1.in b/deps/icu/source/tools/gencnval/gencnval.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.1.in rename to deps/icu/source/tools/gencnval/gencnval.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.c b/deps/icu/source/tools/gencnval/gencnval.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.c rename to deps/icu/source/tools/gencnval/gencnval.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.vcxproj b/deps/icu/source/tools/gencnval/gencnval.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.vcxproj rename to deps/icu/source/tools/gencnval/gencnval.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.vcxproj.filters b/deps/icu/source/tools/gencnval/gencnval.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/gencnval.vcxproj.filters rename to deps/icu/source/tools/gencnval/gencnval.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gencnval/sources.txt b/deps/icu/source/tools/gencnval/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencnval/sources.txt rename to deps/icu/source/tools/gencnval/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gencolusb/README.md b/deps/icu/source/tools/gencolusb/README.md similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencolusb/README.md rename to deps/icu/source/tools/gencolusb/README.md diff --git a/bootstrap/cxx/deps/icu/source/tools/gencolusb/extract_unsafe_backwards.cpp b/deps/icu/source/tools/gencolusb/extract_unsafe_backwards.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencolusb/extract_unsafe_backwards.cpp rename to deps/icu/source/tools/gencolusb/extract_unsafe_backwards.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gencolusb/verify_uset.cpp b/deps/icu/source/tools/gencolusb/verify_uset.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gencolusb/verify_uset.cpp rename to deps/icu/source/tools/gencolusb/verify_uset.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/Makefile.in b/deps/icu/source/tools/gendict/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/Makefile.in rename to deps/icu/source/tools/gendict/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/gendict.1.in b/deps/icu/source/tools/gendict/gendict.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/gendict.1.in rename to deps/icu/source/tools/gendict/gendict.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/gendict.cpp b/deps/icu/source/tools/gendict/gendict.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/gendict.cpp rename to deps/icu/source/tools/gendict/gendict.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/gendict.vcxproj b/deps/icu/source/tools/gendict/gendict.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/gendict.vcxproj rename to deps/icu/source/tools/gendict/gendict.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/gendict.vcxproj.filters b/deps/icu/source/tools/gendict/gendict.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/gendict.vcxproj.filters rename to deps/icu/source/tools/gendict/gendict.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gendict/sources.txt b/deps/icu/source/tools/gendict/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gendict/sources.txt rename to deps/icu/source/tools/gendict/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/BUILD.bazel b/deps/icu/source/tools/gennorm2/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/BUILD.bazel rename to deps/icu/source/tools/gennorm2/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/Makefile.in b/deps/icu/source/tools/gennorm2/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/Makefile.in rename to deps/icu/source/tools/gennorm2/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/extradata.cpp b/deps/icu/source/tools/gennorm2/extradata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/extradata.cpp rename to deps/icu/source/tools/gennorm2/extradata.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/extradata.h b/deps/icu/source/tools/gennorm2/extradata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/extradata.h rename to deps/icu/source/tools/gennorm2/extradata.h diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/gennorm2.cpp b/deps/icu/source/tools/gennorm2/gennorm2.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/gennorm2.cpp rename to deps/icu/source/tools/gennorm2/gennorm2.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/gennorm2.vcxproj b/deps/icu/source/tools/gennorm2/gennorm2.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/gennorm2.vcxproj rename to deps/icu/source/tools/gennorm2/gennorm2.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/n2builder.cpp b/deps/icu/source/tools/gennorm2/n2builder.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/n2builder.cpp rename to deps/icu/source/tools/gennorm2/n2builder.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/n2builder.h b/deps/icu/source/tools/gennorm2/n2builder.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/n2builder.h rename to deps/icu/source/tools/gennorm2/n2builder.h diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/norms.cpp b/deps/icu/source/tools/gennorm2/norms.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/norms.cpp rename to deps/icu/source/tools/gennorm2/norms.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/norms.h b/deps/icu/source/tools/gennorm2/norms.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/norms.h rename to deps/icu/source/tools/gennorm2/norms.h diff --git a/bootstrap/cxx/deps/icu/source/tools/gennorm2/sources.txt b/deps/icu/source/tools/gennorm2/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gennorm2/sources.txt rename to deps/icu/source/tools/gennorm2/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/Makefile.in b/deps/icu/source/tools/genrb/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/Makefile.in rename to deps/icu/source/tools/genrb/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/derb.1.in b/deps/icu/source/tools/genrb/derb.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/derb.1.in rename to deps/icu/source/tools/genrb/derb.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/derb.cpp b/deps/icu/source/tools/genrb/derb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/derb.cpp rename to deps/icu/source/tools/genrb/derb.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/derb.vcxproj b/deps/icu/source/tools/genrb/derb.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/derb.vcxproj rename to deps/icu/source/tools/genrb/derb.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/derb.vcxproj.filters b/deps/icu/source/tools/genrb/derb.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/derb.vcxproj.filters rename to deps/icu/source/tools/genrb/derb.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/errmsg.c b/deps/icu/source/tools/genrb/errmsg.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/errmsg.c rename to deps/icu/source/tools/genrb/errmsg.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/errmsg.h b/deps/icu/source/tools/genrb/errmsg.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/errmsg.h rename to deps/icu/source/tools/genrb/errmsg.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/filterrb.cpp b/deps/icu/source/tools/genrb/filterrb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/filterrb.cpp rename to deps/icu/source/tools/genrb/filterrb.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/filterrb.h b/deps/icu/source/tools/genrb/filterrb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/filterrb.h rename to deps/icu/source/tools/genrb/filterrb.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/genrb.1.in b/deps/icu/source/tools/genrb/genrb.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/genrb.1.in rename to deps/icu/source/tools/genrb/genrb.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/genrb.cpp b/deps/icu/source/tools/genrb/genrb.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/genrb.cpp rename to deps/icu/source/tools/genrb/genrb.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/genrb.h b/deps/icu/source/tools/genrb/genrb.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/genrb.h rename to deps/icu/source/tools/genrb/genrb.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/genrb.vcxproj b/deps/icu/source/tools/genrb/genrb.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/genrb.vcxproj rename to deps/icu/source/tools/genrb/genrb.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/genrb.vcxproj.filters b/deps/icu/source/tools/genrb/genrb.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/genrb.vcxproj.filters rename to deps/icu/source/tools/genrb/genrb.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/parse.cpp b/deps/icu/source/tools/genrb/parse.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/parse.cpp rename to deps/icu/source/tools/genrb/parse.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/parse.h b/deps/icu/source/tools/genrb/parse.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/parse.h rename to deps/icu/source/tools/genrb/parse.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/prscmnts.cpp b/deps/icu/source/tools/genrb/prscmnts.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/prscmnts.cpp rename to deps/icu/source/tools/genrb/prscmnts.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/prscmnts.h b/deps/icu/source/tools/genrb/prscmnts.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/prscmnts.h rename to deps/icu/source/tools/genrb/prscmnts.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/rbutil.c b/deps/icu/source/tools/genrb/rbutil.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/rbutil.c rename to deps/icu/source/tools/genrb/rbutil.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/rbutil.h b/deps/icu/source/tools/genrb/rbutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/rbutil.h rename to deps/icu/source/tools/genrb/rbutil.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/read.c b/deps/icu/source/tools/genrb/read.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/read.c rename to deps/icu/source/tools/genrb/read.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/read.h b/deps/icu/source/tools/genrb/read.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/read.h rename to deps/icu/source/tools/genrb/read.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/reslist.cpp b/deps/icu/source/tools/genrb/reslist.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/reslist.cpp rename to deps/icu/source/tools/genrb/reslist.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/reslist.h b/deps/icu/source/tools/genrb/reslist.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/reslist.h rename to deps/icu/source/tools/genrb/reslist.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/rle.c b/deps/icu/source/tools/genrb/rle.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/rle.c rename to deps/icu/source/tools/genrb/rle.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/rle.h b/deps/icu/source/tools/genrb/rle.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/rle.h rename to deps/icu/source/tools/genrb/rle.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/sources.txt b/deps/icu/source/tools/genrb/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/sources.txt rename to deps/icu/source/tools/genrb/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/ustr.c b/deps/icu/source/tools/genrb/ustr.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/ustr.c rename to deps/icu/source/tools/genrb/ustr.c diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/ustr.h b/deps/icu/source/tools/genrb/ustr.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/ustr.h rename to deps/icu/source/tools/genrb/ustr.h diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/wrtjava.cpp b/deps/icu/source/tools/genrb/wrtjava.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/wrtjava.cpp rename to deps/icu/source/tools/genrb/wrtjava.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genrb/wrtxml.cpp b/deps/icu/source/tools/genrb/wrtxml.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genrb/wrtxml.cpp rename to deps/icu/source/tools/genrb/wrtxml.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/genren/README b/deps/icu/source/tools/genren/README similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genren/README rename to deps/icu/source/tools/genren/README diff --git a/bootstrap/cxx/deps/icu/source/tools/genren/genren.pl b/deps/icu/source/tools/genren/genren.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/genren/genren.pl rename to deps/icu/source/tools/genren/genren.pl diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/Makefile.in b/deps/icu/source/tools/gensprep/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/Makefile.in rename to deps/icu/source/tools/gensprep/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/filterRFC3454.pl b/deps/icu/source/tools/gensprep/filterRFC3454.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/filterRFC3454.pl rename to deps/icu/source/tools/gensprep/filterRFC3454.pl diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.8.in b/deps/icu/source/tools/gensprep/gensprep.8.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.8.in rename to deps/icu/source/tools/gensprep/gensprep.8.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.c b/deps/icu/source/tools/gensprep/gensprep.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.c rename to deps/icu/source/tools/gensprep/gensprep.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.h b/deps/icu/source/tools/gensprep/gensprep.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.h rename to deps/icu/source/tools/gensprep/gensprep.h diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.vcxproj b/deps/icu/source/tools/gensprep/gensprep.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.vcxproj rename to deps/icu/source/tools/gensprep/gensprep.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.vcxproj.filters b/deps/icu/source/tools/gensprep/gensprep.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/gensprep.vcxproj.filters rename to deps/icu/source/tools/gensprep/gensprep.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/sources.txt b/deps/icu/source/tools/gensprep/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/sources.txt rename to deps/icu/source/tools/gensprep/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/gensprep/store.c b/deps/icu/source/tools/gensprep/store.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gensprep/store.c rename to deps/icu/source/tools/gensprep/store.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/Makefile.in b/deps/icu/source/tools/gentest/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/Makefile.in rename to deps/icu/source/tools/gentest/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/genres32.c b/deps/icu/source/tools/gentest/genres32.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/genres32.c rename to deps/icu/source/tools/gentest/genres32.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/gentest.c b/deps/icu/source/tools/gentest/gentest.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/gentest.c rename to deps/icu/source/tools/gentest/gentest.c diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/gentest.h b/deps/icu/source/tools/gentest/gentest.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/gentest.h rename to deps/icu/source/tools/gentest/gentest.h diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/gentest.vcxproj b/deps/icu/source/tools/gentest/gentest.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/gentest.vcxproj rename to deps/icu/source/tools/gentest/gentest.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/gentest.vcxproj.filters b/deps/icu/source/tools/gentest/gentest.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/gentest.vcxproj.filters rename to deps/icu/source/tools/gentest/gentest.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/gentest/sources.txt b/deps/icu/source/tools/gentest/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/gentest/sources.txt rename to deps/icu/source/tools/gentest/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/Makefile.in b/deps/icu/source/tools/icuexportdata/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/Makefile.in rename to deps/icu/source/tools/icuexportdata/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.1.in b/deps/icu/source/tools/icuexportdata/icuexportdata.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.1.in rename to deps/icu/source/tools/icuexportdata/icuexportdata.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.cpp b/deps/icu/source/tools/icuexportdata/icuexportdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.cpp rename to deps/icu/source/tools/icuexportdata/icuexportdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj b/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj rename to deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj.filters b/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj.filters rename to deps/icu/source/tools/icuexportdata/icuexportdata.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/icuexportdata/sources.txt b/deps/icu/source/tools/icuexportdata/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuexportdata/sources.txt rename to deps/icu/source/tools/icuexportdata/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/Makefile.in b/deps/icu/source/tools/icuinfo/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/Makefile.in rename to deps/icu/source/tools/icuinfo/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/icuinfo.cpp b/deps/icu/source/tools/icuinfo/icuinfo.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/icuinfo.cpp rename to deps/icu/source/tools/icuinfo/icuinfo.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/icuinfo.vcxproj b/deps/icu/source/tools/icuinfo/icuinfo.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/icuinfo.vcxproj rename to deps/icu/source/tools/icuinfo/icuinfo.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/icuplugins_windows_sample.txt b/deps/icu/source/tools/icuinfo/icuplugins_windows_sample.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/icuplugins_windows_sample.txt rename to deps/icu/source/tools/icuinfo/icuplugins_windows_sample.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/plugin_sources.txt b/deps/icu/source/tools/icuinfo/plugin_sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/plugin_sources.txt rename to deps/icu/source/tools/icuinfo/plugin_sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/sources.txt b/deps/icu/source/tools/icuinfo/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/sources.txt rename to deps/icu/source/tools/icuinfo/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.c b/deps/icu/source/tools/icuinfo/testplug.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.c rename to deps/icu/source/tools/icuinfo/testplug.c diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.vcxproj b/deps/icu/source/tools/icuinfo/testplug.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.vcxproj rename to deps/icu/source/tools/icuinfo/testplug.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.vcxproj.filters b/deps/icu/source/tools/icuinfo/testplug.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuinfo/testplug.vcxproj.filters rename to deps/icu/source/tools/icuinfo/testplug.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/icupkg/Makefile.in b/deps/icu/source/tools/icupkg/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icupkg/Makefile.in rename to deps/icu/source/tools/icupkg/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.8.in b/deps/icu/source/tools/icupkg/icupkg.8.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.8.in rename to deps/icu/source/tools/icupkg/icupkg.8.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.cpp b/deps/icu/source/tools/icupkg/icupkg.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.cpp rename to deps/icu/source/tools/icupkg/icupkg.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.vcxproj b/deps/icu/source/tools/icupkg/icupkg.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icupkg/icupkg.vcxproj rename to deps/icu/source/tools/icupkg/icupkg.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/icupkg/sources.txt b/deps/icu/source/tools/icupkg/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icupkg/sources.txt rename to deps/icu/source/tools/icupkg/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/icuswap/Makefile.in b/deps/icu/source/tools/icuswap/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuswap/Makefile.in rename to deps/icu/source/tools/icuswap/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/icuswap/icuswap.cpp b/deps/icu/source/tools/icuswap/icuswap.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuswap/icuswap.cpp rename to deps/icu/source/tools/icuswap/icuswap.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/icuswap/icuswap.vcxproj b/deps/icu/source/tools/icuswap/icuswap.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuswap/icuswap.vcxproj rename to deps/icu/source/tools/icuswap/icuswap.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/icuswap/sources.txt b/deps/icu/source/tools/icuswap/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/icuswap/sources.txt rename to deps/icu/source/tools/icuswap/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/Makefile.in b/deps/icu/source/tools/makeconv/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/Makefile.in rename to deps/icu/source/tools/makeconv/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/gencnvex.c b/deps/icu/source/tools/makeconv/gencnvex.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/gencnvex.c rename to deps/icu/source/tools/makeconv/gencnvex.c diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/genmbcs.cpp b/deps/icu/source/tools/makeconv/genmbcs.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/genmbcs.cpp rename to deps/icu/source/tools/makeconv/genmbcs.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/genmbcs.h b/deps/icu/source/tools/makeconv/genmbcs.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/genmbcs.h rename to deps/icu/source/tools/makeconv/genmbcs.h diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.1.in b/deps/icu/source/tools/makeconv/makeconv.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.1.in rename to deps/icu/source/tools/makeconv/makeconv.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.cpp b/deps/icu/source/tools/makeconv/makeconv.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.cpp rename to deps/icu/source/tools/makeconv/makeconv.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.h b/deps/icu/source/tools/makeconv/makeconv.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.h rename to deps/icu/source/tools/makeconv/makeconv.h diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.vcxproj b/deps/icu/source/tools/makeconv/makeconv.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.vcxproj rename to deps/icu/source/tools/makeconv/makeconv.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.vcxproj.filters b/deps/icu/source/tools/makeconv/makeconv.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/makeconv.vcxproj.filters rename to deps/icu/source/tools/makeconv/makeconv.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/sources.txt b/deps/icu/source/tools/makeconv/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/sources.txt rename to deps/icu/source/tools/makeconv/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/makeconv/ucnvstat.c b/deps/icu/source/tools/makeconv/ucnvstat.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/makeconv/ucnvstat.c rename to deps/icu/source/tools/makeconv/ucnvstat.c diff --git a/bootstrap/cxx/deps/icu/source/tools/memcheck/ICUMemCheck.pl b/deps/icu/source/tools/memcheck/ICUMemCheck.pl similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/memcheck/ICUMemCheck.pl rename to deps/icu/source/tools/memcheck/ICUMemCheck.pl diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/Makefile.in b/deps/icu/source/tools/pkgdata/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/Makefile.in rename to deps/icu/source/tools/pkgdata/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.1.in b/deps/icu/source/tools/pkgdata/pkgdata.1.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.1.in rename to deps/icu/source/tools/pkgdata/pkgdata.1.in diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.cpp b/deps/icu/source/tools/pkgdata/pkgdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.cpp rename to deps/icu/source/tools/pkgdata/pkgdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.vcxproj b/deps/icu/source/tools/pkgdata/pkgdata.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.vcxproj rename to deps/icu/source/tools/pkgdata/pkgdata.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.vcxproj.filters b/deps/icu/source/tools/pkgdata/pkgdata.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgdata.vcxproj.filters rename to deps/icu/source/tools/pkgdata/pkgdata.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgtypes.c b/deps/icu/source/tools/pkgdata/pkgtypes.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgtypes.c rename to deps/icu/source/tools/pkgdata/pkgtypes.c diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgtypes.h b/deps/icu/source/tools/pkgdata/pkgtypes.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/pkgtypes.h rename to deps/icu/source/tools/pkgdata/pkgtypes.h diff --git a/bootstrap/cxx/deps/icu/source/tools/pkgdata/sources.txt b/deps/icu/source/tools/pkgdata/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/pkgdata/sources.txt rename to deps/icu/source/tools/pkgdata/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/BUILD.bazel b/deps/icu/source/tools/toolutil/BUILD.bazel similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/BUILD.bazel rename to deps/icu/source/tools/toolutil/BUILD.bazel diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/Makefile.in b/deps/icu/source/tools/toolutil/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/Makefile.in rename to deps/icu/source/tools/toolutil/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/collationinfo.cpp b/deps/icu/source/tools/toolutil/collationinfo.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/collationinfo.cpp rename to deps/icu/source/tools/toolutil/collationinfo.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/collationinfo.h b/deps/icu/source/tools/toolutil/collationinfo.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/collationinfo.h rename to deps/icu/source/tools/toolutil/collationinfo.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/dbgutil.cpp b/deps/icu/source/tools/toolutil/dbgutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/dbgutil.cpp rename to deps/icu/source/tools/toolutil/dbgutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/dbgutil.h b/deps/icu/source/tools/toolutil/dbgutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/dbgutil.h rename to deps/icu/source/tools/toolutil/dbgutil.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/denseranges.cpp b/deps/icu/source/tools/toolutil/denseranges.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/denseranges.cpp rename to deps/icu/source/tools/toolutil/denseranges.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/denseranges.h b/deps/icu/source/tools/toolutil/denseranges.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/denseranges.h rename to deps/icu/source/tools/toolutil/denseranges.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/filestrm.cpp b/deps/icu/source/tools/toolutil/filestrm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/filestrm.cpp rename to deps/icu/source/tools/toolutil/filestrm.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/filestrm.h b/deps/icu/source/tools/toolutil/filestrm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/filestrm.h rename to deps/icu/source/tools/toolutil/filestrm.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/filetools.cpp b/deps/icu/source/tools/toolutil/filetools.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/filetools.cpp rename to deps/icu/source/tools/toolutil/filetools.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/filetools.h b/deps/icu/source/tools/toolutil/filetools.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/filetools.h rename to deps/icu/source/tools/toolutil/filetools.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/flagparser.cpp b/deps/icu/source/tools/toolutil/flagparser.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/flagparser.cpp rename to deps/icu/source/tools/toolutil/flagparser.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/flagparser.h b/deps/icu/source/tools/toolutil/flagparser.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/flagparser.h rename to deps/icu/source/tools/toolutil/flagparser.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/package.cpp b/deps/icu/source/tools/toolutil/package.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/package.cpp rename to deps/icu/source/tools/toolutil/package.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/package.h b/deps/icu/source/tools/toolutil/package.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/package.h rename to deps/icu/source/tools/toolutil/package.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_genc.cpp b/deps/icu/source/tools/toolutil/pkg_genc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_genc.cpp rename to deps/icu/source/tools/toolutil/pkg_genc.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_genc.h b/deps/icu/source/tools/toolutil/pkg_genc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_genc.h rename to deps/icu/source/tools/toolutil/pkg_genc.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_gencmn.cpp b/deps/icu/source/tools/toolutil/pkg_gencmn.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_gencmn.cpp rename to deps/icu/source/tools/toolutil/pkg_gencmn.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_gencmn.h b/deps/icu/source/tools/toolutil/pkg_gencmn.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_gencmn.h rename to deps/icu/source/tools/toolutil/pkg_gencmn.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_icu.cpp b/deps/icu/source/tools/toolutil/pkg_icu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_icu.cpp rename to deps/icu/source/tools/toolutil/pkg_icu.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_icu.h b/deps/icu/source/tools/toolutil/pkg_icu.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_icu.h rename to deps/icu/source/tools/toolutil/pkg_icu.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_imp.h b/deps/icu/source/tools/toolutil/pkg_imp.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkg_imp.h rename to deps/icu/source/tools/toolutil/pkg_imp.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/pkgitems.cpp b/deps/icu/source/tools/toolutil/pkgitems.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/pkgitems.cpp rename to deps/icu/source/tools/toolutil/pkgitems.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ppucd.cpp b/deps/icu/source/tools/toolutil/ppucd.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ppucd.cpp rename to deps/icu/source/tools/toolutil/ppucd.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ppucd.h b/deps/icu/source/tools/toolutil/ppucd.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ppucd.h rename to deps/icu/source/tools/toolutil/ppucd.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/sources.txt b/deps/icu/source/tools/toolutil/sources.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/sources.txt rename to deps/icu/source/tools/toolutil/sources.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/swapimpl.cpp b/deps/icu/source/tools/toolutil/swapimpl.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/swapimpl.cpp rename to deps/icu/source/tools/toolutil/swapimpl.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/swapimpl.h b/deps/icu/source/tools/toolutil/swapimpl.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/swapimpl.h rename to deps/icu/source/tools/toolutil/swapimpl.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.cpp b/deps/icu/source/tools/toolutil/toolutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.cpp rename to deps/icu/source/tools/toolutil/toolutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.h b/deps/icu/source/tools/toolutil/toolutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.h rename to deps/icu/source/tools/toolutil/toolutil.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.vcxproj b/deps/icu/source/tools/toolutil/toolutil.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/toolutil.vcxproj rename to deps/icu/source/tools/toolutil/toolutil.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucbuf.cpp b/deps/icu/source/tools/toolutil/ucbuf.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucbuf.cpp rename to deps/icu/source/tools/toolutil/ucbuf.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucbuf.h b/deps/icu/source/tools/toolutil/ucbuf.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucbuf.h rename to deps/icu/source/tools/toolutil/ucbuf.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucln_tu.cpp b/deps/icu/source/tools/toolutil/ucln_tu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucln_tu.cpp rename to deps/icu/source/tools/toolutil/ucln_tu.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucm.cpp b/deps/icu/source/tools/toolutil/ucm.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucm.cpp rename to deps/icu/source/tools/toolutil/ucm.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucm.h b/deps/icu/source/tools/toolutil/ucm.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucm.h rename to deps/icu/source/tools/toolutil/ucm.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/ucmstate.cpp b/deps/icu/source/tools/toolutil/ucmstate.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/ucmstate.cpp rename to deps/icu/source/tools/toolutil/ucmstate.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/udbgutil.cpp b/deps/icu/source/tools/toolutil/udbgutil.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/udbgutil.cpp rename to deps/icu/source/tools/toolutil/udbgutil.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/udbgutil.h b/deps/icu/source/tools/toolutil/udbgutil.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/udbgutil.h rename to deps/icu/source/tools/toolutil/udbgutil.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/unewdata.cpp b/deps/icu/source/tools/toolutil/unewdata.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/unewdata.cpp rename to deps/icu/source/tools/toolutil/unewdata.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/unewdata.h b/deps/icu/source/tools/toolutil/unewdata.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/unewdata.h rename to deps/icu/source/tools/toolutil/unewdata.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/uoptions.cpp b/deps/icu/source/tools/toolutil/uoptions.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/uoptions.cpp rename to deps/icu/source/tools/toolutil/uoptions.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/uoptions.h b/deps/icu/source/tools/toolutil/uoptions.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/uoptions.h rename to deps/icu/source/tools/toolutil/uoptions.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/uparse.cpp b/deps/icu/source/tools/toolutil/uparse.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/uparse.cpp rename to deps/icu/source/tools/toolutil/uparse.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/uparse.h b/deps/icu/source/tools/toolutil/uparse.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/uparse.h rename to deps/icu/source/tools/toolutil/uparse.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/writesrc.cpp b/deps/icu/source/tools/toolutil/writesrc.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/writesrc.cpp rename to deps/icu/source/tools/toolutil/writesrc.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/writesrc.h b/deps/icu/source/tools/toolutil/writesrc.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/writesrc.h rename to deps/icu/source/tools/toolutil/writesrc.h diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/xmlparser.cpp b/deps/icu/source/tools/toolutil/xmlparser.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/xmlparser.cpp rename to deps/icu/source/tools/toolutil/xmlparser.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/toolutil/xmlparser.h b/deps/icu/source/tools/toolutil/xmlparser.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/toolutil/xmlparser.h rename to deps/icu/source/tools/toolutil/xmlparser.h diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/Makefile.in b/deps/icu/source/tools/tzcode/Makefile.in similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/Makefile.in rename to deps/icu/source/tools/tzcode/Makefile.in diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/asctime.c b/deps/icu/source/tools/tzcode/asctime.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/asctime.c rename to deps/icu/source/tools/tzcode/asctime.c diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/ialloc.c b/deps/icu/source/tools/tzcode/ialloc.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/ialloc.c rename to deps/icu/source/tools/tzcode/ialloc.c diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/icuregions b/deps/icu/source/tools/tzcode/icuregions similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/icuregions rename to deps/icu/source/tools/tzcode/icuregions diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.cpp b/deps/icu/source/tools/tzcode/icuzdump.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.cpp rename to deps/icu/source/tools/tzcode/icuzdump.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.vcxproj b/deps/icu/source/tools/tzcode/icuzdump.vcxproj similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.vcxproj rename to deps/icu/source/tools/tzcode/icuzdump.vcxproj diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.vcxproj.filters b/deps/icu/source/tools/tzcode/icuzdump.vcxproj.filters similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/icuzdump.vcxproj.filters rename to deps/icu/source/tools/tzcode/icuzdump.vcxproj.filters diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/icuzones b/deps/icu/source/tools/tzcode/icuzones similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/icuzones rename to deps/icu/source/tools/tzcode/icuzones diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/localtime.c b/deps/icu/source/tools/tzcode/localtime.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/localtime.c rename to deps/icu/source/tools/tzcode/localtime.c diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/private.h b/deps/icu/source/tools/tzcode/private.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/private.h rename to deps/icu/source/tools/tzcode/private.h diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/readme.txt b/deps/icu/source/tools/tzcode/readme.txt similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/readme.txt rename to deps/icu/source/tools/tzcode/readme.txt diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/scheck.c b/deps/icu/source/tools/tzcode/scheck.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/scheck.c rename to deps/icu/source/tools/tzcode/scheck.c diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/tz2icu.cpp b/deps/icu/source/tools/tzcode/tz2icu.cpp similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/tz2icu.cpp rename to deps/icu/source/tools/tzcode/tz2icu.cpp diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/tz2icu.h b/deps/icu/source/tools/tzcode/tz2icu.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/tz2icu.h rename to deps/icu/source/tools/tzcode/tz2icu.h diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/tzfile.h b/deps/icu/source/tools/tzcode/tzfile.h similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/tzfile.h rename to deps/icu/source/tools/tzcode/tzfile.h diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/tzselect.ksh b/deps/icu/source/tools/tzcode/tzselect.ksh similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/tzselect.ksh rename to deps/icu/source/tools/tzcode/tzselect.ksh diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/zdump.c b/deps/icu/source/tools/tzcode/zdump.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/zdump.c rename to deps/icu/source/tools/tzcode/zdump.c diff --git a/bootstrap/cxx/deps/icu/source/tools/tzcode/zic.c b/deps/icu/source/tools/tzcode/zic.c similarity index 100% rename from bootstrap/cxx/deps/icu/source/tools/tzcode/zic.c rename to deps/icu/source/tools/tzcode/zic.c diff --git a/deps/zen b/deps/zen new file mode 120000 index 000000000..84f82c089 --- /dev/null +++ b/deps/zen @@ -0,0 +1 @@ +../../zen \ No newline at end of file diff --git a/bootstrap/cxx/include/bolt/ByteString.hpp b/include/bolt/ByteString.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/ByteString.hpp rename to include/bolt/ByteString.hpp diff --git a/bootstrap/cxx/include/bolt/CST.hpp b/include/bolt/CST.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/CST.hpp rename to include/bolt/CST.hpp diff --git a/bootstrap/cxx/include/bolt/CSTVisitor.hpp b/include/bolt/CSTVisitor.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/CSTVisitor.hpp rename to include/bolt/CSTVisitor.hpp diff --git a/bootstrap/cxx/include/bolt/Checker.hpp b/include/bolt/Checker.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Checker.hpp rename to include/bolt/Checker.hpp diff --git a/bootstrap/cxx/include/bolt/Common.hpp b/include/bolt/Common.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Common.hpp rename to include/bolt/Common.hpp diff --git a/bootstrap/cxx/include/bolt/ConsolePrinter.hpp b/include/bolt/ConsolePrinter.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/ConsolePrinter.hpp rename to include/bolt/ConsolePrinter.hpp diff --git a/bootstrap/cxx/include/bolt/DiagnosticEngine.hpp b/include/bolt/DiagnosticEngine.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/DiagnosticEngine.hpp rename to include/bolt/DiagnosticEngine.hpp diff --git a/bootstrap/cxx/include/bolt/Diagnostics.hpp b/include/bolt/Diagnostics.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Diagnostics.hpp rename to include/bolt/Diagnostics.hpp diff --git a/bootstrap/cxx/include/bolt/Evaluator.hpp b/include/bolt/Evaluator.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Evaluator.hpp rename to include/bolt/Evaluator.hpp diff --git a/bootstrap/cxx/include/bolt/Integer.hpp b/include/bolt/Integer.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Integer.hpp rename to include/bolt/Integer.hpp diff --git a/bootstrap/cxx/include/bolt/Parser.hpp b/include/bolt/Parser.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Parser.hpp rename to include/bolt/Parser.hpp diff --git a/include/bolt/Passes/CheckBindings.hpp b/include/bolt/Passes/CheckBindings.hpp new file mode 100644 index 000000000..fe31e1be9 --- /dev/null +++ b/include/bolt/Passes/CheckBindings.hpp @@ -0,0 +1,48 @@ + +#pragma once + +#include "bolt/CST.hpp" +#include "bolt/CSTVisitor.hpp" +#include "bolt/DiagnosticEngine.hpp" +#include "bolt/Diagnostics.hpp" +#include "bolt/Program.hpp" + +namespace bolt { + +class CheckBindingsVisitor : public CSTVisitor { + + DiagnosticEngine& DE; + +protected: + + void visitReferenceExpression(ReferenceExpression* Expr) { + if (!Expr->getScope()->lookup(Expr->getSymbolPath())) { + DE.add(Expr->getNameAsString(), Expr->Name); + } + } + +public: + + CheckBindingsVisitor(DiagnosticEngine& DE): + DE(DE) {} + +}; + +class CheckBindingsPass { + + Program& P; + +public: + + CheckBindingsPass(Program& P): + P(P) {} + + void applySourceFile(SourceFile* SF) { + CheckBindingsVisitor V { P.getDiagnostics() }; + V.visit(SF); + } + +}; + +} + diff --git a/bootstrap/cxx/include/bolt/Program.hpp b/include/bolt/Program.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Program.hpp rename to include/bolt/Program.hpp diff --git a/bootstrap/cxx/include/bolt/Scanner.hpp b/include/bolt/Scanner.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Scanner.hpp rename to include/bolt/Scanner.hpp diff --git a/bootstrap/cxx/include/bolt/Stream.hpp b/include/bolt/Stream.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Stream.hpp rename to include/bolt/Stream.hpp diff --git a/bootstrap/cxx/include/bolt/String.hpp b/include/bolt/String.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/String.hpp rename to include/bolt/String.hpp diff --git a/bootstrap/cxx/include/bolt/Support/Graph.hpp b/include/bolt/Support/Graph.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Support/Graph.hpp rename to include/bolt/Support/Graph.hpp diff --git a/bootstrap/cxx/include/bolt/Text.hpp b/include/bolt/Text.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Text.hpp rename to include/bolt/Text.hpp diff --git a/bootstrap/cxx/include/bolt/Type.hpp b/include/bolt/Type.hpp similarity index 100% rename from bootstrap/cxx/include/bolt/Type.hpp rename to include/bolt/Type.hpp diff --git a/papers/complete-and-easy-bidirectional-type-checking.pdf b/papers/complete-and-easy-bidirectional-type-checking.pdf new file mode 100644 index 000000000..6bc2c22aa Binary files /dev/null and b/papers/complete-and-easy-bidirectional-type-checking.pdf differ diff --git a/samples/bolt.bolt b/samples/bolt.bolt new file mode 100644 index 000000000..9afa9af22 --- /dev/null +++ b/samples/bolt.bolt @@ -0,0 +1,102 @@ + +let alpha + = range 'a'..'z' + <|> range 'A'..'Z' + +let digit + = range '0'..'9' + +let alnum + = alpha + <|> digit + +let identifier_start + = alpha + <|> one_of [ '_' ] + +let identifier_part + = alnum + <|> one_of [ '_' ] + +let identifier. + identifier_start + many identifier_part + +let wrapped_operator. + char '(' + operator + char ')' + +let symbol + = identifier + <|> wrapped_operator + +let reference_type_expression. + module_path <- many $ identifier << char '.' + name <- symbol + +let type_expression + = reference_type_expression + <|> arrow_type_expression + <|> app_type_expression + +let expression_body. + char '=' + expression + +let blank + = one_of [ '\t', '\r', ' ' ] + +let eol. + blank + char '\n' + +let block_start. + char '.' + lookahead eol + +let block x. + block_start + elements <- many $ x + +let function_body_element + = statement + <|> variable_declaration + <|> function_declaration + +let param. + pattern + +let named_function_declaration. + maybe $ keyword "pub" + keyword "let" + name <- identifier + char '(' + sep_by (char ',') param + char ')' + body <- block function_body_element + +let function_declaration + = named_function_declaration + +let variable_declaration. + maybe $ keyword "pub" + keyword "let" + maybe $ keyword "mut" + name <- identifier + maybe type_assertion + body <- expression_body + +let type_alias_declaration. + maybe $ keyword "type" + keyword "type" + name <- identifier + many type_param + char '=' + type_expression + +let declaration + = variable_declaration + <|> function_declaration + <|> type_alias_declaration + diff --git a/samples/effect.bolt b/samples/effect.bolt new file mode 100644 index 000000000..8a58f596c --- /dev/null +++ b/samples/effect.bolt @@ -0,0 +1,34 @@ + +let foreign write : String -> () +let foreign writeln : String -> () +let foreign print : a -> () + +let (<=) : Int -> Int -> Bool + +effect Yield a. + yield : a -> Bool + +let count_to_three x. + yield "one" + yield "two" + yield "three" + +let coun_to_three_indirect. + count_to_three 1 + count_to_three 1 + +handle. + effect yield str. + writeln str + resume True + count_to_three + +handle. + effect yield str. + resume True + count_to_three + +# TODO make this compile +# +write "Hello, world!\n" +wite "This is Bolt speaking.\n" diff --git a/samples/todomvc.bolt b/samples/todomvc.bolt new file mode 100644 index 000000000..c6c84124a --- /dev/null +++ b/samples/todomvc.bolt @@ -0,0 +1,44 @@ + +# Some notes: +# +# - '[ .. ]' is an alternative notation for a function call combined with +# a dictionary. It augments the f()-syntax in imperative languages. +# - A call to a function that accepts something of type 'Interpolation' is +# parsed differently than other calls (if feasible). +# - A period ('.') is used to start a new block. It replaces the 'do'-keyword +# in Haskell. +# +# Issues: +# +# - The period is frequently used to perform function composition. In our +# language, it is possible to do so, but then it must happen on the same +# line. +# - What is the meaning of adding a period to a reference to +# a function? Does it simply call the function with a list? Can we generalise +# this to monoids? Can monads (which are derived from monoids) work with the +# same mechanism? +# - How should longer pieces of text be declared? How does interpolation work? + +import "web/html" (Html, render) + +struct Task. + description : String + created_at : Date + updated_at : Date + done : Bool + +let item : Task -> Html +let item task. + render. + div. + checkbox[checked: task.done, title: "Check this box if you're done with this to-do item."] + p task.description + date $ Date.format task.created_at + +let app. + let tasks = fetch_tasks + render. + div[style: { display: "flex", flex_direction: "column" }]. + map item tasks + button "Add item!" + diff --git a/scripts/gennodes.py b/scripts/gennodes.py new file mode 100644 index 000000000..af748f5dc --- /dev/null +++ b/scripts/gennodes.py @@ -0,0 +1,903 @@ +#!/usr/bin/env python3 + +import re +from collections import deque +from pathlib import Path +import argparse +from typing import List, Optional, final +from sweetener.record import Record, warn + +EOF = '\uFFFF' + +END_OF_FILE = 0 +IDENTIFIER = 1 +SEMI = 2 +EXTERNAL_KEYWORD = 3 +NODE_KEYWORD = 4 +LBRACE = 5 +RBRACE = 6 +LESSTHAN = 7 +GREATERTHAN = 8 +COLON = 9 +LPAREN = 10 +RPAREN = 11 +VBAR = 12 +COMMA = 13 +HASH = 14 +STRING = 15 +CONST_KEYWORD = 16 +NOEXCEPT_KEYWORD = 17 + +_re_whitespace = re.compile(r"[\n\r\t ]") +_re_ident_start = re.compile(r"[a-zA-Z_]") +_re_ident_part = re.compile(r"[a-zA-Z_0-9]") + +_keywords = { + 'external': EXTERNAL_KEYWORD, + 'node': NODE_KEYWORD, + 'const': CONST_KEYWORD, + 'noexcept': NOEXCEPT_KEYWORD, + } + +def to_upper_camel_case(snake_str): + return "".join(x.capitalize() for x in snake_str.lower().split("_")) + +def escape_char(ch): + code = ord(ch) + if code >= 32 and code < 126: + return ch + if code <= 127: + return f"\\x{code:02X}" + return f"\\u{code:04X}" + +class ScanError(RuntimeError): + + def __init__(self, file, position, actual): + super().__init__(f"{file.name}:{position.line}:{position.column}: unexpected character '{escape_char(actual)}'") + self.file = file + self.position = position + self.actual = actual + +_token_type_to_string = { + LPAREN: '(', + RPAREN: ')', + LBRACE: '{', + RBRACE: '}', + LESSTHAN: '<', + GREATERTHAN: '>', + SEMI: ';', + COLON: ':', + COMMA: ',', + VBAR: '|', + HASH: '#', + } + +class Token: + + def __init__(self, type, position=None, value=None): + self.type = type + self.start_pos = position + self.value = value + + @property + def text(self): + if self.type in _token_type_to_string: + return _token_type_to_string[self.type] + if self.type == IDENTIFIER: + return self.value + if self.type == STRING: + return f'"{self.value}"' + if self.type == END_OF_FILE: + return '' + return '(unknown token)' + +class TextFile: + + def __init__(self, filename, text=None): + self.name = filename + self._cached_text = text + + @property + def text(self): + if self._cached_text is None: + with open(self.name, 'r') as f: + self._cached_text = f.read() + return self._cached_text + +class TextPos: + + def __init__(self, line=1, column=1): + self.line = line + self.column = column + + def clone(self): + return TextPos(self.line, self.column) + + def advance(self, text): + for ch in text: + if ch == '\n': + self.line += 1 + self.column = 1 + else: + self.column += 1 + +class Scanner: + + def __init__(self, text, text_offset=0, filename=None): + self._text = text + self._text_offset = text_offset + self.file = TextFile(filename, text) + self._curr_pos = TextPos() + + def _peek_char(self, offset=1): + i = self._text_offset + offset - 1 + return self._text[i] if i < len(self._text) else EOF + + def _get_char(self): + if self._text_offset == len(self._text): + return EOF + i = self._text_offset + self._text_offset += 1 + ch = self._text[i] + self._curr_pos.advance(ch) + return ch + + def _take_while(self, pred): + out = '' + while True: + ch = self._peek_char() + if not pred(ch): + break + self._get_char() + out += ch + return out + + def scan(self): + + while True: + start_pos = self._curr_pos.clone() + c0 = self._get_char() + c1 = self._peek_char() + if _re_whitespace.match(c0): + continue + if c0 == '/' and c1 == '/': + while True: + c2 = self._get_char() + if c2 == EOF or c2 == '\n': + break + continue + break + + if c0 == EOF: + return Token(END_OF_FILE, self._curr_pos.clone()) + + if c0 == ';': return Token(SEMI, start_pos) + if c0 == '{': return Token(LBRACE, start_pos) + if c0 == '}': return Token(RBRACE, start_pos) + if c0 == '(': return Token(LPAREN, start_pos) + if c0 == ')': return Token(RPAREN, start_pos) + if c0 == '<': return Token(LESSTHAN, start_pos) + if c0 == '>': return Token(GREATERTHAN, start_pos) + if c0 == ':': return Token(COLON, start_pos) + if c0 == '|': return Token(VBAR, start_pos) + if c0 == ',': return Token(COMMA, start_pos) + if c0 == '#': return Token(HASH, start_pos) + + if c0 == '"': + text = '' + while True: + c1 = self._get_char() + if c1 == '"': + break + text += c1 + return Token(STRING, start_pos, text) + + if _re_ident_start.match(c0): + name = c0 + self._take_while(lambda ch: _re_ident_part.match(ch)) + return Token(_keywords[name], start_pos) \ + if name in _keywords \ + else Token(IDENTIFIER, start_pos, name) + + raise ScanError(self.file, start_pos, c0) + +class Type(Record): + pass + +class ListType(Type): + element_type: Type + +class OptionalType(Type): + element_type: Type + +class NodeType(Type): + name: str + +class VariantType(Type): + types: List[Type] + +class RawType(Type): + text: str + +class AST(Record): + pass + +class Directive(AST): + pass + +INCLUDEMODE_LOCAL = 0 +INCLUDEMODE_SYSTEM = 1 + +class IncludeDiretive(Directive): + path: str + mode: int + + def __str__(self): + if self.mode == INCLUDEMODE_LOCAL: + return f"#include \"{self.path}\"\n" + if self.mode == INCLUDEMODE_SYSTEM: + return f"#include <{self.path}>\n" + +class TypeExpr(AST): + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.type = None + +class RefTypeExpr(TypeExpr): + name: str + args: List[TypeExpr] + +class UnionTypeExpr(TypeExpr): + types: List[TypeExpr] + +class External(AST): + name: str + +class NodeDeclField(AST): + name: str + type_expr: TypeExpr + +class NodeDecl(AST): + name: str + parents: List[str] + members: List[NodeDeclField] + +class Expr(AST): + pass + +class BlockElement(AST): + pass + +class RetStmt(BlockElement): + value: Expr + +class Param(AST): + type_expr: TypeExpr + name: Optional[Token] + +def pretty_token(token): + if token.type == END_OF_FILE: + return 'end-of-file' + return f"'{token.text}'" + +def pretty_token_type(token_type): + if token_type in _token_type_to_string: + return f"'{_token_type_to_string[token_type]}'" + if token_type == IDENTIFIER: + return 'an identfier' + if token_type == STRING: + return 'a string literal' + if token_type == END_OF_FILE: + return 'end-of-file' + return f"(unknown token type {token_type})" + +def pretty_alternatives(elements): + try: + out = next(elements) + except StopIteration: + return 'nothing' + try: + prev_element = next(elements) + except StopIteration: + return out + while True: + try: + element = next(elements) + except StopIteration: + break + out += ', ' + prev_element + prev_element = element + return out + ' or ' + prev_element + +class ParseError(RuntimeError): + + def __init__(self, file, actual, expected): + super().__init__(f"{file.name}:{actual.start_pos.line}:{actual.start_pos.column}: got {pretty_token(actual)} but expected {pretty_alternatives(pretty_token_type(tt) for tt in expected)}") + self.actual = actual + self.expected = expected + +class Parser: + + def __init__(self, scanner: Scanner): + self._scanner = scanner + self._token_buffer = deque[Token]() + + def _peek_token(self, offset=1): + while len(self._token_buffer) < offset: + self._token_buffer.append(self._scanner.scan()) + return self._token_buffer[offset-1] + + def _get_token(self): + if self._token_buffer: + return self._token_buffer.popleft() + return self._scanner.scan() + + def _expect_token(self, expected_token_type): + t0 = self._get_token() + if t0.type != expected_token_type: + raise ParseError(self._scanner.file, t0, [ expected_token_type ]) + return t0 + + def _parse_prim_type_expr(self): + t0 = self._get_token() + if t0.type == LPAREN: + result = self.parse_type_expr() + self._expect_token(RPAREN) + return result + if t0.type == IDENTIFIER: + t1 = self._peek_token() + args = [] + if t1.type == LESSTHAN: + self._get_token() + while True: + t2 = self._peek_token() + if t2.type == GREATERTHAN: + self._get_token() + break + args.append(self.parse_type_expr()) + t3 = self._get_token() + if t3.type == GREATERTHAN: + break + if t3.type != COMMA: + raise ParseError(self._scanner.file, t3, [ COMMA, GREATERTHAN ]) + return RefTypeExpr(t0.value, args) + raise ParseError(self._scanner.file, t0, [ LPAREN, IDENTIFIER ]) + + def parse_type_expr(self): + return self._parse_prim_type_expr() + + def parse_param(self) -> Param: + type_expr = self.parse_type_expr() + t1 = self._peek_token() + name = None + if t1.type == IDENTIFIER: + self._get_token() + name = t1 + return Param(type_expr, name) + + def parse_node_member(self): + type_expr = self.parse_type_expr() + name = self._expect_token(IDENTIFIER) + self._expect_token(SEMI) + return NodeDeclField(name.value, type_expr) + + def parse_toplevel(self): + t0 = self._get_token() + if t0.type == EXTERNAL_KEYWORD: + name = self._expect_token(IDENTIFIER) + self._expect_token(SEMI) + return External(name.value) + if t0.type == NODE_KEYWORD: + name = self._expect_token(IDENTIFIER).value + parents = [] + t1 = self._peek_token() + if t1.type == COLON: + self._get_token() + while True: + parent = self._expect_token(IDENTIFIER).value + parents.append(parent) + t2 = self._peek_token() + if t2.type != COMMA: + break + self._get_token() + self._expect_token(LBRACE) + members = [] + while True: + t2 = self._peek_token() + if t2.type == RBRACE: + self._get_token() + break + member = self.parse_node_member() + members.append(member) + return NodeDecl(name, parents, members) + if t0.type == HASH: + name = self._expect_token(IDENTIFIER) + if name.value == 'include': + t1 = self._get_token() + if t1.type == LESSTHAN: + assert(not self._token_buffer) + path = self._scanner._take_while(lambda ch: ch != '>') + self._scanner._get_char() + mode = INCLUDEMODE_SYSTEM + elif t1.type == STRING: + mode = INCLUDEMODE_LOCAL + path = t1.value + else: + raise ParseError(self._scanner.file, t1, [ STRING, LESSTHAN ]) + return IncludeDiretive(path, mode) + raise RuntimeError(f"invalid preprocessor directive '{name.value}'") + raise ParseError(self._scanner.file, t0, [ EXTERNAL_KEYWORD, NODE_KEYWORD, HASH ]) + + def parse_grammar(self): + elements = [] + while True: + t0 = self._peek_token() + if t0.type == END_OF_FILE: + break + element = self.parse_toplevel() + elements.append(element) + return elements + +class Writer: + + def __init__(self, text='', path=None): + self.path = path + self.text = text + self._at_blank_line = True + self._indentation = ' ' + self._indent_level = 0 + + def indent(self, count=1): + self._indent_level += count + + def dedent(self, count=1): + self._indent_level -= count + + def write_dedent(self, chunk): + self.dedent() + self.write(chunk) + self.indent() + + def write(self, chunk): + for ch in chunk: + if ch == '}': + self.dedent() + if ch == '\n': + self._at_blank_line = True + elif self._at_blank_line and not _re_whitespace.match(ch): + self.text += self._indentation * self._indent_level + self._at_blank_line = False + self.text += ch + if ch == '{': + self.indent() + + def save(self, dest_dir): + dest_path = dest_dir / self.path + print(f'Writing file {dest_path} ...') + with open(dest_path, 'w') as f: + f.write(self.text) + +class DiGraph: + + def __init__(self): + self._out_edges = dict() + self._in_edges = dict() + + def add_edge(self, a, b): + if a not in self._out_edges: + self._out_edges[a] = set() + self._out_edges[a].add(b) + if b not in self._in_edges: + self._in_edges[b] = set() + self._in_edges[b].add(a) + + def get_children(self, node): + if node not in self._out_edges: + return + for child in self._out_edges[node]: + yield child + + def is_child_of(self, a, b): + stack = [ b ] + visited = set() + while stack: + node = stack.pop() + if node in visited: + break + visited.add(node) + if node == a: + return True + for child in self.get_children(node): + stack.append(child) + return False + + def get_ancestors(self, node): + if node not in self._in_edges: + return + for parent in self._in_edges[node]: + yield parent + + def get_common_ancestor(self, nodes): + out = nodes[0] + parents = [] + for node in nodes[1:]: + if not self.is_child_of(node, out): + for parent in self.get_ancestors(node): + parents.append(parent) + if not parents: + return out + parents.append(out) + return self.get_common_ancestor(parents) + +def main(): + + parser = argparse.ArgumentParser() + + parser.add_argument('file', nargs=1, help='The specification file to generate C++ code for') + parser.add_argument('--namespace', default='', help='What C++ namespace to put generated code under') + parser.add_argument('--name', default='AST', help='How to name the generated tree') + parser.add_argument('-I', default='.', help='What path will be used to include generated header files') + parser.add_argument('--include-root', default='.', help='Where the headers live inside the include directroy') + parser.add_argument('--enable-serde', action='store_true', help='Also write (de)serialization logic') + parser.add_argument('--source-root', default='.', help='Where to store generated souce files') + parser.add_argument('--node-name', default='Node', help='How the root node of the hierachy should be called') + parser.add_argument('--out-dir', default='.', help='Place the endire folder structure inside this folder') + parser.add_argument('--dry-run', action='store_true', help='Do not write generated code to the file system') + + args = parser.parse_args() + + variable_casing = to_upper_camel_case + type_expr_casing = to_upper_camel_case + filename = args.file[0] + prefix = '' + cpp_root_node_name = prefix + args.node_name + include_dir = Path(args.I) + include_path = Path(args.include_root or '.') + full_include_path = include_dir / include_path + source_path = Path(args.source_root) + namespace = args.namespace.split('::') + out_dir = Path(args.out_dir) + out_name = args.name + write_serde = args.enable_serde + + with open(filename, 'r') as f: + text = f.read() + + scanner = Scanner(text, filename=filename) + parser = Parser(scanner) + elements = parser.parse_grammar() + + types = dict() + nodes = list() + leaf_nodes = list() + graph = DiGraph() + parent_to_children = dict() + + for element in elements: + if isinstance(element, External) \ + or isinstance(element, NodeDecl): + types[element.name] = element + if isinstance(element, NodeDecl): + nodes.append(element) + for parent in element.parents: + graph.add_edge(parent, element.name) + if parent not in parent_to_children: + parent_to_children[parent] = set() + children = parent_to_children[parent] + children.add(element) + + for node in nodes: + if node.name not in parent_to_children: + leaf_nodes.append(node) + + def is_null_type_expr(type_expr): + return isinstance(type_expr, RefTypeExpr) and type_expr.name == 'null' + + def is_node(name): + if name in types: + return isinstance(types[name], NodeDecl) + if name in parent_to_children: + return True + return False + + def get_all_variant_elements(type_expr): + types = list() + def loop(ty): + if isinstance(ty, RefTypeExpr) and ty.name == 'Variant': + for arg in ty.args: + loop(arg) + else: + types.append(ty) + loop(type_expr) + return types + + def infer_type(type_expr): + if isinstance(type_expr, RefTypeExpr): + if type_expr.name == 'List': + assert(len(type_expr.args) == 1) + return ListType(infer_type(type_expr.args[0])) + if type_expr.name == 'Variant': + types = get_all_variant_elements(type_expr) + has_null = False + for i, ty in enumerate(types): + if is_null_type_expr(ty): + has_null = True + del types[i] + if all(isinstance(ty, RefTypeExpr) and is_node(ty.name) for ty in types): + node_name = graph.get_common_ancestor(list(t.name for t in types)) + out = NodeType(node_name) + else: + out = VariantType(types) + if has_null: + out = OptionalType(out) + return out + if type_expr.name == 'Option': + assert(len(type_expr.args) == 1) + return OptionalType(infer_type(type_expr.args[0])) + if is_node(type_expr.name): + assert(len(type_expr.args) == 0) + return NodeType(type_expr.name) + assert(len(type_expr.args) == 0) + return RawType(type_expr.name) + raise RuntimeError(f"unhandled type expression {type_expr}") + + for node in nodes: + for member in node.members: + member.type_expr.type = infer_type(member.type_expr) + + def is_optional_by_default(ty): + return isinstance(ty, NodeType) + + def gen_cpp_type_expr(ty): + if isinstance(ty, NodeType): + return prefix + ty.name + "*" + if isinstance(ty, ListType): + return f"std::vector<{gen_cpp_type_expr(ty.element_type)}>" + if isinstance(ty, NodeType): + return 'class ' + ty.name + '*' + if isinstance(ty, OptionalType): + cpp_expr = gen_cpp_type_expr(ty.element_type) + if is_optional_by_default(ty.element_type): + return cpp_expr + return f"std::optional<{cpp_expr}>" + if isinstance(ty, VariantType): + return f"std::variant<{','.join(gen_cpp_type_expr(t) for t in ty.types)}>" + if isinstance(ty, RawType): + return ty.text + raise RuntimeError(f"unhandled Type {ty}") + + def gen_cpp_dtor(expr, ty): + if isinstance(ty, NodeType) or (isinstance(ty, OptionalType) and isinstance(ty.element_type, NodeType)): + return f'{expr}->unref();\n' + if isinstance(ty, ListType): + dtor = gen_cpp_dtor('Element', ty.element_type) + if dtor: + out = '' + out += f'for (auto& Element: {expr})' + out += '{\n' + out += dtor + out += '}\n' + return out + if isinstance(ty, OptionalType): + dtor = gen_cpp_dtor('(*' + expr + ')', ty.element_type) + if dtor: + out = '' + out += 'if (' + out += expr + out += ') {\n' + out += dtor + out += '}\n' + return out + + def gen_cpp_ctor_params(out, node): + visited = set() + queue = deque([ node ]) + first = True + while queue: + node = queue.popleft() + if node.name in visited: + return + visited.add(node.name) + for member in node.members: + if first: + first = False + else: + out.write(', ') + out.write(gen_cpp_type_expr(member.type_expr.type)) + out.write(' ') + out.write(variable_casing(member.name)) + for parent in node.parents: + queue.append(types[parent]) + + def gen_cpp_ctor_args(out, orig_node): + first = True + if orig_node.parents: + for parent in orig_node.parents: + if first: + first = False + else: + out.write(', ') + node = types[parent] + out.write(prefix + node.name) + out.write('(') + out.write(', '.join(variable_casing(member.name) for member in node.members)) + out.write(')') + else: + out.write(cpp_root_node_name + '()') + first = False + for member in orig_node.members: + if first: + first = False + else: + out.write(', ') + out.write(variable_casing(member.name)) + out.write('(') + out.write(variable_casing(member.name)) + out.write(')') + + node_hdr = Writer(path=full_include_path / (out_name + '.hpp')) + node_src = Writer(path=source_path / (out_name + '.cc')) + + macro_prefix = '_'.join(namespace).upper() + '_' + + node_hdr_guard_name = f'{macro_prefix}{out_name.upper()}_HPP' + node_hdr.write(f'#ifndef {node_hdr_guard_name}') + node_hdr.write('\n') + node_hdr.write(f'#define {node_hdr_guard_name}') + node_hdr.write('\n\n') + + for element in elements: + if isinstance(element, IncludeDiretive): + node_hdr.write(str(element)) + + for name in namespace: + node_hdr.write("namespace ") + node_hdr.write(name) + node_hdr.write(" {\n\n") + + if write_serde: + node_hdr.write('class Encoder;\n') + node_hdr.write('class Decoder;\n') + node_hdr.write('\n') + + for element in elements: + if isinstance(element, NodeDecl): + node_hdr.write(f'class {element.name};\n') + node_hdr.write('\n') + + node_hdr.write("enum class ") + node_hdr.write(prefix) + node_hdr.write("NodeType {\n") + for node in leaf_nodes: + node_hdr.write(node.name) + node_hdr.write(",\n") + node_hdr.write("};\n\n") + + node_hdr.write("class ") + node_hdr.write(cpp_root_node_name) + node_hdr.write(" {\n\n") + node_hdr.write('unsigned RefCount = 0;\n\n') + node_hdr.write_dedent('public:\n\n') + node_hdr.write('inline void ref() {\n++RefCount;\n}\n\n') + node_hdr.write('inline void unref() {\n--RefCount;\nif (RefCount == 0) {\ndelete this;\n}\n}\n\n') + node_hdr.write(f"{cpp_root_node_name}Type Type;\n\n") + node_hdr.write('void setParents();\n\n') + node_hdr.write('SourceFile* getSourceFile();\n\n'); + node_hdr.write('const SourceFile* getSourceFile() const;\n\n'); + if write_serde: + node_hdr.write('void encode(Encoder& encoder) const;\n\n') + node_hdr.write('virtual void encode_fields(Encoder& encoder) const = 0;\n'); + node_hdr.write('virtual void decode_fields(Decoder& decoder) = 0;\n\n'); + node_hdr.write(f'virtual ~{cpp_root_node_name}();') + node_hdr.write('\n') + node_hdr.write("};\n\n") + + for element in elements: + if isinstance(element, NodeDecl): + node = element + is_leaf = not list(graph.get_children(node.name)) + cpp_node_name = prefix + node.name + node_hdr.write("class ") + node_hdr.write(cpp_node_name) + node_hdr.write(" : public ") + if node.parents: + node_hdr.write(', '.join(prefix + parent for parent in node.parents)) + else: + node_hdr.write(cpp_root_node_name) + node_hdr.write(" {\n") + node_hdr.write_dedent('public:\n\n') + + node_hdr.write(cpp_node_name + '(') + gen_cpp_ctor_params(node_hdr, node) + node_hdr.write('): ') + gen_cpp_ctor_args(node_hdr, node) + node_hdr.write(' {}\n\n') + + if node.members: + for member in node.members: + node_hdr.write(gen_cpp_type_expr(member.type_expr.type)) + node_hdr.write(" "); + node_hdr.write(variable_casing(member.name)) + node_hdr.write(";\n"); + node_hdr.write('\n') + + if write_serde and is_leaf: + node_hdr.write('void encode_fields(Encoder& encoder) const override;\n'); + node_hdr.write('void decode_fields(Decoder& decoder) override;\n\n'); + + if node.name == 'SourceFile': + node_hdr.write('TextFile& getTextFile() {\nreturn File;\n}\n\n') + node_hdr.write('const TextFile& getTextFile() const {\nreturn File;\n}\n\n') + + # elif node.name == 'Token': + # node_hdr.write('TextRange getRange() const {\nreturn TextRange(StartLoc, EndLoc);\n}\n\n') + + node_hdr.write('~') + node_hdr.write(cpp_node_name) + node_hdr.write('();\n\n') + + node_hdr.write("};\n\n") + + for _ in namespace: + node_hdr.write("}\n\n") + + node_hdr.write('#endif\n') + + node_src.write('#include "') + node_src.write(str(include_path / (out_name + '.hpp'))) + node_src.write('"\n') + node_src.write('\n') + + if write_serde: + node_src.write('#include "') + node_src.write(str(include_path / 'Encoder.hpp')) + node_src.write('"\n') + node_src.write('\n') + + for name in namespace: + node_src.write("namespace ") + node_src.write(name) + node_src.write(" {\n\n") + + if write_serde: + node_src.write(f'void {cpp_root_node_name}::encode(Encoder& encoder) const') + node_src.write(' {\n') + node_src.write(f'encoder.start_encode_struct("{cpp_root_node_name}");') + node_src.write('\n') + node_src.write('encode_fields(encoder);\n') + node_src.write('encoder.end_encode_struct();\n') + node_src.write('}\n\n') + + for node in nodes: + is_leaf = not list(graph.get_children(node.name)) + cpp_node_name = prefix + node.name + if write_serde and is_leaf: + node_src.write(f'void {cpp_node_name}::encode_fields(Encoder& encoder) const') + node_src.write(' { \n') + for member in node.members: + node_src.write(f'encoder.encode_field("{member.name}", {member.name});') + node_src.write('\n') + node_src.write('}\n\n') + node_src.write(f'{cpp_node_name}::~{cpp_node_name}()') + node_src.write('{ \n') + for member in node.members: + dtor = gen_cpp_dtor(variable_casing(member.name), member.type_expr.type) + if dtor: + node_src.write(dtor) + node_src.write('}\n\n') + + for _ in namespace: + node_src.write("}\n\n") + + if args.dry_run: + print('# ' + str(node_hdr.path)) + print(node_hdr.text) + print('# ' + str(node_src.path)) + print(node_src.text) + else: + out_dir.mkdir(exist_ok=True, parents=True) + node_hdr.save(out_dir) + node_src.save(out_dir) + +if __name__ == '__main__': + main() diff --git a/scripts/genrewrite.py b/scripts/genrewrite.py new file mode 100644 index 000000000..6c2e8c7c9 --- /dev/null +++ b/scripts/genrewrite.py @@ -0,0 +1,16 @@ + +import argparse +import sys + +def main(): + + parser = argparse.ArgumentParser() + parser.add_argument('-o', '--out-file', required=True, help='The file to output generated code to') + parser.add_argument('file', nargs=1, help='The specification file to load') + args = parser.parse_args(); + + print('DONE'); + +if __name__ == '__main__': + sys.exit(main()) + diff --git a/bootstrap/cxx/src/CST.cc b/src/CST.cc similarity index 100% rename from bootstrap/cxx/src/CST.cc rename to src/CST.cc diff --git a/bootstrap/cxx/src/Checker.cc b/src/Checker.cc similarity index 100% rename from bootstrap/cxx/src/Checker.cc rename to src/Checker.cc diff --git a/bootstrap/cxx/src/ConsolePrinter.cc b/src/ConsolePrinter.cc similarity index 100% rename from bootstrap/cxx/src/ConsolePrinter.cc rename to src/ConsolePrinter.cc diff --git a/bootstrap/cxx/src/Diagnostics.cc b/src/Diagnostics.cc similarity index 100% rename from bootstrap/cxx/src/Diagnostics.cc rename to src/Diagnostics.cc diff --git a/bootstrap/cxx/src/Evaluator.cc b/src/Evaluator.cc similarity index 100% rename from bootstrap/cxx/src/Evaluator.cc rename to src/Evaluator.cc diff --git a/src/LLVMCodeGen.cc b/src/LLVMCodeGen.cc new file mode 100644 index 000000000..26cde5ef4 --- /dev/null +++ b/src/LLVMCodeGen.cc @@ -0,0 +1,66 @@ + +#include +#include + +#include "llvm/IR/Value.h" + +#include "LLVMCodeGen.hpp" +#include "bolt/CST.hpp" +#include "bolt/CSTVisitor.hpp" + +namespace bolt { + +LLVMCodeGen::LLVMCodeGen(llvm::LLVMContext* TheContext): + TheContext(TheContext) {} + +llvm::Value* LLVMCodeGen::generateExpression(Expression* E) { + + switch (E->getKind()) { + + case NodeKind::LiteralExpression: + { + auto Lit = static_cast(E); + switch (Lit->Token->getKind()) { + case NodeKind::IntegerLiteral: + { + auto V = static_cast(Lit->Token)->V; + // TODO assert that V fits in the APInt + return llvm::ConstantInt::get(*TheContext, llvm::APInt(32, V)); + } + case NodeKind::StringLiteral: + { + auto Str = static_cast(Lit->Token)->Text; + return Builder->CreateGlobalStringPtr(llvm::StringRef(Str)); + } + default: + ZEN_UNREACHABLE + } + } + + default: + ZEN_UNREACHABLE + + } + +} + +void LLVMCodeGen::generateElement(Node* N) { + switch (N->getKind()) { + case NodeKind::ExpressionStatement: + { + auto Stmt = static_cast(N); + generateExpression(Stmt->Expression); + } + default: + ZEN_UNREACHABLE + } +} + +void LLVMCodeGen::generate(SourceFile* SF) { + Module = std::make_unique(SF->File.getPath(), *TheContext); + for (auto Element: SF->Elements) { + generateElement(Element); + } +} + +} diff --git a/src/LLVMCodeGen.hpp b/src/LLVMCodeGen.hpp new file mode 100644 index 000000000..b5b86f45f --- /dev/null +++ b/src/LLVMCodeGen.hpp @@ -0,0 +1,32 @@ + +#pragma once + +#include "llvm/IR/Value.h" +#include "llvm/IR/IRBuilder.h" + +namespace bolt { + +class Node; +class SourceFile; +class Expression; + +class LLVMCodeGen { + + llvm::LLVMContext* TheContext; + + std::unique_ptr> Builder; + + std::unique_ptr Module; + +public: + + LLVMCodeGen(llvm::LLVMContext* TheContext); + + llvm::Value* generateExpression(Expression* E); + + void generateElement(Node* Element); + void generate(SourceFile* SF); + +}; + +} diff --git a/bootstrap/cxx/src/Parser.cc b/src/Parser.cc similarity index 100% rename from bootstrap/cxx/src/Parser.cc rename to src/Parser.cc diff --git a/src/Pass/CheckMissingBindings.cc b/src/Pass/CheckMissingBindings.cc new file mode 100644 index 000000000..ea97e50a8 --- /dev/null +++ b/src/Pass/CheckMissingBindings.cc @@ -0,0 +1,7 @@ + +namespace bolt { + +class CheckMissingBindings { +}; + +} diff --git a/bootstrap/cxx/src/Scanner.cc b/src/Scanner.cc similarity index 100% rename from bootstrap/cxx/src/Scanner.cc rename to src/Scanner.cc diff --git a/src/Scope.cc b/src/Scope.cc new file mode 100644 index 000000000..0a2ce065a --- /dev/null +++ b/src/Scope.cc @@ -0,0 +1,226 @@ + +#include "bolt/CST.hpp" + +namespace bolt { + +Scope::Scope(Node* Source): + Source(Source) { + scan(Source); + } + +void Scope::addSymbol(ByteString Name, Node* Decl, SymbolKind Kind) { + Mapping.emplace(Name, std::make_tuple(Decl, Kind)); +} + +void Scope::scan(Node* X) { + switch (X->getKind()) { + case NodeKind::SourceFile: + { + auto File = static_cast(X); + for (auto Element: File->Elements) { + scanChild(Element); + } + break; + } + case NodeKind::MatchCase: + { + auto Case = static_cast(X); + visitPattern(Case->Pattern, Case); + break; + } + case NodeKind::PrefixFunctionDeclaration: + case NodeKind::InfixFunctionDeclaration: + case NodeKind::SuffixFunctionDeclaration: + case NodeKind::NamedFunctionDeclaration: + { + auto Decl = static_cast(X); + for (auto Param: Decl->getParams()) { + visitPattern(Param->Pattern, Param); + } + auto Body = Decl->getBody(); + if (Body) { + scanChild(Body); + } + break; + } + default: + ZEN_UNREACHABLE + } +} + +void Scope::scanChild(Node* X) { + switch (X->getKind()) { + case NodeKind::LetExprBody: + case NodeKind::ExpressionStatement: + case NodeKind::IfStatement: + case NodeKind::ReturnStatement: + break; + case NodeKind::LetBlockBody: + { + auto Block = static_cast(X); + for (auto Element: Block->Elements) { + scanChild(Element); + } + break; + } + case NodeKind::InstanceDeclaration: + // We ignore let-declarations inside instance-declarations for now + break; + case NodeKind::ClassDeclaration: + { + auto Decl = static_cast(X); + addSymbol(Decl->Name->getCanonicalText(), Decl, SymbolKind::Class); + for (auto Element: Decl->Elements) { + scanChild(Element); + } + break; + } + case NodeKind::PrefixFunctionDeclaration: + case NodeKind::InfixFunctionDeclaration: + case NodeKind::SuffixFunctionDeclaration: + case NodeKind::NamedFunctionDeclaration: + { + auto Decl = static_cast(X); + addSymbol(Decl->getNameAsString(), Decl, SymbolKind::Var); + break; + } + case NodeKind::VariableDeclaration: + { + auto Decl = static_cast(X); + visitPattern(Decl->Pattern, Decl); + break; + } + case NodeKind::RecordDeclaration: + { + auto Decl = static_cast(X); + addSymbol(Decl->Name->getCanonicalText(), Decl, SymbolKind::Type); + break; + } + case NodeKind::VariantDeclaration: + { + auto Decl = static_cast(X); + addSymbol(Decl->Name->getCanonicalText(), Decl, SymbolKind::Type); + for (auto Member: Decl->Members) { + switch (Member->getKind()) { + case NodeKind::TupleVariantDeclarationMember: + { + auto T = static_cast(Member); + addSymbol(T->Name->getCanonicalText(), Decl, SymbolKind::Constructor); + break; + } + case NodeKind::RecordVariantDeclarationMember: + { + auto R = static_cast(Member); + addSymbol(R->Name->getCanonicalText(), Decl, SymbolKind::Constructor); + break; + } + default: + ZEN_UNREACHABLE + } + } + break; + } + default: + ZEN_UNREACHABLE + } +} + +void Scope::visitPattern(Pattern* X, Node* Decl) { + switch (X->getKind()) { + case NodeKind::BindPattern: + { + auto Y = static_cast(X); + addSymbol(Y->Name->getCanonicalText(), Decl, SymbolKind::Var); + break; + } + case NodeKind::RecordPattern: + { + auto Y = static_cast(X); + for (auto [Field, Comma]: Y->Fields) { + if (Field->Pattern) { + visitPattern(Field->Pattern, Decl); + } else if (Field->Name) { + addSymbol(Field->Name->Text, Decl, SymbolKind::Var); + } + } + break; + } + case NodeKind::NamedRecordPattern: + { + auto Y = static_cast(X); + for (auto [Field, Comma]: Y->Fields) { + if (Field->Pattern) { + visitPattern(Field->Pattern, Decl); + } else if (Field->Name) { + addSymbol(Field->Name->Text, Decl, SymbolKind::Var); + } + } + break; + } + case NodeKind::NamedTuplePattern: + { + auto Y = static_cast(X); + for (auto P: Y->Patterns) { + visitPattern(P, Decl); + } + break; + } + case NodeKind::NestedPattern: + { + auto Y = static_cast(X); + visitPattern(Y->P, Decl); + break; + } + case NodeKind::TuplePattern: + { + auto Y = static_cast(X); + for (auto [Element, Comma]: Y->Elements) { + visitPattern(Element, Decl); + } + break; + } + case NodeKind::ListPattern: + { + auto Y = static_cast(X); + for (auto [Element, Separator]: Y->Elements) { + visitPattern(Element, Decl); + } + break; + } + case NodeKind::LiteralPattern: + break; + default: + ZEN_UNREACHABLE + } +} + +Node* Scope::lookupDirect(SymbolPath Path, SymbolKind Kind) { + ZEN_ASSERT(Path.Modules.empty()); + auto Match = Mapping.find(Path.Name); + if (Match != Mapping.end() && std::get<1>(Match->second) == Kind) { + return std::get<0>(Match->second); + } + return nullptr; +} + +Node* Scope::lookup(SymbolPath Path, SymbolKind Kind) { + ZEN_ASSERT(Path.Modules.empty()); + auto Curr = this; + do { + auto Found = Curr->lookupDirect(Path, Kind); + if (Found) { + return Found; + } + Curr = Curr->getParentScope(); + } while (Curr != nullptr); + return nullptr; +} + +Scope* Scope::getParentScope() { + if (Source->Parent == nullptr) { + return nullptr; + } + return Source->Parent->getScope(); +} + +} diff --git a/bootstrap/cxx/src/Text.cc b/src/Text.cc similarity index 100% rename from bootstrap/cxx/src/Text.cc rename to src/Text.cc diff --git a/bootstrap/cxx/src/Types.cc b/src/Types.cc similarity index 100% rename from bootstrap/cxx/src/Types.cc rename to src/Types.cc diff --git a/bootstrap/cxx/src/main.cc b/src/main.cc similarity index 100% rename from bootstrap/cxx/src/main.cc rename to src/main.cc diff --git a/stdlib/io.bolt b/stdlib/io.bolt new file mode 100644 index 000000000..892c5848a --- /dev/null +++ b/stdlib/io.bolt @@ -0,0 +1,5 @@ + +let print : String -> () + +let eprint : String -> () + diff --git a/stdlib/math.bolt b/stdlib/math.bolt new file mode 100644 index 000000000..36a24a4b2 --- /dev/null +++ b/stdlib/math.bolt @@ -0,0 +1,22 @@ + +# TODO +#trait Add k. +# let a + b : k -> k -> k + +let a && b : Bool -> Bool -> Bool = match (a, b). + (True, True) => True + (True, False) => False + (False, True) => False + (False, False) => False + +let a || b : Bool -> Bool -> Bool = match (a, b). + (True, True) => True + (True, False) => True + (False, True) => True + (False, False) => False + +let not : Bool -> Bool = match. + True => False + False => True + +let ! a = not a diff --git a/stdlib/prelude.bolt b/stdlib/prelude.bolt new file mode 100644 index 000000000..a200c44bc --- /dev/null +++ b/stdlib/prelude.bolt @@ -0,0 +1,4 @@ + +import "./math" +import "./io" + diff --git a/bootstrap/cxx/test/TestChecker.cc b/test/TestChecker.cc similarity index 100% rename from bootstrap/cxx/test/TestChecker.cc rename to test/TestChecker.cc diff --git a/bootstrap/cxx/test/TestText.cc b/test/TestText.cc similarity index 100% rename from bootstrap/cxx/test/TestText.cc rename to test/TestText.cc diff --git a/bootstrap/cxx/test/checker/forward_recursion.bolt b/test/checker/forward_recursion.bolt similarity index 100% rename from bootstrap/cxx/test/checker/forward_recursion.bolt rename to test/checker/forward_recursion.bolt diff --git a/bootstrap/cxx/test/checker/if_part_test_is_bool.bolt b/test/checker/if_part_test_is_bool.bolt similarity index 100% rename from bootstrap/cxx/test/checker/if_part_test_is_bool.bolt rename to test/checker/if_part_test_is_bool.bolt diff --git a/bootstrap/cxx/test/checker/instance_arguments_type_classes.bolt.disabled b/test/checker/instance_arguments_type_classes.bolt.disabled similarity index 100% rename from bootstrap/cxx/test/checker/instance_arguments_type_classes.bolt.disabled rename to test/checker/instance_arguments_type_classes.bolt.disabled diff --git a/bootstrap/cxx/test/checker/local_constraints_polymorphic_variable.bolt b/test/checker/local_constraints_polymorphic_variable.bolt similarity index 100% rename from bootstrap/cxx/test/checker/local_constraints_polymorphic_variable.bolt rename to test/checker/local_constraints_polymorphic_variable.bolt diff --git a/bootstrap/cxx/test/checker/mutual_recursion_is_odd_is_even.bolt b/test/checker/mutual_recursion_is_odd_is_even.bolt similarity index 100% rename from bootstrap/cxx/test/checker/mutual_recursion_is_odd_is_even.bolt rename to test/checker/mutual_recursion_is_odd_is_even.bolt diff --git a/bootstrap/cxx/test/checker/nested_vars_reaching_parent_scope.bolt b/test/checker/nested_vars_reaching_parent_scope.bolt similarity index 100% rename from bootstrap/cxx/test/checker/nested_vars_reaching_parent_scope.bolt rename to test/checker/nested_vars_reaching_parent_scope.bolt diff --git a/bootstrap/cxx/test/checker/pattern_matching_variant.bolt b/test/checker/pattern_matching_variant.bolt similarity index 100% rename from bootstrap/cxx/test/checker/pattern_matching_variant.bolt rename to test/checker/pattern_matching_variant.bolt diff --git a/bootstrap/cxx/test/checker/simple_instance_arguments.bolt.disabled b/test/checker/simple_instance_arguments.bolt.disabled similarity index 100% rename from bootstrap/cxx/test/checker/simple_instance_arguments.bolt.disabled rename to test/checker/simple_instance_arguments.bolt.disabled diff --git a/bootstrap/cxx/test/checker/simple_tuple_test.bolt b/test/checker/simple_tuple_test.bolt similarity index 100% rename from bootstrap/cxx/test/checker/simple_tuple_test.bolt rename to test/checker/simple_tuple_test.bolt diff --git a/bootstrap/cxx/test/checker/test_equality_tapp.bolt b/test/checker/test_equality_tapp.bolt similarity index 100% rename from bootstrap/cxx/test/checker/test_equality_tapp.bolt rename to test/checker/test_equality_tapp.bolt diff --git a/bootstrap/cxx/test/checker/test_qualified_type_sigs.bolt b/test/checker/test_qualified_type_sigs.bolt similarity index 100% rename from bootstrap/cxx/test/checker/test_qualified_type_sigs.bolt rename to test/checker/test_qualified_type_sigs.bolt diff --git a/bootstrap/cxx/test/checker/variable_mistyping.bolt b/test/checker/variable_mistyping.bolt similarity index 100% rename from bootstrap/cxx/test/checker/variable_mistyping.bolt rename to test/checker/variable_mistyping.bolt diff --git a/bootstrap/cxx/test/checker/wrong_return_type.bolt b/test/checker/wrong_return_type.bolt similarity index 100% rename from bootstrap/cxx/test/checker/wrong_return_type.bolt rename to test/checker/wrong_return_type.bolt diff --git a/x.py b/x.py new file mode 100755 index 000000000..4fd8a9b92 --- /dev/null +++ b/x.py @@ -0,0 +1,251 @@ +#!/usr/bin/env python3 + +import argparse +from enum import Enum +from os import walk +import os +from re import A +import subprocess +import shutil +import shlex +import math +from pathlib import Path + +LLVM_VERSION = '18.1.0' + +here = Path(__file__).parent.resolve() + +parser = argparse.ArgumentParser() + +parser.add_argument('--no-ninja', action='store_true', help='Do not use Ninja if present') +parser.add_argument('--clang', action='store_true', help='Make sure the code is compiled using Clang ') +parser.add_argument('--gcc', action='store_true', help='Make sure the code is compiled using Clang ') +parser.add_argument('--msvc', action='store_true', help='Make sure the code is compiled using the Microsoft Visual C++ compiler') +parser.add_argument('--target', action='append', help='CPU target to support. Can be specified multiple times.') +parser.add_argument('-j', '--jobs', help='The maximum amount of jobs that build in parallel') + +args = parser.parse_args() + +cache_dir = here / '.cache' / 'bolt-build' +download_dir = cache_dir / 'downloads' +source_dir = cache_dir / 'source' +build_dir = cache_dir / 'build' +llvm_source_dir = source_dir / 'llvm' +llvm_build_dir = build_dir / 'llvm' +bolt_source_dir = here +bolt_build_dir = build_dir / 'bolt' + +def newer(a: Path, b: Path) -> bool: + def min_time(path: Path) -> float: + if not path.exists(): + return math.inf + if path.is_dir(): + min = math.inf + for p in path.iterdir(): + m = min_time(p) + if m < min: + min = m + return min + return path.stat().st_mtime + def max_time(path: Path) -> float: + if not path.exists(): + return 0 + if path.is_dir(): + max = 0 + for p in path.iterdir(): + m = min_time(p) + if m > max: + max = m + return max + return path.stat().st_mtime + return min_time(a) > max_time(b) + +class CMakeGenerator(Enum): + ninja = 'Ninja' + make = 'Unix Makefiles' + +type CMakeValue = None | bool | int | str + +def cmake_encode(value: CMakeValue): + if isinstance(value, str): + return shlex.quote(value) + if value == True: + return 'ON' + if value == False: + return 'OFF' + if isinstance(value, int): + return str(value); + raise NotImplementedError() + +def spawn(cmd: list[str], *args, **kwargs): + print(' '.join(str(x) for x in cmd)) + subprocess.run(cmd, *args, check=True, **kwargs) + +def shell(cmd: str, *args, **kwargs): + print(cmd) + subprocess.run(cmd, shell=True, *args, check=True, **kwargs) + +def cmake( + src_dir: Path, + build_dir: Path, + generator: CMakeGenerator | None = None, + defines: dict[str, CMakeValue] | None = None, + compile_commands = True, +): + if generator is None and ninja_path is not None: + generator = CMakeGenerator.ninja + if defines is None: + defines = dict() + argv = [ + 'cmake', + src_dir, + '-B', build_dir, + ] + if generator is not None: + argv.extend(['-G', generator.value]) + if clang_cxx_path is not None: + argv.append(f'-DCMAKE_CXX_COMPILER={cmake_encode(clang_cxx_path)}') + if compile_commands: + argv.append('-DCMAKE_EXPORT_COMPILE_COMMANDS=ON') + for k, v in defines.items(): + argv.append(f'-D{k}={cmake_encode(v)}') + spawn(argv) + compile_commands_json_path = here / 'compile_commands.json'; + if compile_commands and not compile_commands_json_path.exists(): + compile_commands_json_path.symlink_to(build_dir / 'compile_commands.json') + +def build(*targets: str, build_dir: Path, jobs: int | None = None) -> None: + args = [ 'cmake', '--build', build_dir ] + if jobs is not None: + args.extend(['-j', str(jobs) ]) + for target in targets: + args.extend([ '-t', target ]) + spawn(args) + +def download_llvm(version: str): + download_dir.mkdir(parents=True, exist_ok=True) + shell(f'wget https://github.com/llvm/llvm-project/archive/refs/tags/llvmorg-{version}.tar.gz', cwd=download_dir) + shell(f'tar -xf llvmorg-{version}.tar.gz --directory {llvm_source_dir}', cwd=download_dir) + +def build_llvm(target_archs: list[str], jobs: int | None = None): + + return # FIXME + + download_llvm(LLVM_VERSION) + + cmake( + llvm_source_dir, + llvm_build_dir, + defines={ + 'CMAKE_BUILD_TYPE': 'Release', + 'LLVM_ENABLE_ASSERTIONS': True, + 'LLVM_TARGETS_TO_BUILD': ';'.join(target_archs), + 'LLVM_OPTIMIZED_TABLEGEN': True + } + ) + + build_cmd = 'make' if ninja_path is None else 'ninja' + build_argv = [ build_cmd ] + if jobs is not None: + build_argv.extend([ '-j', str(jobs) ]) + + spawn(build_argv, cwd=llvm_build_dir) + +def ninja(targets: list[str], cwd: Path | None = None) -> None: + argv = [ str(ninja_path) ] + argv.extend(targets) + if cwd is not None: + argv.extend([ '-C', str(cwd) ]) + spawn(argv) + +def build_bolt(c_path: str | None = None, cxx_path: str | None = None) -> None: + + if newer(bolt_source_dir / 'CMakeLists.txt', bolt_build_dir): + + defines = { + 'CMAKE_EXPORT_COMPILE_COMMANDS': True, + 'CMAKE_BUILD_TYPE': 'Debug', + 'BOLT_ENABLE_TESTS': True, + 'ZEN_ENABLE_TESTS': False, + 'LLVM_CONFIG': str(llvm_config_path) + } + if c_path is not None: + defines['CMAKE_C_COMPILER'] = c_path + if cxx_path is not None: + defines['CMAKE_CXX_COMPILER'] = cxx_path + cmake( + bolt_source_dir, + bolt_build_dir, + defines=defines, + ) + + build('bolt', build_dir=bolt_build_dir) + +enable_ninja = not args.no_ninja + +NONE = 0 +CLANG = 1 +GCC = 2 +MSVC = 3 + +force = NONE + +ninja_path = enable_ninja and shutil.which('ninja') + +c_path = None +cxx_path = None + +if os.name == 'posix': + clang_c_path = shutil.which('clangj') + clang_cxx_path = shutil.which('clang++') + if clang_c_path is not None and clang_cxx_path is not None and (force == NONE or force == CLANG): + c_path = clang_c_path + cxx_path = clang_cxx_path + else: + for version in [ '18' ]: + clang_c_path = shutil.which(f'clang-{version}') + clang_cxx_path = shutil.which(f'clang++-{version}') + if clang_c_path is not None and clang_cxx_path is not None and (force == NONE or force == CLANG): + c_path = clang_c_path + cxx_path = clang_cxx_path + break + if c_path is None or cxx_path is None: + gcc_c_path = shutil.which('gcc') + gcc_cxx_path = shutil.which('g++') + if gcc_c_path is not None and gcc_cxx_path is not None and (force == NONE or force == GCC): + c_path = gcc_c_path + cxx_path = gcc_cxx_path + else: + print('Going to use platform default compiler') +elif os.name == 'nt': + msvc_path = shutil.which('cl.exe') + if msvc_path is not None and (force == NONE or force == MSVC): + c_path = msvc_path + cxx_path = msvc_path + else: + print('Going to use platform default compiler') +else: + print('Platform not supported right now') + exit(1) + +num_jobs = args.jobs +llvm_targets = [] + +if args.target is None: + llvm_targets.append('host') +else: + for target_spec in args.target: + for target in target_spec.split(','): + llvm_targets.append(target) + +llvm_config_path = shutil.which('llvm-config-18') + +if llvm_config_path is None: + build_llvm(llvm_targets, jobs=num_jobs) + llvm_config_path = llvm_build_dir / 'bin' / 'llvm-config' + +build_bolt( + c_path=c_path, + cxx_path=cxx_path, +) +