[COMMITTED] libstdc++: Simplify makefile rule for largefile-config.h (PR91947)
diff mbox series

Message ID 20200123223618.GA28477@redhat.com
State New
Headers show
Series
  • [COMMITTED] libstdc++: Simplify makefile rule for largefile-config.h (PR91947)
Related show

Commit Message

Jonathan Wakely Jan. 23, 2020, 10:36 p.m. UTC
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.

Tested x86_64-linux and powerpc64le-linux. Committed to trunk.

I'll also backport this to the gcc-9 branch.
commit 04681fca936b5bca1dd374dfb0fbca7ccb028994
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Jan 23 14:02:32 2020 +0000

    libstdc++: Simplify makefile rule for largefile-config.h (PR91947)
    
    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.

Patch
diff mbox series

diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am
index ad4404793be..89835759069 100644
--- a/libstdc++-v3/include/Makefile.am
+++ b/libstdc++-v3/include/Makefile.am
@@ -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.