blob: 7011f9ddb50669e96e23e7881532edf6e5ce055a [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
Jean-Paul Calderoneddbc28f2008-12-31 16:33:17 -050014import sys, os
Jean-Paul Calderone5a1bf382009-02-08 16:39:15 -050015from distutils.core import Extension, setup
zookoa4be22a2008-12-01 09:22:02 -070016
U-YOUR-FA38FA253F\Zooko Brillnonywonxd78922f2008-11-10 06:19:16 -070017from glob import glob
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050018
19from version import __version__
20
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050021crypto_src = ['src/crypto/crypto.c', 'src/crypto/x509.c',
22 'src/crypto/x509name.c', 'src/crypto/pkey.c',
23 'src/crypto/x509store.c', 'src/crypto/x509req.c',
24 'src/crypto/x509ext.c', 'src/crypto/pkcs7.c',
25 'src/crypto/pkcs12.c', 'src/crypto/netscape_spki.c',
Rick Dean536ba022009-07-24 23:57:27 -050026 'src/crypto/revoked.c', 'src/crypto/crl.c',
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050027 'src/util.c']
28crypto_dep = ['src/crypto/crypto.h', 'src/crypto/x509.h',
29 'src/crypto/x509name.h', 'src/crypto/pkey.h',
30 'src/crypto/x509store.h', 'src/crypto/x509req.h',
31 'src/crypto/x509ext.h', 'src/crypto/pkcs7.h',
32 'src/crypto/pkcs12.h', 'src/crypto/netscape_spki.h',
Rick Dean536ba022009-07-24 23:57:27 -050033 'src/crypto/revoked.h', 'src/crypto/crl.h',
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050034 'src/util.h']
35rand_src = ['src/rand/rand.c', 'src/util.c']
36rand_dep = ['src/util.h']
37ssl_src = ['src/ssl/connection.c', 'src/ssl/context.c', 'src/ssl/ssl.c',
38 'src/util.c']
39ssl_dep = ['src/ssl/connection.h', 'src/ssl/context.h', 'src/ssl/ssl.h',
40 'src/util.h']
41
42IncludeDirs = None
43LibraryDirs = None
44
45# Add more platforms here when needed
46if os.name == 'nt' or sys.platform == 'win32':
Jean-Paul Calderone61b0c432009-07-20 16:55:35 -040047
48 Libraries = ['Ws2_32']
49 def makeTellMeIf(original, what):
50 class tellMeIf(original):
51 def __init__(*a, **kw):
52 Libraries.extend(what)
53 return original.__init__(*a, **kw)
54 return tellMeIf
55
56 from distutils import cygwinccompiler
57 cygwinccompiler.Mingw32CCompiler = makeTellMeIf(cygwinccompiler.Mingw32CCompiler, ['eay32', 'ssl32'])
58 from distutils import msvccompiler
59 msvccompiler.MSVCCompiler = makeTellMeIf(msvccompiler.MSVCCompiler, ['libeay32', 'ssleay32'])
60
Jean-Paul Calderonee0d94c82009-07-21 11:12:52 -040061 import shutil
62 shutil.copy("C:\\OpenSSL\\ssleay32.dll", os.path.split(os.path.abspath(__file__))[0])
63 shutil.copy("C:\\OpenSSL\\libeay32.dll", os.path.split(os.path.abspath(__file__))[0])
64 package_data = {'': ['ssleay32.dll', 'libeay32.dll']}
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050065else:
66 Libraries = ['ssl', 'crypto']
Jean-Paul Calderonee0d94c82009-07-21 11:12:52 -040067 package_data = {}
Jean-Paul Calderone5a1bf382009-02-08 16:39:15 -050068
U-YOUR-FA38FA253F\Zooko Brillnonywonxd78922f2008-11-10 06:19:16 -070069
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050070def mkExtension(name):
Jean-Paul Calderonee9404372008-03-04 22:19:18 -050071 modname = 'OpenSSL.' + name
72 src = globals()[name.lower() + '_src']
73 dep = globals()[name.lower() + '_dep']
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050074 return Extension(modname, src, libraries=Libraries, depends=dep,
Jean-Paul Calderone2d79b302009-07-20 14:49:53 -040075 include_dirs=IncludeDirs, library_dirs=LibraryDirs)
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050076
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050077
78setup(name='pyOpenSSL', version=__version__,
Jean-Paul Calderonee0d94c82009-07-21 11:12:52 -040079 packages = ['OpenSSL'],
Jean-Paul Calderone525ef802008-03-09 20:39:42 -040080 package_dir = {'OpenSSL': '.'},
81 ext_modules = [mkExtension('crypto'), mkExtension('rand'),
82 mkExtension('SSL')],
83 py_modules = ['OpenSSL.__init__', 'OpenSSL.tsafe',
84 'OpenSSL.version', 'OpenSSL.test.__init__',
Jean-Paul Calderone0b88b6a2009-07-05 12:44:41 -040085 'OpenSSL.test.util',
Jean-Paul Calderone30c09ea2008-03-21 17:04:05 -040086 'OpenSSL.test.test_crypto',
Rick Dean433dc642009-07-07 13:11:55 -050087 'OpenSSL.test.test_rand',
Jean-Paul Calderone30c09ea2008-03-21 17:04:05 -040088 'OpenSSL.test.test_ssl'],
Jean-Paul Calderone71d62c02009-07-21 11:30:22 -040089 zip_safe = False,
Jean-Paul Calderonee0d94c82009-07-21 11:12:52 -040090 package_data = package_data,
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050091 description = 'Python wrapper module around the OpenSSL library',
Jean-Paul Calderonee53ccf72008-04-11 11:40:39 -040092 author = 'Martin Sjögren, AB Strakt',
93 author_email = 'msjogren@gmail.com',
94 maintainer = 'Jean-Paul Calderone',
95 maintainer_email = 'exarkun@twistedmatrix.com',
Jean-Paul Calderone897bc252008-02-18 20:50:23 -050096 url = 'http://pyopenssl.sourceforge.net/',
97 license = 'LGPL',
98 long_description = """\
99High-level wrapper around a subset of the OpenSSL library, includes
100 * SSL.Connection objects, wrapping the methods of Python's portable
101 sockets
102 * Callbacks written in Python
103 * Extensive error-handling mechanism, mirroring OpenSSL's error codes
104... and much more ;)"""
105 )