Fred's sysconfig module.
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
new file mode 100644
index 0000000..b5fe187
--- /dev/null
+++ b/Lib/distutils/sysconfig.py
@@ -0,0 +1,106 @@
+"""Prototype sysconfig module that loads information when run as a script,
+but only defines constants when imported.
+
+This should be run as a script as one of the last steps of the Python
+installation process.
+
+Written by:   Fred L. Drake, Jr.
+Email:        <fdrake@acm.org>
+Initial date: 17-Dec-1998
+"""
+
+__version__ = "$Revision$"
+
+
+def _init_posix():
+    import os
+    import re
+    import sys
+
+    g = globals()
+
+    version = sys.version[:3]
+    config_dir = os.path.join(
+        sys.exec_prefix, "lib", "python" + version, "config")
+
+    # load the installed config.h:
+    define_rx = re.compile("#define ([A-Z][A-Z0-9_]+) (.*)\n")
+    undef_rx = re.compile("/[*] #undef ([A-Z][A-Z0-9_]+) [*]/\n")
+    fp = open(os.path.join(config_dir, "config.h"))
+
+    while 1:
+        line = fp.readline()
+        if not line:
+            break
+        m = define_rx.match(line)
+        if m:
+            n, v = m.group(1, 2)
+            if v == "1":
+                g[n] = 1
+            else:
+                g[n] = v
+        else:
+            m = undef_rx.match(line)
+            if m:
+                g[m.group(1)] = 0
+
+    # load the installed Makefile.pre.in:
+    variable_rx = re.compile("([a-zA-Z][a-zA-Z0-9_]+)\s*=\s*(.*)\n")
+    done = {}
+    notdone = {}
+    fp = open(os.path.join(config_dir, "Makefile"))
+
+    while 1:
+        line = fp.readline()
+        if not line:
+            break
+        m = variable_rx.match(line)
+        if m:
+            n, v = m.group(1, 2)
+            if "$" in v:
+                notdone[n] = v
+            else:
+                done[n] = v
+
+    # do variable interpolation here
+    findvar1_rx = re.compile(r"\$\(([A-Za-z][A-Za-z0-9_]*)\)")
+    findvar2_rx = re.compile(r"\${([A-Za-z][A-Za-z0-9_]*)}")
+    while notdone:
+        for name in notdone.keys():
+            value = notdone[name]
+            m = findvar1_rx.search(value)
+            if not m:
+                m = findvar2_rx.search(value)
+            if m:
+                n = m.group(1)
+                if done.has_key(n):
+                    after = value[m.end():]
+                    value = value[:m.start()] + done[n] + after
+                    if "$" in after:
+                        notdone[name] = value
+                    else:
+                        done[name] = value
+                        del notdone[name]
+                elif notdone.has_key(n):
+                    # get it on a subsequent round
+                    pass
+                else:
+                    done[n] = ""
+                    after = value[m.end():]
+                    value = value[:m.start()] + after
+                    if "$" in after:
+                        notdone[name] = value
+                    else:
+                        done[name] = value
+                        del notdone[name]
+            else:
+                del notdone[name]
+
+    # save the results in the global dictionary
+    g.update(done)
+
+
+import os
+exec "_init_%s()" % os.name
+del os
+del _init_posix