using Semmle.Autobuild.Shared; using Semmle.Util; namespace Semmle.Autobuild.Cpp { /// /// Encapsulates C++ build options. /// public class CppAutobuildOptions : AutobuildOptionsShared { public override Language Language => Language.Cpp; /// /// Reads options from environment variables. /// Throws ArgumentOutOfRangeException for invalid arguments. /// public CppAutobuildOptions(IBuildActions actions) : base(actions) { } } public class CppAutobuilder : Autobuilder { public CppAutobuilder(IBuildActions actions, CppAutobuildOptions options) : base(actions, options, new DiagnosticClassifier()) { } public override BuildScript GetBuildScript() { return // First try MSBuild new MsBuildRule().Analyse(this, true) | // Then look for a script that might be a build script (() => new BuildCommandAutoRule((_, f) => f(null)).Analyse(this, true)) | // All attempts failed: print message AutobuildFailure(); } } }