#!/usr/bin/env python

from distutils.core import setup, Extension
import os,sys

attdict = dict(
   sources = ['gribapi_swig_wrap.c','grib_interface.c'],
   swig_opts = [],
   include_dirs = ['.'],
   library_dirs = ["%s/lib" % sys.prefix],
   libraries = [],
   extra_objects = [],
   extra_link_args = [],    # See GRIB-616
)

add_attribute = lambda **args: [list.append(attdict[key],value) for key,value in args.items()]

# assumes build_dir is same as source_dir -- not true for cmake builds
build_dir = '@BUILD_DIR@'
add_attribute(
    include_dirs = os.path.join(build_dir,'src'),
    extra_objects = os.path.join(build_dir, 'src', '.libs', 'libgrib_api.a')
)

with_jasper = '@LIB_JASPER@'
if with_jasper:
    jasper_dir = '@JASPER_DIR@'
    if jasper_dir and jasper_dir != 'system':
        add_attribute(
            include_dirs = os.path.join(jasper_dir,'include'),
            library_dirs = os.path.join(jasper_dir,'lib'),
            extra_link_args = '-Wl,-rpath,' + os.path.join(jasper_dir,'lib')
        )
    add_attribute(libraries = 'jasper')

with_openjpeg = '@LIB_OPENJPEG@'
if with_openjpeg:
    openjpeg_dir = '@OPENJPEG_DIR@'
    if openjpeg_dir and openjpeg_dir != 'system':
        add_attribute(
            include_dirs = os.path.join(openjpeg_dir,'include'),
            library_dirs = os.path.join(openjpeg_dir,'lib'),
            extra_link_args = '-Wl,-rpath,' + os.path.join(openjpeg_dir,'lib')
        )
    add_attribute(libraries = 'openjpeg')

# assumes png is supplied by system paths -- may not be true
png = '@LIB_PNG@'
if png:
    add_attribute(libraries = 'png')


with_aec = '@LIB_AEC@'
if with_aec:
    aec_dir = '@AEC_DIR@'
    if aec_dir and aec_dir != 'system':
        add_attribute(
            include_dirs = os.path.join(aec_dir,'include'),
            library_dirs = os.path.join(aec_dir,'lib'),
            extra_link_args = '-Wl,-rpath,' + os.path.join(aec_dir,'lib')
        )
    add_attribute(libraries = 'aec')


data_handler = '@DATA_HANDLER@'
if data_handler == "numpy":
    import numpy
    # Obtain the numpy include directory.  This logic works across numpy versions.
    try:
        numpy_include = numpy.get_include()
    except AttributeError:
        numpy_include = numpy.get_numpy_include()

    add_attribute(
        include_dirs = numpy_include,
    )

gribapi_module = Extension('_gribapi_swig',**attdict)

setup (name = 'gribapi',
       version = '0.1',
       author      = 'ECMWF',
       description = """Grib API SWIG module""",
       ext_modules = [gribapi_module],
       py_modules = ['gribapi_swig','gribapi'],
      )
