There is always a C++ linker available so long as PETSc was built without --with-cxx=0 so just use it, why make a big deal out of it?
Barry > On Dec 31, 2017, at 5:58 PM, Jed Brown <[email protected]> wrote: > > "Smith, Barry F." <[email protected]> writes: > >>> On Dec 31, 2017, at 2:14 PM, Jed Brown <[email protected]> wrote: >>> >>> Matthew Knepley <[email protected]> writes: >>> >>>> On Sun, Dec 31, 2017 at 2:35 PM, Jed Brown <[email protected]> wrote: >>>> >>>>> Matthew Knepley <[email protected]> writes: >>>>> >>>>>> On Sun, Dec 31, 2017 at 1:55 PM, Jed Brown <[email protected]> wrote: >>>>>> >>>>>>> These look like linker errors and that build uses >>>>>>> --with-cxxlib-autodetect=0. We either need a rule to *link* C++ using >>>>>>> CXX (i.e., mpicxx) or add LIBS=-lstdc++. >>>>>>> >>>>>> >>>>>> I thought we were doing this (linking C++ mains with CXX). >>>>> >>>>> After compiling to the object file (ex3.o) we don't know what language >>>>> main was written in, and this doesn't solve the actual problem that C++ >>>>> linking is required if any object (not just main) depends on C++. >>>>> >>>> >>>> My thinking here was the following: >>>> >>>> 1) No C++ is allowed in PETSc, unless --with-clanguage=cxx, in which case >>>> the linker is C++ >>>> 2) If C++ is in an external library, then that configure requires the C++ >>>> library >>>> 3) The executable itself could be C++, in which case I proposed using the >>>> C++ linker explicitly >>>> >>>> About not knowing which objects come with C++ main: I thought we did. Don't >>>> they go into a separate set? >>> >>> Right, we do have that information for tests. Note that a single test >>> executable can depend on multiple source files, and the one containing >>> main might not be C++ while another is. I don't know if there are any >>> such instances in PETSc. >>> >>> I can change the build rules for tests with C++ sources later today. >> >> Jed, are you indicating that you will resolve the original problem I >> reported? Where will you resolve it? The problem may come up in one of my >> branches. > > I was going to put it in a new branch from 'master'. There is > disgusting duplication in 'maint' that has since been fixed so I'd > rather not do it there. > > Under what conditions is PCC_LINKER different from CC (or CXX when > clanguage=C++)? I need to find a C++ linker and would prefer to use > $(CXX) rather than adding a new configure test. I feel like the > generated petscvariables has an inordinate amount of duplication all > with non-standard names and no documentation. > > The cheap way to fix your issue is to add LIBS=-lstdc++ to your > configure.
