Actually, simpler:

 ./configure --with-cc=clang --with-cxx=clang++ --with-fc=gfortran  
--with-mpi=0 
--download-fblaslapack="$(DIR_SRC)/fblaslapack-$(FBLASLAPACK_VERSION).tar.gz" 
&& make && make check

> /opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../bin/ld

Hm - there was in issue with some (clang versions?) incompatibilities with 
gcc-12 - I think using gcc-11 (system default in that use case) worked. I'm not 
sure if you are seeing the same issue here.

Satish

On Thu, 20 Feb 2025, Satish Balay wrote:

> 
> Any particular reason to use these flags? What clang version? OS?
> 
> Best if you can send build logs [perhaps to petsc-maint]
> 
> Can you try a simpler build and see if it works:
> 
> ./configure --with-mpi-dir=/PATH_TO/models/src/v2021.03-2.0.3-llvm 
> --download-fblaslapack="$(DIR_SRC)/fblaslapack-$(FBLASLAPACK_VERSION).tar.gz" 
> && make && make check
> or:
> ./configure --with-cc=clang --with-cxx=clang++ --with-fc=gfortran 
> --download-mpich="$(DIR_SRC)/mpich-$(MPICH_VERSION).tar.gz" 
> --download-fblaslapack="$(DIR_SRC)/fblaslapack-$(FBLASLAPACK_VERSION).tar.gz" 
> && make && make check
> 
> Satish
> 
> On Thu, 20 Feb 2025, Michael Schaferkotter wrote:
> 
> > build petsc-3.20.3 with llvm, clang, clang++, gfortran 
> > 
> > CFLAGS='-std=c++11'
> > CXXFLAGS='-std=c++11 -D_GLIBCXX_USE_CXX11_ABI=1'
> > LDLIBS += -lstdc++
> > 
> > $PETSC_ARCH     arch-linux-c-opt
> > MPIF90  = ./models/src/v2021.03-2.0.3-llvm/bin/mpif90
> > MPICC   = ./models/src/v2021.03-2.0.3-llvm/bin/mpicc
> > CLANG   = clang
> > FC   = gfortran
> > 
> > 
> > Petsc libraries are built;
> > /models/src/v2021.03-2.0.3-llvm/lib/libpetsc.so@
> > /models/src/v2021.03-2.0.3-llvm/lib/libpetsc.so.3.020@
> > /models/src/v2021.03-2.0.3-llvm/lib/libpetsc.so.3.020.3*
> > 
> > 
> > The configure is this:
> >         cd $(PETSC_SRC) && unset CXX CC FC F77 && $(PYTHON2) ./configure 
> > --prefix=$(PREFIX) \
> >   --with-cc=clang \
> >   --with-cxx=clang++ \
> >   --with-fc=gfortran \
> >   --download-mpich="$(DIR_SRC)/mpich-$(MPICH_VERSION).tar.gz" \
> >   
> > --download-fblaslapack="$(DIR_SRC)/fblaslapack-$(FBLASLAPACK_VERSION).tar.gz"
> >  \
> >   --download-sowing \
> >   --with-debugging=$(PETSC_DBG) \
> >   --with-shared-libraries=1 \
> >  CFLAGS='-std=c11' \
> >   CXXFLAGS='-std=c++11 -D_GLIBCXX_USE_CXX11_ABI=1' \
> >   CPPFLAGS='-D_GLIBCXX_USE_CXX11_ABI=1' \
> >   LDFLAGS='-L$(LLVM_LIB)' \
> >   LIBS='-lstdc++’ \
> >   --COPTFLAGS=$(COPTFLAGS) --CXXOPTFLAGS=$(CXXOPTFLAGS) 
> > --FOPTFLAGS=$(FOPTFLAGS)
> > 
> > 
> > Here is the make:
> > 
> >         $(MAKE) -C $(PETSC_SRC) PETSC_DIR=$(PETSC_SRC) 
> > PETSC_ARCH=$(PETSC_ARCH) all
> > 
> > 
> > Check-petsc is:
> > 
> >         $(MAKE) -C $(PETSC_SRC) PETSC_DIR=$(PETSC_SRC) 
> > PETSC_ARCH=$(PETSC_ARCH) test
> > 
> > Here is the log file for test:
> > 
> > make[1]: Entering directory 
> > '/models/src/v2021.03-2.0.3-llvm/build/petsc/petsc-3.20.3'
> > /usr/bin/python3 
> > /models/src/v2021.03-2.0.3-llvm/build/petsc/petsc-3.20.3/config/gmakegentest.py
> >  --petsc-dir=/models/src/v2021.03-2.0.3-llvm/build/petsc/petsc-3.20.3 
> > --petsc-arch=arch-linux-c-opt --testdir=./arch-linux-c-opt/tests --srcdir 
> > /models/src/v2021.03-2.0.3-llvm/build/petsc/petsc-3.20.3/src --pkg-pkgs 
> > "sys vec mat dm ksp snes ts tao"
> > Using MAKEFLAGS: iw -- PETSC_ARCH=arch-linux-c-opt 
> > PETSC_DIR=/models/src/v2021.03-2.0.3-llvm/build/petsc/petsc-3.20.3
> >          CC arch-linux-c-opt/tests/sys/classes/draw/tests/ex1.o
> >     CLINKER arch-linux-c-opt/tests/sys/classes/draw/tests/ex1
> > /opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../bin/ld:
> >  arch-linux-c-opt/lib/libpetsc.so: undefined reference to 
> > `std::__cxx11::basic_ostringstream<char, std::char_traits<char>, 
> > std::allocator<char> >::basic_ostringstream()'
> > /opt/rh/gcc-toolset-12/root/usr/lib/gcc/x86_64-redhat-linux/12/../../../../bin/ld:
> >  arch-linux-c-opt/lib/libpetsc.so: undefined reference to 
> > `std::__throw_bad_array_new_length()'
> > clang: error: linker command failed with exit code 1 (use -v to see 
> > invocation)
> > make[1]: [gmakefile.test:273: 
> > arch-linux-c-opt/tests/sys/classes/draw/tests/ex1] Error 1 (ignored)
> > 
> > 
> > There are many errors of the ilk: 
> > 
> > std::__cxx11::basic_ostringstream<char, std::char_traits<char>, 
> > std::allocator<char> >::basic_ostringstream()
> > 
> > [lib]$ nm -A libpetsc.so | grep basic_ostringstream
> > libpetsc.so:                 U 
> > _ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv@GLIBCXX_3.4.21
> > libpetsc.so:                 U 
> > _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev
> > libpetsc.so:                 U 
> > _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev@GLIBCXX_3.4.21
> > 
> > 
> > I/m new to llvm and this is the first time to compile petsc.3.20.3 with 
> > llvm compilers.
> > 
> > Clearly something is amiss.
> > 
> > Any ideas appreciated.
> > 
> > Michael
> > 
> > 
> > 
> 

Reply via email to