Esempio n. 1
0
 public BeatVerb(IContextGeneratingVerb contextVerb, BuildObject beatobj, string appLabel)
 {
     this.contextVerb = contextVerb;
     this.beatobj = beatobj;
     this.appLabel = appLabel;
     this.abstractId = new AbstractId(this.GetType().Name, version, beatobj.ToString(), contextVerb.getPoundDefines(), concrete: appLabel);
 }
Esempio n. 2
0
        public BoogieVerb(IContextGeneratingVerb context, BuildObject bplInput, VerificationRequest.SymDiffMode symdiff)
        {
            if (bplInput.getExtension().Equals(BPL_EXTN))
            {
                this.bplInput = bplInput;
                upstreamVerbs = new List <IVerb>();
                // TODO this will probably break, since we don't know where this bplInput came from. Maybe that's okay, since the verb had to already exist to reach this point.
            }
            else if (symdiff == VerificationRequest.SymDiffMode.NoSymDiff)
            {
                IVerb boogieAsmVerb = new BoogieAsmVerifyVerb(context, bplInput, false);
                this.bplInput = boogieAsmVerb.getOutputs().First();
                upstreamVerbs = new IVerb[] { boogieAsmVerb };
            }
            else
            {
                IVerb workerVerb;
                SymDiffEngine.BuildPipeline(context, bplInput, out this.bplInput, out workerVerb);
                upstreamVerbs = new IVerb[] { workerVerb };
            }

            this.abstractId = new AbstractId(
                this.GetType().Name,
                version,
                bplInput.ToString(),
                concrete: symdiff.ToString());
        }
Esempio n. 3
0
        public static void propagatePrivateImports(
            WorkingDirectory workingDirectory,
            IContextGeneratingVerb contextVerb,
            BuildObject srcobj,
            BuildObject dstobj)
        {
            // Rewrite basm output to propagate any import statements from the beat file.
            // TODO this step really should be a beat function, not part of the build system.
            IEnumerable <BeatIncludes.LabeledInclude> beatImports =
                getBeatFlavoredShallowIncludesLabeled(contextVerb, srcobj);
            StringBuilder sb = new StringBuilder();

            foreach (BeatIncludes.LabeledInclude li in beatImports)
            {
                sb.Append("//-");
                sb.Append(li.importFilter == BeatIncludes.ImportFilter.ForBasmOnly
                    ? "private-basmonly-import" : "private-import");
                sb.Append(" ");
                sb.Append(li.buildObject.getFileNameWithoutExtension());
                sb.AppendLine(";");
            }

            // REVIEW: Improve upon this round-about way of prepending to a file?
            string beatOutput = File.ReadAllText(workingDirectory.PathTo(dstobj));

            File.Delete(workingDirectory.PathTo(dstobj));
            File.WriteAllText(workingDirectory.PathTo(dstobj), sb.ToString() + beatOutput);
        }
Esempio n. 4
0
        public BoogieVerb(IContextGeneratingVerb context, BuildObject bplInput, VerificationRequest.SymDiffMode symdiff)
        {
            if (bplInput.getExtension().Equals(BPL_EXTN))
            {
                this.bplInput = bplInput;
                upstreamVerbs = new List<IVerb>();
                // TODO this will probably break, since we don't know where this bplInput came from. Maybe that's okay, since the verb had to already exist to reach this point.
            }
            else if (symdiff == VerificationRequest.SymDiffMode.NoSymDiff)
            {
                IVerb boogieAsmVerb = new BoogieAsmVerifyVerb(context, bplInput, false);
                this.bplInput = boogieAsmVerb.getOutputs().First();
                upstreamVerbs = new IVerb[] { boogieAsmVerb };
            }
            else
            {
                IVerb workerVerb;
                SymDiffEngine.BuildPipeline(context, bplInput, out this.bplInput, out workerVerb);
                upstreamVerbs = new IVerb[] { workerVerb };
            }

            this.abstractId = new AbstractId(
                this.GetType().Name,
                version,
                bplInput.ToString(),
                concrete: symdiff.ToString());
        }
