libstdc++: Simplify makefile rule for largefile-config.h (PR91947)
authorJonathan Wakely <jwakely@redhat.com>
Thu, 23 Jan 2020 14:02:32 +0000 (14:02 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Thu, 23 Jan 2020 14:02:32 +0000 (14:02 +0000)
The previous rule could leave an incomplete file if the build was
interrupted, which would then not be remade if make was run again.

This makes the rule more robust by writing to a temporary file and only
moving it into place as the final step. It also simplifies the rule so
that only the essential macro definitions are written to the file, not
the explanatory comments and commented out #undef lines.

Also, the macro for enabling LFS on Mac OS X 10.5 is now set
unconditionally, which is a bug fix from upstream autoconf.

PR libstdc++/91947
* include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
rule.
* include/Makefile.in: Regenerate.

libstdc++-v3/ChangeLog
libstdc++-v3/include/Makefile.am
libstdc++-v3/include/Makefile.in

index 17cc0f34b559bf690059f57bd84fc69f3277697b..539b0f6e593dbea3e4a09ecd83a49083ba8cdfbd 100644 (file)
@@ -1,3 +1,10 @@
+2020-01-23  Jonathan Wakely  <jwakely@redhat.com>
+
+       PR libstdc++/91947
+       * include/Makefile.am (${host_builddir}/largefile-config.h): Simplify
+       rule.
+       * include/Makefile.in: Regenerate.
+
 2020-01-20  Jonathan Wakely  <jwakely@redhat.com>
 
        * doc/xml/faq.xml: Fix grammar.
index ad4404793beaa9ab48669d58706d9cd9e309c89b..89835759069dbbdbb5b1f7f918dcf7782c7e4b83 100644 (file)
@@ -1245,22 +1245,12 @@ stamp-float128:
 endif
 
 # This header is not installed, it's only used to build libstdc++ itself.
-${host_builddir}/largefile-config.h: ${CONFIG_HEADER} \
-                                    ${glibcxx_srcdir}/include/bits/c++config
-       @echo '#if defined _GLIBCXX_CXX_CONFIG_H || defined _FEATURES_H' > $@
-       @echo '# error "This file must be included before any others"' >> $@
-       @echo '#endif' >> $@
-       @echo >> $@
-       @echo '/* Enable large inode numbers on Mac OS X 10.5.  */' >> $@
-       @echo '#ifndef _DARWIN_USE_64_BIT_INODE' >> $@
-       @echo '# define _DARWIN_USE_64_BIT_INODE 1' >> $@
-       @echo '#endif' >> $@
-       @echo >> $@
-       @echo '/* Number of bits in a file offset, on hosts where this is settable. */' >> $@
-       @grep '_FILE_OFFSET_BITS' ${CONFIG_HEADER} >> $@
-       @echo >> $@
-       @echo '/* Define for large files, on AIX-style hosts. */' >> $@
-       @grep '_LARGE_FILES' ${CONFIG_HEADER} >> $@
+${host_builddir}/largefile-config.h: ${CONFIG_HEADER}
+       @rm -f $@.tmp
+       @-grep 'define _DARWIN_USE_64_BIT_INODE' ${CONFIG_HEADER} >> $@.tmp
+       @-grep 'define _FILE_OFFSET_BITS' ${CONFIG_HEADER} >> $@.tmp
+       @-grep 'define _LARGE_FILES' ${CONFIG_HEADER} >> $@.tmp
+       @mv $@.tmp $@
 
 # NB: The non-empty default ldbl_compat works around an AIX sed
 # oddity, see libstdc++/31957 for details.
index f8b5645224223f3b8ab9fb5f9d8aa81ca625663c..57574c307a57ccb4051a5f603110d1948492bd5b 100644 (file)
@@ -1725,22 +1725,12 @@ stamp-host: ${host_headers} ${bits_host_headers} ${ext_host_headers} ${host_head
 @ENABLE_FLOAT128_FALSE@        echo 'undef _GLIBCXX_USE_FLOAT128' > stamp-float128
 
 # This header is not installed, it's only used to build libstdc++ itself.
-${host_builddir}/largefile-config.h: ${CONFIG_HEADER} \
-                                    ${glibcxx_srcdir}/include/bits/c++config
-       @echo '#if defined _GLIBCXX_CXX_CONFIG_H || defined _FEATURES_H' > $@
-       @echo '# error "This file must be included before any others"' >> $@
-       @echo '#endif' >> $@
-       @echo >> $@
-       @echo '/* Enable large inode numbers on Mac OS X 10.5.  */' >> $@
-       @echo '#ifndef _DARWIN_USE_64_BIT_INODE' >> $@
-       @echo '# define _DARWIN_USE_64_BIT_INODE 1' >> $@
-       @echo '#endif' >> $@
-       @echo >> $@
-       @echo '/* Number of bits in a file offset, on hosts where this is settable. */' >> $@
-       @grep '_FILE_OFFSET_BITS' ${CONFIG_HEADER} >> $@
-       @echo >> $@
-       @echo '/* Define for large files, on AIX-style hosts. */' >> $@
-       @grep '_LARGE_FILES' ${CONFIG_HEADER} >> $@
+${host_builddir}/largefile-config.h: ${CONFIG_HEADER}
+       @rm -f $@.tmp
+       @-grep 'define _DARWIN_USE_64_BIT_INODE' ${CONFIG_HEADER} >> $@.tmp
+       @-grep 'define _FILE_OFFSET_BITS' ${CONFIG_HEADER} >> $@.tmp
+       @-grep 'define _LARGE_FILES' ${CONFIG_HEADER} >> $@.tmp
+       @mv $@.tmp $@
 
 # NB: The non-empty default ldbl_compat works around an AIX sed
 # oddity, see libstdc++/31957 for details.