Re: recursive configure

Jack Andrews <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAJvHTNwMXSxBUB=T0JquoPMcaLPWm0X=XcgbnM_fL2wsQ0wExQ@mail.gmail.com>
On Thu, 21 Nov 2024 at 09:38, Andrew Pinski <[email protected]> wrote:
> So the toplevel configure only configures the toplevel makefile
> and then when invoking make, it will do the configures then.

Thank you for your reply, Andrew - much appreciated.

Now I understand the stages of configure - make - configure I'm
getting somewhere.  But I'm stuck again.  To illustrate my problem,
I try configuring for i386 linux and I get an error saying

*** This configuration is not supported in the following subdirectories:
     target-newlib target-libgloss

There doesn't seem to be any context to the error message.

This is what I did:

$ cat a.sh
ver="4.4.0.20231231"
pkg=newlib-$ver
tar=$pkg.tar.gz

if [ ! -e $tar ]; then
 wget ftp://sourceware.org/pub/newlib/$tar
fi
tar xf $tar
mkdir -p build; cd build; rm -rf *
../$pkg/configure --with-newlib \
                  --target=i386-pc-linux-gnu \
                  --prefix=/tmp
$ bash a.sh >/dev/null
*** This configuration is not supported in the following subdirectories:
     target-newlib target-libgloss
    (Any other directories should still work fine.)

why is my configuration not supported? only the other day, I was
getting makefiles for newlib, so i don't know what is going on now.
i check the config.log but there's no reason i can see for this error

thanks in advance for any pointers
jack

the full output of this configure is

$ bash a.sh
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking target system type... i386-pc-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether ln works... yes
checking whether ln -s works... yes
checking for a sed that does not truncate output... /usr/bin/sed
checking for gawk... gawk
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking whether g++ accepts -static-libstdc++ -static-libgcc... yes
checking for gnatbind... gnatbind
checking for gnatmake... gnatmake
checking whether compiler driver understands Ada... no
checking how to compare bootstrapped objects... cmp --ignore-initial=16
$$f1 $$f2
checking for objdir... .libs
checking for isl 0.16, 0.15, or deprecated 0.14... yes
checking for isl 0.16 or 0.15... yes
*** This configuration is not supported in the following subdirectories:
     target-newlib target-libgloss
    (Any other directories should still work fine.)
checking for default BUILD_CONFIG...
checking for --enable-vtable-verify... no
checking for bison... no
checking for byacc... no
checking for yacc... no
checking for bison... no
checking for gm4... no
checking for gnum4... no
checking for m4... m4
checking for flex... no
checking for lex... no
checking for flex... no
checking for makeinfo... makeinfo
checking for expect... no
checking for runtest... no
checking for ar... ar
checking for as... as
checking for dlltool... no
checking for ld... ld
checking for lipo... no
checking for nm... nm
checking for ranlib... ranlib
checking for strip... strip
checking for windres... no
checking for windmc... no
checking for objcopy... objcopy
checking for objdump... objdump
checking for readelf... readelf
checking for -plugin option... --plugin
/usr/lib/gcc/x86_64-linux-gnu/11/liblto_plugin.so
checking for i386-pc-linux-gnu-cc... no
checking for i386-pc-linux-gnu-gcc... no
checking for i386-pc-linux-gnu-c++... no
checking for i386-pc-linux-gnu-g++... no
checking for i386-pc-linux-gnu-cxx... no
checking for i386-pc-linux-gnu-gxx... no
checking for i386-pc-linux-gnu-gcc... no
checking for i386-pc-linux-gnu-gcj... no
checking for i386-pc-linux-gnu-gfortran... no
checking for i386-pc-linux-gnu-gccgo... no
checking for i386-pc-linux-gnu-ar... no
checking for i386-pc-linux-gnu-as... no
checking for i386-pc-linux-gnu-dlltool... no
checking for i386-pc-linux-gnu-ld... no
checking for i386-pc-linux-gnu-lipo... no
checking for i386-pc-linux-gnu-nm... no
checking for i386-pc-linux-gnu-objcopy... no
checking for i386-pc-linux-gnu-objdump... no
checking for i386-pc-linux-gnu-ranlib... no
checking for i386-pc-linux-gnu-readelf... no
checking for i386-pc-linux-gnu-strip... no
checking for i386-pc-linux-gnu-windres... no
checking for i386-pc-linux-gnu-windmc... no
checking where to find the target ar... pre-installed
checking where to find the target as... pre-installed
checking where to find the target cc... pre-installed
checking where to find the target c++... pre-installed
checking where to find the target c++ for libstdc++... pre-installed
checking where to find the target dlltool... pre-installed
checking where to find the target gcc... pre-installed
checking where to find the target gcj... pre-installed
checking where to find the target gfortran... pre-installed
checking where to find the target gccgo... pre-installed
checking where to find the target ld... pre-installed
checking where to find the target lipo... pre-installed
checking where to find the target nm... pre-installed
checking where to find the target objcopy... pre-installed
checking where to find the target objdump... pre-installed
checking where to find the target ranlib... pre-installed
checking where to find the target readelf... pre-installed
checking where to find the target strip... pre-installed
checking where to find the target windres... pre-installed
checking where to find the target windmc... pre-installed
checking whether to enable maintainer-specific portions of Makefiles... no
configure: creating ./config.status
config.status: creating Makefile



> On Wed, Nov 20, 2024 at 12:02 AM Jack Andrews <[email protected]> wrote:
> >
> > Hi newlib, I hope you're well. Thanks for the great lib.
> >
> > I'm porting newlib to BareMetal OS. I'm trying to understand the build
> > process. When I remove libgloss/Makefile.in, I can still configure
> > newlib - why? Shouldn't configure be recursive? I've tried configuring
> > libgloss separately but that fails.
>
> This is partly because newlib toplevel shares the same toplevel
> configure as GCC/binutils/gdb.
> So subdirectories can either be a target library/program or a host (or
> even a build) library/program too.
> So the toplevel configure only configures the toplevel makefile and
> then when invoking make, it will do the configures then.
> Also not all targets use libgloss but still will use newlib. So there
> is no reason to configure in the libgloss subdirectory for those
> cases.
>
> Oh and you can do a combined build with GCC and binutils/gdb with
> newlib and get a full set of multilibs even installed in the correct
> location.
>
> For you OS, if you don't need libgloss, you can edit the toplevel
> configure.ac (and regenerated configure) to disable it for that
> target.
> See around `# Disable newlib and libgloss for various target OSes.`.
>
> Hope this helps.
>
> Thanks,
> Andrew
>
> >
> > Here's what I did in a script:
> >
> > $ uname -sp
> > Linux x86_64
> > $ cat mail.sh
> > ver="4.4.0.20231231"
> > pkg=newlib-$ver
> > tar=$pkg.tar.gz
> >
> > if [ ! -e $tar ]; then wget ftp://sourceware.org/pub/newlib/$tar; fi
> > tar xf $tar
> >
> > rm -rf build; mkdir build; cd build
> > if ../$pkg/configure          >/dev/null; then echo configure works; fi
> > if ../$pkg/libgloss/configure >/dev/null; then echo configure libgloss
> works; fi
> > rm ../$pkg/libgloss/Makefile.in
> > if ../$pkg/configure          >/dev/null; then echo why does configure
> > still work?; fi
> >
> > cd ..
> > $ bash mail.sh
> > configure works
> > configure: error: cannot run /bin/bash ../config.sub
> > why does configure still work?
> > $
> >
> > thanks in advance,
> > jack
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.