#!/usr/bin/env python3
#
# python-lxc: Python bindings for LXC
#
# (C) Copyright Canonical Ltd. 2012
#
# Authors:
# Stéphane Graber <stgraber@ubuntu.com>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301
# USA

import os, os.path

# Fix build when PIE is enabled
for var in ("LDFLAGS", "CFLAGS"):
    current = os.environ.get(var, None)
    if not current:
        continue

    new = []
    for flag in current.split(" "):
        if flag.lower() in ("-pie", "-fpie"):
            if "-fPIC" not in new:
                new.append("-fPIC")
            continue
        new.append(flag)

    os.environ[var] = " ".join(new)

from distutils.core import setup, Extension

# Distutils doesn't cope well with source files that have relative paths going
# up in the directory tree: it tries to navigate outside of the build dir and
# fails miserably. Therefore, we will instead cd to the source directory,
# run this script from there, but write the build products to the correct path.
#
# Since we will be changing directories before building, we must transform
# all the path variables to their forms relative to srcdir.

srcdir, builddir, top_srcdir, top_builddir = map(os.path.abspath,
    ["@srcdir@", "@builddir@", "@top_srcdir@", "@top_builddir@"])

builddir, top_srcdir, top_builddir = map(lambda d: os.path.relpath(d, srcdir),
    [builddir, top_srcdir, top_builddir])

os.chdir(srcdir)

module = Extension('_lxc', sources=['lxc.c'],
                   include_dirs=[os.path.join(top_srcdir, 'src'),
                                 os.path.join(top_builddir, 'src')],
                   library_dirs=[os.path.join(top_builddir, 'src/lxc/.libs/')],
                   libraries=['lxc'])


setup(name='_lxc',
      version='0.1',
      description='LXC',
      packages=['lxc'],
      package_dir={'lxc': 'lxc'},
      ext_modules=[module],
      options={'build': {'build_base': os.path.join(builddir, 'build')}})
