view trunk/carfac/SConstruct @ 703:2bd09040ecf0

Better SAI unit tests. Includes a test to compare the output of the Matlab and C++ version which is currently disabled since the outputs are not identical.
author ronw@google.com
date Mon, 01 Jul 2013 19:02:37 +0000
parents bf89b122a683
children
line wrap: on
line source
#  CARFAC Open Source C++ Library
#
# This C++ file is part of an implementation of Lyon's cochlear model:
# "Cascade of Asymmetric Resonators with Fast-Acting Compression"
# to supplement Lyon's upcoming book "Human and Machine Hearing"
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

## @author Ron Weiss <ronw@google.com>
#  @date created 2013/05/21
#  @version \$Id$

"""@package SConstruct
SConstruct file for the CARFAC Open Source C++ Library.

To install dependencies on Ubuntu, run:

  sudo apt-get install libeigen3-dev scons \
    cmake libgtest-dev  # For testing.
  export EIGEN_PATH=/usr/include/eigen3
  export GTEST_SOURCE=/usr/src/gtest

To build all libraries, run:
 scons

To run unit tests, run:
  scons test

To clean up binaries, run:
  scons --clean
"""

import commands
import os

env = Environment(CPPPATH=[os.environ['EIGEN_PATH']])
GCC_VERSION = commands.getoutput(env['CXX'] + ' -dumpversion')
if GCC_VERSION.startswith('4.6'):
  env.MergeFlags(['-std=c++0x'])
else:
  env.MergeFlags(['-std=c++11'])

carfac_sources = [
    'agc.h',
    'car.h',
    'carfac.cc',
    'carfac_output.cc',
    'carfac_util.cc',
    'common.h',
    'ear.cc',
    'ihc.h',
    'sai.cc'
    ]
carfac = env.Library(target = 'carfac', source = carfac_sources)
Default(carfac)

env.Command('tmp/libgtest.a', [],
            [
                Delete('tmp'),
                Copy('tmp', os.environ['GTEST_SOURCE']),
                'cd tmp && cmake . && make',
            ])

test_targets = [
    'carfac_test',
    'sai_test',
    ]
test_programs = [env.Program(target = test_target,
                             source = ['%s.cc' % test_target],
                             LIBS = ['carfac', 'gtest', 'gtest_main', 'pthread'],
                             LIBPATH = ['.', 'tmp'])
                 for test_target in test_targets]
run_all_tests = env.Command('test',
                            test_programs,
                            ['./%s' % x for x in test_targets])