blob: 9d357ae44fb77c78d0cee7195d07be34701b2bb9 [file] [log] [blame]
# Copyright 2009, 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.
import os
import sys
# Underlay everything from the o3d directory.
Dir('tests').addRepository(Dir('#/'))
def GetDotVersion(version):
return '%d.%d.%d.%d' % version
def GetCommaVersion(version):
return '%d,%d,%d,%d' % version
# This name is used by Javascript to find the plugin therefore it must
# not change. If you change this you must change the name in
# samples/o3djs/util.js but be aware, changing the name
# will break all apps that use o3d on the web.
plugin_name = 'O3D Plugin'
# Get version string from o3d_version.py
o3d_version_vars = {}
if int(ARGUMENTS.get('MAC_KILLSWITCH', 0)):
execfile(str(File('installer/win/o3d_kill_version.py')), o3d_version_vars)
else:
execfile(str(File('installer/win/o3d_version.py')), o3d_version_vars)
plugin_version = o3d_version_vars['plugin_version']
sdk_version = o3d_version_vars['sdk_version']
# --------------------------------------------------------------------
# List of environment leaves
environment_list = []
base_env = Environment(
tools = ['component_setup'],
O3D_PLUGIN_NAME = plugin_name,
O3D_PLUGIN_VERSION = GetDotVersion(plugin_version),
O3D_PLUGIN_VERSION_COMMAS = GetCommaVersion(plugin_version),
O3D_SDK_VERSION = GetDotVersion(sdk_version),
O3D_SDK_VERSION_COMMAS = GetCommaVersion(sdk_version),
# TODO: this will be the default, but is set for now
COMPONENT_STATIC = True,
COVERAGE_TARGETS = ['unit_tests', 'system_tests'],
MSVS_USE_MFC_DIRS=1,
)
base_env.ApplySConscript(['svn_paths.scons'])
base_env.Append(
# Some derived paths
NACL_NRD_XFER_SOURCE_DIR = '$NACL_DIR/src/trusted/desc',
NACL_PLUGIN_SOURCE_DIR = '$NACL_DIR/npapi_plugin',
DOCS_DIR = '$DESTINATION_ROOT/docs',
CPPPATH = [
# The internal dir is first so that headers in internal can replace
# those in external.
'$INTERNAL_DIR',
'$SCONSTRUCT_DIR/..',
'$SCONSTRUCT_DIR',
'$CHROME_SRC_DIR',
'$GTEST_DIR/include',
'$EXPERIMENTAL_O3D_DIR',
'$NACL_DIR/..',
],
LIBPATH = '$LIBS_DIR',
RENDERER_INCLUDE_PATH = [
'$ZLIB_DIR',
'$JPEG_DIR',
'$PNG_DIR',
],
RENDERER_LIB_PATH = [
],
RENDERER_LIBS = [
'libjpeg',
'libpng',
'zlib',
],
CPPDEFINES = [
['O3D_VERSION_NUMBER', '$O3D_PLUGIN_VERSION'],
'UNICODE',
],
ICU_LIBS = ['icu'],
)
# If you change this argument, you'll need to clean the whole project before
# rebuilding.
if ARGUMENTS.get('PROFILE_GLUE', ''):
base_env.Append(
CPPDEFINES = [
'PROFILE_GLUE',
'PROFILE_CLIENT',
])
# Define O3D_ENABLE_BREAKPAD if Pulse passes in:
# O3D_ENABLE_BREAKPAD=1
if int(ARGUMENTS.get('O3D_ENABLE_BREAKPAD', 0)):
base_env.Append(CPPDEFINES = 'O3D_ENABLE_BREAKPAD')
# Returns a list of objects built from a third-party directory.
def MakeObjects(env, stems, dir, extension):
return [env.ComponentObject(stem, '%s/%s.%s' % (dir, stem, extension))
for stem in stems]
base_env.AddMethod(MakeObjects)
def Python(env, args):
"""Returns an action that executes python with the given args, specifying
PYTHONPATH from the scons environment"""
sep = ':'
if env.Bit('host_windows'):
sep = ';'
# Add PYTHONPATH from the scons environment to the OS environment.
# NOTE: Ideally that would be delay-evaluated, but I can't figure out
# how to do that in scons.
env['ENV']['PYTHONPATH'] = env.subst(sep.join(env['PYTHONPATH']))
return Action(' '.join(['$PYTHON'] + args))
base_env.AddMethod(Python)
# The base NaCl IMC lib.
nacl_imc_lib = 'google_nacl_imc'
# All the libs required for IMC layer on the host.
nacl_imc_all_libs = [
nacl_imc_lib,
'google_nacl_imc_c',
]
# All the libs required for HTP layer on the host.
nacl_htp_all_libs = [
nacl_imc_lib,
'google_nacl_imc_c',
'nrd_xfer',
'gio',
'naclthread',
]
binaries_env = base_env.Clone()
binaries_env.Append(
BUILD_COMPONENTS = [
'base',
'bitmap',
'compiler/antlr',
'compiler/technique',
'converter',
'core',
'import',
'plugin',
'samples',
'serializer',
'skia',
'tests',
'tests/common',
'utils',
'v8',
],
# TODO: this is ugly, should all be rolling into builder.
NACL_OBJ_ROOT = '$NACL_DIR/scons-out/$NACL_VARIANT/obj',
NACL_LIB_DIR = '$NACL_DIR/scons-out/$NACL_VARIANT/lib',
NACL_HTP_LIBS = nacl_htp_all_libs,
)
# This function adds a path to a windows environment variable like PATH,
# INCLUDE, or LIB.
def AddPathToWindowsEnv(env_dict, var, path):
try:
src = env_dict[var]
except KeyError:
src = ''
if not src:
env_dict[var] = path
else:
env_dict[var] = '%s;%s' % (src, path)
# This function builds the native client IMC or HTP libraries by
# calling hammer to do a NaCl build. It should handle dependencies
# correctly and will not rebuild unless necessary.
def AddNaclBuildCommand(env, variant, platforms):
if sys.platform not in platforms: return
nacl_os_env = dict(os.environ)
if sys.platform in ['win32', 'cygwin']:
script_suffix = '.bat'
# We want native client to use the same Platform SDK as ours. Pass it
# through INCLUDE and LIB.
AddPathToWindowsEnv(nacl_os_env, 'INCLUDE',
env.subst('$PLATFORM_SDK_VISTA_6_0_DIR/Include'))
AddPathToWindowsEnv(nacl_os_env, 'LIB',
env.subst('$PLATFORM_SDK_VISTA_6_0_DIR/Lib'))
else:
script_suffix = '.sh'
build_libs = nacl_htp_all_libs
targets = ['$NACL_LIB_DIR/${LIBPREFIX}' + f + '${LIBSUFFIX}'
for f in build_libs]
nacl_build_tool = '$PYTHON $SCONS_DIR/scons.py'
env.Command(targets,
['$NACL_NRD_XFER_SOURCE_DIR', '$NACL_PLUGIN_SOURCE_DIR'],
nacl_build_tool + ' '
'MODE=$NACL_VARIANT '
'naclsdk_validate=0 '
'sdl=none '
'--verbose '
'--file=SConstruct '
'$DEBUG_OPTS '
'-C $NACL_DIR '
'$NACL_TARGETS',
source_scanner = DirScanner,
ENV = nacl_os_env,
# TODO: figure out why these can't be absolute paths
# when run on some flavors of linux. For now we can pass in the
# library name, which at least works everywhere.
NACL_TARGETS = build_libs,
NACL_VARIANT = variant,
DEBUG_OPTS = ['--debug=%s' % item for item in GetOption('debug')],
)
# TODO: This is really not the ideal way to do this -- for
# instance, the output goes into the NaCl scons-out directory instead
# of ours.
# Add in the two variants of NACL.
win_platforms = ['win32', 'cygwin']
mac_platforms = ['darwin']
linux_platforms = ['linux', 'linux2']
all_platforms = win_platforms + mac_platforms + linux_platforms
AddNaclBuildCommand(binaries_env, 'dbg-win', win_platforms)
AddNaclBuildCommand(binaries_env, 'opt-win', win_platforms)
AddNaclBuildCommand(binaries_env, 'dbg-mac', mac_platforms)
AddNaclBuildCommand(binaries_env, 'opt-mac', mac_platforms)
AddNaclBuildCommand(binaries_env, 'dbg-linux', linux_platforms)
AddNaclBuildCommand(binaries_env, 'opt-linux', linux_platforms)
AddNaclBuildCommand(binaries_env, 'nacl', all_platforms)
def AddTestingFlags(env):
env.Append(
CPPDEFINES = ['TESTING'],
SELENIUM_EXTRA_FLAGS = [
'--screenshots']
)
# Windows ------------------------------------------------------------------
app_data_dir = ""
try:
app_data_dir = os.environ["APPDATA"]
except KeyError:
pass # This fails messily on mac + linux, so just ignore it.
windows_env = binaries_env.Clone(
tools = [
'target_platform_windows',
'directx_9_18_944_0_partial',
'atlmfc_vc80',
'midl',
],
CG_DIR = '$CG_BASE_DIR/win',
FIREFOX_PLUGIN_DIR = os.path.join(
app_data_dir, 'Mozilla', 'plugins'),
IE_PLUGIN_DIR = os.path.join(
app_data_dir, 'Google', 'O3D'),
# Turn off manifest generation, since we don't use that.
MANIFEST_FILE=False,
# Use MIDL compiler from the platform sdk, since
# we're including headers from there.
MIDL = '"$PLATFORM_SDK_VISTA_6_0_DIR/Bin/Midl.exe"',
MIDLFLAGS=['"/I$PLATFORM_SDK_VISTA_6_0_DIR/Include"'],
)
windows_env.Append(
CPPPATH = [
'$PLATFORM_SDK_VISTA_6_0_DIR/Include',
'$SWIFTSHADER_DIR',
],
LIBPATH = [
'$PLATFORM_SDK_VISTA_6_0_DIR/Lib',
],
CPPDEFINES = [
'_UNICODE', # turn on unicode
'WIN32',
'_WINDOWS',
'WIN32_LEAN_AND_MEAN',
'NOMINMAX',
'_WIN32_WINNT=0x0600',
'_CRT_SECURE_NO_WARNINGS',
'NACL_WINDOWS=1',
'SK_BUILD_FOR_WIN32',
],
CCFLAGS = [
'/Z7', # put debug info in obj files
'/EHsc',
'/wd4018', # comparison between signed and unsigned
'/wd4355', # using this in a constructor
'/wd4305', # truncating double to float
],
LINKFLAGS = [
'/DEBUG' # Always generate PDBs.
],
LIBS = [
'user32',
'gdi32',
'shell32',
'ws2_32',
'rpcrt4',
'kernel32',
'advapi32',
'psapi',
'winmm', # For V8
'ws2_32', # For V8
],
BUILD_COMPONENTS = [
'breakpad',
'installer/win',
'google_update',
'plugin/npapi_host_control',
'statsreport',
'statsreport/common',
'nbguidgen',
],
COVERAGE_TARGETS = ['selenium'],
)
windows_env.FilterOut(CPPDEFINES=['OS_WINDOWS=OS_WINDOWS'])
windows_d3d_env = windows_env.Clone()
windows_d3d_env.Append(
CPPDEFINES = ['RENDERER_D3D9'],
RENDERER_INCLUDE_PATH = [],
RENDERER_LIB_PATH = [],
RENDERER_LIBS = ['d3d9', 'dxerr9'],
)
windows_gl_env = windows_env.Clone()
windows_gl_env.Append(
RENDERER_INCLUDE_PATH = [
'$GLEW_DIR/include',
'$CG_DIR/include',
],
RENDERER_LIB_PATH = [
'$CG_DIR/lib',
'$GLEW_DIR/lib',
],
RENDERER_LIBS = [
'OpenGL32',
'glew32',
'cg',
'cgGL',
],
CPPDEFINES = [
'RENDERER_GL'
]
)
def AddWindowsDebugSettings(env):
env.Append(
CCFLAGS = [
'/Od', # no optimizations at all
'/MTd', # multi-threaded, staticly linked crt, with debugging
'/RTCsu', # complain about using un-inited (u),
# do more stack checks (s)
],
CPPDEFINES = [
'_DEBUG', # we are in debug mode
],
LINKFLAGS = [
'/FIXED:no' # Put in .reloc sections, to make Purify happy.
],
)
env.Replace(
DEBUG = True,
NACL_VARIANT = 'dbg-win',
)
def AddWindowsOptimizedSettings(env):
env.Append(
CCFLAGS = [
'/O1', # optimize for size
'/MT', # multi-threaded, staticly linked crt, release
],
CPPDEFINES = [
'NDEBUG', # we are in release mode
'ANTLR3_NODEBUGGER', # turn off remote ANTLR debugging
],
)
env.Replace(
DEBUG = False,
NACL_VARIANT = 'opt-win',
)
windows_d3d_debug_env = windows_d3d_env.Clone(
BUILD_TYPE = 'dbg-d3d',
BUILD_TYPE_DESCRIPTION = 'Windows DirectX debug build',
)
windows_d3d_debug_env.Append(BUILD_GROUPS = ['default', 'most'])
windows_d3d_debug_env.Append(CPPDEFINES = ['D3D_DEBUG_INFO'])
AddWindowsDebugSettings(windows_d3d_debug_env)
environment_list.append(windows_d3d_debug_env)
windows_d3d_optimized_env = windows_d3d_env.Clone(
BUILD_TYPE = 'opt-d3d',
BUILD_TYPE_DESCRIPTION = 'Windows DirectX optimized build',
)
windows_d3d_optimized_env.Append(BUILD_GROUPS = ['most'])
AddWindowsOptimizedSettings(windows_d3d_optimized_env)
environment_list.append(windows_d3d_optimized_env)
windows_d3d_test_debug_env = windows_d3d_env.Clone(
BUILD_TYPE = 'test-dbg-d3d',
BUILD_TYPE_DESCRIPTION = 'Windows DirectX debug build for testing',
)
AddWindowsDebugSettings(windows_d3d_test_debug_env)
AddTestingFlags(windows_d3d_test_debug_env)
environment_list.append(windows_d3d_test_debug_env)
windows_d3d_test_optimized_env = windows_d3d_env.Clone(
BUILD_TYPE = 'test-opt-d3d',
BUILD_TYPE_DESCRIPTION = 'Windows DirectX optimized build for testing',
)
AddWindowsOptimizedSettings(windows_d3d_test_optimized_env)
AddTestingFlags(windows_d3d_test_optimized_env)
environment_list.append(windows_d3d_test_optimized_env)
windows_gl_debug_env = windows_gl_env.Clone(
BUILD_TYPE = 'dbg-gl',
BUILD_TYPE_DESCRIPTION = 'Windows OpenGL debug build',
)
windows_gl_debug_env.Append(BUILD_GROUPS = ['most'])
AddWindowsDebugSettings(windows_gl_debug_env)
environment_list.append(windows_gl_debug_env)
windows_gl_optimized_env = windows_gl_env.Clone(
BUILD_TYPE = 'opt-gl',
BUILD_TYPE_DESCRIPTION = 'Windows OpenGL optimized build',
)
windows_gl_optimized_env.Append(BUILD_GROUPS = ['most'])
AddWindowsOptimizedSettings(windows_gl_optimized_env)
environment_list.append(windows_gl_optimized_env)
windows_cb_env = windows_env.Clone()
windows_cb_env.Append(
CPPDEFINES = ['RENDERER_CB'],
BUILD_COMPONENTS = [
'command_buffer/common',
'command_buffer/service',
'command_buffer/client'
],
RENDERER_INCLUDE_PATH = [],
RENDERER_LIB_PATH = [
'command_buffer/common',
'command_buffer/service',
'command_buffer/client',
],
# TODO: remove link-time dependency on d3dx9, using dynamic loading
# instead.
RENDERER_LIBS = [
'o3dCmdBuf_service',
'o3dCmdBuf_client',
'o3dCmdBuf_common',
'd3d9', 'dxerr', 'd3dx9'
] + nacl_htp_all_libs
)
windows_cb_debug_env = windows_cb_env.Clone(
BUILD_TYPE = 'dbg-cb',
BUILD_TYPE_DESCRIPTION = 'Windows Command Buffer debug build',
)
AddWindowsDebugSettings(windows_cb_debug_env)
environment_list.append(windows_cb_debug_env)
windows_cb_optimized_env = windows_cb_env.Clone(
BUILD_TYPE = 'opt-cb',
BUILD_TYPE_DESCRIPTION = 'Windows Command Buffer optimized build',
)
AddWindowsOptimizedSettings(windows_cb_optimized_env)
environment_list.append(windows_cb_optimized_env)
# These configs are highly very experimental, and just including them
# necessitate downloading the nacl sdk even if they are not active. So include
# them only when a specific flag is passed on the command line.
if ARGUMENTS.get('enable-nacl', ''):
nacl_env = binaries_env.Clone(
tools = ['naclsdk'],
BUILD_COMPONENTS = [
'command_buffer/common',
'command_buffer/client',
'command_buffer/samples',
],
# This should be set by hammer but is not...
TARGET_PLATFORM = 'NACL',
# Only the base IMC lib is necessary in nacl
NACL_HTP_LIBS = [nacl_imc_lib],
CCFLAGS = ['-Wstrict-aliasing'],
NACL_VARIANT = 'nacl',
)
nacl_env.Append(
CPPDEFINES = ['RENDERER_CB'],
RENDERER_INCLUDE_PATH = [],
RENDERER_LIB_PATH = [
'command_buffer/common',
'command_buffer/client',
],
RENDERER_LIBS = [
'o3dCmdBuf_client',
'o3dCmdBuf_common',
nacl_imc_lib,
],
)
nacl_dbg_env = nacl_env.Clone(
BUILD_TYPE = 'dbg-nacl',
BUILD_TYPE_DESCRIPTION = 'NaCl debug build',
)
nacl_dbg_env.Append(
CCFLAGS = ['-g'],
)
environment_list.append(nacl_dbg_env)
nacl_opt_env = nacl_env.Clone(
BUILD_TYPE = 'opt-nacl',
BUILD_TYPE_DESCRIPTION = 'NaCl debug build',
)
nacl_opt_env.Append(
CCFLAGS = ['-O3'],
CPPDEFINES = ['NDEBUG'],
)
environment_list.append(nacl_opt_env)
# MacOS ------------------------------------------------------------------
mac_env = binaries_env.Clone(
tools = ['target_platform_mac'],
FIREFOX_PLUGIN_DIR = '/Library/Internet Plug-Ins',
GL_DIR = '/System/Library/Frameworks/OpenGL.framework/Versions/A',
CG_DIR = '$CG_BASE_DIR/mac',
CCFLAGS = [
'-Wstrict-aliasing',
'-gstabs+',
'-fno-eliminate-unused-debug-symbols',
],
)
mac_env.FilterOut(CPPDEFINES = ['OS_MACOSX=OS_MACOSX'])
mac_env.Append(CPPDEFINES = ['RENDERER_GL',
'GTEST_NOT_MAC_FRAMEWORK_MODE',
['NACL_OSX', '1'],
['MAC_OS_X_VERSION_MIN_REQUIRED', 'MAC_OS_X_VERSION_10_4'],
'SK_BUILD_FOR_MAC'
],
RENDERER_INCLUDE_PATH = [
'$CG_DIR/include',
'$GLEW_DIR/include',
],
RENDERER_LIB_PATH = [
'$GLEW_DIR/lib',
],
RENDERER_LIBS = [
'MacStaticGLEW',
],
CXXFLAGS = [
'-Wno-deprecated',
],
CCFLAGS = [
'-mmacosx-version-min=10.4'
],
BUILD_COMPONENTS = [
'statsreport',
'statsreport/common',
],
)
mac_debug_env = mac_env.Clone(
BUILD_TYPE = 'dbg-mac',
BUILD_TYPE_DESCRIPTION = 'MacOS debug build',
DEBUG = True,
NACL_VARIANT = 'dbg-mac',
)
mac_debug_env.Append(CCFLAGS = ['-g'], CPPDEFINES = ['_DEBUG'])
mac_debug_env.Append(BUILD_GROUPS = ['default', 'most'])
environment_list.append(mac_debug_env)
mac_optimized_env = mac_env.Clone(
BUILD_TYPE = 'opt-mac',
BUILD_TYPE_DESCRIPTION = 'MacOS optimized build',
DEBUG = False,
NACL_VARIANT = 'opt-mac',
)
mac_optimized_env.Append(
BUILD_GROUPS = ['most'],
CCFLAGS = ['-O3'],
CPPDEFINES = ['-DNDEBUG', '-DANTLR3_NO_DEBUGGER'],
)
environment_list.append(mac_optimized_env)
mac_test_optimized_env = mac_optimized_env.Clone(
BUILD_TYPE = 'test-opt-mac',
BUILD_TYPE_DESCRIPTION = 'MacOS optimized build for testing',
)
AddTestingFlags(mac_test_optimized_env)
environment_list.append(mac_test_optimized_env)
# Linux ------------------------------------------------------------------
linux_env = binaries_env.Clone(
tools = ['target_platform_linux'],
FIREFOX_PLUGIN_DIR = '/home/$USER/.mozilla/plugins',
CG_DIR = '$CG_BASE_DIR/linux',
)
linux_env.FilterOut(CPPDEFINES = ['OS_LINUX=OS_LINUX'])
if base_env.Bit('host_linux'):
linux_env.ParseConfig('pkg-config --cflags --libs gtk+-2.0')
linux_env.Append(
RENDERER_INCLUDE_PATH = [
'$GLEW_DIR/include',
'$CG_DIR/include',
],
RENDERER_LIB_PATH = [
'$CG_DIR/lib',
'$GLEW_DIR/lib',
],
RENDERER_LIBS = [
'GL',
'GLEW',
'Cg',
'CgGL',
],
CPPDEFINES = [
'RENDERER_GL',
'LINUX',
['NACL_LINUX', '1'],
'SK_BUILD_FOR_UNIX'
],
CCFLAGS = ['-Wstrict-aliasing', '-m32'],
LINKFLAGS = ['-m32'],
LIBS = ['pthread', 'rt'],
NACL_HTP_LIBS = ['ssl', 'crypto'],
BUILD_COMPONENTS = [
'installer/linux'
],
)
linux_cg_dir = ARGUMENTS.get('linux-cg-dir', 'hermetic')
if linux_cg_dir != 'hermetic':
linux_cg_dir = linux_cg_dir or '/usr'
linux_env['CG_DIR'] = linux_cg_dir
linux_glew_dir = ARGUMENTS.get('linux-glew-dir', 'hermetic')
if linux_glew_dir != 'hermetic':
linux_glew_dir = linux_glew_dir or '/usr'
linux_env['GLEW_DIR'] = linux_glew_dir
linux_debug_env = linux_env.Clone(
BUILD_TYPE = 'dbg-linux',
BUILD_TYPE_DESCRIPTION = 'Linux debug build',
DEBUG = True,
NACL_VARIANT = 'dbg-linux',
)
linux_debug_env.Append(
CCFLAGS = ['-g'],
BUILD_GROUPS = ['default']
)
environment_list.append(linux_debug_env)
linux_optimized_env = linux_env.Clone(
BUILD_TYPE = 'opt-linux',
BUILD_TYPE_DESCRIPTION = 'Linux optimized build',
DEBUG = False,
NACL_VARIANT = 'opt-linux',
)
linux_optimized_env.Append(
CCFLAGS = ['-O3'],
CPPDEFINES = ['-DNDEBUG', '-DANTLR3_NO_DEBUGGER'],
)
environment_list.append(linux_optimized_env)
linux_cb_env = linux_env.Clone()
linux_cb_env.FilterOut(CPPDEFINES = ['RENDERER_GL'])
linux_cb_env.Append(
CPPDEFINES = ['RENDERER_CB'],
BUILD_COMPONENTS = [
'command_buffer/common',
'command_buffer/service',
'command_buffer/client'
],
RENDERER_INCLUDE_PATH = [],
RENDERER_LIB_PATH = [
'command_buffer/common',
'command_buffer/service',
'command_buffer/client',
],
RENDERER_LIBS = [
'o3dCmdBuf_service',
'o3dCmdBuf_client',
'o3dCmdBuf_common',
'GL',
'GLEW',
'Cg',
'CgGL',
] + linux_cb_env['NACL_HTP_LIBS'],
)
linux_cb_debug_env = linux_cb_env.Clone(
BUILD_TYPE = 'dbg-linux-cb',
BUILD_TYPE_DESCRIPTION = 'Linux Command Buffer debug build',
DEBUG = True,
NACL_VARIANT = 'dbg-linux',
)
linux_cb_debug_env.Append(
CCFLAGS = ['-g'],
)
environment_list.append(linux_cb_debug_env)
linux_cb_optimized_env = linux_cb_env.Clone(
BUILD_TYPE = 'opt-linux-cb',
BUILD_TYPE_DESCRIPTION = 'Linux Command Buffer optimized build',
DEBUG = False,
NACL_VARIANT = 'opt-linux',
)
linux_cb_optimized_env.Append(
CCFLAGS = ['-O3'],
CPPDEFINES = ['-DNDEBUG'],
)
environment_list.append(linux_cb_optimized_env)
# Documentation -------------------------------------------------------------
docs_env = base_env.Clone(
BUILD_TYPE = 'docs',
BUILD_TYPE_DESCRIPTION = 'Documentation for all platforms',
HOST_PLATFORMS = ['WINDOWS', 'LINUX', 'MAC'],
BUILD_COMPONENTS = ['documentation'],
)
docs_env.Append(BUILD_GROUPS = ['default', 'most'])
environment_list.append(docs_env)
# Code Coverage -------------------------------------------------------------
windows_d3d_coverage_env = windows_d3d_debug_env.Clone(
BUILD_TYPE = 'coverage-d3d',
BUILD_TYPE_DESCRIPTION = 'Windows DirectX code coverage build',
tools = ['code_coverage'],
)
windows_d3d_coverage_env.FilterOut(BUILD_GROUPS = ['default', 'most'])
environment_list.append(windows_d3d_coverage_env)
windows_gl_coverage_env = windows_gl_debug_env.Clone(
BUILD_TYPE = 'coverage-gl',
BUILD_TYPE_DESCRIPTION = 'Windows OpenGL code coverage build',
tools = ['code_coverage'],
)
windows_gl_coverage_env.FilterOut(BUILD_GROUPS = ['default', 'most'])
environment_list.append(windows_gl_coverage_env)
linux_coverage_env = linux_debug_env.Clone(
BUILD_TYPE = 'coverage-linux',
BUILD_TYPE_DESCRIPTION = 'Linux code coverage build',
tools = ['code_coverage'],
)
linux_coverage_env.FilterOut(BUILD_GROUPS = ['default', 'most'])
environment_list.append(linux_coverage_env)
mac_coverage_env = mac_debug_env.Clone(
BUILD_TYPE = 'coverage-mac',
BUILD_TYPE_DESCRIPTION = 'Mac code coverage build',
tools = ['code_coverage'],
)
mac_coverage_env.FilterOut(BUILD_GROUPS = ['default', 'most'])
environment_list.append(mac_coverage_env)
# Build the world.
BuildComponents(environment_list)
# Generate a solution, defer to the end.
solution_env = base_env.Clone(tools = ['visual_studio_solution'])
solution = solution_env.Solution(
'o3d', environment_list,
exclude_pattern = '.*third_party.*',
extra_build_targets = {
'Firefox': 'c:/Program Files/Mozilla FireFox/firefox.exe',
'unit_tests': '$ARTIFACTS_DIR/unit_tests.exe',
'system_tests': '$ARTIFACTS_DIR/system_tests.exe',
'converter': '$ARTIFACTS_DIR/o3dConverter.exe',
},
)
solution_env.Alias('solution', solution)