blob: 0bc6580c1ab1d916572c701f2d1ee69a86f45d69 [file] [log] [blame]
Jean-Paul Calderonecf20dd62008-06-12 16:38:38 -04001#!/usr/bin/env python
Jean-Paul Calderone0db6cdb2008-04-11 11:52:15 -04002# -*- coding: utf-8 -*-
Jean-Paul Calderone897bc252008-02-18 20:50:23 -05003#
4# Copyright (C) AB Strakt 2001, All rights reserved
Jean-Paul Calderonee53ccf72008-04-11 11:40:39 -04005# Copyright (C) Jean-Paul Calderone 2008, All rights reserved
Jean-Paul Calderone897bc252008-02-18 20:50:23 -05006#
7# @(#) $Id: setup.py,v 1.28 2004/08/10 10:59:01 martin Exp $
8#
Jean-Paul Calderonee53ccf72008-04-11 11:40:39 -04009
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050010"""
11Installation script for the OpenSSL module
12"""
13
14from distutils.core import setup, Extension
15import os, sys
16
17from version import __version__
18
19# A hack to determine if Extension objects support the depends keyword arg.
20try:
21 init_func = Extension.__init__.func_code
22 has_dep = 'depends' in init_func.co_varnames
23except:
24 has_dep = 0
25if not has_dep:
26 # If it doesn't, create a local replacement that removes depends
27 # from the kwargs before calling the regular constructor.
28 _Extension = Extension
29 class Extension(_Extension):
30 def __init__(self, name, sources, **kwargs):
Jean-Paul Calderonee79705c2008-03-04 22:20:06 -050031 kwargs.pop('depends', None)
Jean-Paul Calderonee9404372008-03-04 22:19:18 -050032 _Extension.__init__(self, name, sources, **kwargs)
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050033
34
35crypto_src = ['src/crypto/crypto.c', 'src/crypto/x509.c',
36 'src/crypto/x509name.c', 'src/crypto/pkey.c',
37 'src/crypto/x509store.c', 'src/crypto/x509req.c',
38 'src/crypto/x509ext.c', 'src/crypto/pkcs7.c',
39 'src/crypto/pkcs12.c', 'src/crypto/netscape_spki.c',
40 'src/util.c']
41crypto_dep = ['src/crypto/crypto.h', 'src/crypto/x509.h',
42 'src/crypto/x509name.h', 'src/crypto/pkey.h',
43 'src/crypto/x509store.h', 'src/crypto/x509req.h',
44 'src/crypto/x509ext.h', 'src/crypto/pkcs7.h',
45 'src/crypto/pkcs12.h', 'src/crypto/netscape_spki.h',
46 'src/util.h']
47rand_src = ['src/rand/rand.c', 'src/util.c']
48rand_dep = ['src/util.h']
49ssl_src = ['src/ssl/connection.c', 'src/ssl/context.c', 'src/ssl/ssl.c',
50 'src/util.c']
51ssl_dep = ['src/ssl/connection.h', 'src/ssl/context.h', 'src/ssl/ssl.h',
52 'src/util.h']
53
54IncludeDirs = None
55LibraryDirs = None
56
57# Add more platforms here when needed
58if os.name == 'nt' or sys.platform == 'win32':
Jean-Paul Calderonecc8a54a2008-03-08 20:13:01 -050059 Libraries = ['eay32', 'Ws2_32']
60 ExtraObjects = [r"c:\Python25\libs\ssleay32.a"]
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050061else:
62 Libraries = ['ssl', 'crypto']
Jean-Paul Calderonecc8a54a2008-03-08 20:13:01 -050063 ExtraObjects = []
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050064
65if sys.platform == 'darwin':
66 IncludeDirs = ['/sw/include']
67 LibraryDirs = ['/sw/lib']
68
69def mkExtension(name):
Jean-Paul Calderonee9404372008-03-04 22:19:18 -050070 modname = 'OpenSSL.' + name
71 src = globals()[name.lower() + '_src']
72 dep = globals()[name.lower() + '_dep']
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050073 return Extension(modname, src, libraries=Libraries, depends=dep,
Jean-Paul Calderonecc8a54a2008-03-08 20:13:01 -050074 include_dirs=IncludeDirs, library_dirs=LibraryDirs,
Jean-Paul Calderone2ee1e7c2008-12-31 14:58:38 -050075 extra_objects=ExtraObjects,
76 extra_compile_args=["-O0"])
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050077
78setup(name='pyOpenSSL', version=__version__,
Jean-Paul Calderone525ef802008-03-09 20:39:42 -040079 package_dir = {'OpenSSL': '.'},
80 ext_modules = [mkExtension('crypto'), mkExtension('rand'),
81 mkExtension('SSL')],
82 py_modules = ['OpenSSL.__init__', 'OpenSSL.tsafe',
83 'OpenSSL.version', 'OpenSSL.test.__init__',
Jean-Paul Calderone30c09ea2008-03-21 17:04:05 -040084 'OpenSSL.test.test_crypto',
85 'OpenSSL.test.test_ssl'],
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050086 description = 'Python wrapper module around the OpenSSL library',
Jean-Paul Calderonee53ccf72008-04-11 11:40:39 -040087 author = 'Martin Sjögren, AB Strakt',
88 author_email = 'msjogren@gmail.com',
89 maintainer = 'Jean-Paul Calderone',
90 maintainer_email = 'exarkun@twistedmatrix.com',
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050091 url = 'http://pyopenssl.sourceforge.net/',
92 license = 'LGPL',
93 long_description = """\
94High-level wrapper around a subset of the OpenSSL library, includes
95 * SSL.Connection objects, wrapping the methods of Python's portable
96 sockets
97 * Callbacks written in Python
98 * Extensive error-handling mechanism, mirroring OpenSSL's error codes
99... and much more ;)"""
100 )