Patch #497126: Always compile dl.
diff --git a/Misc/ACKS b/Misc/ACKS
index ead7ec8..861e226 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -312,6 +312,7 @@
 Chad Netzer
 Max Neunhöffer
 George Neville-Neil
+Gustavo Niemeyer
 Oscar Nierstrasz
 Hrvoje Niksic
 Bill Noon
diff --git a/Misc/NEWS b/Misc/NEWS
index a0e3572..abdf400 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,10 @@
 
 Extension modules
 
+- dl is now build on every system that has dlfcn.h. Failure in case
+  of sizeof(int)!=sizeof(long)!=sizeof(void*) is delayed until dl.open
+  is called.
+
 Library
 
 - ftplib: to safeguard the user's privacy, anonymous login will use
diff --git a/Modules/dlmodule.c b/Modules/dlmodule.c
index 18b97d8..46ae926 100644
--- a/Modules/dlmodule.c
+++ b/Modules/dlmodule.c
@@ -158,6 +158,13 @@
 	char *name;
 	int mode;
 	PyUnivPtr *handle;
+	if (sizeof(int) != sizeof(long) ||
+	    sizeof(long) != sizeof(char *)) {
+		PyErr_SetString(PyExc_SystemError,
+ "module dl requires sizeof(int) == sizeof(long) == sizeof(char*)");
+		return NULL;
+	}
+
 	if (PyArg_Parse(args, "z", &name))
 		mode = RTLD_LAZY;
 	else {
@@ -204,13 +211,6 @@
 {
 	PyObject *m, *d, *x;
 
-	if (sizeof(int) != sizeof(long) ||
-	    sizeof(long) != sizeof(char *)) {
-		PyErr_SetString(PyExc_SystemError,
- "module dl requires sizeof(int) == sizeof(long) == sizeof(char*)");
-		return;
-	}
-
 	/* Initialize object type */
 	Dltype.ob_type = &PyType_Type;
 
diff --git a/setup.py b/setup.py
index 28a1a7c..8af8bde 100644
--- a/setup.py
+++ b/setup.py
@@ -567,6 +567,11 @@
                                    define_macros = expat_defs,
                                    libraries = ['expat']) )
 
+	# Dynamic loading module
+        dl_inc = find_file('dlfcn.h', [], inc_dirs)
+        if dl_inc is not None:
+		exts.append( Extension('dl', ['dlmodule.c']) )
+		
         # Platform-specific libraries
         if platform == 'linux2':
             # Linux-specific modules