import sys
import os
import platform
import numpy
from distutils.core import setup, Extension
from distutils.sysconfig import get_python_lib 

is_64bits = sys.maxsize > 2**32
platform = platform.system()

#Environment variable LINGO_18_HOME or LINGO64_18_HOME must be set
if platform == 'Windows':
    if is_64bits:
        LINGO_HOME = os.environ.get('LINGO64_18_HOME')
    else:
        LINGO_HOME = os.environ.get('LINGO_18_HOME')
elif platform == 'Linux':
    LINGO_HOME = os.environ.get('LINGO_18_HOME')
else:
    print("System not supported!")
    exit(0)

if LINGO_HOME == None:
    print("Environment variable LINGO_18_HOME is empty!")
    exit(0)

if platform == 'Windows':
    IncludePath = LINGO_HOME + '/Programming Samples'
    LibPath = LINGO_HOME + '/Programming Samples' 
    if is_64bits:
        LingoLib = 'Lingd64_18'
    else:
        LingoLib = 'Lingd18'
elif platform == 'Linux':
    IncludePath = LINGO_HOME + '/programming_samples'
    if is_64bits:
        LibPath = LINGO_HOME + '/bin/linux64'
        LingoLib = 'lingo64'
    else:
        LibPath = LINGO_HOME + '/bin/linux32'
        LingoLib = 'lingo'       

numpyinclude = numpy.get_include() + '/numpy'

#For Windows
if platform == 'Windows':
    lingomodule = Extension('pyLingo.lingo',
                            include_dirs = [IncludePath, numpyinclude],
                            library_dirs = [LibPath],
                            libraries = [LingoLib],
                            extra_link_args=['-Wl,--enable-stdcall-fixup'],
                            sources = ['pyLingo/pyLingo.c'])
#For Linux
elif platform == 'Linux':
    lingomodule = Extension('pyLingo.lingo',
                            include_dirs = [IncludePath, numpyinclude],
                            library_dirs = [LibPath],
                            libraries = [LingoLib],
                            extra_link_args = ['-Wl,-rpath-link,' + LibPath + ' -Wl,-rpath,' + LibPath],
                            sources = ['pyLingo/pyLingo.c'])

setup(name = 'pyLingo',
      version = '18',
      description = 'Python interface to LINGO API',
      author = 'Zhe Liu',
      author_email = 'zliu@lindo.com',
      url = 'http://www.lindo.com',
      platforms = ['Windows, Linux'],
      ext_modules = [lingomodule],
      packages = ['pyLingo'],
      package_data = {'pyLingo': ['*.txt', 'pyLingo.c']},
      )
       
