blob: e2247b3957bfd00feeee18c021cf5d7f13b879e0 [file] [log] [blame]
Jean-Paul Calderone897bc252008-02-18 20:50:23 -05001# vim:fileencoding=UTF-8
2#
3# setup.py
4#
5# Copyright (C) AB Strakt 2001, All rights reserved
6#
7# @(#) $Id: setup.py,v 1.28 2004/08/10 10:59:01 martin Exp $
8#
9"""
10Installation script for the OpenSSL module
11"""
12
13from distutils.core import setup, Extension
14import os, sys
15
16from version import __version__
17
18# A hack to determine if Extension objects support the depends keyword arg.
19try:
20 init_func = Extension.__init__.func_code
21 has_dep = 'depends' in init_func.co_varnames
22except:
23 has_dep = 0
24if not has_dep:
25 # If it doesn't, create a local replacement that removes depends
26 # from the kwargs before calling the regular constructor.
27 _Extension = Extension
28 class Extension(_Extension):
29 def __init__(self, name, sources, **kwargs):
Jean-Paul Calderonee79705c2008-03-04 22:20:06 -050030 kwargs.pop('depends', None)
Jean-Paul Calderonee9404372008-03-04 22:19:18 -050031 _Extension.__init__(self, name, sources, **kwargs)
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050032
33
34crypto_src = ['src/crypto/crypto.c', 'src/crypto/x509.c',
35 'src/crypto/x509name.c', 'src/crypto/pkey.c',
36 'src/crypto/x509store.c', 'src/crypto/x509req.c',
37 'src/crypto/x509ext.c', 'src/crypto/pkcs7.c',
38 'src/crypto/pkcs12.c', 'src/crypto/netscape_spki.c',
39 'src/util.c']
40crypto_dep = ['src/crypto/crypto.h', 'src/crypto/x509.h',
41 'src/crypto/x509name.h', 'src/crypto/pkey.h',
42 'src/crypto/x509store.h', 'src/crypto/x509req.h',
43 'src/crypto/x509ext.h', 'src/crypto/pkcs7.h',
44 'src/crypto/pkcs12.h', 'src/crypto/netscape_spki.h',
45 'src/util.h']
46rand_src = ['src/rand/rand.c', 'src/util.c']
47rand_dep = ['src/util.h']
48ssl_src = ['src/ssl/connection.c', 'src/ssl/context.c', 'src/ssl/ssl.c',
49 'src/util.c']
50ssl_dep = ['src/ssl/connection.h', 'src/ssl/context.h', 'src/ssl/ssl.h',
51 'src/util.h']
52
53IncludeDirs = None
54LibraryDirs = None
55
56# Add more platforms here when needed
57if os.name == 'nt' or sys.platform == 'win32':
58 Libraries = ['libeay32', 'ssleay32', 'Ws2_32']
59else:
60 Libraries = ['ssl', 'crypto']
61
62if sys.platform == 'darwin':
63 IncludeDirs = ['/sw/include']
64 LibraryDirs = ['/sw/lib']
65
66def mkExtension(name):
Jean-Paul Calderonee9404372008-03-04 22:19:18 -050067 modname = 'OpenSSL.' + name
68 src = globals()[name.lower() + '_src']
69 dep = globals()[name.lower() + '_dep']
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050070 return Extension(modname, src, libraries=Libraries, depends=dep,
71 include_dirs=IncludeDirs, library_dirs=LibraryDirs)
72
73setup(name='pyOpenSSL', version=__version__,
74 package_dir = { 'OpenSSL': '.' },
75 ext_modules = [mkExtension('crypto'), mkExtension('rand'), mkExtension('SSL')],
76 py_modules = ['OpenSSL.__init__', 'OpenSSL.tsafe', 'OpenSSL.version'],
77 description = 'Python wrapper module around the OpenSSL library',
78 author = 'Martin Sjögren, AB Strakt', author_email = 'msjogren@gmail.com',
79 url = 'http://pyopenssl.sourceforge.net/',
80 license = 'LGPL',
81 long_description = """\
82High-level wrapper around a subset of the OpenSSL library, includes
83 * SSL.Connection objects, wrapping the methods of Python's portable
84 sockets
85 * Callbacks written in Python
86 * Extensive error-handling mechanism, mirroring OpenSSL's error codes
87... and much more ;)"""
88 )