blob: 0c4b248f1ec9bd5396aa9279bff87e3e5f7ec12e [file] [log] [blame]
# Copyright 2012 Google Inc. All Rights Reserved.
#
# 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.
#
# main.scons for google-tv-pairing-protocol cpp library
import os
import platform
import sys
GTEST_INCLUDES = ['%s/include' % os.environ['GTEST_DIR']]
Export('GTEST_INCLUDES')
GMOCK_INCLUDES = ['%s/include' % os.environ['GMOCK_DIR']]
Export('GMOCK_INCLUDES')
OPENSSL_INCLUDES = ['%s/include' % os.environ['OPENSSL_DIR']]
Export('OPENSSL_INCLUDES')
GTEST_LIBS = ['%s/lib/.libs' % os.environ['GTEST_DIR']]
Export('GTEST_LIBS')
GMOCK_LIBS = ['%s/lib/.libs' % os.environ['GMOCK_DIR']]
Export('GMOCK_LIBS')
OPENSSL_LIBS = [os.environ['OPENSSL_DIR']]
Export('OPENSSL_LIBS')
build_environments = []
root_env = Environment(
tools = ['component_setup'],
BUILD_SCONSCRIPTS = [
'src/polo',
'tests/polo',
],
CPPPATH=['$MAIN_DIR/src'],
)
# Detect 64-bit build platform
DeclareBit('arch_64', 'Target platform is 64-bit')
DeclareBit('64bit', 'Target environment is 64-bit')
if platform.architecture()[0] == '64bit':
root_env.SetBits('arch_64')
# Setup the linux environment
linux_env = root_env.Clone(tools = ['target_platform_linux'])
linux_env.Append(
LINKFLAGS = ['-static', '-pthread'],
CCFLAGS = ['-fPIC'],
)
linux_32_env = linux_env.Clone()
linux_32_env.Append(
CCFLAGS = ['-m32'],
LINKFLAGS = ['-m32'],
LIBPATH = [
#'/usr/lib32',
]
)
linux_dbg_32_env = linux_32_env.Clone(
BUILD_TYPE = 'dbg',
BUILD_TYPE_DESCRIPTION = 'Linux 32-bit Debug Build',
tools = ['target_debug'],
)
build_environments.append(linux_dbg_32_env)
linux_opt_32_env = linux_32_env.Clone(
BUILD_TYPE = 'opt',
BUILD_TYPE_DESCRIPTION = 'Linux 32-bit Release Build',
tools = ['target_optimized']
)
linux_opt_32_env.Append(
CCFLAGS = ['-O2'],
LINKFLAGS = ['--strip-all', '-s'],
)
build_environments.append(linux_opt_32_env)
# Add 64-bit linux environment if supported by build platform
if linux_env.Bit('arch_64'):
linux_64_env = linux_env.Clone()
linux_64_env.Append(
CCFLAGS = ['-m64'],
LINKFLAGS = ['-m64'],
LIBPATH = [
#'/usr/lib64',
]
)
linux_dbg_64_env = linux_64_env.Clone(
BUILD_TYPE = 'dbg64',
BUILD_TYPE_DESCRIPTION = 'Linux 64-bit Debug Build',
BUILD_GROUPS = ['default'],
tools = ['target_debug'],
)
linux_dbg_64_env.SetBits('64bit')
build_environments.append(linux_dbg_64_env)
linux_opt_64_env = linux_64_env.Clone(
BUILD_TYPE = 'opt64',
BUILD_TYPE_DESCRIPTION = 'Linux 64-bit Release Build',
tools = ['target_optimized']
)
linux_opt_64_env.Append(
CCFLAGS = ['-O2'],
LINKFLAGS = ['--strip-all'],
)
linux_opt_64_env.SetBits('64bit')
build_environments.append(linux_opt_64_env)
# Mac OSX Build Environment
mac_env = root_env.Clone(tools = ['target_platform_mac'])
mac_env.Append(
CCFLAGS = [
'-arch', 'i386',
'-fPIC',
],
CPPDEFINES = [
'OSX',
'XP_MACOSX',
],
FRAMEWORKS = [
'CoreFoundation',
'IOKit',
],
LIBS = [
'pthread',
],
LINKFLAGS = [
'-arch', 'i386',
'-Wl,-search_paths_first',
],
)
mac_opt_env = mac_env.Clone(
BUILD_TYPE = 'opt',
BUILD_TYPE_DESCRIPTIONS = 'Mac Release Build',
)
mac_opt_env.Append(
CCFLAGS = [
'-O2',
],
LINKFLAGS = ['--string-all', '-s'],
tools = ['target_optimized'],
)
build_environments.append(mac_opt_env)
mac_dbg_env = mac_env.Clone(
BUILD_TYPE = 'dbg',
BUILD_TYPE_DESCRIPTION = 'Mac Debug Build',
)
mac_dbg_env.Append(
CCFLAGS = ['-O0'],
tools = ['target_debug'],
)
build_environments.append(mac_dbg_env)
# Windows Build Environment
win_env = root_env.Clone(tools = ['target_platform_windows'])
win_env.Append(
CCFLAGS = [
'/EHsc',
],
CPPDEFINES = [
'OS_WINDOWS',
'WIN32',
'_WINDOWS',
'_WIN32_WINNT=0x0501',
'WINVER=0x0501',
'WIN32_LEAN_AND_MEAN',
'GOOGLE_GLOG_DLL_DECL=',
'NOGDI',
'BOOST_ALL_NO_LIB',
'BOOST_THREAD_BUILD_LIB',
'_X86_',
'X86',
],
)
# We need perl and nasm to be in the path.
if sys.platform == 'win32':
win_env['ENV']['PATH'] = os.environ['PRESCONS_PATH']
win_env['ENV']['INCLUDE'] = os.environ['INCLUDE']
win_env['ENV']['LIB'] = os.environ['LIB']
win_opt_env = win_env.Clone(
BUILD_TYPE = 'opt',
BUILD_TYPE_DESCRIPTION = 'Windows Release Build',
)
win_opt_env.Append(
CCFLAGS = [
'/O1',
'/GS',
'/GL',
'/MT',
],
CPPDEFINES = [
'NDEBUG',
],
ARFLAGS = [
'/LTCG',
],
LINKFLAGS = [
'/incremental:no',
'/LTCG',
'/opt:icf=32',
'/opt:ref',
]
)
build_environments.append(win_opt_env)
win_dbg_env = win_env.Clone(
BUILD_TYPE = 'dbg',
BUILD_TYPE_DESCRIPTION = 'Windows Debug Build',
BUILD_GROUPS = ['default'],
)
win_dbg_env.Append(
CCFLAGS = [
'/Fd$OBJ_ROOT/vc80.pdb',
'/MTd',
'/Od',
'/Z7',
],
CPPDEFINES = [
'DEBUG',
'_DEBUG',
],
)
build_environments.append(win_dbg_env)
BuildEnvironments(build_environments)