# -*- Python -*- # Copyright 2008 Google Inc. All Rights Reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are # met: # # * Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # * Redistributions in binary form must reproduce the above # copyright notice, this list of conditions and the following disclaimer # in the documentation and/or other materials provided with the # distribution. # * Neither the name of Google Inc. nor the names of its # contributors may be used to endorse or promote products derived from # this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # # Author: joi@google.com (Joi Sigurdsson) # Author: vladl@google.com (Vlad Losev) # # Build file for Google Mock and its tests. # # Usage: # cd to the directory with this file, then # ./scons.py [OPTIONS] # # where frequently used command-line options include: # -h print usage help. # BUILD=all build all build types. # BUILD=win-opt build the given build type. EnsurePythonVersion(2, 3) # Path to the Google Test code this Google Mock will use. GTEST_DIR = '../gtest' # TODO(vladl@google.com): Factor the looping logic out for reuse. def BuildGMockSelectedEnvironments(sconstruct_helper): # Build using whichever environments the 'BUILD' option selected for build_name in sconstruct_helper.env_base['BUILD']: print 'BUILDING %s' % build_name env = sconstruct_helper.env_dict[build_name] # Make sure SConscript files can refer to base build dir env['MAIN_DIR'] = env.Dir(env['BUILD_DIR']) #print 'CCFLAGS: %s' % env.subst('$CCFLAGS') #print 'LINK: %s' % env.subst('$LINK') #print 'AR: %s' % env.subst('$AR') #print 'CC: %s' % env.subst('$CC') #print 'CXX: %s' % env.subst('$CXX') #print 'LIBPATH: %s' % env.subst('$LIBPATH') #print 'ENV:PATH: %s' % env['ENV']['PATH'] #print 'ENV:INCLUDE: %s' % env['ENV']['INCLUDE'] #print 'ENV:LIB: %s' % env['ENV']['LIB'] #print 'ENV:TEMP: %s' % env['ENV']['TEMP'] env['GTEST_DIR'] = '#/' + GTEST_DIR env['GTEST_BUILD_TESTS'] = False Export('env') # Invokes SConscript with variant_dir being build/. # Counter-intuitively, src_dir is relative to the build dir and has # to be '../..' to point to the scons directory. VariantDir(env['BUILD_DIR'], '../..', duplicate=0) gtest_exports = env.SConscript(env['BUILD_DIR'] + '/gtest/scons/SConscript') Export('gtest_exports') SConscript('SConscript', src_dir='../..', variant_dir=env['BUILD_DIR'], duplicate=0) sconstruct_helper = SConscript(GTEST_DIR + '/scons/SConstruct.common') sconstruct_helper.Initialize(build_root_path='..', support_multiple_win_builds=False) win_base = sconstruct_helper.MakeWinBaseEnvironment() if win_base.get('MSVS_VERSION', None) == '7.1': sconstruct_helper.EnvCreator.WithExceptions(win_base) sconstruct_helper.MakeWinDebugEnvironment(win_base, 'win-dbg') sconstruct_helper.MakeWinOptimizedEnvironment(win_base, 'win-opt') sconstruct_helper.ConfigureGccEnvironments() BuildGMockSelectedEnvironments(sconstruct_helper)