c++config.h hacking
Benjamin Kosnik
bkoz@redhat.com
Fri Dec 16 20:26:00 GMT 2005
Alexandre, you seem like somebody who could help me out with this.
Jakub, this is what I was talking about.
I'm trying to change the way c++config.h is constructed, to allow me to
order defines within the file, and substitute values at configure or
build time.
Currently, c++config is created by catting include/bits/c++config,
catting in the version info, and then catting in config.h.
from include/Makefile.am:
# Host includes dynamic.
${host_builddir}/c++config.h: ${top_builddir}/config.h \
${glibcxx_srcdir}/include/bits/c++config \
stamp-${host_alias} \
${toplevel_srcdir}/gcc/DATESTAMP
@cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
sed -e 's/^/#define __GLIBCXX__ /' \
< ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
-e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
-e 's/VERSION/_GLIBCXX_VERSION/g' \
-e 's/WORDS_/_GLIBCXX_WORDS_/g' \
< ${CONFIG_HEADER} >> $@ ;\
echo "#endif // _CXXCONFIG_" >>$@
Instead, what I'd like to do is something like copy include/bits/c+
+config.h to the build directory, do the replacements, cat in config.h
to this.
# Host includes dynamic.
if ENABLE_SYMVERS_GNU_NAMESPACE
nsa_version=1
else
nsa_version=0
endif
${host_builddir}/c++config.h: ${CONFIG_HEADER} \
${glibcxx_srcdir}/include/bits/c++config \
stamp-${host_alias} \
${toplevel_srcdir}/gcc/DATESTAMP
@cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
sed -n '1,/__GLIBCXX__/p' $@ > tmp1.top; \
sed -n '/__GLIBCXX__/,$$p' $@ > tmp1.bottom; \
sed -e 's/^/#define __GLIBCXX__ /' \
< ${toplevel_srcdir}/gcc/DATESTAMP >> tmp1.top ; \
cat tmp1.top tmp1.bottom > $@; \
sed -n '1,/_GLIBCXX_NAMESPACE_ASSOCIATION_VERSION /p' $@ > tmp.top; \
sed -n '/_GLIBCXX_NAMESPACE_ASSOCIATION_VERSION/,$$p' $@ > tmp.bottom;\
sed -e 's/^/#define _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION /' \
< `echo ${nsa_version}` >> tmp.top ; \
cat tmp.top tmp.bottom > $@; \
sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
-e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
-e 's/VERSION/_GLIBCXX_VERSION/g' \
-e 's/WORDS_/_GLIBCXX_WORDS_/g' \
< ${CONFIG_HEADER} >> $@ ;\
echo "#endif // _CXXCONFIG_" >> $@
Anyway. I'm kind of brain dead at this point, and am looking for
advice. Is there a simpler way to do what I am trying to do that I am
missing?
-benjamin
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: c++config.orig
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20051216/62821b7d/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: c++config.desired
URL: <http://gcc.gnu.org/pipermail/libstdc++/attachments/20051216/62821b7d/attachment-0001.ksh>
More information about the Libstdc++
mailing list