Blame SConstruct

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