Make sure all the right flags are specified when compiling extensions.
[jelmer/subvertpy.git] / setup.py
1 #!/usr/bin/env python
2 # Setup file for bzr-svn
3 # Copyright (C) 2005-2008 Jelmer Vernooij <jelmer@samba.org>
4
5 from distutils.core import setup
6 from distutils.extension import Extension
7 import os
8
9 def apr_build_data():
10     """Determine the APR header file location."""
11     def apr_config(arg):
12         f = os.popen("apr-config %s" % arg)
13         dir = f.read().rstrip("\n")
14         return dir
15     includedir = apr_config("--includedir")
16     if not os.path.isdir(includedir):
17         raise Exception("APR development headers not found")
18     ldflags = apr_config("--ldflags")
19     return (includedir, ldflags)
20
21 def svn_build_data():
22     """Determine the Subversion header file location."""
23     basedirs = ["/usr/local", "/usr"]
24     for basedir in basedirs:
25         includedir = os.path.join(basedir, "include/subversion-1")
26         if os.path.isdir(includedir):
27             return (includedir, os.path.join(basedir, "lib"))
28     raise Exception("Subversion development files not found")
29
30 (apr_includedir, apr_ldflags) = apr_build_data()
31 (svn_includedir, svn_libdir) = svn_build_data()
32
33 def SvnExtension(*args, **kwargs):
34     kwargs["include_dirs"] = [apr_includedir, svn_includedir]
35     kwargs["library_dirs"] = [svn_libdir]
36     kwargs["extra_link_args"] = [apr_ldflags]
37     return Extension(*args, **kwargs)
38
39
40 setup(name='bzr-svn',
41       description='Support for Subversion branches in Bazaar',
42       keywords='plugin bzr svn',
43       version='0.4.11',
44       url='http://bazaar-vcs.org/BzrForeignBranches/Subversion',
45       download_url='http://bazaar-vcs.org/BzrSvn',
46       license='GPL',
47       author='Jelmer Vernooij',
48       author_email='jelmer@samba.org',
49       long_description="""
50       This plugin adds support for branching off and 
51       committing to Subversion repositories from 
52       Bazaar.
53       """,
54       package_dir={'bzrlib.plugins.svn':'.', 
55                    'bzrlib.plugins.svn.tests':'tests'},
56       packages=['bzrlib.plugins.svn', 
57                 'bzrlib.plugins.svn.mapping3', 
58                 'bzrlib.plugins.svn.tests'],
59       ext_modules=[
60           SvnExtension("core", ["core.c", "util.c"], libraries=["svn_subr-1"]), 
61           SvnExtension("client", ["client.c", "editor.c", "util.c", "ra.c", "wc.c"], libraries=["svn_client-1"]), 
62           SvnExtension("ra", ["ra.c", "util.c", "editor.c"], libraries=["svn_ra-1"]),
63           SvnExtension("repos", ["repos.c", "util.c"], libraries=["svn_repos-1"]),
64           SvnExtension("wc", ["wc.c", "util.c", "editor.c"], libraries=["svn_wc-1"]),
65           ]
66       )