Blame SConstruct

Packit 85355f
# $Id: SConstruct,v 1.4 2007/02/24 15:03:47 dron Exp $
Packit 85355f
Packit 85355f
# Tag Image File Format (TIFF) Software
Packit 85355f
#
Packit 85355f
# Copyright (C) 2005, Andrey Kiselev <dron@ak4719.spb.edu>
Packit 85355f
#
Packit 85355f
# Permission to use, copy, modify, distribute, and sell this software and 
Packit 85355f
# its documentation for any purpose is hereby granted without fee, provided
Packit 85355f
# that (i) the above copyright notices and this permission notice appear in
Packit 85355f
# all copies of the software and related documentation, and (ii) the names of
Packit 85355f
# Sam Leffler and Silicon Graphics may not be used in any advertising or
Packit 85355f
# publicity relating to the software without the specific, prior written
Packit 85355f
# permission of Sam Leffler and Silicon Graphics.
Packit 85355f
# 
Packit 85355f
# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
Packit 85355f
# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
Packit 85355f
# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
Packit 85355f
# 
Packit 85355f
# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
Packit 85355f
# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
Packit 85355f
# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
Packit 85355f
# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
Packit 85355f
# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
Packit 85355f
# OF THIS SOFTWARE.
Packit 85355f
Packit 85355f
# This file contains rules to build software with the SCons tool
Packit 85355f
# (see the http://www.scons.org/ for details on SCons).
Packit 85355f
Packit 85355f
import os
Packit 85355f
Packit 85355f
env = Environment()
Packit 85355f
Packit 85355f
# Read the user supplied options
Packit 85355f
opts = Options('libtiff.conf')
Packit 85355f
opts.Add(PathOption('PREFIX', \
Packit 85355f
    'install architecture-independent files in this directory', \
Packit 85355f
    '/usr/local', PathOption.PathIsDirCreate))
Packit 85355f
opts.Add(BoolOption('ccitt', \
Packit 85355f
    'enable support for CCITT Group 3 & 4 algorithms', \
Packit 85355f
    'yes'))
Packit 85355f
opts.Add(BoolOption('packbits', \
Packit 85355f
    'enable support for Macintosh PackBits algorithm', \
Packit 85355f
    'yes'))
Packit 85355f
opts.Add(BoolOption('lzw', \
Packit 85355f
    'enable support for LZW algorithm', \
Packit 85355f
    'yes'))
Packit 85355f
opts.Add(BoolOption('thunder', \
Packit 85355f
    'enable support for ThunderScan 4-bit RLE algorithm', \
Packit 85355f
    'yes'))
Packit 85355f
opts.Add(BoolOption('next', \
Packit 85355f
    'enable support for NeXT 2-bit RLE algorithm', \
Packit 85355f
    'yes'))
Packit 85355f
opts.Add(BoolOption('logluv', \
Packit 85355f
    'enable support for LogLuv high dynamic range encoding', \
Packit 85355f
    'yes'))
Packit 85355f
opts.Add(BoolOption('strip_chopping', \
Packit 85355f
    'support for strip chopping (whether or not to convert single-strip uncompressed images to mutiple strips of ~8Kb to reduce memory usage)', \
Packit 85355f
    'yes'))
Packit 85355f
opts.Add(BoolOption('extrasample_as_alpha', \
Packit 85355f
    'the RGBA interface will treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many packages produce RGBA files but don\'t mark the alpha properly', \
Packit 85355f
    'yes'))
Packit 85355f
opts.Add(BoolOption('check_ycbcr_subsampling', \
Packit 85355f
    'disable picking up YCbCr subsampling info from the JPEG data stream to support files lacking the tag', \
Packit 85355f
    'yes'))
Packit 85355f
opts.Update(env)
Packit 85355f
opts.Save('libtiff.conf', env)
Packit 85355f
Help(opts.GenerateHelpText(env))
Packit 85355f
Packit 85355f
# Here are our installation paths:
Packit 85355f
idir_prefix = '$PREFIX'
Packit 85355f
idir_lib = '$PREFIX/lib'
Packit 85355f
idir_bin = '$PREFIX/bin'
Packit 85355f
idir_inc = '$PREFIX/include'
Packit 85355f
idir_doc = '$PREFIX/doc'
Packit 85355f
Export([ 'env', 'idir_prefix', 'idir_lib', 'idir_bin', 'idir_inc', 'idir_doc' ])
Packit 85355f
Packit 85355f
# Now proceed to system feature checks
Packit 85355f
target_cpu, target_vendor, target_kernel, target_os = \
Packit 85355f
    os.popen("./config/config.guess").readlines()[0].split("-")
Packit 85355f
Packit 85355f
def Define(context, key, have):
Packit 85355f
    import SCons.Conftest
Packit 85355f
    SCons.Conftest._Have(context, key, have)
