• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright 2012 Google Inc. All Rights Reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14#
15# main.scons for google-tv-pairing-protocol cpp library
16
17import os
18import platform
19import sys
20
21GTEST_INCLUDES = ['%s/include' % os.environ['GTEST_DIR']]
22Export('GTEST_INCLUDES')
23GMOCK_INCLUDES = ['%s/include' % os.environ['GMOCK_DIR']]
24Export('GMOCK_INCLUDES')
25OPENSSL_INCLUDES = ['%s/include' % os.environ['OPENSSL_DIR']]
26Export('OPENSSL_INCLUDES')
27
28GTEST_LIBS = ['%s/lib/.libs' % os.environ['GTEST_DIR']]
29Export('GTEST_LIBS')
30GMOCK_LIBS = ['%s/lib/.libs' % os.environ['GMOCK_DIR']]
31Export('GMOCK_LIBS')
32OPENSSL_LIBS = [os.environ['OPENSSL_DIR']]
33Export('OPENSSL_LIBS')
34
35build_environments = []
36
37root_env = Environment(
38  tools = ['component_setup'],
39  BUILD_SCONSCRIPTS = [
40    'src/polo',
41    'tests/polo',
42  ],
43  CPPPATH=['$MAIN_DIR/src'],
44)
45
46# Detect 64-bit build platform
47DeclareBit('arch_64', 'Target platform is 64-bit')
48DeclareBit('64bit', 'Target environment is 64-bit')
49if platform.architecture()[0] == '64bit':
50    root_env.SetBits('arch_64')
51
52# Setup the linux environment
53linux_env = root_env.Clone(tools = ['target_platform_linux'])
54
55linux_env.Append(
56  LINKFLAGS = ['-static', '-pthread'],
57  CCFLAGS = ['-fPIC'],
58)
59
60linux_32_env = linux_env.Clone()
61linux_32_env.Append(
62  CCFLAGS = ['-m32'],
63  LINKFLAGS = ['-m32'],
64  LIBPATH = [
65    #'/usr/lib32',
66  ]
67)
68
69linux_dbg_32_env = linux_32_env.Clone(
70  BUILD_TYPE = 'dbg',
71  BUILD_TYPE_DESCRIPTION = 'Linux 32-bit Debug Build',
72  tools = ['target_debug'],
73)
74build_environments.append(linux_dbg_32_env)
75
76
77linux_opt_32_env = linux_32_env.Clone(
78  BUILD_TYPE = 'opt',
79  BUILD_TYPE_DESCRIPTION = 'Linux 32-bit Release Build',
80  tools = ['target_optimized']
81)
82linux_opt_32_env.Append(
83  CCFLAGS = ['-O2'],
84  LINKFLAGS = ['--strip-all', '-s'],
85)
86build_environments.append(linux_opt_32_env)
87
88#  Add 64-bit linux environment if supported by build platform
89if linux_env.Bit('arch_64'):
90  linux_64_env = linux_env.Clone()
91  linux_64_env.Append(
92    CCFLAGS = ['-m64'],
93    LINKFLAGS = ['-m64'],
94    LIBPATH = [
95      #'/usr/lib64',
96    ]
97  )
98
99  linux_dbg_64_env = linux_64_env.Clone(
100    BUILD_TYPE = 'dbg64',
101    BUILD_TYPE_DESCRIPTION = 'Linux 64-bit Debug Build',
102    BUILD_GROUPS = ['default'],
103    tools = ['target_debug'],
104  )
105  linux_dbg_64_env.SetBits('64bit')
106  build_environments.append(linux_dbg_64_env)
107
108  linux_opt_64_env = linux_64_env.Clone(
109    BUILD_TYPE = 'opt64',
110    BUILD_TYPE_DESCRIPTION = 'Linux 64-bit Release Build',
111    tools = ['target_optimized']
112  )
113  linux_opt_64_env.Append(
114    CCFLAGS = ['-O2'],
115    LINKFLAGS = ['--strip-all'],
116  )
117  linux_opt_64_env.SetBits('64bit')
118  build_environments.append(linux_opt_64_env)
119
120# Mac OSX Build Environment
121mac_env = root_env.Clone(tools = ['target_platform_mac'])
122mac_env.Append(
123  CCFLAGS = [
124    '-arch', 'i386',
125    '-fPIC',
126  ],
127  CPPDEFINES = [
128    'OSX',
129    'XP_MACOSX',
130  ],
131  FRAMEWORKS = [
132    'CoreFoundation',
133    'IOKit',
134  ],
135  LIBS = [
136    'pthread',
137  ],
138  LINKFLAGS = [
139    '-arch', 'i386',
140    '-Wl,-search_paths_first',
141  ],
142)
143
144mac_opt_env = mac_env.Clone(
145  BUILD_TYPE = 'opt',
146  BUILD_TYPE_DESCRIPTIONS = 'Mac Release Build',
147)
148
149mac_opt_env.Append(
150  CCFLAGS = [
151    '-O2',
152  ],
153  LINKFLAGS = ['--string-all', '-s'],
154  tools = ['target_optimized'],
155)
156build_environments.append(mac_opt_env)
157
158mac_dbg_env = mac_env.Clone(
159  BUILD_TYPE = 'dbg',
160  BUILD_TYPE_DESCRIPTION = 'Mac Debug Build',
161)
162
163mac_dbg_env.Append(
164  CCFLAGS = ['-O0'],
165  tools = ['target_debug'],
166)
167build_environments.append(mac_dbg_env)
168
169
170# Windows Build Environment
171win_env = root_env.Clone(tools = ['target_platform_windows'])
172
173win_env.Append(
174  CCFLAGS = [
175    '/EHsc',
176  ],
177  CPPDEFINES = [
178    'OS_WINDOWS',
179    'WIN32',
180    '_WINDOWS',
181    '_WIN32_WINNT=0x0501',
182    'WINVER=0x0501',
183    'WIN32_LEAN_AND_MEAN',
184    'GOOGLE_GLOG_DLL_DECL=',
185    'NOGDI',
186    'BOOST_ALL_NO_LIB',
187    'BOOST_THREAD_BUILD_LIB',
188    '_X86_',
189    'X86',
190  ],
191)
192
193# We need perl and nasm to be in the path.
194if sys.platform == 'win32':
195  win_env['ENV']['PATH'] = os.environ['PRESCONS_PATH']
196  win_env['ENV']['INCLUDE'] = os.environ['INCLUDE']
197  win_env['ENV']['LIB'] = os.environ['LIB']
198
199win_opt_env = win_env.Clone(
200  BUILD_TYPE = 'opt',
201  BUILD_TYPE_DESCRIPTION = 'Windows Release Build',
202)
203
204win_opt_env.Append(
205  CCFLAGS = [
206    '/O1',
207    '/GS',
208    '/GL',
209    '/MT',
210  ],
211  CPPDEFINES = [
212    'NDEBUG',
213  ],
214  ARFLAGS = [
215    '/LTCG',
216  ],
217  LINKFLAGS = [
218    '/incremental:no',
219    '/LTCG',
220    '/opt:icf=32',
221    '/opt:ref',
222  ]
223)
224build_environments.append(win_opt_env)
225
226win_dbg_env = win_env.Clone(
227  BUILD_TYPE = 'dbg',
228  BUILD_TYPE_DESCRIPTION = 'Windows Debug Build',
229  BUILD_GROUPS = ['default'],
230)
231
232win_dbg_env.Append(
233  CCFLAGS = [
234    '/Fd$OBJ_ROOT/vc80.pdb',
235    '/MTd',
236    '/Od',
237    '/Z7',
238  ],
239  CPPDEFINES = [
240    'DEBUG',
241    '_DEBUG',
242  ],
243)
244build_environments.append(win_dbg_env)
245
246BuildEnvironments(build_environments)
247