#! /usr/bin/env python

from distutils.core import setup, Extension
import sys, glob, os, os.path, time
try:
    set
except:
    from sets import Set as set

if not sys.platform.startswith('freebsd'):
    print >> sys.stdout, "==> This package is for FreeBSD only."
    raise SystemExit

DEPENDS = glob.glob('src/*.c') + glob.glob('src/*.h')
DEPENDS.remove('src/freebsdmodule.c')
DEFFILES = ('src/.const.def', 'src/.methods.def', 'src/.sources.def',
            'src/.types.def', 'src/.libraries.def')
sys.path.append('tools') # for source generators :)

def isoutdated(fname):
    if not os.access(fname, os.R_OK):
        return True

    srcmtime = max(map(os.path.getmtime, DEPENDS))
    genmtime = os.path.getmtime(fname)
    return (genmtime < srcmtime)

def update_deffiles():
    if filter(None, map(isoutdated, DEFFILES)):
        print "==> Generating definition files.."
        import gendefs
        gendefs.main()

# update *.def files if sources are newer over them.
update_deffiles()

# get effective libraries in this system
libs = os.popen('unifdef -D__FreeBSD_version=`sysctl -n kern.osreldate` ' +
                'src/.libraries.def', 'r').read().split()
libs = list(set(filter(None, libs)))

setup(name = "py-freebsd",
      version = "0.9.3",
      description = "Python Interface to FreeBSD Platform Library",
      author = "Hye-Shik Chang",
      author_email = "perky@FreeBSD.org",
      license = "BSD",
      platforms = ['freebsd4', 'freebsd5', 'freebsd6'],
      py_modules = ['freebsd_compat02'],
      ext_modules = [
          Extension(
            "freebsd",
            ["src/freebsdmodule.c"],
            libraries=libs,
            library_dirs=['/lib', '/usr/lib'],
            depends=DEPENDS,
          )
      ],
)


syntax highlighted by Code2HTML, v. 0.9.1