Esempio n. 5
0
 public BeatVerb(IContextGeneratingVerb contextVerb, BuildObject beatobj, string appLabel)
 {
     this.contextVerb = contextVerb;
     this.beatobj     = beatobj;
     this.appLabel    = appLabel;
     this.abstractId  = new AbstractId(this.GetType().Name, version, beatobj.ToString(), contextVerb.getPoundDefines(), concrete: appLabel);
 }
Esempio n. 6
0
 public static IEnumerable <BuildObject> getBeatFlavoredShallowIncludes(
     IContextGeneratingVerb contextVerb, BuildObject rootObj, BeatIncludes.ImportFilter importFilter)
 {
     return(getBeatFlavoredShallowIncludesLabeled(contextVerb, rootObj)
            .Where(li => importFilter == BeatIncludes.ImportFilter.ForBasmOnly ||
                   li.importFilter == BeatIncludes.ImportFilter.ForBeatOrBasm)
            .Select(li => li.buildObject));
 }
Esempio n. 7
0
 public EntryStitcherVerb(IContextGeneratingVerb context, string appLabel)
 {
     this.appLabel = appLabel;
     this.context = context;
     this.entryImpInput = new SourcePath("src\\Checked\\Nucleus\\Main\\Entry.imp.beat");
     SourcePath mainBeatSrc = new SourcePath("src\\Checked\\Nucleus\\Main\\Main.ifc.beat");
     this.mainBeatVerb = new BeatVerb(context, mainBeatSrc, appLabel);
     this.genericStitch = new SourcePath("src\\Trusted\\Spec\\Entry.ifc.basm.stitch");
     this.appSpecificStitch = new SourcePath(string.Format("src\\Trusted\\Spec\\{0}\\AppRequirements.ifc.stitch", appLabel));
 }
Esempio n. 8
0
        public EntryStitcherVerb(IContextGeneratingVerb context, string appLabel)
        {
            this.appLabel      = appLabel;
            this.context       = context;
            this.entryImpInput = new SourcePath("src\\Checked\\Nucleus\\Main\\Entry.imp.beat");
            SourcePath mainBeatSrc = new SourcePath("src\\Checked\\Nucleus\\Main\\Main.ifc.beat");

            this.mainBeatVerb      = new BeatVerb(context, mainBeatSrc, appLabel);
            this.genericStitch     = new SourcePath("src\\Trusted\\Spec\\Entry.ifc.basm.stitch");
            this.appSpecificStitch = new SourcePath(string.Format("src\\Trusted\\Spec\\{0}\\AppRequirements.ifc.stitch", appLabel));
        }
Esempio n. 9
0
        public EntryStitcherVerb(IContextGeneratingVerb context, string appLabel)
        {
            this.appLabel = appLabel;
            this.context  = context;
            entryImpInput = new SourcePath("src/Checked/Nucleus/Main/Entry.imp.beat");
            SourcePath mainBeatSrc = new SourcePath("src/Checked/Nucleus/Main/Main.ifc.beat");

            mainBeatVerb      = new BeatVerb(context, mainBeatSrc, appLabel);
            genericStitch     = new SourcePath("src/Trusted/Spec/Entry.ifc.basm.stitch");
            appSpecificStitch = new SourcePath(String.Format("src/Trusted/Spec/{0}/AppRequirements.ifc.stitch", appLabel));
        }
Esempio n. 10
0
        public static void BuildPipeline(IContextGeneratingVerb context, BuildObject input, out BuildObject bplFile, out IVerb workerVerb)
        {
            BoogieAsmVerifyVerb basmVerb = new BoogieAsmVerifyVerb(context, input, true);
            SymDiffExtractVerb left = new SymDiffExtractVerb(basmVerb, SymDiffExtractVerb.Mode.LEFT);
            SymDiffExtractVerb right = new SymDiffExtractVerb(basmVerb, SymDiffExtractVerb.Mode.RIGHT);
            SymDiffInferVerb infer = new SymDiffInferVerb(left, right);
            SymDiffMergeConfigVerb mergeConfig = new SymDiffMergeConfigVerb(basmVerb, infer);
            SymDiffCombineVerb combiner = new SymDiffCombineVerb(left, right, mergeConfig);
            SymDiffMergeVerb merger = new SymDiffMergeVerb(basmVerb, combiner);

            bplFile = merger.getOutputFile();
            workerVerb = merger;
        }
