[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
RE: [cdt-dev] Per File Scanner Discovery
|
I'm using the standard gcc per file discovery shipped with the CDT. I get
the .sc file created in the meta and it looks fine. What I'm missing is how
that information gets from there to the ICLanguageSetting.
I'll take a little more look tonight (with one eye on the Vancouver/Dallas
game :) and see if I find the missing link. Per project seems to work fine.
Doug Schaefer, QNX Software Systems
Eclipse CDT Project Lead, http://cdtdoug.blogspot.com
> -----Original Message-----
> From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx] On
> Behalf Of Schaber, Gerhard
> Sent: Monday, April 23, 2007 8:34 PM
> To: CDT General developers list.
> Subject: RE: [cdt-dev] Per File Scanner Discovery
>
> Hi Doug!
>
> It works fine for me, but maybe because I have a patched version. I told
> you about my patch recently.
>
> Maybe the scanner config builder does not run or it is run before the
> actual build. In either case the scanner config info is not propagated
> correctly.
>
> Here a simplified call tree of what the per file scanner discovery
> usually does:
>
> Actual build run:
> <any builder>.build(...); // e.g. MakeBuilder.build
> for each build output line:
> ConsoleOutputSniffer.processLine(String line);
>
> GCCPerFileBOPConsoleParser<AbstractGCCBOPConsoleParser>.processLine(Stri
> ng line);
> GCCPerFileBOPConsoleParser.processSingleLine(String line);
> cmd = GCCPerFileBOPConsoleParser.fUtil.getNewCCommandDSC(...);
> sc.put(COMPILER_COMMAND, <list of cmd>);
> PerFileSICollector.contributeToScannerConfig(IFile file, Map
> sc);
> for each cmd in sc:
> PerFileSICollector.addCompilerCommand(cmd, ...);
> commandid = ...;
> PerFileSICollector.sid.commandIdCommandMap.put(commandid,
> cmd);
>
> Scanner config builder run:
> ScannerConfigBuilder.build(...);
> SCDMakeFileGenerator.initialize(); // generate make file to discover
> compiler internal settings per file set
> SCDMakeFileGenerator<DefaultRunSIProvider>.invokeProvider(...);
> for each build output line:
> ConsoleOutputSniffer.processLine(String line);
> GCCPerFileSIPConsoleParser.processLine(String line);
> commandid = ...; // get command id per file set from build
> output
> sc = ...; // collect scanner config from build output
> PerFileSICollector.contributeToScannerConfig(int commandid,
> Map sc);
> PerFileSICollector.addScannerInfo(int commandid, Map sc)
> cmd =
> PerFileSICollector.sid.commandIdCommandMap.get(commandid)
> cmd.setIncludes(sc.get(INCLUDE_PATHS));
> cmd.setSymbols(sc.get(SYMBOL_DEFINITIONS));
> cmd.setDiscovered(true);
> SCJobsUtil.updateScannerConfiguration(...)
> PerFileSICollector.updateScannerConfiguration(...)
> PerFileSICollector.applyFileDeltas();
>
> MakeCorePlugin.getDefault().getDiscoveryManager().updateDiscoveredInfo()
> ;
>
> Both, the actual build and a subsequent scanner config builder run are
> required (in the unpatched scanner discovery). It also requires a
> correct configuration of a scanner discovery profile.
>
> Here a possible per file scanner discovery extension:
>
> <extension id="StandardMakePerFileProfile"
> name="%perFileScannerInfoProfileExtensionName"
> point="org.eclipse.cdt.make.core.ScannerConfigurationDiscoveryProfile">
> <scannerInfoCollector
> class="org.eclipse.cdt.make.internal.core.scannerconfig2.PerFileSICollec
> tor" scope="file"/>
>
> <buildOutputProvider>
> <open/>
> <scannerInfoConsoleParser
> class="org.eclipse.cdt.make.internal.core.scannerconfig.gnu.GCCPerFileBO
> PConsoleParser" compilerCommands="gcc,g++,dcc,cpp,c++,cc"/>
> </buildOutputProvider>
>
> <scannerInfoProvider providerId="compilerBuiltinProvider">
> <run
> class="com.windriver.ide.staticanalysis.core.scannerdiscovery.SACompiler
> BuiltinProvider"/>
> <scannerInfoConsoleParser
> class="com.windriver.ide.staticanalysis.core.scannerdiscovery.SACompiler
> BuiltinConsoleParser" compilerCommands="gcc,g++,dcc,cpp,c++,cc"/>
> </scannerInfoProvider>
> </extension>
>
>
> See
> org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature.initializeDi
> scoveryOptions to find out how scanner discovery profile settings are
> applied to different configurations.
>
> BTW, could anyone apply my scanner discovery patch or at least have a
> look at it before RC0 and apply a part of it? It is bug #156008.
>
> Best regards,
>
> Gerhard
>
> ________________________________
>
> From: cdt-dev-bounces@xxxxxxxxxxx [mailto:cdt-dev-bounces@xxxxxxxxxxx]
> On Behalf Of Doug Schaefer
> Sent: Montag, 23. April 2007 21:43
> To: CDT General developers list.
> Subject: [cdt-dev] Per File Scanner Discovery
>
>
>
> Hey,
>
>
>
> Does anyone have per file scanner discovery working? I can't
> seem to figure out how to. If it's not, I'd like to try and fix it but
> I'm may just be doing it wrong. I set my discovery profiles scope to
> Configuration-wide and select the GCC per file scanner info profile as
> my profile. I have a pre-built build log file that I then load. This is
> with cygwin. The CommandDSC seems to pick out the options correctly, but
> I don't see where it's getting added to the project. For that matter I'm
> not sure where it's supposed to get added.
>
>
>
> Help....
>
>
>
> BTW, this is holding up my Firefox indexer performance testing.
>
>
>
> Doug Schaefer, QNX Software Systems
> Eclipse CDT Project Lead, http://cdtdoug.blogspot.com
>
>
>
> _______________________________________________
> cdt-dev mailing list
> cdt-dev@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/cdt-dev