#!/usr/bin/env python

from __future__ import division, print_function

from optparse import OptionParser
import sys

hasFFTW = bool('/usr/local/lib/libfftw3.so.7.1')

parser = OptionParser()

parser.add_option("--version", action = 'store_true',
                  help = "output version (1.11.1)")
#parser.add_option("--target", action = 'store_true',
#                 help = "output platform this VIGRA library was configured for")
parser.add_option("--impex-lib", "--libs", action = 'store_true',
                  help = "output flags for linking libvigraimpex")
parser.add_option("--fftw-lib", action = 'store_true',
                  help = "output flags for linking libfftw"
                  + " (unavailable)" if not hasFFTW else "")
#parser.add_option("--rfftw-lib", action = 'store_true',
#                 help = "output flags for linking librfftw and libfftw")
parser.add_option("--cppflags", action = 'store_true',
                  help = "output include flags for vigra"
                  + " and fftw" if hasFFTW else "")
parser.add_option("--include-path", "--includepath", action = 'store_true',
                  help = "output path to VIGRA includes")
parser.add_option("--docdir", action = 'store_true',
                  help = "output path to VIGRA documentation")

(op, args) = parser.parse_args()

if len(sys.argv) < 2:
    sys.stderr.write("ERROR: no parameters given.\n")
    parser.print_help()
    sys.exit(1)

# --------------------------------------------------------------------

import os.path

# don't output -L flags for the following dirs (assumed to be compiler
# built-in):
standardLibDirs = ["/lib", "/usr/lib", "/lib64", "/usr/lib64"]

libExt = ".so" if not sys.platform == "darwin" else ".dylib"

def filename2ldflags(libFilename):
    dir, fn = os.path.split(libFilename)
    if not (fn.startswith("lib") and fn.endswith(libExt)):
        if libFilename:
            sys.stderr.write("ERROR: don't know how to handle %r!\n" % libFilename)
        return []
    lib = fn[3:-len(libExt)]

    result = []
    if dir not in standardLibDirs:
        result.append("-L" + dir)
    result.append("-l" + lib)
    return result

if op.version:
    print("1.11.1")

if op.cppflags: # was: --cppflags|--cxxincludes|--cxxflags|--cincludes|--cflags
    print('-I/usr/local/include')

if op.impex_lib: # was: --impex_lib|--impex-lib|--libs
    ldflags = []

    libDir = '/usr/local/lib'
    if libDir not in standardLibDirs:
        ldflags.append('-L' + libDir)

    ldflags.append('-lvigraimpex')

    for flag in 'general;/usr/local/lib/libjpeg.so.70.0;general;/usr/local/lib/libpng.so.18.0;general;/usr/lib/libz.so.7.0;general;/usr/local/lib/libtiff.so.41.1;general;/usr/local/lib/libOpenEXR.so.1.0;general;/usr/local/lib/libImath.so.1.1;general;/usr/local/lib/libImath.so.1.1;general;/usr/local/lib/libIex.so.1.0;general;/usr/local/lib/libIlmThread.so.1.0;general;/usr/lib/libz.so.7.0;general;/usr/local/lib/libfftw3.so.7.1;general;/usr/local/lib/libboost_thread-mt.so.21.0;general;-lpthread;general;/usr/local/lib/libboost_system-mt.so.21.0;general;/usr/local/lib/libboost_date_time-mt.so.21.0;general;/usr/local/lib/libboost_chrono-mt.so.21.0;general;/usr/local/lib/libboost_atomic-mt.so.21.0;'.split(';'):
        if flag == 'general':
            continue
        for fl in filename2ldflags(flag):
            if fl not in ldflags:
                ldflags.append(fl)

    print(" ".join(ldflags))

if op.fftw_lib:
    if not hasFFTW:
        sys.stderr.write("VIGRA was configured without FFTW switches, libpath unknown!\n")
        sys.exit(1)
    print(" ".join(filename2ldflags('/usr/local/lib/libfftw3.so.7.1')))

if op.include_path: # was: --include_path|--include-path|--includepath
    print('/usr/local/include')

if op.docdir:
    print('/pobj/vigra-1.11.1/vigra-1.11.1/doc')