Esempio n. 11
0
        public static void BuildPipeline(IContextGeneratingVerb context, BuildObject input, out BuildObject bplFile, out IVerb workerVerb)
        {
            BoogieAsmVerifyVerb    basmVerb    = new BoogieAsmVerifyVerb(context, input, true);
            SymDiffExtractVerb     left        = new SymDiffExtractVerb(basmVerb, SymDiffExtractVerb.Mode.LEFT);
            SymDiffExtractVerb     right       = new SymDiffExtractVerb(basmVerb, SymDiffExtractVerb.Mode.RIGHT);
            SymDiffInferVerb       infer       = new SymDiffInferVerb(left, right);
            SymDiffMergeConfigVerb mergeConfig = new SymDiffMergeConfigVerb(basmVerb, infer);
            SymDiffCombineVerb     combiner    = new SymDiffCombineVerb(left, right, mergeConfig);
            SymDiffMergeVerb       merger      = new SymDiffMergeVerb(basmVerb, combiner);

            bplFile    = merger.getOutputFile();
            workerVerb = merger;
        }
Esempio n. 12
0
        private static IEnumerable <BeatIncludes.LabeledInclude> getBeatFlavoredShallowIncludesLabeled(
            IContextGeneratingVerb contextVerb, BuildObject rootObj)
        {
            ContextContents context = (ContextContents)
                                      BuildEngine.theEngine.getNuObjContents().openVirtual(contextVerb.getContextOutput());
            BeatIncludes includes = new BeatIncludes(context.context);
            OrderPreservingSet <BeatIncludes.LabeledInclude> result = new OrderPreservingSet <BeatIncludes.LabeledInclude>(
                includes.getLabeledIncludes(rootObj));

            if (BeatExtensions.whichPart(rootObj) == ModPart.Imp)
            {
                BuildObject rootIfc = context.context.search(rootObj.getFileNameWithoutExtension(), ModPart.Ifc);
                result.Add(new BeatIncludes.LabeledInclude(BeatIncludes.ImportFilter.ForBeatOrBasm, rootIfc));
            }
            return(result);
        }
Esempio n. 13
0
        private static IEnumerable<BeatIncludes.LabeledInclude> getBeatFlavoredShallowIncludesLabeled(
            IContextGeneratingVerb contextVerb, BuildObject rootObj)
        {
            ContextContents context = (ContextContents)
                BuildEngine.theEngine.Repository.FetchVirtual(contextVerb.getContextOutput());
            BeatIncludes includes = new BeatIncludes(context.Context);
            OrderPreservingSet<BeatIncludes.LabeledInclude> result = new OrderPreservingSet<BeatIncludes.LabeledInclude>(
                includes.getLabeledIncludes(rootObj));

            if (BeatExtensions.whichPart(rootObj) == ModPart.Imp)
            {
                BuildObject rootIfc = context.Context.search(rootObj.getFileNameWithoutExtension(), ModPart.Ifc);
                result.Add(new BeatIncludes.LabeledInclude(BeatIncludes.ImportFilter.ForBeatOrBasm, rootIfc));
            }

            return result;
        }
        internal static IIncludePathContext fetchIfAvailable(this IContextGeneratingVerb verb, ref DependencyDisposition ddisp)
        {
            try
            {
                return(((ContextContents)
                        BuildEngine.theEngine.Repository.FetchVirtual(verb.getContextOutput())).Context);
            }
            catch (ObjectNotReadyException)
            {
                // Oh, we don't even have the context object yet.
                ddisp = ddisp.combine(DependencyDisposition.Incomplete);
            }
            catch (ObjectFailedException)
            {
                ddisp = ddisp.combine(DependencyDisposition.Failed);
            }

            return(null);
        }