Packit 85355f
Packit 85355f
def CheckCustomOption(context, name):
Packit 85355f
    context.Message('Checking is the ' + name + ' option set... ')
Packit 85355f
    ret = env[name]
Packit 85355f
    Define(context, name + '_SUPPORT', ret)
Packit 85355f
    context.Result(ret)
Packit 85355f
    return ret
Packit 85355f
Packit 85355f
def CheckFillorderOption(context):
Packit 85355f
    context.Message('Checking for the native cpu bit order... ')
Packit 85355f
    if target_cpu[0] == 'i' and target_cpu[2:] == '86':
Packit 85355f
	Define(context, 'HOST_FILLORDER', 'FILLORDER_LSB2MSB')
Packit 85355f
	context.Result('lsb2msb')
Packit 85355f
    else:
Packit 85355f
	Define(context, 'HOST_FILLORDER', 'FILLORDER_MSB2LSB')
Packit 85355f
	context.Result('msb2lsb')
Packit 85355f
    return 1
Packit 85355f
Packit 85355f
def CheckIEEEFPOption(context):
Packit 85355f
    context.Message('Checking for the IEEE floating point format... ')
Packit 85355f
    Define(context, 'HAVE_IEEEFP', 1)
Packit 85355f
    context.Result(1)
Packit 85355f
    return 1
Packit 85355f
Packit 85355f
def CheckOtherOption(context, name):
Packit 85355f
    context.Message('Checking is the ' + name + ' option set... ')
Packit 85355f
    ret = env[name]
Packit 85355f
    Define(context, 'HAVE_' + name, ret)
Packit 85355f
    context.Result(ret)
Packit 85355f
    return ret
Packit 85355f
Packit 85355f
custom_tests = { \
Packit 85355f
    'CheckCustomOption' : CheckCustomOption, \
Packit 85355f
    'CheckFillorderOption' : CheckFillorderOption, \
Packit 85355f
    'CheckIEEEFPOption' : CheckIEEEFPOption, \
Packit 85355f
    'CheckOtherOption' : CheckOtherOption \
Packit 85355f
    }
Packit 85355f
conf = Configure(env, custom_tests = custom_tests, \
Packit 85355f
    config_h = 'libtiff/tif_config.h')
Packit 85355f
Packit 85355f
# Check for standard library
Packit 85355f
conf.CheckLib('c')
Packit 85355f
if target_os != 'cygwin' \
Packit 85355f
    and target_os != 'mingw32' \
Packit 85355f
    and target_os != 'beos' \
Packit 85355f
    and target_os != 'darwin':
Packit 85355f
    conf.CheckLib('m')
Packit 85355f
Packit 85355f
# Check for system headers
Packit 85355f
conf.CheckCHeader('assert.h')
Packit 85355f
conf.CheckCHeader('fcntl.h')
Packit 85355f
conf.CheckCHeader('io.h')
Packit 85355f
conf.CheckCHeader('limits.h')
Packit 85355f
conf.CheckCHeader('malloc.h')
Packit 85355f
conf.CheckCHeader('search.h')
Packit 85355f
conf.CheckCHeader('sys/time.h')
Packit 85355f
conf.CheckCHeader('unistd.h')
Packit 85355f
Packit 85355f
# Check for standard library functions
Packit 85355f
conf.CheckFunc('floor')
Packit 85355f
conf.CheckFunc('isascii')
Packit 85355f
conf.CheckFunc('memmove')
Packit 85355f
conf.CheckFunc('memset')
Packit 85355f
conf.CheckFunc('mmap')
Packit 85355f
conf.CheckFunc('pow')
Packit 85355f
conf.CheckFunc('setmode')
Packit 85355f
conf.CheckFunc('sqrt')
Packit 85355f
conf.CheckFunc('strchr')
Packit 85355f
conf.CheckFunc('strrchr')
Packit 85355f
conf.CheckFunc('strstr')
Packit 85355f
conf.CheckFunc('strtol')
Packit 85355f
Packit 85355f
conf.CheckFillorderOption()
Packit 85355f
conf.CheckIEEEFPOption()
Packit 85355f
conf.CheckCustomOption('ccitt')
Packit 85355f
conf.CheckCustomOption('packbits')
Packit 85355f
conf.CheckCustomOption('lzw')
Packit 85355f
conf.CheckCustomOption('thunder')
Packit 85355f
conf.CheckCustomOption('next')
Packit 85355f
conf.CheckCustomOption('logluv')
Packit 85355f
conf.CheckOtherOption('strip_chopping')
Packit 85355f
conf.CheckOtherOption('extrasample_as_alpha')
Packit 85355f
conf.CheckOtherOption('check_ycbcr_subsampling')
Packit 85355f
Packit 85355f
env = conf.Finish()
Packit 85355f
Packit 85355f
# Ok, now go to build files in the subdirectories
Packit 85355f
SConscript(dirs = [ 'libtiff' ], name = 'SConstruct')