"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.
