cpu_defines.h not installed in freestanding C++ library. Bug or feature?
Doug Kwan (關振德)
dougkwan@google.com
Mon Mar 14 17:38:00 GMT 2011
Hi,
I tried to build the C++ library in freestanding mode. It built
libsupc++ without any problem. When I tested the built library, I got
an error because cpu_defines.h was included by c++cofing.h but not
installed. I looked at libstdc++/include/Makefile.in and it said:
if GLIBCXX_HOSTED
install-data-local: install-headers
else
install-data-local: install-freestanding-headers
endif
# This is a subset of the full install-headers rule. We only need <cstddef>,
# <limits>, <cstdlib>, <cstdarg>, <new>, <typeinfo>, <exception>, and any
# files which they include (and which we provide). The last three headers
# are installed by libsupc++, so only the first four and the sub-includes
# are copied here.
install-freestanding-headers:
$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}
$(mkinstalldirs) $(DESTDIR)${host_installdir}
for file in ${host_srcdir}/os_defines.h
${host_builddir}/c++config.h; do \
$(INSTALL_DATA) $${file} $(DESTDIR)${host_installdir}; done
$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${std_builddir}
$(INSTALL_DATA) ${std_builddir}/limits
$(DESTDIR)${gxx_include_dir}/${std_builddir}
$(mkinstalldirs) $(DESTDIR)${gxx_include_dir}/${c_base_builddir}
for file in cstddef cstdlib cstdarg; do \
$(INSTALL_DATA) ${c_base_builddir}/$${file}
$(DESTDIR)${gxx_include_dir}/${c_base_builddir}; done
I assumed this rule installed all necessary headers in a freestanding
implementation. It did not appear to install cpu_defines.h though.
And c++config needed it.
...
// First includes.
// Pick up any OS-specific definitions.
#include <bits/os_defines.h>
// Pick up any CPU-specific definitions.
#include <bits/cpu_defines.h>
..
Is that intentional?
-Doug
More information about the Libstdc++
mailing list