Esempio n. 15
0
        //- This used to use a BeatTransitiveDepsVerb, but we're going with shallow dependencies at the moment.
        //- We may want to restore that behavior later, if we can get some sane transitive dep tree worked out for
        //- Verve code.
        //- The returned list belongs to the caller to .Add() to as desired.
        //- TODO this really needs to be factored to supply the actual Beat-flavored references separately
        //- from the auxiliary deps (transitive dep objects and context dep objects), so we don't have
        //- client code trying to filter back out the part it wants. Brittle.
        public static OrderPreservingSet <BuildObject> getBeatFlavoredShallowDependencies(
            IContextGeneratingVerb contextVerb, BuildObject rootObj, out DependencyDisposition ddisp, BeatIncludes.ImportFilter filter)
        {
            OrderPreservingSet <BuildObject> result = new OrderPreservingSet <BuildObject>();

            result.Add(contextVerb.getContextOutput());
            try
            {
                result.AddRange(getBeatFlavoredShallowIncludes(contextVerb, rootObj, filter));
                ddisp = DependencyDisposition.Complete;
            }
            catch (ObjNotReadyException)
            {
                ddisp = DependencyDisposition.Incomplete;
            }
            catch (ObjFailedException)
            {
                ddisp = DependencyDisposition.Failed;
            }
            result.Add(rootObj);    //- root really needs to go at the end of the list.
            return(result);
        }
Esempio n. 16
0
 public static BasmTransitiveDepsVerb getBasmFlavoredTransitiveDepVerb(IContextGeneratingVerb context, BuildObject rootObj)
 {
     return new BasmTransitiveDepsVerb(context, rootObj);
 }
Esempio n. 17
0
            public BasmModuleAccumulator(IContextGeneratingVerb contextGenVerb, BuildObject upstreamObj, bool linkMode)
            {
                this._contextGenVerb = contextGenVerb;
                this._mutableVerbSet = new HashSet <IVerb>();
                //- NB preserve module definition-dependency order
                this._basmModules   = new OrderPreservingSet <BuildObject>();
                this._auxiliaryDeps = new HashSet <BuildObject>();
                _ddisp = DependencyDisposition.Complete;

                //-try
                //-{
                _mutableVerbSet.Add(contextGenVerb);
                _auxiliaryDeps.UnionWith(contextGenVerb.getOutputs());

                context = contextGenVerb.fetchIfAvailable(ref _ddisp);

                if (context != null)
                {
                    OrderPreservingSet <BuildObject> deps;
                    if (!linkMode)
                    {
                        deps = BeatExtensions.getBeatFlavoredShallowDependencies(
                            contextGenVerb, upstreamObj, out _ddisp, BeatIncludes.ImportFilter.ForBasmOnly);
                    }
                    else
                    {
                        deps = BeatExtensions.getBasmFlavoredTransitiveDependencies(contextGenVerb, upstreamObj, out _ddisp);
                        _mutableVerbSet.Add(BeatExtensions.getBasmFlavoredTransitiveDepVerb(_contextGenVerb, upstreamObj));
                    }
                    string  targetModName = upstreamObj.getFileNameWithoutExtension();
                    ModPart targetModPart = BeatExtensions.whichPart(upstreamObj);

                    //- NB security policy note: When verifying X.imp, we must be sure to supply X.ifc
                    //- to BoogieAsm, so that we know that we're actually verifying the promises
                    //- that other modules are relying on when they say "X" (which is how X got on
                    //- the verification obligation list). That property happens automatically here,
                    //- because we make a list of modules (ignoring ifc/imp part), such as {A,B,X},
                    //- and include *every* .ifc. If we're verifying X.imp, a conditional test
                    //- includes it at the time we consider module X.

                    foreach (BuildObject dep in deps)
                    {
                        string depExtn = dep.getExtension();
                        if (depExtn == null ||
                            depExtn.EndsWith(TransitiveDepsVerb.TDEP_EXTN) ||
                            depExtn.EndsWith(ContextGeneratingVerb.CONTEXT_EXTN))
                        {
                            _auxiliaryDeps.Add(dep);
                        }
                        else
                        {
                            Util.Assert(depExtn.Equals(BeatExtensions.BEATIFC_EXTN) ||
                                        depExtn.Equals(BeatExtensions.BEATIMP_EXTN) ||
                                        depExtn.Equals(BASMIFC_EXTN) ||
                                        depExtn.Equals(BASMIMP_EXTN)); //- Burned too many times by this silly filter-out strategy.
                            string  modName = dep.getFileNameWithoutExtension();
                            ModPart modPart = BeatExtensions.whichPart(dep);
                            getBasmModule(modName, ModPart.Ifc);
                            if ((dep.Equals(upstreamObj) && modPart == ModPart.Imp) || linkMode)
                            {
                                getBasmModule(modName, ModPart.Imp);
                            }
                        }
                    }
                }
                //-}
                //-catch (ObjNotReadyException)
                //-{
                //-
                //-    _ddisp = DependencyDisposition.Incomplete;
                //-}
                //-catch (ObjFailedException)
                //-{
                //-    _ddisp = DependencyDisposition.Failed;
                //-}
            }
