+/* A system configuration file may set this to request a certain extra
+ amount of storage. This is a lot more update-robust that defining
+ BASE_PURESIZE or even PURESIZE directly. */
+#ifndef SYSTEM_PURESIZE_EXTRA
+#define SYSTEM_PURESIZE_EXTRA 0
+#endif
+
+#ifndef SITELOAD_PURESIZE_EXTRA
+#define SITELOAD_PURESIZE_EXTRA 0
+#endif
+
+#ifndef BASE_PURESIZE
+#define BASE_PURESIZE (720000 + SYSTEM_PURESIZE_EXTRA + SITELOAD_PURESIZE_EXTRA)
+#endif
+
+/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */
+#ifndef PURESIZE_RATIO
+#if VALBITS + GCTYPEBITS + 1 > 32
+#define PURESIZE_RATIO 8/5 /* Don't surround with `()'. */
+#else
+#define PURESIZE_RATIO 1
+#endif
+#endif
+
+/* This is the actual size in bytes to allocate. */
+#ifndef PURESIZE
+#define PURESIZE (BASE_PURESIZE * PURESIZE_RATIO)
+#endif
+
+/* Signal an error if OBJ is pure. */