aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/command/build_ext.py
diff options
context:
space:
mode:
authorPJ Eby <distutils-sig@python.org>2006-01-14 19:34:55 +0000
committerPJ Eby <distutils-sig@python.org>2006-01-14 19:34:55 +0000
commit9a0ca8368b68ec3e4956dfee6222b6509b33f248 (patch)
treeda2919241ab04f2355a6ab193ad86c1d6d0b450b /setuptools/command/build_ext.py
parent7ec25b1bacbbd05efb42f41f4751cae75e7d8369 (diff)
downloadexternal_python_setuptools-9a0ca8368b68ec3e4956dfee6222b6509b33f248.tar.gz
external_python_setuptools-9a0ca8368b68ec3e4956dfee6222b6509b33f248.tar.bz2
external_python_setuptools-9a0ca8368b68ec3e4956dfee6222b6509b33f248.zip
Tweak build configuration for OS X, based on suggestions from Michael
Twomey on the distutils-sig. (It looks like we may also need to add an '-install_name' or some such to the library link step.) --HG-- branch : setuptools extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/trunk/setuptools%4042047
Diffstat (limited to 'setuptools/command/build_ext.py')
-rw-r--r--setuptools/command/build_ext.py44
1 files changed, 22 insertions, 22 deletions
diff --git a/setuptools/command/build_ext.py b/setuptools/command/build_ext.py
index fee074bd..a4b9047e 100644
--- a/setuptools/command/build_ext.py
+++ b/setuptools/command/build_ext.py
@@ -9,30 +9,30 @@ import os, sys
from distutils.file_util import copy_file
from setuptools.extension import Library
from distutils.ccompiler import new_compiler
-from distutils.sysconfig import customize_compiler, _config_vars
+from distutils.sysconfig import customize_compiler, get_config_var
+get_config_var("LDSHARED") # make sure _config_vars is initialized
+from distutils.sysconfig import _config_vars
from distutils import log
from distutils.errors import *
have_rtld = False
+use_stubs = False
libtype = 'shared'
-if os.name != 'nt':
+
+if sys.platform == "darwin":
+ use_stubs = True
+elif os.name != 'nt':
try:
from dl import RTLD_NOW
have_rtld = True
+ use_stubs = True
except ImportError:
pass
-
-
-
-
-
-
-
-
-
-
-
+def if_dl(s):
+ if have_rtld:
+ return s
+ return ''
@@ -86,7 +86,7 @@ class build_ext(_build_ext):
if isinstance(ext,Library):
fn, ext = os.path.splitext(filename)
return self.shlib_compiler.library_filename(fn,libtype)
- elif have_rtld and ext._links_to_dynamic:
+ elif use_stubs and ext._links_to_dynamic:
d,fn = os.path.split(filename)
return os.path.join(d,'dl-'+fn)
else:
@@ -111,12 +111,12 @@ class build_ext(_build_ext):
self.ext_map[fullname] = ext
ltd = ext._links_to_dynamic = \
self.shlibs and self.links_to_dynamic(ext) or False
- ext._needs_stub = ltd and have_rtld and not isinstance(ext,Library)
+ ext._needs_stub = ltd and use_stubs and not isinstance(ext,Library)
filename = ext._file_name = self.get_ext_filename(fullname)
libdir = os.path.dirname(os.path.join(self.build_lib,filename))
if ltd and libdir not in ext.library_dirs:
ext.library_dirs.append(libdir)
- if ltd and have_rtld and os.curdir not in ext.runtime_library_dirs:
+ if ltd and use_stubs and os.curdir not in ext.runtime_library_dirs:
ext.runtime_library_dirs.append(os.curdir)
@@ -129,7 +129,7 @@ class build_ext(_build_ext):
tmp = _config_vars.copy()
try:
# XXX Help! I don't have any idea whether these are right...
- _config_vars['LDSHARED'] = "-dynamiclib -undefined dynamic_lookup"
+ _config_vars['LDSHARED'] = "gcc -Wl,-x -dynamiclib -undefined dynamic_lookup"
_config_vars['CCSHARED'] = " -dynamiclib"
_config_vars['SO'] = ".dylib"
customize_compiler(compiler)
@@ -213,20 +213,20 @@ class build_ext(_build_ext):
f.write('\n'.join([
"def __bootstrap__():",
" global __bootstrap__, __file__, __loader__",
- " import sys, os, pkg_resources, imp, dl",
+ " import sys, os, pkg_resources, imp"+if_dl(", dl"),
" __file__ = pkg_resources.resource_filename(__name__,%r)"
% os.path.basename(ext._file_name),
" del __bootstrap__",
" if '__loader__' in globals():",
" del __loader__",
- " old_flags = sys.getdlopenflags()",
+ if_dl(" old_flags = sys.getdlopenflags()"),
" old_dir = os.getcwd()",
" try:",
" os.chdir(os.path.dirname(__file__))",
- " sys.setdlopenflags(dl.RTLD_NOW)",
+ if_dl(" sys.setdlopenflags(dl.RTLD_NOW)"),
" imp.load_dynamic(__name__,__file__)",
" finally:",
- " sys.setdlopenflags(old_flags)",
+ if_dl(" sys.setdlopenflags(old_flags)"),
" os.chdir(old_dir)",
"__bootstrap__()",
"" # terminal \n
@@ -244,7 +244,7 @@ class build_ext(_build_ext):
os.unlink(stub_file)
-if have_rtld or os.name=='nt':
+if use_stubs or os.name=='nt':
# Build shared libraries
#
def link_shared_object(self, objects, output_libname, output_dir=None,