Esempio n. 18
0
 public BoogieAsmWorkerBase(IContextGeneratingVerb context, BuildObject input)
     : base(context, input)
 {
 }
Esempio n. 19
0
        // The list belongs to the caller to .Add() to as desired.
        public static OrderPreservingSet<BuildObject> getBasmFlavoredTransitiveDependencies(IContextGeneratingVerb context, BuildObject rootObj, out DependencyDisposition ddisp)
        {
            OrderPreservingSet<BuildObject> result = new OrderPreservingSet<BuildObject>();
            TransitiveDepsVerb depsVerb = getBasmFlavoredTransitiveDepVerb(context, rootObj);
            result.Add(depsVerb.depsObj());
            result.AddRange(depsVerb.getAvailableDeps(out ddisp));

            // NB add root object at end of list, to keep it in definition-dependency order.
            result.Add(rootObj);
            return result;
        }
 public ConcatContextVerb(IContextGeneratingVerb parentA, IContextGeneratingVerb parentB, IContextGeneratingVerb parentC, PoundDefines poundDefines)
     : this(new IContextGeneratingVerb[] { parentA, parentB, parentC }, poundDefines)
 {
 }
Esempio n. 21
0
        //- The list belongs to the caller to .Add() to as desired.
        public static OrderPreservingSet <BuildObject> getBasmFlavoredTransitiveDependencies(IContextGeneratingVerb context, BuildObject rootObj, out DependencyDisposition ddisp)
        {
            OrderPreservingSet <BuildObject> result = new OrderPreservingSet <BuildObject>();
            TransitiveDepsVerb depsVerb             = getBasmFlavoredTransitiveDepVerb(context, rootObj);

            result.Add(depsVerb.depsObj());
            result.AddRange(depsVerb.getAvailableDeps(out ddisp));
            //- NB add root object at end of list, to keep it in definition-dependency order
            result.Add(rootObj);
            return(result);
        }
Esempio n. 22
0
 public ConcatContextVerb(IContextGeneratingVerb parentA, IContextGeneratingVerb parentB, IContextGeneratingVerb parentC, PoundDefines poundDefines)
     : this(new IContextGeneratingVerb[] { parentA, parentB, parentC }, poundDefines)
 {
 }
Esempio n. 23
0
        // This used to use a BeatTransitiveDepsVerb, but we're going with shallow dependencies at the moment.
        // We may want to restore that behavior later, if we can get some sane transitive dep tree worked out for
        // Verve code.
        // The returned list belongs to the caller to .Add() to as desired.
        // TODO this really needs to be factored to supply the actual Beat-flavored references separately
        // from the auxiliary deps (transitive dep objects and context dep objects), so we don't have
        // client code trying to filter back out the part it wants. Brittle.
        public static OrderPreservingSet<BuildObject> getBeatFlavoredShallowDependencies(
            IContextGeneratingVerb contextVerb, BuildObject rootObj, out DependencyDisposition ddisp, BeatIncludes.ImportFilter filter)
        {
            OrderPreservingSet<BuildObject> result = new OrderPreservingSet<BuildObject>();
            result.Add(contextVerb.getContextOutput());
            try
            {
                result.AddRange(getBeatFlavoredShallowIncludes(contextVerb, rootObj, filter));
                ddisp = DependencyDisposition.Complete;
            }
            catch (ObjectNotReadyException)
            {
                ddisp = DependencyDisposition.Incomplete;
            }
            catch (ObjectFailedException)
            {
                ddisp = DependencyDisposition.Failed;
            }

            result.Add(rootObj);    // root really needs to go at the end of the list.
            return result;
        }
