[petsc-dev] reminder never use #include "mylocalinclude.h" in PETSc source
Matthew Knepley
knepley at gmail.com
Tue May 4 11:09:59 CDT 2010
On Tue, May 4, 2010 at 6:52 AM, Jed Brown <jed at 59a2.org> wrote:
> On Mon, 3 May 2010 16:08:56 -0700, Barry Smith <bsmith at mcs.anl.gov> wrote:
> > Perhaps we should change them to use <>
>
> I think this would be good.
>
> > It is best to keep them with their corresponding source code.
> >
> > Eventually our source code won't even live directly on the file
> > system nor found by looking in the file system.
>
> Prepare for PETSc-4, written entirely in Squeak Smalltalk.
>
> > BTW: the reason I cared yesterday and "complained" about the very
> > small number of "wrong" files was my attempt to get PETSc source into
> > a GUI based development system (Xcode in particular, but Eclipse and
> > Developer Studio are other important cases). Currently PETSc handles
> > active and inactive source code (depending on what configure options
> > are used) by "markers" in the makefiles. GUI systems don't/cannot
> > understand these so my solution is to build links to the active source
> > code that can then be easily passed to the GUI system. This breaks if
> > you assume the .h files are in the same directory as the .c.
>
> I recently set this up with Eclipse. No need to produce links from a
> mirror source tree, it builds by running make from various directories
> (just like we normally do on the command line). I would like to be able
> to algorithmically generate Eclipse targets (currently you essentially
> right-click, create target, and type the name of the target; this is
> more overhead than building from Emacs), but I don't think Eclipse
> supports such a thing.
>
> I did have to manually add the include path
> $PETSC_DIR/$PETSC_ARCH/include (and possibly other nonstandard paths
> found at configure time) for each "configuration", I don't know how to
> automate that. The semantic analysis seems to all be correct and fast.
> Note that the default option is for the indexer to use only the
> "default" configuration, rather than for the active configuration, which
> is not desirable if you have e.g. both real and complex configurations
> around.
>
> The indexer would find unresolved headers for files in the source tree
> that should be disabled in the current configuration (e.g. matlab), but
> the notification is unintrusive (you have to go looking for it) and
> there is never an attempt to build these files. I certainly didn't have
> to create a bunch of symlinks into the source tree. (My biggest problem
> with Emacs+CEDET is that (a) it doesn't have an AST which makes the
> analysis sometimes faulty and (b) it's single-threaded and doesn't have
> a "real" database backend so semantic analysis is painfully slow and
> intrusive so I have to throttle it. If only I could learn to tolerate
> Eclipse's limitations as an editor...)
>
> Note that there are configuration systems, perhaps most notably CMake,
> that make a big deal of writing native build files for many IDEs. I
> don't know how difficult this would be if all the build metadata was
> available in Python (instead of living in the makefiles located in every
> directory, or perhaps just by parsing those; I haven't looked at Matt's
> builder.py). Once that metadata is available, it shouldn't be difficult
> to write a non-recursive makefile. Actually, it's also possible to
> write nonrecursive makefiles that recursively include subdirectory
> makefiles (rather than recursively invoking make, much faster and
> actually correct), though these solutions usually use GNU make
> extensions (not strictly necessary, but it allows more flexibility).
All the build metadata is in an OO database in Python. builder.py extracts
it
in order to do the build.
Matt
>
> Jed
--
What most experimenters take for granted before they begin their experiments
is infinitely more interesting than any results to which their experiments
lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20100504/874969e9/attachment.html>
More information about the petsc-dev
mailing list