From 7a64097bcdee5077e967b78e17da5f2905dedcef Mon Sep 17 00:00:00 2001 From: Matthew Asplund Date: Sun, 26 Jan 2025 17:13:50 -0600 Subject: [PATCH] Start to convert to partitions (#298) * Fix installer and sign all dlls * Update c++ build * Update package version --- code/bench-tests/PackageLock.sml | 4 +- code/client/cli/PackageLock.sml | 6 +- code/client/cli/source/Main.cpp | 50 -- code/client/core/Recipe.sml | 19 +- code/client/core/source/Module.cpp | 69 +-- .../{BuildConstants.h => BuildConstants.cpp} | 15 +- code/client/core/source/build/BuildEngine.h | 5 +- .../core/source/build/BuildEvaluateEngine.h | 8 +- .../source/build/BuildFailedException.cpp | 30 + .../core/source/build/BuildFailedException.h | 25 - .../core/source/build/BuildHistoryChecker.h | 6 +- .../core/source/build/BuildLoadEngine.h | 9 +- code/client/core/source/build/BuildRunner.h | 11 +- ...ncyTargetSet.h => DependencyTargetSet.cpp} | 16 +- ...{FileSystemState.h => FileSystemState.cpp} | 46 +- .../core/source/build/IEvaluateEngine.h | 5 +- .../{KnownLanguage.h => KnownLanguage.cpp} | 17 +- .../{MacroManager.h => MacroManager.cpp} | 20 +- .../core/source/build/PackageProvider.h | 7 +- .../core/source/build/RecipeBuildArguments.h | 6 +- ...CacheState.h => RecipeBuildCacheState.cpp} | 14 +- .../source/build/RecipeBuildLocationManager.h | 7 +- ...ccessTracker.h => SystemAccessTracker.cpp} | 16 +- .../local-user-config/LocalUserConfig.h | 5 +- .../LocalUserConfigExtensions.h | 5 +- .../core/source/local-user-config/SDKConfig.h | 5 +- .../{CommandInfo.h => CommandInfo.cpp} | 17 +- .../source/operation-graph/OperationGraph.h | 5 +- .../operation-graph/OperationGraphManager.h | 5 +- .../operation-graph/OperationGraphReader.h | 5 +- .../source/operation-graph/OperationInfo.h | 7 +- .../source/operation-graph/OperationResult.h | 6 +- .../source/operation-graph/OperationResults.h | 5 +- .../operation-graph/OperationResultsManager.h | 5 +- .../operation-graph/OperationResultsReader.h | 5 +- .../operation-graph/OperationResultsWriter.h | 5 +- .../core/source/package-lock/PackageLock.h | 7 +- .../package-lock/PackageLockExtensions.h | 5 +- .../core/source/package/PackageManager.h | 5 +- ...guageReference.h => LanguageReference.cpp} | 20 +- .../source/recipe/LanguageReferenceParser.cpp | 17 - ...kageIdentifier.h => PackageIdentifier.cpp} | 22 +- .../recipe/{PackageName.h => PackageName.cpp} | 20 +- ...ackageReference.h => PackageReference.cpp} | 24 +- code/client/core/source/recipe/Recipe.h | 7 +- .../source/recipe/RecipeBuildStateConverter.h | 5 +- code/client/core/source/recipe/RecipeCache.h | 5 +- .../core/source/recipe/RecipeExtensions.h | 7 +- code/client/core/source/recipe/RecipeSML.h | 5 +- code/client/core/source/recipe/RecipeValue.h | 5 +- code/client/core/source/recipe/RootRecipe.h | 5 +- .../core/source/recipe/RootRecipeExtensions.h | 5 +- code/client/core/source/sml/SML.h | 5 +- code/client/core/source/sml/SMLParser.cpp | 13 - code/client/core/source/sml/SMLParser.l | 12 - ...andledException.h => HandledException.cpp} | 11 +- .../{SequenceMap.h => SequenceMap.cpp} | 9 +- code/client/core/source/value-table/Value.cpp | 572 ++++++++++-------- code/client/core/source/value-table/Value.h | 100 --- .../source/value-table/ValueTableManager.h | 6 +- .../source/value-table/ValueTableReader.h | 6 +- .../source/value-table/ValueTableWriter.h | 6 +- code/client/core/source/wren/WrenHelpers.h | 5 +- code/client/core/source/wren/WrenHost.h | 7 +- code/client/core/source/wren/WrenValueTable.h | 6 +- code/client/tools/PackageLock.sml | 6 +- code/generate-test/Main.cpp | 44 -- code/generate-test/PackageLock.sml | 6 +- code/generate/Main.cpp | 60 -- code/generate/PackageLock.sml | 20 +- code/monitor/client/PackageLock.sml | 2 +- code/monitor/host/IMonitorProcessManager.h | 5 +- code/monitor/host/ISystemAccessMonitor.h | 7 +- code/monitor/host/Module.cpp | 40 +- .../ScopedMonitorProcessManagerRegister.h | 5 +- .../host/linux/LinuxMonitorProcessManager.h | 5 +- .../host/mock/MockMonitorProcessManager.h | 5 +- code/monitor/shared/Message.h | 5 +- code/monitor/shared/MessageType.h | 5 +- code/monitor/shared/Module.cpp | 4 - code/monitor/shared/linux/DetourEventType.h | 5 +- code/monitor/shared/windows/DetourEventType.h | 5 +- code/monitor/shared/windows/ProcessPayload.h | 5 +- code/tools/copy/PackageLock.sml | 2 +- code/tools/mkdir/PackageLock.sml | 2 +- code/tools/print-graph/PackageLock.sml | 6 +- code/tools/print-results/PackageLock.sml | 6 +- code/tools/print-valuetable/PackageLock.sml | 6 +- docs/architecture.md | 4 +- docs/design-requirements-goals.md | 8 +- docs/samples/cpp/build-extension.md | 2 +- docs/samples/cpp/console-application.md | 2 +- docs/samples/cpp/directx.md | 2 +- docs/samples/cpp/dynamic-library.md | 2 +- docs/samples/cpp/header-library.md | 2 +- docs/samples/cpp/module-dynamic-library.md | 2 +- docs/samples/cpp/module-interface.md | 2 +- docs/samples/cpp/parse-json.md | 2 +- docs/samples/cpp/static-library.md | 2 +- docs/samples/cpp/windows-application.md | 2 +- docs/tools/{Swhere.md => swhere.md} | 0 .../executable/PackageLock.sml | 2 +- .../c++/build-extension/tool/PackageLock.sml | 2 +- .../c++/console-application/PackageLock.sml | 2 +- samples/c++/directx/PackageLock.sml | 2 +- .../application/PackageLock.sml | 2 +- .../application/PackageLock.sml | 2 +- .../application/PackageLock.sml | 2 +- samples/c++/module-interface/PackageLock.sml | 2 +- samples/c++/parse-json/PackageLock.sml | 2 +- .../application/PackageLock.sml | 2 +- .../c++/windows-application/PackageLock.sml | 2 +- scripts/windows/install.cmd | 6 +- scripts/windows/sign-runtime.cmd | 2 + 114 files changed, 691 insertions(+), 1040 deletions(-) rename code/client/core/source/build/{BuildConstants.h => BuildConstants.cpp} (90%) create mode 100644 code/client/core/source/build/BuildFailedException.cpp delete mode 100644 code/client/core/source/build/BuildFailedException.h rename code/client/core/source/build/{DependencyTargetSet.h => DependencyTargetSet.cpp} (89%) rename code/client/core/source/build/{FileSystemState.h => FileSystemState.cpp} (97%) rename code/client/core/source/build/{KnownLanguage.h => KnownLanguage.cpp} (63%) rename code/client/core/source/build/{MacroManager.h => MacroManager.cpp} (84%) rename code/client/core/source/build/{RecipeBuildCacheState.h => RecipeBuildCacheState.cpp} (82%) rename code/client/core/source/build/{SystemAccessTracker.h => SystemAccessTracker.cpp} (91%) rename code/client/core/source/operation-graph/{CommandInfo.h => CommandInfo.cpp} (87%) rename code/client/core/source/recipe/{LanguageReference.h => LanguageReference.cpp} (89%) rename code/client/core/source/recipe/{PackageIdentifier.h => PackageIdentifier.cpp} (93%) rename code/client/core/source/recipe/{PackageName.h => PackageName.cpp} (92%) rename code/client/core/source/recipe/{PackageReference.h => PackageReference.cpp} (94%) rename code/client/core/source/utilities/{HandledException.h => HandledException.cpp} (84%) rename code/client/core/source/utilities/{SequenceMap.h => SequenceMap.cpp} (94%) delete mode 100644 code/client/core/source/value-table/Value.h rename docs/tools/{Swhere.md => swhere.md} (100%) diff --git a/code/bench-tests/PackageLock.sml b/code/bench-tests/PackageLock.sml index 02704697e..72d35971d 100644 --- a/code/bench-tests/PackageLock.sml +++ b/code/bench-tests/PackageLock.sml @@ -16,12 +16,12 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Build1: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } 'mwasplund|Soup.Test.Cpp': { Version: 0.11.0 } } } diff --git a/code/client/cli/PackageLock.sml b/code/client/cli/PackageLock.sml index be6ea88dd..d9dddc4d8 100644 --- a/code/client/cli/PackageLock.sml +++ b/code/client/cli/PackageLock.sml @@ -26,13 +26,13 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Build1: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } - 'mwasplund|Soup.Test.Cpp': { Version: 0.12.0 } + 'Soup|Cpp': { Version: 0.14.0 } + 'mwasplund|Soup.Test.Cpp': { Version: 0.13.0 } } } Build2: { diff --git a/code/client/cli/source/Main.cpp b/code/client/cli/source/Main.cpp index d5ecf2acb..7e461d356 100644 --- a/code/client/cli/source/Main.cpp +++ b/code/client/cli/source/Main.cpp @@ -16,62 +16,12 @@ #include #include -#ifdef SOUP_BUILD - import Monitor.Host; import Opal; import Soup.Core; using namespace Opal; -#else - -// import Opal -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "utilities/Path.h" -#include "utilities/SemanticVersion.h" -#include "io/SystemConsoleManager.h" -#include "logger/Log.h" -#include "logger/ConsoleTraceListener.h" -#include "system/LinuxProcessManager.h" -#include "system/STLFileSystem.h" -#include "system/STLSystem.h" - -using namespace Opal; - -// import CryptoPP -#include "Interface.h" - -// import Monitor.Host -#include "linux/LinuxMonitorProcessManager.h" - -// import Soup.Core -#include -#include -#include -#include -#include "build/BuildEngine.h" -#include "package/PackageManager.h" - -#endif - #include "Program.h" int main(int argc, char** argv) diff --git a/code/client/core/Recipe.sml b/code/client/core/Recipe.sml index 32ccd5bf9..6b2a41ef6 100644 --- a/code/client/core/Recipe.sml +++ b/code/client/core/Recipe.sml @@ -12,7 +12,24 @@ Interface: 'source/Module.cpp' Source: [ 'source/recipe/LanguageReferenceParser.cpp' 'source/sml/SMLParser.cpp' - 'source/value-table/Value.cpp' +] +Partitions: [ + { Source: 'source/build/BuildConstants.cpp' } + { Source: 'source/build/BuildFailedException.cpp' } + { Source: 'source/build/DependencyTargetSet.cpp' } + { Source: 'source/build/FileSystemState.cpp' } + { Source: 'source/build/KnownLanguage.cpp' } + { Source: 'source/build/MacroManager.cpp' } + { Source: 'source/build/RecipeBuildCacheState.cpp' } + { Source: 'source/build/SystemAccessTracker.cpp' } + { Source: 'source/operation-graph/CommandInfo.cpp' } + { Source: 'source/recipe/LanguageReference.cpp' } + { Source: 'source/recipe/PackageIdentifier.cpp', Imports: [ 'source/recipe/PackageName.cpp' ] } + { Source: 'source/recipe/PackageName.cpp' } + { Source: 'source/recipe/PackageReference.cpp', Imports: [ 'source/recipe/PackageIdentifier.cpp' ] } + { Source: 'source/utilities/HandledException.cpp' } + { Source: 'source/utilities/SequenceMap.cpp' } + { Source: 'source/value-table/Value.cpp', Imports: [ 'source/recipe/LanguageReference.cpp', 'source/recipe/PackageReference.cpp' ] } ] Dependencies: { Build: [ diff --git a/code/client/core/source/Module.cpp b/code/client/core/source/Module.cpp index e20448a3d..35df8d14f 100644 --- a/code/client/core/source/Module.cpp +++ b/code/client/core/source/Module.cpp @@ -1,6 +1,4 @@ -#ifdef SOUP_BUILD -module; -#endif +module; // TODO: Add a converter level to Opal? #define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING @@ -46,8 +44,6 @@ module; #endif -#ifdef SOUP_BUILD - // TODO module // TODO: Treat wren as C code #include "wren/wren.h" @@ -59,51 +55,34 @@ import CryptoPP; import Monitor.Host; import Opal; -using namespace Opal; - -#else - -// import Opal -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "Utilities/Path.h" -#include "Utilities/SemanticVersion.h" -#include "IO/SystemConsoleManager.h" -#include "Logger/Log.h" -#include "Logger/ConsoleTraceListener.h" -#include "System/LinuxProcessManager.h" -#include "System/STLFileSystem.h" -#include "System/STLSystem.h" +// Build +export import :BuildConstants; +export import :BuildFailedException; +export import :CommandInfo; +export import :DependencyTargetSet; +export import :FileSystemState; +export import :KnownLanguage; +export import :MacroManager; +export import :RecipeBuildCacheState; +export import :SystemAccessTracker; + +// Recipe +export import :LanguageReference; +export import :PackageIdentifier; +export import :PackageName; +export import :PackageReference; + +// Utilities +export import :HandledException; +export import :SequenceMap; + +// Value Table +export import :Value; using namespace Opal; -// import CryptoPP -#include "Interface.h" - -// import Monitor.Host -#include "Linux/LinuxMonitorProcessManager.h" - -// import Wren -#include "wren/wren.h" - -#endif - #define CLIENT_CORE_IMPLEMENTATION -#include "utilities/SequenceMap.h" #include "build/RecipeBuildLocationManager.h" #include "build/BuildEngine.h" #include "local-user-config/LocalUserConfigExtensions.h" diff --git a/code/client/core/source/build/BuildConstants.h b/code/client/core/source/build/BuildConstants.cpp similarity index 90% rename from code/client/core/source/build/BuildConstants.h rename to code/client/core/source/build/BuildConstants.cpp index ce0589cc2..fa4b93b3e 100644 --- a/code/client/core/source/build/BuildConstants.h +++ b/code/client/core/source/build/BuildConstants.cpp @@ -1,18 +1,21 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once +module; + +export module Soup.Core:BuildConstants; + +import Opal; + +using namespace Opal; namespace Soup::Core { /// /// The constants used throughout the build /// - #ifdef SOUP_BUILD - export - #endif - class BuildConstants + export class BuildConstants { public: static const Path& EvaluateGraphFileName() diff --git a/code/client/core/source/build/BuildEngine.h b/code/client/core/source/build/BuildEngine.h index 0ab4ac435..bba2552a3 100644 --- a/code/client/core/source/build/BuildEngine.h +++ b/code/client/core/source/build/BuildEngine.h @@ -13,10 +13,7 @@ namespace Soup::Core /// /// The core build system that brings together the individual build components to build a single root package /// - #ifdef SOUP_BUILD - export - #endif - class BuildEngine + export class BuildEngine { public: static std::map GetKnownLanguages() diff --git a/code/client/core/source/build/BuildEvaluateEngine.h b/code/client/core/source/build/BuildEvaluateEngine.h index 7d06cad0d..85fea53e6 100644 --- a/code/client/core/source/build/BuildEvaluateEngine.h +++ b/code/client/core/source/build/BuildEvaluateEngine.h @@ -4,11 +4,8 @@ #pragma once #include "IEvaluateEngine.h" -#include "BuildFailedException.h" #include "BuildHistoryChecker.h" -#include "FileSystemState.h" #include "operation-graph/OperationGraph.h" -#include "SystemAccessTracker.h" namespace Soup::Core { @@ -118,10 +115,7 @@ namespace Soup::Core /// /// The core build evaluation engine that knows how to perform a build from a provided Operation Graph. /// - #ifdef SOUP_BUILD - export - #endif - class BuildEvaluateEngine : public IEvaluateEngine + export class BuildEvaluateEngine : public IEvaluateEngine { private: bool _forceRebuild; diff --git a/code/client/core/source/build/BuildFailedException.cpp b/code/client/core/source/build/BuildFailedException.cpp new file mode 100644 index 000000000..e6c84b755 --- /dev/null +++ b/code/client/core/source/build/BuildFailedException.cpp @@ -0,0 +1,30 @@ +// +// Copyright (c) Soup. All rights reserved. +// + +module; + +#include + +export module Soup.Core:BuildFailedException; + +import Opal; + +using namespace Opal; + +namespace Soup::Core +{ + /// + /// The exception thrown to indicate that a build operation has failed + /// + export class BuildFailedException : public std::exception + { + public: + /// + /// Initializes a new instance of the class. + /// + BuildFailedException() + { + } + }; +} diff --git a/code/client/core/source/build/BuildFailedException.h b/code/client/core/source/build/BuildFailedException.h deleted file mode 100644 index 3bb6c2301..000000000 --- a/code/client/core/source/build/BuildFailedException.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// Copyright (c) Soup. All rights reserved. -// - -#pragma once - -namespace Soup::Core -{ - /// - /// The exception thrown to indcate that a build operation has failed - /// - #ifdef SOUP_BUILD - export - #endif - class BuildFailedException : public std::exception - { - public: - /// - /// Initializes a new instance of the class. - /// - BuildFailedException() - { - } - }; -} diff --git a/code/client/core/source/build/BuildHistoryChecker.h b/code/client/core/source/build/BuildHistoryChecker.h index 9618a15fc..62a3464d1 100644 --- a/code/client/core/source/build/BuildHistoryChecker.h +++ b/code/client/core/source/build/BuildHistoryChecker.h @@ -3,14 +3,10 @@ // #pragma once -#include "FileSystemState.h" namespace Soup::Core { - #ifdef SOUP_BUILD - export - #endif - class BuildHistoryChecker + export class BuildHistoryChecker { private: FileSystemState& _fileSystemState; diff --git a/code/client/core/source/build/BuildLoadEngine.h b/code/client/core/source/build/BuildLoadEngine.h index 8a1d1550e..a26a75640 100644 --- a/code/client/core/source/build/BuildLoadEngine.h +++ b/code/client/core/source/build/BuildLoadEngine.h @@ -5,11 +5,7 @@ #pragma once #include "package-lock/PackageLockExtensions.h" #include "RecipeBuildArguments.h" -#include "recipe/PackageIdentifier.h" #include "recipe/RecipeCache.h" -#include "utilities/HandledException.h" -#include "BuildConstants.h" -#include "KnownLanguage.h" namespace Soup::Core { @@ -27,10 +23,7 @@ namespace Soup::Core /// It is responsible for loading up the entire closure and validating build state to /// create a package graph that can be evaluated by the build runner. /// - #ifdef SOUP_BUILD - export - #endif - class BuildLoadEngine + export class BuildLoadEngine { private: const int _packageLockVersion = 5; diff --git a/code/client/core/source/build/BuildRunner.h b/code/client/core/source/build/BuildRunner.h index 04721191c..a76feb641 100644 --- a/code/client/core/source/build/BuildRunner.h +++ b/code/client/core/source/build/BuildRunner.h @@ -3,19 +3,13 @@ // #pragma once -#include "DependencyTargetSet.h" -#include "MacroManager.h" #include "IEvaluateEngine.h" -#include "BuildConstants.h" -#include "BuildFailedException.h" #include "PackageProvider.h" #include "RecipeBuildArguments.h" #include "RecipeBuildLocationManager.h" -#include "FileSystemState.h" #include "local-user-config/LocalUserConfig.h" #include "operation-graph/OperationGraphManager.h" #include "operation-graph/OperationResultsManager.h" -#include "utilities/HandledException.h" #include "value-table/ValueTableManager.h" #include "recipe/RecipeBuildStateConverter.h" @@ -25,10 +19,7 @@ namespace Soup::Core /// The build runner that knows how to perform the correct build for a recipe /// and all of its development and runtime dependencies /// - #ifdef SOUP_BUILD - export - #endif - class BuildRunner + export class BuildRunner { private: // Root arguments diff --git a/code/client/core/source/build/DependencyTargetSet.h b/code/client/core/source/build/DependencyTargetSet.cpp similarity index 89% rename from code/client/core/source/build/DependencyTargetSet.h rename to code/client/core/source/build/DependencyTargetSet.cpp index 215657151..1222ba604 100644 --- a/code/client/core/source/build/DependencyTargetSet.h +++ b/code/client/core/source/build/DependencyTargetSet.cpp @@ -1,8 +1,18 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once +module; + +#include +#include +#include + +export module Soup.Core:DependencyTargetSet; + +import Opal; + +using namespace Opal; namespace Soup::Core { @@ -50,4 +60,4 @@ namespace Soup::Core { } }; -} +} \ No newline at end of file diff --git a/code/client/core/source/build/FileSystemState.h b/code/client/core/source/build/FileSystemState.cpp similarity index 97% rename from code/client/core/source/build/FileSystemState.h rename to code/client/core/source/build/FileSystemState.cpp index 6388483f2..cfaf38d5f 100644 --- a/code/client/core/source/build/FileSystemState.h +++ b/code/client/core/source/build/FileSystemState.cpp @@ -1,13 +1,23 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once +module; -#ifdef SOUP_BUILD -export -#endif -namespace Soup::Core +#include +#include +#include +#include +#include +#include + +export module Soup.Core:FileSystemState; + +import Opal; + +using namespace Opal; + +export namespace Soup::Core { using FileId = uint32_t; @@ -32,6 +42,18 @@ namespace Soup::Core /// class FileSystemState { + private: + // The maximum id that has been used for files + // Used to ensure unique ids are generated across the entire system + FileId _maxFileId; + + std::unordered_map _files; + std::unordered_map _fileLookup; + + std::unordered_map> _directoryLookup; + + std::unordered_map>> _writeCache; + public: /// /// Initializes a new instance of the class. @@ -375,17 +397,5 @@ namespace Soup::Core auto insertResult = _writeCache.insert_or_assign(fileId, lastWriteTime); return lastWriteTime; } - - private: - // The maximum id that has been used for files - // Used to ensure unique ids are generated across the entire system - FileId _maxFileId; - - std::unordered_map _files; - std::unordered_map _fileLookup; - - std::unordered_map> _directoryLookup; - - std::unordered_map>> _writeCache; }; } diff --git a/code/client/core/source/build/IEvaluateEngine.h b/code/client/core/source/build/IEvaluateEngine.h index c0313cc05..047539170 100644 --- a/code/client/core/source/build/IEvaluateEngine.h +++ b/code/client/core/source/build/IEvaluateEngine.h @@ -11,10 +11,7 @@ namespace Soup::Core /// /// The core build evaluation interface that knows how to perform a build from a provided Operation Graph. /// - #ifdef SOUP_BUILD - export - #endif - class IEvaluateEngine + export class IEvaluateEngine { public: /// diff --git a/code/client/core/source/build/KnownLanguage.h b/code/client/core/source/build/KnownLanguage.cpp similarity index 63% rename from code/client/core/source/build/KnownLanguage.h rename to code/client/core/source/build/KnownLanguage.cpp index 4aed67317..51756e89a 100644 --- a/code/client/core/source/build/KnownLanguage.h +++ b/code/client/core/source/build/KnownLanguage.cpp @@ -1,15 +1,20 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once +module; + +#include + +export module Soup.Core:KnownLanguage; + +import Opal; + +using namespace Opal; namespace Soup::Core { - #ifdef SOUP_BUILD - export - #endif - struct KnownLanguage + export struct KnownLanguage { KnownLanguage( std::string extensionOwner, diff --git a/code/client/core/source/build/MacroManager.h b/code/client/core/source/build/MacroManager.cpp similarity index 84% rename from code/client/core/source/build/MacroManager.h rename to code/client/core/source/build/MacroManager.cpp index db7bb5aa1..b2ab19afc 100644 --- a/code/client/core/source/build/MacroManager.h +++ b/code/client/core/source/build/MacroManager.cpp @@ -1,18 +1,24 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once +module; + +#include +#include + +export module Soup.Core:MacroManager; + +import Opal; + +using namespace Opal; namespace Soup::Core { /// /// The macro manager handles all things macro... It just replaces stuff. /// - #ifdef SOUP_BUILD - export - #endif - class MacroManager + export class MacroManager { private: const std::map& _macros; @@ -54,4 +60,4 @@ namespace Soup::Core return value; } }; -} +} \ No newline at end of file diff --git a/code/client/core/source/build/PackageProvider.h b/code/client/core/source/build/PackageProvider.h index 1c63b4f8b..17873140f 100644 --- a/code/client/core/source/build/PackageProvider.h +++ b/code/client/core/source/build/PackageProvider.h @@ -6,13 +6,8 @@ #include "package-lock/PackageLockExtensions.h" #include "RecipeBuildArguments.h" #include "recipe/RecipeCache.h" -#include "utilities/HandledException.h" -#include "BuildConstants.h" -#ifdef SOUP_BUILD -export -#endif -namespace Soup::Core +export namespace Soup::Core { using PackageId = int; using PackageGraphId = int; diff --git a/code/client/core/source/build/RecipeBuildArguments.h b/code/client/core/source/build/RecipeBuildArguments.h index 9ab52bde0..e34ae42d9 100644 --- a/code/client/core/source/build/RecipeBuildArguments.h +++ b/code/client/core/source/build/RecipeBuildArguments.h @@ -3,17 +3,13 @@ // #pragma once -#include "value-table/Value.h" namespace Soup::Core { /// /// The set of build arguments for building a recipe /// - #ifdef SOUP_BUILD - export - #endif - struct RecipeBuildArguments + export struct RecipeBuildArguments { /// /// Gets or sets set of host platform name diff --git a/code/client/core/source/build/RecipeBuildCacheState.h b/code/client/core/source/build/RecipeBuildCacheState.cpp similarity index 82% rename from code/client/core/source/build/RecipeBuildCacheState.h rename to code/client/core/source/build/RecipeBuildCacheState.cpp index 6dfb3a717..494811e2a 100644 --- a/code/client/core/source/build/RecipeBuildCacheState.h +++ b/code/client/core/source/build/RecipeBuildCacheState.cpp @@ -1,8 +1,18 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once +module; + +#include +#include +#include + +export module Soup.Core:RecipeBuildCacheState; + +import Opal; + +using namespace Opal; namespace Soup::Core { diff --git a/code/client/core/source/build/RecipeBuildLocationManager.h b/code/client/core/source/build/RecipeBuildLocationManager.h index e263d3d32..6490cd8a9 100644 --- a/code/client/core/source/build/RecipeBuildLocationManager.h +++ b/code/client/core/source/build/RecipeBuildLocationManager.h @@ -6,8 +6,6 @@ #include "recipe/Recipe.h" #include "value-table/ValueTableWriter.h" #include "PackageProvider.h" -#include "RecipeBuildCacheState.h" -#include "KnownLanguage.h" namespace Soup::Core { @@ -15,10 +13,7 @@ namespace Soup::Core /// The recipe build location manager that knows how to generate the unique folder for building a /// Recipe with a given set of parameters /// - #ifdef SOUP_BUILD - export - #endif - class RecipeBuildLocationManager + export class RecipeBuildLocationManager { private: // Known languages diff --git a/code/client/core/source/build/SystemAccessTracker.h b/code/client/core/source/build/SystemAccessTracker.cpp similarity index 91% rename from code/client/core/source/build/SystemAccessTracker.h rename to code/client/core/source/build/SystemAccessTracker.cpp index 97a1139b3..ea99c96a4 100644 --- a/code/client/core/source/build/SystemAccessTracker.h +++ b/code/client/core/source/build/SystemAccessTracker.cpp @@ -1,4 +1,18 @@ -#pragma once +// +// Copyright (c) Soup. All rights reserved. +// + +module; + +#include +#include + +export module Soup.Core:SystemAccessTracker; + +import Opal; +import Monitor.Host; + +using namespace Opal; namespace Soup::Core { diff --git a/code/client/core/source/local-user-config/LocalUserConfig.h b/code/client/core/source/local-user-config/LocalUserConfig.h index 54b0b47d6..4274fbd72 100644 --- a/code/client/core/source/local-user-config/LocalUserConfig.h +++ b/code/client/core/source/local-user-config/LocalUserConfig.h @@ -11,10 +11,7 @@ namespace Soup::Core /// /// The local user config container /// - #ifdef SOUP_BUILD - export - #endif - class LocalUserConfig + export class LocalUserConfig { private: static constexpr const char* Property_SDKs = "SDKs"; diff --git a/code/client/core/source/local-user-config/LocalUserConfigExtensions.h b/code/client/core/source/local-user-config/LocalUserConfigExtensions.h index cf77291d3..c4b0ead04 100644 --- a/code/client/core/source/local-user-config/LocalUserConfigExtensions.h +++ b/code/client/core/source/local-user-config/LocalUserConfigExtensions.h @@ -11,10 +11,7 @@ namespace Soup::Core /// /// The local user config extensions /// - #ifdef SOUP_BUILD - export - #endif - class LocalUserConfigExtensions + export class LocalUserConfigExtensions { public: /// diff --git a/code/client/core/source/local-user-config/SDKConfig.h b/code/client/core/source/local-user-config/SDKConfig.h index 13ddbd842..4382bcd1c 100644 --- a/code/client/core/source/local-user-config/SDKConfig.h +++ b/code/client/core/source/local-user-config/SDKConfig.h @@ -10,10 +10,7 @@ namespace Soup::Core /// /// The SDK config container /// - #ifdef SOUP_BUILD - export - #endif - class SDKConfig + export class SDKConfig { private: static constexpr const char* Property_Name = "Name"; diff --git a/code/client/core/source/operation-graph/CommandInfo.h b/code/client/core/source/operation-graph/CommandInfo.cpp similarity index 87% rename from code/client/core/source/operation-graph/CommandInfo.h rename to code/client/core/source/operation-graph/CommandInfo.cpp index a9bde39a7..4718722a5 100644 --- a/code/client/core/source/operation-graph/CommandInfo.h +++ b/code/client/core/source/operation-graph/CommandInfo.cpp @@ -1,8 +1,16 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once +module; + +#include + +export module Soup.Core:CommandInfo; + +import Opal; + +using namespace Opal; using namespace std::chrono_literals; namespace Soup::Core @@ -10,10 +18,7 @@ namespace Soup::Core /// /// The core command information that describes exactly what to run when evaluating an operation. /// - #ifdef SOUP_BUILD - export - #endif - class CommandInfo + export class CommandInfo { public: Path WorkingDirectory; diff --git a/code/client/core/source/operation-graph/OperationGraph.h b/code/client/core/source/operation-graph/OperationGraph.h index 2426859fb..9c2c9d0bc 100644 --- a/code/client/core/source/operation-graph/OperationGraph.h +++ b/code/client/core/source/operation-graph/OperationGraph.h @@ -10,10 +10,7 @@ namespace Soup::Core /// /// The operation graph that represents the set of operations that need to be evaluated to perform the build /// - #ifdef SOUP_BUILD - export - #endif - class OperationGraph + export class OperationGraph { private: std::vector _rootOperations; diff --git a/code/client/core/source/operation-graph/OperationGraphManager.h b/code/client/core/source/operation-graph/OperationGraphManager.h index 32c66c9a0..d0ed3bfc9 100644 --- a/code/client/core/source/operation-graph/OperationGraphManager.h +++ b/code/client/core/source/operation-graph/OperationGraphManager.h @@ -12,10 +12,7 @@ namespace Soup::Core /// /// The operation state manager /// - #ifdef SOUP_BUILD - export - #endif - class OperationGraphManager + export class OperationGraphManager { public: /// diff --git a/code/client/core/source/operation-graph/OperationGraphReader.h b/code/client/core/source/operation-graph/OperationGraphReader.h index c59dab11f..d45fff707 100644 --- a/code/client/core/source/operation-graph/OperationGraphReader.h +++ b/code/client/core/source/operation-graph/OperationGraphReader.h @@ -10,10 +10,7 @@ namespace Soup::Core /// /// The operation graph state reader /// - #ifdef SOUP_BUILD - export - #endif - class OperationGraphReader + export class OperationGraphReader { private: // Binary Operation Graph file format diff --git a/code/client/core/source/operation-graph/OperationInfo.h b/code/client/core/source/operation-graph/OperationInfo.h index bc6a7a420..03d8b7c7c 100644 --- a/code/client/core/source/operation-graph/OperationInfo.h +++ b/code/client/core/source/operation-graph/OperationInfo.h @@ -3,15 +3,10 @@ // #pragma once -#include "build/FileSystemState.h" -#include "CommandInfo.h" using namespace std::chrono_literals; -#ifdef SOUP_BUILD -export -#endif -namespace Soup::Core +export namespace Soup::Core { using OperationId = uint32_t; diff --git a/code/client/core/source/operation-graph/OperationResult.h b/code/client/core/source/operation-graph/OperationResult.h index b4edffe53..b9afc5a54 100644 --- a/code/client/core/source/operation-graph/OperationResult.h +++ b/code/client/core/source/operation-graph/OperationResult.h @@ -3,7 +3,6 @@ // #pragma once -#include "CommandInfo.h" using namespace std::chrono_literals; @@ -12,10 +11,7 @@ namespace Soup::Core /// /// A node result that tacks the observed output from previous runs /// - #ifdef SOUP_BUILD - export - #endif - class OperationResult + export class OperationResult { public: bool WasSuccessfulRun; diff --git a/code/client/core/source/operation-graph/OperationResults.h b/code/client/core/source/operation-graph/OperationResults.h index 45172d72d..4161872e3 100644 --- a/code/client/core/source/operation-graph/OperationResults.h +++ b/code/client/core/source/operation-graph/OperationResults.h @@ -12,10 +12,7 @@ namespace Soup::Core /// The cached operation results that is used to track input/output mappings for previous build /// executions to support incremental builds /// - #ifdef SOUP_BUILD - export - #endif - class OperationResults + export class OperationResults { private: std::map _results; diff --git a/code/client/core/source/operation-graph/OperationResultsManager.h b/code/client/core/source/operation-graph/OperationResultsManager.h index c5fa77748..89080a083 100644 --- a/code/client/core/source/operation-graph/OperationResultsManager.h +++ b/code/client/core/source/operation-graph/OperationResultsManager.h @@ -11,10 +11,7 @@ namespace Soup::Core /// /// The operation results manager /// - #ifdef SOUP_BUILD - export - #endif - class OperationResultsManager + export class OperationResultsManager { public: /// diff --git a/code/client/core/source/operation-graph/OperationResultsReader.h b/code/client/core/source/operation-graph/OperationResultsReader.h index 7c2bdd5e5..73e67998b 100644 --- a/code/client/core/source/operation-graph/OperationResultsReader.h +++ b/code/client/core/source/operation-graph/OperationResultsReader.h @@ -10,10 +10,7 @@ namespace Soup::Core /// /// The operation results state reader /// - #ifdef SOUP_BUILD - export - #endif - class OperationResultsReader + export class OperationResultsReader { private: // Binary Operation Results file format diff --git a/code/client/core/source/operation-graph/OperationResultsWriter.h b/code/client/core/source/operation-graph/OperationResultsWriter.h index 8609fb6f9..be96c3310 100644 --- a/code/client/core/source/operation-graph/OperationResultsWriter.h +++ b/code/client/core/source/operation-graph/OperationResultsWriter.h @@ -10,10 +10,7 @@ namespace Soup::Core /// /// The operation results state writer /// - #ifdef SOUP_BUILD - export - #endif - class OperationResultsWriter + export class OperationResultsWriter { private: // Binary Operation results file format diff --git a/code/client/core/source/package-lock/PackageLock.h b/code/client/core/source/package-lock/PackageLock.h index 4c3c5170f..d5a229f2b 100644 --- a/code/client/core/source/package-lock/PackageLock.h +++ b/code/client/core/source/package-lock/PackageLock.h @@ -4,13 +4,8 @@ #pragma once #include "recipe/RecipeValue.h" -#include "recipe/PackageReference.h" -#include "recipe/PackageName.h" -#ifdef SOUP_BUILD -export -#endif -namespace Soup::Core +export namespace Soup::Core { class PackageClosureValue { diff --git a/code/client/core/source/package-lock/PackageLockExtensions.h b/code/client/core/source/package-lock/PackageLockExtensions.h index eaa45adee..cad47a9e8 100644 --- a/code/client/core/source/package-lock/PackageLockExtensions.h +++ b/code/client/core/source/package-lock/PackageLockExtensions.h @@ -11,10 +11,7 @@ namespace Soup::Core /// /// The package lock extensions /// - #ifdef SOUP_BUILD - export - #endif - class PackageLockExtensions + export class PackageLockExtensions { public: /// diff --git a/code/client/core/source/package/PackageManager.h b/code/client/core/source/package/PackageManager.h index 8e4e8f463..1b8fc3a3d 100644 --- a/code/client/core/source/package/PackageManager.h +++ b/code/client/core/source/package/PackageManager.h @@ -9,10 +9,7 @@ namespace Soup::Core /// /// The package manager wrapper that sends requests along to the managed implementation /// - #ifdef SOUP_BUILD - export - #endif - class PackageManager + export class PackageManager { public: /// diff --git a/code/client/core/source/recipe/LanguageReference.h b/code/client/core/source/recipe/LanguageReference.cpp similarity index 89% rename from code/client/core/source/recipe/LanguageReference.h rename to code/client/core/source/recipe/LanguageReference.cpp index eebd18be2..8d38d036a 100644 --- a/code/client/core/source/recipe/LanguageReference.h +++ b/code/client/core/source/recipe/LanguageReference.cpp @@ -1,8 +1,19 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once +module; + +#include +#include +#include +#include + +export module Soup.Core:LanguageReference; + +import Opal; + +using namespace Opal; namespace Soup::Core { @@ -10,10 +21,7 @@ namespace Soup::Core /// A language reference object which will consist of a name version pair that /// refers to a published package /// - #ifdef SOUP_BUILD - export - #endif - class LanguageReference + export class LanguageReference { public: /// diff --git a/code/client/core/source/recipe/LanguageReferenceParser.cpp b/code/client/core/source/recipe/LanguageReferenceParser.cpp index f5660e7f0..39605ddf6 100644 --- a/code/client/core/source/recipe/LanguageReferenceParser.cpp +++ b/code/client/core/source/recipe/LanguageReferenceParser.cpp @@ -32,9 +32,7 @@ // // //////////////////////////////////////////////////////////////////////////////// -#ifdef SOUP_BUILD module; -#endif // #define SHOW_TOKENS @@ -47,25 +45,10 @@ module; #include #include -#ifdef SOUP_BUILD - module Soup.Core; import reflex; import Opal; -#else - -// import Opal -#include -#include -#include -#include "Utilities/SemanticVersion.h" -using namespace Opal; - -#include "LanguageReference.h" - -#endif - enum class LanguageReferenceToken : int { EndOfFile = 0, diff --git a/code/client/core/source/recipe/PackageIdentifier.h b/code/client/core/source/recipe/PackageIdentifier.cpp similarity index 93% rename from code/client/core/source/recipe/PackageIdentifier.h rename to code/client/core/source/recipe/PackageIdentifier.cpp index 9062d4d0b..be666f587 100644 --- a/code/client/core/source/recipe/PackageIdentifier.h +++ b/code/client/core/source/recipe/PackageIdentifier.cpp @@ -1,19 +1,27 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once -#include "PackageName.h" +module; + +#include +#include +#include +#include + +export module Soup.Core:PackageIdentifier; + +import Opal; +import :PackageName; + +using namespace Opal; namespace Soup::Core { /// /// A package language/owner/name that uniquely identifies a package in a single build graph /// - #ifdef SOUP_BUILD - export - #endif - class PackageIdentifier + export class PackageIdentifier { private: std::optional _language; diff --git a/code/client/core/source/recipe/PackageName.h b/code/client/core/source/recipe/PackageName.cpp similarity index 92% rename from code/client/core/source/recipe/PackageName.h rename to code/client/core/source/recipe/PackageName.cpp index 7480b5bbe..5e0fb5239 100644 --- a/code/client/core/source/recipe/PackageName.h +++ b/code/client/core/source/recipe/PackageName.cpp @@ -1,18 +1,26 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once +module; + +#include +#include +#include +#include + +export module Soup.Core:PackageName; + +import Opal; + +using namespace Opal; namespace Soup::Core { /// /// A package owner/name that uniquely identifies a package in a single language /// - #ifdef SOUP_BUILD - export - #endif - class PackageName + export class PackageName { private: std::optional _owner; diff --git a/code/client/core/source/recipe/PackageReference.h b/code/client/core/source/recipe/PackageReference.cpp similarity index 94% rename from code/client/core/source/recipe/PackageReference.h rename to code/client/core/source/recipe/PackageReference.cpp index d19398ac2..b6280e633 100644 --- a/code/client/core/source/recipe/PackageReference.h +++ b/code/client/core/source/recipe/PackageReference.cpp @@ -1,9 +1,22 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once -#include "PackageIdentifier.h" +module; + +#include +#include +#include +#include +#include +#include + +export module Soup.Core:PackageReference; + +import Opal; +import :PackageIdentifier; + +using namespace Opal; namespace Soup::Core { @@ -11,10 +24,7 @@ namespace Soup::Core /// A package reference object which will consist of a name version pair that /// refers to a published package or a path to a local recipe /// - #ifdef SOUP_BUILD - export - #endif - class PackageReference + export class PackageReference { private: std::optional _identifier; diff --git a/code/client/core/source/recipe/Recipe.h b/code/client/core/source/recipe/Recipe.h index d2fbd2b45..7fea6ac8d 100644 --- a/code/client/core/source/recipe/Recipe.h +++ b/code/client/core/source/recipe/Recipe.h @@ -3,8 +3,6 @@ // #pragma once -#include "LanguageReference.h" -#include "PackageReference.h" #include "RecipeValue.h" namespace Soup::Core @@ -12,10 +10,7 @@ namespace Soup::Core /// /// The recipe container /// - #ifdef SOUP_BUILD - export - #endif - class Recipe + export class Recipe { private: static constexpr const char* Property_Dependencies = "Dependencies"; diff --git a/code/client/core/source/recipe/RecipeBuildStateConverter.h b/code/client/core/source/recipe/RecipeBuildStateConverter.h index 8b8920feb..85f8c7d13 100644 --- a/code/client/core/source/recipe/RecipeBuildStateConverter.h +++ b/code/client/core/source/recipe/RecipeBuildStateConverter.h @@ -10,10 +10,7 @@ namespace Soup::Core /// /// The recipe build state converter that converts between a recipe table and a value table /// - #ifdef SOUP_BUILD - export - #endif - class RecipeBuildStateConverter + export class RecipeBuildStateConverter { public: /// diff --git a/code/client/core/source/recipe/RecipeCache.h b/code/client/core/source/recipe/RecipeCache.h index 09aed3702..bd171fcff 100644 --- a/code/client/core/source/recipe/RecipeCache.h +++ b/code/client/core/source/recipe/RecipeCache.h @@ -11,10 +11,7 @@ namespace Soup::Core /// /// The recipe cache that maintains an in memory collection of recipes to prevent loading multiple instances from disk /// - #ifdef SOUP_BUILD - export - #endif - class RecipeCache + export class RecipeCache { private: std::map _knownRecipes; diff --git a/code/client/core/source/recipe/RecipeExtensions.h b/code/client/core/source/recipe/RecipeExtensions.h index 0a8c27b6a..53088c9f5 100644 --- a/code/client/core/source/recipe/RecipeExtensions.h +++ b/code/client/core/source/recipe/RecipeExtensions.h @@ -11,10 +11,7 @@ namespace Soup::Core /// /// The recipe extensions /// - #ifdef SOUP_BUILD - export - #endif - class RecipeExtensions + export class RecipeExtensions { public: /// @@ -82,4 +79,4 @@ namespace Soup::Core RecipeSML::Serialize(recipe.GetTable(), file->GetOutStream()); } }; -} +} \ No newline at end of file diff --git a/code/client/core/source/recipe/RecipeSML.h b/code/client/core/source/recipe/RecipeSML.h index 9f1a46e04..9097a0bfd 100644 --- a/code/client/core/source/recipe/RecipeSML.h +++ b/code/client/core/source/recipe/RecipeSML.h @@ -11,10 +11,7 @@ namespace Soup::Core /// /// The recipe SML serialize manager /// - #ifdef SOUP_BUILD - export - #endif - class RecipeSML + export class RecipeSML { public: /// diff --git a/code/client/core/source/recipe/RecipeValue.h b/code/client/core/source/recipe/RecipeValue.h index 9a31ddf3b..ac207fd3e 100644 --- a/code/client/core/source/recipe/RecipeValue.h +++ b/code/client/core/source/recipe/RecipeValue.h @@ -4,10 +4,7 @@ #pragma once -#ifdef SOUP_BUILD -export -#endif -namespace Soup::Core +export namespace Soup::Core { class RecipeValue; using RecipeList = std::vector; diff --git a/code/client/core/source/recipe/RootRecipe.h b/code/client/core/source/recipe/RootRecipe.h index 9227ad0d9..025d83e25 100644 --- a/code/client/core/source/recipe/RootRecipe.h +++ b/code/client/core/source/recipe/RootRecipe.h @@ -10,10 +10,7 @@ namespace Soup::Core /// /// The root recipe container /// - #ifdef SOUP_BUILD - export - #endif - class RootRecipe + export class RootRecipe { private: static constexpr const char* Property_OutputRoot = "OutputRoot"; diff --git a/code/client/core/source/recipe/RootRecipeExtensions.h b/code/client/core/source/recipe/RootRecipeExtensions.h index 89110125c..7fc6e581f 100644 --- a/code/client/core/source/recipe/RootRecipeExtensions.h +++ b/code/client/core/source/recipe/RootRecipeExtensions.h @@ -11,10 +11,7 @@ namespace Soup::Core /// /// The root recipe extensions /// - #ifdef SOUP_BUILD - export - #endif - class RootRecipeExtensions + export class RootRecipeExtensions { public: /// diff --git a/code/client/core/source/sml/SML.h b/code/client/core/source/sml/SML.h index ab86d0feb..8d76eba4e 100644 --- a/code/client/core/source/sml/SML.h +++ b/code/client/core/source/sml/SML.h @@ -4,10 +4,7 @@ #pragma once -#ifdef SOUP_BUILD -export -#endif -namespace Soup::Core +export namespace Soup::Core { class SMLValue; diff --git a/code/client/core/source/sml/SMLParser.cpp b/code/client/core/source/sml/SMLParser.cpp index 09544afe1..2ac54f0b2 100644 --- a/code/client/core/source/sml/SMLParser.cpp +++ b/code/client/core/source/sml/SMLParser.cpp @@ -32,10 +32,7 @@ // // //////////////////////////////////////////////////////////////////////////////// - -#ifdef SOUP_BUILD module; -#endif // #define SHOW_TOKENS @@ -50,19 +47,9 @@ module; # include #endif -#ifdef SOUP_BUILD - module Soup.Core; import reflex; -#else - -#include -#include -#include "SML.h" - -#endif - enum class SMLToken : int { EndOfFile = 0, diff --git a/code/client/core/source/sml/SMLParser.l b/code/client/core/source/sml/SMLParser.l index c84dbb028..68f17812d 100644 --- a/code/client/core/source/sml/SMLParser.l +++ b/code/client/core/source/sml/SMLParser.l @@ -1,8 +1,6 @@ %top{ -#ifdef SOUP_BUILD module; -#endif // #define SHOW_TOKENS @@ -18,19 +16,9 @@ module; # include #endif -#ifdef SOUP_BUILD - module Soup.Core; import reflex; -#else - -#include -#include -#include "SML.h" - -#endif - enum class SMLToken : int { EndOfFile = 0, diff --git a/code/client/core/source/utilities/HandledException.h b/code/client/core/source/utilities/HandledException.cpp similarity index 84% rename from code/client/core/source/utilities/HandledException.h rename to code/client/core/source/utilities/HandledException.cpp index 2ee308654..fb9ef2db5 100644 --- a/code/client/core/source/utilities/HandledException.h +++ b/code/client/core/source/utilities/HandledException.cpp @@ -2,17 +2,18 @@ // Copyright (c) Soup. All rights reserved. // -#pragma once +module; + +#include + +export module Soup.Core:HandledException; namespace Soup::Core { /// /// A special exception overload that indicates an early exit for the application that was handled /// - #ifdef SOUP_BUILD - export - #endif - class HandledException : public std::exception + export class HandledException : public std::exception { public: /// diff --git a/code/client/core/source/utilities/SequenceMap.h b/code/client/core/source/utilities/SequenceMap.cpp similarity index 94% rename from code/client/core/source/utilities/SequenceMap.h rename to code/client/core/source/utilities/SequenceMap.cpp index 1d5f5e67b..fe139abb0 100644 --- a/code/client/core/source/utilities/SequenceMap.h +++ b/code/client/core/source/utilities/SequenceMap.cpp @@ -1,8 +1,13 @@ -// +// // Copyright (c) Soup. All rights reserved. // -#pragma once +module; + +#include +#include + +export module Soup.Core:SequenceMap; namespace Soup::Core { diff --git a/code/client/core/source/value-table/Value.cpp b/code/client/core/source/value-table/Value.cpp index 05a070b0e..05348d902 100644 --- a/code/client/core/source/value-table/Value.cpp +++ b/code/client/core/source/value-table/Value.cpp @@ -2,304 +2,354 @@ // Copyright (c) Soup. All rights reserved. // -#ifdef SOUP_BUILD module; -#endif -#include -#include -#include +#include +#include #include #include -#include #include #include -#ifdef SOUP_BUILD -module Soup.Core; -#else -#include "Value.h" -#endif +export module Soup.Core:Value; -namespace Soup::Core -{ +import Opal; +import :LanguageReference; +import :PackageReference; -Value::Value(ValueTable table) : - _value(std::move(table)) -{ -} +using namespace Opal; -Value::Value(ValueList list) : - _value(std::move(list)) +export namespace Soup::Core { -} + class Value; + using ValueList = std::vector; + using ValueTable = std::map; -Value::Value(std::string value) : - _value(std::move(value)) -{ -} + enum class ValueType : uint64_t + { + Table = 1, + List = 2, + String = 3, + Integer = 4, + Float = 5, + Boolean = 6, + Version = 7, + PackageReference = 8, + LanguageReference = 9, + }; + + /// + /// Build State Extension interface + /// + class Value + { + private: + std::variant< + ValueTable, + ValueList, + std::string, + int64_t, + double, + bool, + SemanticVersion, + PackageReference, + LanguageReference> _value; + + public: + /// + /// Initializes a new instance of the Value class + /// + Value(ValueTable table) : + _value(std::move(table)) + { + } -Value::Value(int64_t value) : - _value(value) -{ -} + Value(ValueList list) : + _value(std::move(list)) + { + } -Value::Value(double value) : - _value(value) -{ -} + Value(std::string value) : + _value(std::move(value)) + { + } -Value::Value(bool value) : - _value(value) -{ -} + Value(int64_t value) : + _value(value) + { + } -Value::Value(SemanticVersion value) : - _value(value) -{ -} + Value(double value) : + _value(value) + { + } -Value::Value(LanguageReference value) : - _value(std::move(value)) -{ -} + Value(bool value) : + _value(value) + { + } -Value::Value(PackageReference value) : - _value(std::move(value)) -{ -} + Value(SemanticVersion value) : + _value(value) + { + } -ValueType Value::GetType() const -{ - switch (_value.index()) - { - case 0: - return ValueType::Table; - case 1: - return ValueType::List; - case 2: - return ValueType::String; - case 3: - return ValueType::Integer; - case 4: - return ValueType::Float; - case 5: - return ValueType::Boolean; - case 6: - return ValueType::Version; - case 7: - return ValueType::PackageReference; - case 8: - return ValueType::LanguageReference; - default: - throw std::runtime_error("Unknown value type."); - } -} - -bool Value::IsTable() const -{ - return GetType() == ValueType::Table; -} + Value(LanguageReference value) : + _value(std::move(value)) + { + } -bool Value::IsList() const -{ - return GetType() == ValueType::List; -} + Value(PackageReference value) : + _value(std::move(value)) + { + } -bool Value::IsString() const -{ - return GetType() == ValueType::String; -} + /// + /// Type checker methods + /// + ValueType GetType() const + { + switch (_value.index()) + { + case 0: + return ValueType::Table; + case 1: + return ValueType::List; + case 2: + return ValueType::String; + case 3: + return ValueType::Integer; + case 4: + return ValueType::Float; + case 5: + return ValueType::Boolean; + case 6: + return ValueType::Version; + case 7: + return ValueType::PackageReference; + case 8: + return ValueType::LanguageReference; + default: + throw std::runtime_error("Unknown value type."); + } + } -bool Value::IsInteger() const -{ - return GetType() == ValueType::Integer; -} + bool IsTable() const + { + return GetType() == ValueType::Table; + } -bool Value::IsFloat() const -{ - return GetType() == ValueType::Float; -} + bool IsList() const + { + return GetType() == ValueType::List; + } -bool Value::IsBoolean() const -{ - return GetType() == ValueType::Boolean; -} + bool IsString() const + { + return GetType() == ValueType::String; + } -ValueTable& Value::AsTable() -{ - if (GetType() == ValueType::Table) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as Table with incorrect type."); - } -} + bool IsInteger() const + { + return GetType() == ValueType::Integer; + } -ValueList& Value::AsList() -{ - if (GetType() == ValueType::List) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as List with incorrect type."); - } -} + bool IsFloat() const + { + return GetType() == ValueType::Float; + } -const ValueTable& Value::AsTable() const -{ - if (GetType() == ValueType::Table) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as Table with incorrect type."); - } -} + bool IsBoolean() const + { + return GetType() == ValueType::Boolean; + } -const ValueList& Value::AsList() const -{ - if (GetType() == ValueType::List) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as List with incorrect type."); - } -} -const std::string& Value::AsString() const -{ - if (GetType() == ValueType::String) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as String with incorrect type."); - } -} + /// + /// Internal accessors + /// + std::string ToString(); -int64_t Value::AsInteger() const -{ - if (GetType() == ValueType::Integer) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as Integer with incorrect type."); - } -} + ValueTable& AsTable() + { + if (GetType() == ValueType::Table) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as Table with incorrect type."); + } + } -double Value::AsFloat() const -{ - if (GetType() == ValueType::Float) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as Float with incorrect type."); - } -} + ValueList& AsList() + { + if (GetType() == ValueType::List) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as List with incorrect type."); + } + } -bool Value::AsBoolean() const -{ - if (GetType() == ValueType::Boolean) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as Boolean with incorrect type."); - } -} + const ValueTable& AsTable() const + { + if (GetType() == ValueType::Table) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as Table with incorrect type."); + } + } -SemanticVersion Value::AsVersion() const -{ - if (GetType() == ValueType::Version) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as Version with incorrect type."); - } -} + const ValueList& AsList() const + { + if (GetType() == ValueType::List) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as List with incorrect type."); + } + } -PackageReference Value::AsPackageReference() const -{ - if (GetType() == ValueType::PackageReference) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as PackageReference with incorrect type."); - } -} + const std::string& AsString() const + { + if (GetType() == ValueType::String) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as String with incorrect type."); + } + } -LanguageReference Value::AsLanguageReference() const -{ - if (GetType() == ValueType::LanguageReference) - { - return std::get(_value); - } - else - { - // Wrong type - throw std::runtime_error("Attempt to access value as LanguageReference with incorrect type."); - } -} + int64_t AsInteger() const + { + if (GetType() == ValueType::Integer) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as Integer with incorrect type."); + } + } -bool Value::operator ==(const Value& rhs) const -{ - if (GetType() == rhs.GetType()) - { - switch (GetType()) + double AsFloat() const { - case ValueType::Table: - return std::get(_value) == std::get(rhs._value); - case ValueType::List: - return std::get(_value) == std::get(rhs._value); - case ValueType::String: - return std::get(_value) == std::get(rhs._value); - case ValueType::Integer: - return std::get(_value) == std::get(rhs._value); - case ValueType::Float: - return std::get(_value) == std::get(rhs._value); - case ValueType::Boolean: - return std::get(_value) == std::get(rhs._value); - default: - throw std::runtime_error("Unkown ValueType for comparison."); + if (GetType() == ValueType::Float) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as Float with incorrect type."); + } } - } - else - { - return false; - } -} -bool Value::operator !=(const Value& rhs) const -{ - return !(*this == rhs); -} + bool AsBoolean() const + { + if (GetType() == ValueType::Boolean) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as Boolean with incorrect type."); + } + } -} + SemanticVersion AsVersion() const + { + if (GetType() == ValueType::Version) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as Version with incorrect type."); + } + } + + PackageReference AsPackageReference() const + { + if (GetType() == ValueType::PackageReference) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as PackageReference with incorrect type."); + } + } + + LanguageReference AsLanguageReference() const + { + if (GetType() == ValueType::LanguageReference) + { + return std::get(_value); + } + else + { + // Wrong type + throw std::runtime_error("Attempt to access value as LanguageReference with incorrect type."); + } + } + + /// + /// Equality operator + /// + bool operator ==(const Value& rhs) const + { + if (GetType() == rhs.GetType()) + { + switch (GetType()) + { + case ValueType::Table: + return std::get(_value) == std::get(rhs._value); + case ValueType::List: + return std::get(_value) == std::get(rhs._value); + case ValueType::String: + return std::get(_value) == std::get(rhs._value); + case ValueType::Integer: + return std::get(_value) == std::get(rhs._value); + case ValueType::Float: + return std::get(_value) == std::get(rhs._value); + case ValueType::Boolean: + return std::get(_value) == std::get(rhs._value); + default: + throw std::runtime_error("Unkown ValueType for comparison."); + } + } + else + { + return false; + } + } + + /// + /// Inequality operator + /// + bool operator !=(const Value& rhs) const + { + return !(*this == rhs); + } + }; +} \ No newline at end of file diff --git a/code/client/core/source/value-table/Value.h b/code/client/core/source/value-table/Value.h deleted file mode 100644 index 3788927ed..000000000 --- a/code/client/core/source/value-table/Value.h +++ /dev/null @@ -1,100 +0,0 @@ -// -// Copyright (c) Soup. All rights reserved. -// - -#pragma once - -#ifdef SOUP_BUILD -export -#endif -namespace Soup::Core -{ - class Value; - using ValueList = std::vector; - using ValueTable = std::map; - - enum class ValueType : uint64_t - { - Table = 1, - List = 2, - String = 3, - Integer = 4, - Float = 5, - Boolean = 6, - Version = 7, - PackageReference = 8, - LanguageReference = 9, - }; - - /// - /// Build State Extension interface - /// - class Value - { - public: - /// - /// Initializes a new instance of the Value class - /// - Value(ValueTable table); - Value(ValueList list); - Value(std::string value); - Value(int64_t value); - Value(double value); - Value(bool value); - Value(SemanticVersion value); - Value(PackageReference value); - Value(LanguageReference value); - - /// - /// Type checker methods - /// - ValueType GetType() const; - - bool IsTable() const; - bool IsList() const; - bool IsString() const; - bool IsInteger() const; - bool IsFloat() const; - bool IsBoolean() const; - - /// - /// Internal accessors - /// - std::string ToString(); - - ValueTable& AsTable(); - ValueList& AsList(); - - const ValueTable& AsTable() const; - const ValueList& AsList() const; - const std::string& AsString() const; - int64_t AsInteger() const; - double AsFloat() const; - bool AsBoolean() const; - SemanticVersion AsVersion() const; - PackageReference AsPackageReference() const; - LanguageReference AsLanguageReference() const; - - /// - /// Equality operator - /// - bool operator ==(const Value& rhs) const; - - /// - /// Inequality operator - /// - bool operator !=(const Value& rhs) const; - - private: - std::variant< - ValueTable, - ValueList, - std::string, - int64_t, - double, - bool, - SemanticVersion, - PackageReference, - LanguageReference> _value; - }; -} diff --git a/code/client/core/source/value-table/ValueTableManager.h b/code/client/core/source/value-table/ValueTableManager.h index 5506bd89c..859912866 100644 --- a/code/client/core/source/value-table/ValueTableManager.h +++ b/code/client/core/source/value-table/ValueTableManager.h @@ -3,7 +3,6 @@ // #pragma once -#include "Value.h" #include "ValueTableReader.h" #include "ValueTableWriter.h" @@ -12,10 +11,7 @@ namespace Soup::Core /// /// The Value Table state manager /// - #ifdef SOUP_BUILD - export - #endif - class ValueTableManager + export class ValueTableManager { public: /// diff --git a/code/client/core/source/value-table/ValueTableReader.h b/code/client/core/source/value-table/ValueTableReader.h index 4b5cb2314..eb603fe2c 100644 --- a/code/client/core/source/value-table/ValueTableReader.h +++ b/code/client/core/source/value-table/ValueTableReader.h @@ -3,17 +3,13 @@ // #pragma once -#include "Value.h" namespace Soup::Core { /// /// The value table state reader /// - #ifdef SOUP_BUILD - export - #endif - class ValueTableReader + export class ValueTableReader { private: // Binary Value Table file format diff --git a/code/client/core/source/value-table/ValueTableWriter.h b/code/client/core/source/value-table/ValueTableWriter.h index 80c8d572e..3aaf33598 100644 --- a/code/client/core/source/value-table/ValueTableWriter.h +++ b/code/client/core/source/value-table/ValueTableWriter.h @@ -3,17 +3,13 @@ // #pragma once -#include "Value.h" namespace Soup::Core { /// /// The value table state writer /// - #ifdef SOUP_BUILD - export - #endif - class ValueTableWriter + export class ValueTableWriter { private: // Binary Value Table file format diff --git a/code/client/core/source/wren/WrenHelpers.h b/code/client/core/source/wren/WrenHelpers.h index 74e6af27c..01fe766ee 100644 --- a/code/client/core/source/wren/WrenHelpers.h +++ b/code/client/core/source/wren/WrenHelpers.h @@ -4,10 +4,7 @@ #pragma once -#ifdef SOUP_BUILD -export -#endif -namespace Soup::Core +export namespace Soup::Core { class SmartHandle { diff --git a/code/client/core/source/wren/WrenHost.h b/code/client/core/source/wren/WrenHost.h index 0269ec99d..ae08c16d7 100644 --- a/code/client/core/source/wren/WrenHost.h +++ b/code/client/core/source/wren/WrenHost.h @@ -7,10 +7,7 @@ #include "sml/SML.h" #include "WrenHelpers.h" -#ifdef SOUP_BUILD -export -#endif -namespace Soup::Core +export namespace Soup::Core { class WrenHost { @@ -59,7 +56,7 @@ namespace Soup::Core { std::ifstream bundlesFile(_bundlesFile.value().ToString()); if (!bundlesFile.is_open()) - throw std::runtime_error("Bundles does not exist"); + throw std::runtime_error(std::format("Bundles does not exist: {0}", _bundlesFile.value().ToString())); auto bundlesDocument = SMLDocument::Parse(bundlesFile); if (!bundlesDocument.GetRoot().Contains("Bundles")) diff --git a/code/client/core/source/wren/WrenValueTable.h b/code/client/core/source/wren/WrenValueTable.h index bb480428c..455ad2cf6 100644 --- a/code/client/core/source/wren/WrenValueTable.h +++ b/code/client/core/source/wren/WrenValueTable.h @@ -3,12 +3,8 @@ // #pragma once -#include "value-table/Value.h" -#ifdef SOUP_BUILD -export -#endif -namespace Soup::Core +export namespace Soup::Core { class InvalidTypeException : public std::runtime_error { diff --git a/code/client/tools/PackageLock.sml b/code/client/tools/PackageLock.sml index ce2bf20a5..ed84171cc 100644 --- a/code/client/tools/PackageLock.sml +++ b/code/client/tools/PackageLock.sml @@ -20,13 +20,13 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Build1: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } - 'mwasplund|Soup.Test.Cpp': { Version: 0.12.0 } + 'Soup|Cpp': { Version: 0.14.0 } + 'mwasplund|Soup.Test.Cpp': { Version: 0.13.0 } } } Build2: { diff --git a/code/generate-test/Main.cpp b/code/generate-test/Main.cpp index edef29e2b..75377b997 100644 --- a/code/generate-test/Main.cpp +++ b/code/generate-test/Main.cpp @@ -13,55 +13,11 @@ #include #include -#ifdef SOUP_BUILD - import Opal; import Soup.Core; using namespace Opal; -#else - -// import Opal -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "utilities/Path.h" -#include "utilities/SemanticVersion.h" -#include "io/SystemConsoleManager.h" -#include "logger/Log.h" -#include "logger/ConsoleTraceListener.h" -#include "system/LinuxProcessManager.h" -#include "system/STLFileSystem.h" -#include "system/STLSystem.h" - -using namespace Opal; - -// import Soup.Core -#include -#include -#include -#include -#include "build/BuildEngine.h" -#include "package/PackageManager.h" - -#endif - // TODO import // TODO: Treat wren as C code #include "wren/wren.h" diff --git a/code/generate-test/PackageLock.sml b/code/generate-test/PackageLock.sml index bc24f3888..48b275959 100644 --- a/code/generate-test/PackageLock.sml +++ b/code/generate-test/PackageLock.sml @@ -19,13 +19,13 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Build1: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } - 'mwasplund|Soup.Test.Cpp': { Version: 0.12.0 } + 'Soup|Cpp': { Version: 0.14.0 } + 'mwasplund|Soup.Test.Cpp': { Version: 0.13.0 } } } Build2: { diff --git a/code/generate/Main.cpp b/code/generate/Main.cpp index fb0aeecce..e2f97f619 100644 --- a/code/generate/Main.cpp +++ b/code/generate/Main.cpp @@ -14,8 +14,6 @@ #include #include -#ifdef SOUP_BUILD - // TODO import // TODO: Treat wren as C code #include "wren/wren.h" @@ -25,64 +23,6 @@ import Soup.Core; using namespace Opal; -#else - -// import Opal -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "Utilities/Path.h" -#include "Utilities/SemanticVersion.h" -#include "IO/SystemConsoleManager.h" -#include "Logger/Log.h" -#include "Logger/ConsoleTraceListener.h" -#include "System/LinuxProcessManager.h" -#include "System/STLFileSystem.h" -#include "System/STLSystem.h" - -using namespace Opal; - -// // import CryptoPP -// #include "Interface.h" - -// // import Monitor.Host -// #include "Linux/LinuxMonitorProcessManager.h" - -// import Wren -// TODO: Treat wren as C code -#include "wren/wren.h" - -// import Soup.Core -#include -#include -#include -#include "wren/WrenHost.h" -#include "wren/WrenValueTable.h" -#include "build/BuildConstants.h" -#include "build/FileSystemState.h" -#include "build/MacroManager.h" -#include "operation-graph/OperationGraphManager.h" -#include "recipe/RecipeBuildStateConverter.h" -#include "recipe/RecipeExtensions.h" -#include "value-table/ValueTableManager.h" - -#endif - #include "GenerateEngine.h" int main(int argc, char** argv) diff --git a/code/generate/PackageLock.sml b/code/generate/PackageLock.sml index cca392552..7370fcaa7 100644 --- a/code/generate/PackageLock.sml +++ b/code/generate/PackageLock.sml @@ -1,28 +1,36 @@ Version: 5 Closures: { Root: { + C: { + 'mwasplund|libseccomp': { Version: 2.5.8, Build: 'Build2', Tool: 'Tool0' } + } 'C++': { 'Monitor.Host': { Version: '../monitor/host/', Build: 'Build0', Tool: 'Tool0' } 'Monitor.Shared': { Version: '../monitor/shared/', Build: 'Build0', Tool: 'Tool0' } + 'Soup.Core': { Version: '../client/core/', Build: 'Build1', Tool: 'Tool0' } + 'Soup.Generate': { Version: './', Build: 'Build0', Tool: 'Tool0' } 'mwasplund|CryptoPP': { Version: 1.2.4, Build: 'Build0', Tool: 'Tool0' } 'mwasplund|Detours': { Version: 4.0.12, Build: 'Build0', Tool: 'Tool0' } 'mwasplund|Opal': { Version: 0.11.5, Build: 'Build0', Tool: 'Tool0' } - 'mwasplund|reflex': { Version: 1.0.5, Build: 'Build0', Tool: 'Tool0' } 'mwasplund|Soup.Test.Assert': { Version: 0.4.2, Build: 'Build0', Tool: 'Tool0' } + 'mwasplund|reflex': { Version: 1.0.5, Build: 'Build0', Tool: 'Tool0' } 'mwasplund|wren': { Version: 1.0.5, Build: 'Build0', Tool: 'Tool0' } - 'Soup.Core': { Version: '../client/core/', Build: 'Build1', Tool: 'Tool0' } - 'Soup.Generate': { Version: '../generate', Build: 'Build0', Tool: 'Tool0' } } } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Build1: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } - 'mwasplund|Soup.Test.Cpp': { Version: 0.11.0 } + 'Soup|Cpp': { Version: 0.14.0 } + 'mwasplund|Soup.Test.Cpp': { Version: 0.13.0 } + } + } + Build2: { + Wren: { + 'Soup|C': { Version: 0.4.1 } } } Tool0: { diff --git a/code/monitor/client/PackageLock.sml b/code/monitor/client/PackageLock.sml index c06853fd8..a789023cb 100644 --- a/code/monitor/client/PackageLock.sml +++ b/code/monitor/client/PackageLock.sml @@ -10,7 +10,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/code/monitor/host/IMonitorProcessManager.h b/code/monitor/host/IMonitorProcessManager.h index 2c4540107..19dda459f 100644 --- a/code/monitor/host/IMonitorProcessManager.h +++ b/code/monitor/host/IMonitorProcessManager.h @@ -11,10 +11,7 @@ namespace Monitor /// The process manager interface that supports monitoring /// Interface mainly used to allow for unit testing client code /// - #ifdef SOUP_BUILD - export - #endif - class IMonitorProcessManager + export class IMonitorProcessManager { public: /// diff --git a/code/monitor/host/ISystemAccessMonitor.h b/code/monitor/host/ISystemAccessMonitor.h index bab1c3697..c8b8af023 100644 --- a/code/monitor/host/ISystemAccessMonitor.h +++ b/code/monitor/host/ISystemAccessMonitor.h @@ -1,11 +1,8 @@ -#pragma once +#pragma once namespace Monitor { - #ifdef SOUP_BUILD - export - #endif - class ISystemAccessMonitor + export class ISystemAccessMonitor { public: virtual void OnCreateProcess(std::string_view applicationName, bool wasDetoured) = 0; diff --git a/code/monitor/host/Module.cpp b/code/monitor/host/Module.cpp index 82d60915a..213c570fc 100644 --- a/code/monitor/host/Module.cpp +++ b/code/monitor/host/Module.cpp @@ -1,10 +1,11 @@ -#ifdef SOUP_BUILD module; -#endif #ifdef _WIN32 #include +#ifdef SearchPath +#undef SearchPath +#endif #ifdef CreateProcess #undef CreateProcess #endif @@ -60,8 +61,6 @@ extern char **environ; #include #include -#ifdef SOUP_BUILD - export module Monitor.Host; #if defined(_WIN32) import Detours; @@ -69,39 +68,6 @@ import Detours; import Monitor.Shared; import Opal; -#else - -// import Opal -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include "utilities/Path.h" -#include "utilities/SemanticVersion.h" -#include "io/SystemConsoleManager.h" -#include "logger/Log.h" -#include "logger/ConsoleTraceListener.h" -#include "system/MockProcess.h" -#include "system/LinuxProcessManager.h" -#include "system/STLFileSystem.h" -#include "system/STLSystem.h" - -#endif - using namespace Opal; #define MONITOR_IMPLEMENTATION diff --git a/code/monitor/host/ScopedMonitorProcessManagerRegister.h b/code/monitor/host/ScopedMonitorProcessManagerRegister.h index a2e4a8906..5bb154baa 100644 --- a/code/monitor/host/ScopedMonitorProcessManagerRegister.h +++ b/code/monitor/host/ScopedMonitorProcessManagerRegister.h @@ -10,10 +10,7 @@ namespace Monitor /// /// A scoped process manager registration helper /// - #ifdef SOUP_BUILD - export - #endif - class ScopedMonitorProcessManagerRegister + export class ScopedMonitorProcessManagerRegister { public: /// diff --git a/code/monitor/host/linux/LinuxMonitorProcessManager.h b/code/monitor/host/linux/LinuxMonitorProcessManager.h index 0c7e8b95e..32a15a228 100644 --- a/code/monitor/host/linux/LinuxMonitorProcessManager.h +++ b/code/monitor/host/linux/LinuxMonitorProcessManager.h @@ -11,10 +11,7 @@ namespace Monitor::Linux /// /// A Linux platform specific process executable using system /// - #ifdef SOUP_BUILD - export - #endif - class LinuxMonitorProcessManager : public IMonitorProcessManager + export class LinuxMonitorProcessManager : public IMonitorProcessManager { public: /// diff --git a/code/monitor/host/mock/MockMonitorProcessManager.h b/code/monitor/host/mock/MockMonitorProcessManager.h index ce15b9181..8631e314b 100644 --- a/code/monitor/host/mock/MockMonitorProcessManager.h +++ b/code/monitor/host/mock/MockMonitorProcessManager.h @@ -11,10 +11,7 @@ namespace Monitor /// The mock monitor process manager /// TODO: Move into test project /// - #ifdef SOUP_BUILD - export - #endif - class MockMonitorProcessManager : public IMonitorProcessManager + export class MockMonitorProcessManager : public IMonitorProcessManager { private: std::atomic m_uniqueId; diff --git a/code/monitor/shared/Message.h b/code/monitor/shared/Message.h index fa17eb237..e6a31cede 100644 --- a/code/monitor/shared/Message.h +++ b/code/monitor/shared/Message.h @@ -3,10 +3,7 @@ namespace Monitor { - #ifdef SOUP_BUILD - export - #endif - struct Message + export struct Message { public: MessageType Type; diff --git a/code/monitor/shared/MessageType.h b/code/monitor/shared/MessageType.h index beb42950a..9d0080dc7 100644 --- a/code/monitor/shared/MessageType.h +++ b/code/monitor/shared/MessageType.h @@ -2,10 +2,7 @@ namespace Monitor { - #ifdef SOUP_BUILD - export - #endif - enum class MessageType : uint32_t + export enum class MessageType : uint32_t { Initialize, Shutdown, diff --git a/code/monitor/shared/Module.cpp b/code/monitor/shared/Module.cpp index d2a629546..fa3c92744 100644 --- a/code/monitor/shared/Module.cpp +++ b/code/monitor/shared/Module.cpp @@ -1,6 +1,4 @@ -#ifdef SOUP_BUILD module; -#endif #ifdef _WIN32 @@ -34,9 +32,7 @@ module; #include #include -#ifdef SOUP_BUILD export module Monitor.Shared; -#endif #ifdef _WIN32 diff --git a/code/monitor/shared/linux/DetourEventType.h b/code/monitor/shared/linux/DetourEventType.h index b456be1f2..7b848815b 100644 --- a/code/monitor/shared/linux/DetourEventType.h +++ b/code/monitor/shared/linux/DetourEventType.h @@ -2,10 +2,7 @@ namespace Monitor::Linux { - #ifdef SOUP_BUILD - export - #endif - enum class DetourEventType : uint32_t + export enum class DetourEventType : uint32_t { // FileApi open, diff --git a/code/monitor/shared/windows/DetourEventType.h b/code/monitor/shared/windows/DetourEventType.h index 8a9ec574b..65d8f3d8c 100644 --- a/code/monitor/shared/windows/DetourEventType.h +++ b/code/monitor/shared/windows/DetourEventType.h @@ -2,10 +2,7 @@ namespace Monitor::Windows { - #ifdef SOUP_BUILD - export - #endif - enum class DetourEventType : uint32_t + export enum class DetourEventType : uint32_t { // FileApi AreFileApisANSI, diff --git a/code/monitor/shared/windows/ProcessPayload.h b/code/monitor/shared/windows/ProcessPayload.h index e9bc1fa9c..b3dddf4de 100644 --- a/code/monitor/shared/windows/ProcessPayload.h +++ b/code/monitor/shared/windows/ProcessPayload.h @@ -1,9 +1,6 @@ #pragma once -#ifdef SOUP_BUILD -export -#endif -namespace Monitor::Windows +export namespace Monitor::Windows { constexpr const char* TBLOG_PIPE_NAMEA = "\\\\.\\pipe\\monitor"; constexpr const wchar_t* TBLOG_PIPE_NAMEW = L"\\\\.\\pipe\\monitor"; diff --git a/code/tools/copy/PackageLock.sml b/code/tools/copy/PackageLock.sml index 2c786731d..5231f7898 100644 --- a/code/tools/copy/PackageLock.sml +++ b/code/tools/copy/PackageLock.sml @@ -7,7 +7,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/code/tools/mkdir/PackageLock.sml b/code/tools/mkdir/PackageLock.sml index 6ac0f4326..d82017ba7 100644 --- a/code/tools/mkdir/PackageLock.sml +++ b/code/tools/mkdir/PackageLock.sml @@ -8,7 +8,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/code/tools/print-graph/PackageLock.sml b/code/tools/print-graph/PackageLock.sml index 20d115bf9..70d4beb0c 100644 --- a/code/tools/print-graph/PackageLock.sml +++ b/code/tools/print-graph/PackageLock.sml @@ -19,13 +19,13 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Build1: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } - 'mwasplund|Soup.Test.Cpp': { Version: 0.12.0 } + 'Soup|Cpp': { Version: 0.14.0 } + 'mwasplund|Soup.Test.Cpp': { Version: 0.13.0 } } } Build2: { diff --git a/code/tools/print-results/PackageLock.sml b/code/tools/print-results/PackageLock.sml index f67bbbd68..276c500d4 100644 --- a/code/tools/print-results/PackageLock.sml +++ b/code/tools/print-results/PackageLock.sml @@ -19,13 +19,13 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Build1: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } - 'mwasplund|Soup.Test.Cpp': { Version: 0.12.0 } + 'Soup|Cpp': { Version: 0.14.0 } + 'mwasplund|Soup.Test.Cpp': { Version: 0.13.0 } } } Build2: { diff --git a/code/tools/print-valuetable/PackageLock.sml b/code/tools/print-valuetable/PackageLock.sml index 275b31ac5..35fe57d3c 100644 --- a/code/tools/print-valuetable/PackageLock.sml +++ b/code/tools/print-valuetable/PackageLock.sml @@ -19,13 +19,13 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Build1: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } - 'mwasplund|Soup.Test.Cpp': { Version: 0.12.0 } + 'Soup|Cpp': { Version: 0.14.0 } + 'mwasplund|Soup.Test.Cpp': { Version: 0.13.0 } } } Build2: { diff --git a/docs/architecture.md b/docs/architecture.md index ae9e99361..020966c02 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,4 +1,3 @@ - # Architecture ## Overview @@ -63,8 +62,7 @@ This work can be broken down into five phases: * Monitor the actual file system access (using Detours on Windows, open question for other platforms) to verify the declared input/output files match reality. ## Package Manager -You may have noticed that nothing about the build explicitly deals with the integration of a public feed of packages. Because each individual projects build is isolated and self contained, a dependency [Package Reference](architecture/package-reference.md) can easily be migrated from a directory reference, for local projects, to a name@version pair that will be resolved to a published snapshot of a public project. The CLI application will consume a rest API from a hosted web service that allows for users to install other projects and publish the code they would like to share with ease. The build Engine will then have a small amount of integration logic that knows where to look when resolving dependencies that reference a public package that will be installed to a known location. It should be noted that these public dependency references can be for both runtime and developer dependencies. This will allow for shared packages to contain custom build logic and for the creation of shared build Extensions to augment the built in build Tasks. +You may have noticed that nothing about the build explicitly deals with the integration of a public feed of packages. Because each individual projects build is isolated and self contained, a dependency [Package Reference](architecture/package-reference.md) can easily be migrated from a directory reference, for local projects, to a name@version pair that will be resolved to a published snapshot of a public project. The CLI application leverages a REST API from a web service that allows for users to install other projects and publish code they would like to share with ease. The build Engine has a small amount of integration logic that knows where to look when resolving dependencies that reference a public package that will be installed to a wellknown location. It should be noted that these public dependency references can be for both runtime and developer dependencies. This will allow for shared packages to contain custom build logic and for the creation of shared build Extensions to augment the built in build Tasks. ## Open Questions -* Find replacement for Windows Detours on Linux and macOS. * "Top level incremental builds" - We can be faster!!! In the design for the [tup build](http://gittup.org/tup/build_system_rules_and_algorithms.pdf) system they define what they call **Beta Build Systems** which rely on the inverse lookup of taking the known changed files to lookup which build steps need to be rerun. This may not be enough for Soup since there is a decent amount of work to be done during Generate which does not involve the Operation calls. I would like to adapt this design to track the exhaustive set of files used for a given package to implement a top level incremental build that can skip all packages that are not changed. It will require a daemon to monitor file access between calls, but it will be worth it for large projects. \ No newline at end of file diff --git a/docs/design-requirements-goals.md b/docs/design-requirements-goals.md index 5872099c7..e4c1aea0e 100644 --- a/docs/design-requirements-goals.md +++ b/docs/design-requirements-goals.md @@ -4,21 +4,19 @@ The below Requirements and Goals are set down as guidelines to better align engi ## Requirements The following set of requirements cannot be compromised. The order does not indicate a priority; but, the final system would be deemed a failure if we are unable to fulfill any one of them. -* **Reproducible** - Core to any build system is the requirement that builds be **deterministic** and **reproducible**. No matter how well a system is designed and implemented, teams will not be able to utilize it unless they can trust that it will always produce the same result independent of who builds it, where they build it and when. +* **Reproducible** - Core to any build system is the requirement that builds be **deterministic** and **reproducible**. No matter how well a system is designed and implemented, teams will not be able to utilize it unless they can trust that it will always produce the same result independent of who builds it, where they build it and when. Reproducible builds requires that one project cannot influence or be influenced by another build, intentionally or by accident, except through explicit structured channels. * **Extensible** - A build system should be able to support the requirements of **all** projects. It should strive to work "out of the box" for a majority of scenarios, but must have an extensibility framework that allows build architects to write their own custom build logic when the built in functionality does not meet their needs. -* **Isolation** - Isolated builds requires that one project cannot influence or be influenced by another build, intentionally or by accident, except through explicit structured channels. +* **Secure** - By its nature, shared code and extensible frameworks open itself up to security concerns when executing arbitrary code written by external teams. While this is the same concern present when consuming any open source project, and the community should take care to use only trusted sources for the projects their use, the build system will limit the functionality available to the build runtime to prevent access to the developers machine when not required. The build system must also enable safe development practices to ensure code can be built and released within a compliant environment to guarantee what is published matches the input code. ## Goals While the goals are not hard requirements, they are always kept at the forefront when making any design or implementation decision. These items **are** in priority order: 1. **Collaborative** - Writing code is very rarely done in isolation. The largest goal for this build system is to be able to work seamlessly within a team and with external dependencies. -1. **Simple** - When fulfilling the above requirements the secondary priority is always simplicity and usability. This means that the standard user will get the best experience possible for both setup and usage. Some extra complexity is allowed in exchange for performance gains in the internal implementation and the extensibility framework. - 1. **Fast** - The inner developer loop is very important to the productivity of an engineer. To this end, the build system should focus heavily on the performance of an incremental build and ensure the full build is as fast as possible. -1. **Secure** - By its nature, an extensible framework opens itself up to security concerns when executing arbitrary code written by external teams. While this is the same concern present when consuming any open source project, and the community should take care to use only trusted sources for the projects their use, the build system will limit the functionality available to the build runtime to prevent access to the developers machine when not required. +1. **Simple** - When fulfilling the above requirements the secondary priority is always simplicity and usability. This means that the standard user will get the best experience possible for both setup and usage. Some extra complexity is allowed in exchange for performance gains in the internal implementation and the extensibility framework. 1. **Customizable** - How a project is built is often a matter of personal preference (or legacy requirement). Where allowable, the build system should be customizable to allow for overriding default settings so it does not conflict with the ability to easily build single projects as a part of the greater ecosystem. \ No newline at end of file diff --git a/docs/samples/cpp/build-extension.md b/docs/samples/cpp/build-extension.md index 6379c50d4..2ec627509 100644 --- a/docs/samples/cpp/build-extension.md +++ b/docs/samples/cpp/build-extension.md @@ -115,7 +115,7 @@ Closures: { Build0: { Wren: { 'Samples.Cpp.BuildExtension.Extension': { Version: '../Extension/' } - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/docs/samples/cpp/console-application.md b/docs/samples/cpp/console-application.md index 5168a694b..bc043a836 100644 --- a/docs/samples/cpp/console-application.md +++ b/docs/samples/cpp/console-application.md @@ -24,7 +24,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/docs/samples/cpp/directx.md b/docs/samples/cpp/directx.md index 23b0cb8e3..1d4ab3180 100644 --- a/docs/samples/cpp/directx.md +++ b/docs/samples/cpp/directx.md @@ -42,7 +42,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/docs/samples/cpp/dynamic-library.md b/docs/samples/cpp/dynamic-library.md index 5c2ca1118..e014a01a7 100644 --- a/docs/samples/cpp/dynamic-library.md +++ b/docs/samples/cpp/dynamic-library.md @@ -94,7 +94,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/docs/samples/cpp/header-library.md b/docs/samples/cpp/header-library.md index fbb1ea617..a9c6ba267 100644 --- a/docs/samples/cpp/header-library.md +++ b/docs/samples/cpp/header-library.md @@ -71,7 +71,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/docs/samples/cpp/module-dynamic-library.md b/docs/samples/cpp/module-dynamic-library.md index f9160b450..0a3f474fd 100644 --- a/docs/samples/cpp/module-dynamic-library.md +++ b/docs/samples/cpp/module-dynamic-library.md @@ -71,7 +71,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/docs/samples/cpp/module-interface.md b/docs/samples/cpp/module-interface.md index 598f4c141..195aab41f 100644 --- a/docs/samples/cpp/module-interface.md +++ b/docs/samples/cpp/module-interface.md @@ -28,7 +28,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/docs/samples/cpp/parse-json.md b/docs/samples/cpp/parse-json.md index 1384ebb9f..59df308d9 100644 --- a/docs/samples/cpp/parse-json.md +++ b/docs/samples/cpp/parse-json.md @@ -28,7 +28,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/docs/samples/cpp/static-library.md b/docs/samples/cpp/static-library.md index 691ee121d..7825e511c 100644 --- a/docs/samples/cpp/static-library.md +++ b/docs/samples/cpp/static-library.md @@ -62,7 +62,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/docs/samples/cpp/windows-application.md b/docs/samples/cpp/windows-application.md index b037f287c..ae9b54bb3 100644 --- a/docs/samples/cpp/windows-application.md +++ b/docs/samples/cpp/windows-application.md @@ -25,7 +25,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/docs/tools/Swhere.md b/docs/tools/swhere.md similarity index 100% rename from docs/tools/Swhere.md rename to docs/tools/swhere.md diff --git a/samples/c++/build-extension/executable/PackageLock.sml b/samples/c++/build-extension/executable/PackageLock.sml index dd884386d..3ef009d6a 100644 --- a/samples/c++/build-extension/executable/PackageLock.sml +++ b/samples/c++/build-extension/executable/PackageLock.sml @@ -8,7 +8,7 @@ Closures: { Build0: { Wren: { 'Samples.Cpp.BuildExtension.Extension': { Version: '../extension/' } - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/samples/c++/build-extension/tool/PackageLock.sml b/samples/c++/build-extension/tool/PackageLock.sml index 63ba470b8..1a28583bc 100644 --- a/samples/c++/build-extension/tool/PackageLock.sml +++ b/samples/c++/build-extension/tool/PackageLock.sml @@ -7,7 +7,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/samples/c++/console-application/PackageLock.sml b/samples/c++/console-application/PackageLock.sml index 9968b1144..5b527baa0 100644 --- a/samples/c++/console-application/PackageLock.sml +++ b/samples/c++/console-application/PackageLock.sml @@ -7,7 +7,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/samples/c++/directx/PackageLock.sml b/samples/c++/directx/PackageLock.sml index 01d779a8b..a197373b3 100644 --- a/samples/c++/directx/PackageLock.sml +++ b/samples/c++/directx/PackageLock.sml @@ -7,7 +7,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/samples/c++/dynamic-library/application/PackageLock.sml b/samples/c++/dynamic-library/application/PackageLock.sml index 83a4b3a75..6c214997f 100644 --- a/samples/c++/dynamic-library/application/PackageLock.sml +++ b/samples/c++/dynamic-library/application/PackageLock.sml @@ -8,7 +8,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/samples/c++/header-library/application/PackageLock.sml b/samples/c++/header-library/application/PackageLock.sml index bec70733d..128669caa 100644 --- a/samples/c++/header-library/application/PackageLock.sml +++ b/samples/c++/header-library/application/PackageLock.sml @@ -8,7 +8,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/samples/c++/module-dynamic-library/application/PackageLock.sml b/samples/c++/module-dynamic-library/application/PackageLock.sml index fa82bc16a..850c923ab 100644 --- a/samples/c++/module-dynamic-library/application/PackageLock.sml +++ b/samples/c++/module-dynamic-library/application/PackageLock.sml @@ -8,7 +8,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/samples/c++/module-interface/PackageLock.sml b/samples/c++/module-interface/PackageLock.sml index 988029400..9a6488af8 100644 --- a/samples/c++/module-interface/PackageLock.sml +++ b/samples/c++/module-interface/PackageLock.sml @@ -7,7 +7,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/samples/c++/parse-json/PackageLock.sml b/samples/c++/parse-json/PackageLock.sml index badbd255b..935d0c68c 100644 --- a/samples/c++/parse-json/PackageLock.sml +++ b/samples/c++/parse-json/PackageLock.sml @@ -8,7 +8,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/samples/c++/static-library/application/PackageLock.sml b/samples/c++/static-library/application/PackageLock.sml index 89129d072..64e24cf92 100644 --- a/samples/c++/static-library/application/PackageLock.sml +++ b/samples/c++/static-library/application/PackageLock.sml @@ -8,7 +8,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/samples/c++/windows-application/PackageLock.sml b/samples/c++/windows-application/PackageLock.sml index 2165be52b..8d7a334f5 100644 --- a/samples/c++/windows-application/PackageLock.sml +++ b/samples/c++/windows-application/PackageLock.sml @@ -7,7 +7,7 @@ Closures: { } Build0: { Wren: { - 'Soup|Cpp': { Version: 0.13.2 } + 'Soup|Cpp': { Version: 0.14.0 } } } Tool0: { diff --git a/scripts/windows/install.cmd b/scripts/windows/install.cmd index 844572a50..361fe90e7 100644 --- a/scripts/windows/install.cmd +++ b/scripts/windows/install.cmd @@ -3,6 +3,8 @@ SET ScriptsDir=%~dp0 SET RootDir=%ScriptsDir%..\.. SET OutDir=%RootDir%\out -pushd %OutDir% -start msiexec /package soup-build-2-windows-x64.msi /passive +SET SOUP_VERSION=0.41.4 + +pushd %OutDir%\release +msiexec /package soup-build-%SOUP_VERSION%-windows-x64.msi /passive popd \ No newline at end of file diff --git a/scripts/windows/sign-runtime.cmd b/scripts/windows/sign-runtime.cmd index 6f4c10aec..2f269f348 100644 --- a/scripts/windows/sign-runtime.cmd +++ b/scripts/windows/sign-runtime.cmd @@ -10,7 +10,9 @@ SET SIGN_COMMAND=signtool sign /n "Open Source Developer, Matthew Asplund" /t ht SET SignFiles=%RunDir%\*.exe SET SignFiles=%RunDir%\Soup\*.dll %SignFiles% SET SignFiles=%RunDir%\Soup\*.exe %SignFiles% +SET SignFiles=%RunDir%\Soup\PackageManager\*.dll %SignFiles% SET SignFiles=%RunDir%\Soup\PackageManager\*.exe %SignFiles% +SET SignFiles=%RunDir%\Soup\View\*.dll %SignFiles% SET SignFiles=%RunDir%\Soup\View\*.exe %SignFiles% %SIGN_COMMAND% %SignFiles% \ No newline at end of file