Esempio n. 24
0
 public BoogieAsmLinkVerb(IContextGeneratingVerb context, BuildObject input)
     : base(context, input)
 {
 }
Esempio n. 25
0
 public static IEnumerable<BuildObject> getBeatFlavoredShallowIncludes(
     IContextGeneratingVerb contextVerb, BuildObject rootObj, BeatIncludes.ImportFilter importFilter)
 {
     return getBeatFlavoredShallowIncludesLabeled(contextVerb, rootObj)
         .Where(li => importFilter == BeatIncludes.ImportFilter.ForBasmOnly
             || li.importFilter == BeatIncludes.ImportFilter.ForBeatOrBasm)
         .Select(li => li.buildObject);
 }
Esempio n. 26
0
        public static void propagatePrivateImports(
            WorkingDirectory workingDirectory,
            IContextGeneratingVerb contextVerb,
            BuildObject srcobj,
            BuildObject dstobj)
        {
            // Rewrite basm output to propagate any import statements from the beat file.
            // TODO this step really should be a beat function, not part of the build system.
            IEnumerable<BeatIncludes.LabeledInclude> beatImports =
                getBeatFlavoredShallowIncludesLabeled(contextVerb, srcobj);
            StringBuilder sb = new StringBuilder();
            foreach (BeatIncludes.LabeledInclude li in beatImports)
            {
                sb.Append("//-");
                sb.Append(li.importFilter == BeatIncludes.ImportFilter.ForBasmOnly
                    ? "private-basmonly-import" : "private-import");
                sb.Append(" ");
                sb.Append(li.buildObject.getFileNameWithoutExtension());
                sb.AppendLine(";");
            }

            // REVIEW: Improve upon this round-about way of prepending to a file?
            string beatOutput = File.ReadAllText(workingDirectory.PathTo(dstobj));
            File.Delete(workingDirectory.PathTo(dstobj));
            File.WriteAllText(workingDirectory.PathTo(dstobj), sb.ToString() + beatOutput);
        }
Esempio n. 27
0
 public BoogieAsmWorkerBase(IContextGeneratingVerb context, BuildObject input)
     : base(context, input)
 {
 }
Esempio n. 28
0
 public BasmTransitiveDepsVerb(IContextGeneratingVerb contextVerb, BuildObject input)
     : base(input)
 {
     this.contextVerb = contextVerb;
 }
Esempio n. 29
0
 public BoogieAsmDepBase(IContextGeneratingVerb context, BuildObject input)
 {
     this.context     = context;
     this.upstreamObj = input;
     this.basmInput   = computeBasmInput(context.getPoundDefines(), input);
 }
Esempio n. 30
0
            public BasmModuleAccumulator(IContextGeneratingVerb contextGenVerb, BuildObject upstreamObj, bool linkMode)
            {
                this._contextGenVerb = contextGenVerb;
                this._mutableVerbSet = new HashSet<IVerb>();

                // NB preserve module definition-dependency order.
                this._basmModules = new OrderPreservingSet<BuildObject>();
                this._auxiliaryDeps = new HashSet<BuildObject>();
                _ddisp = DependencyDisposition.Complete;

                ////try
                ////{
                _mutableVerbSet.Add(contextGenVerb);
                _auxiliaryDeps.UnionWith(contextGenVerb.getOutputs());

                context = contextGenVerb.fetchIfAvailable(ref _ddisp);

                if (context != null)
                {
                    OrderPreservingSet<BuildObject> deps;
                    if (!linkMode)
                    {
                        deps = BeatExtensions.getBeatFlavoredShallowDependencies(
                            contextGenVerb, upstreamObj, out _ddisp, BeatIncludes.ImportFilter.ForBasmOnly);
                    }
                    else
                    {
                        deps = BeatExtensions.getBasmFlavoredTransitiveDependencies(contextGenVerb, upstreamObj, out _ddisp);
                        _mutableVerbSet.Add(BeatExtensions.getBasmFlavoredTransitiveDepVerb(_contextGenVerb, upstreamObj));
                    }

                    // REVIEW: The following two variables are unused.  Remove?
                    string targetModName = upstreamObj.getFileNameWithoutExtension();
                    ModPart targetModPart = BeatExtensions.whichPart(upstreamObj);

                    // NB security policy note: When verifying X.imp, we must be sure to supply X.ifc
                    // to BoogieAsm, so that we know that we're actually verifying the promises
                    // that other modules are relying on when they say "X" (which is how X got on
                    // the verification obligation list). That property happens automatically here,
                    // because we make a list of modules (ignoring ifc/imp part), such as {A,B,X},
                    // and include *every* .ifc. If we're verifying X.imp, a conditional test
                    // includes it at the time we consider module X.

                    foreach (BuildObject dep in deps)
                    {
                        string depExtn = dep.getExtension();
                        if (depExtn == null
                            || depExtn.EndsWith(TransitiveDepsVerb.TDEP_EXTN)
                            || depExtn.EndsWith(ContextGeneratingVerb.CONTEXT_EXTN))
                        {
                            _auxiliaryDeps.Add(dep);
                        }
                        else
                        {
                            Util.Assert(depExtn.Equals(BeatExtensions.BEATIFC_EXTN)
                                || depExtn.Equals(BeatExtensions.BEATIMP_EXTN)
                                || depExtn.Equals(BASMIFC_EXTN)
                                || depExtn.Equals(BASMIMP_EXTN));   // Burned too many times by this silly filter-out strategy.
                            string modName = dep.getFileNameWithoutExtension();
                            ModPart modPart = BeatExtensions.whichPart(dep);
                            getBasmModule(modName, ModPart.Ifc);
                            if ((dep.Equals(upstreamObj) && modPart == ModPart.Imp) || linkMode)
                            {
                                getBasmModule(modName, ModPart.Imp);
                            }
                        }
                    }
                }

                ////}
                ////catch (ObjNotReadyException)
                ////{
                ////    // oh, we don't even have the context object yet.
                ////    _ddisp = DependencyDisposition.Incomplete;
                ////}
                ////catch (ObjFailedException)
                ////{
                ////    _ddisp = DependencyDisposition.Failed;
                ////}
            }
 public BoogieAsmVerifyVerb(IContextGeneratingVerb context, BuildObject input, bool buildSymDiffMutualSummary)
     : base(context, input)
 {
     this.buildSymDiffMutualSummary = buildSymDiffMutualSummary;
     this.enableSymdiff             = BoogieAsmVerifyVerb.needs_symdiff(basmInput);
 }
Esempio n. 32
0
 public static BasmTransitiveDepsVerb getBasmFlavoredTransitiveDepVerb(IContextGeneratingVerb context, BuildObject rootObj)
 {
     return(new BasmTransitiveDepsVerb(context, rootObj));
 }
 public BoogieAsmVerificationObligationListVerb(IContextGeneratingVerb context, BuildObject input, VerificationRequest verificationRequest)
     : base(context, input)
 {
     this.verificationRequest = verificationRequest;
     obligations = input.makeOutputObject(BASM_EXTN + VerificationObligationList.VOL_EXTN);
 }
Esempio n. 34
0
 public BoogieAsmVerifyVerb(IContextGeneratingVerb context, BuildObject input, bool buildSymDiffMutualSummary)
     : base(context, input)
 {
     this.buildSymDiffMutualSummary = buildSymDiffMutualSummary;
     this.enableSymdiff = BoogieAsmVerifyVerb.needs_symdiff(basmInput);
 }
 public BoogieAsmVerificationObligationListVerb(IContextGeneratingVerb context, BuildObject input, VerificationRequest verificationRequest)
     : base(context, input)
 {
     this.verificationRequest = verificationRequest;
     obligations = input.makeOutputObject(BASM_EXTN + VerificationObligationList.VOL_EXTN);
 }
Esempio n. 36
0
 public BoogieAsmDepBase(IContextGeneratingVerb context, BuildObject input)
 {
     this.context = context;
     this.upstreamObj = input;
     this.basmInput = computeBasmInput(context.getPoundDefines(), input);
 }
Esempio n. 37
0
 public BoogieAsmLinkVerb(IContextGeneratingVerb context, BuildObject input)
     : base(context, input)
 {
 }
 public BasmTransitiveDepsVerb(IContextGeneratingVerb contextVerb, BuildObject input)
     : base(input)
 {
     this.contextVerb = contextVerb;
 }