blob: 36291ceb926a5efc558b253ee88a252bd327cbcd [file] [log] [blame]
# -*- python -*-
# Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import os
import re
def build():
vars = get_variables()
env = get_environment(vars)
env.AppendUnique(
CCFLAGS=['-fPIC', '-fno-exceptions', '-Wall', '-Werror', '-ggdb'],
LINKFLAGS=['-fPIC'],
LIBS=['base',
'rt',
'dl',
'pthread',
'v8',
'event',
'curl',
'crypto',
'opencryptoki',
'chromeos',
'crosapi'],
)
env.Append(
CCFLAGS=['-I..'],
LINKFLAGS=['-L${V8_LIB}'],
)
pkgconfig = os.environ.get('PKG_CONFIG', 'pkg-config')
env.ParseConfig(
pkgconfig + ' --cflags --libs libcurl dbus-glib-1 libpcrecpp'
)
end_program = env.Program(
'${BUILD_DIR}/entd',
[os.path.join("${BUILD_DIR}", fn) for fn in
("callback_server.cc",
"browser.cc",
"entd.cc",
"extensions.cc",
"flimflam.cc",
"http.cc",
"main.cc",
"crypto_openssl.cc",
"crypto_pkcs11.cc",
"syslog.cc",
"tpm.cc",
"utils.cc",)]
)
env.Install('${SYSROOT}/usr/sbin/', end_program)
env.Alias('install', '${SYSROOT}/usr/sbin/')
def get_variables():
vars = Variables()
# These variables consist of flags that need to be split into individual
# strings.
for name, desc, default in (
('CFLAGS', 'Extra Flags for ANSI C Compiler', ''),
('CCFLAGS', 'Extra Flags for C++ Compiler', ''),
('LDFLAGS', 'Extra Flags for Linker', '')):
vars.Add(name, desc, Split(os.environ.get(name, default)))
# These should be used as-is.
for name, desc, default in (
('SYSROOT',
'Root of filesystem, serves as a base for other relative paths', ''),
('PKG_CONFIG_PATH', 'Path to pkg-conf files',
'/usr/lib/pkgconfig'),
('PKG_CONFIG_LIBDIR', 'Replace the default search directory', ''),
('LD_LIBRARY_PATH', 'Search path for dynamic libraries',
'/usr/lib'),
('PREFIX', 'Installation prefix, relative to SYSROOT', '${SYSROOT}'),
('CHOST', 'Name of the toolchain, used to compute default ' +
'toolchain executable names', ''),
('CC', 'ANSI C Compiler', '/usr/bin/${TC_PREFIX}gcc'),
('CXX', 'C++ Compiler', '/usr/bin/${TC_PREFIX}g++'),
('AR', 'Archiver', '/usr/bin/${TC_PREFIX}ar'),
('RANLIB', 'Archive Indexer', '/usr/bin/${TC_PREFIX}ranlib'),
('LD', 'Linker', '/usr/bin/${TC_PREFIX}ld'),
('NM', 'Symbol Extractor', '/usr/bin/${TC_PREFIX}nm'),
('BUILD_DIR', 'Path for intermediate build objects', 'out/${CHOST}'),
('V8_LIB', 'Path for v8 library', '${SYSROOT}/usr/lib')):
vars.Add(name, desc, Split(os.environ.get(name, default)))
return vars
def get_environment(vars):
env = Environment(variables=vars)
# If there is a CHOST specified, then set TC_PREFIX so our toolchain
# related variables get sensible defaults.
if env["CHOST"]:
env["TC_PREFIX"] = "${CHOST}-"
env.Append(CFLAGS=['--sysroot=${SYSROOT}'],
CCFLAGS=['--sysroot=${SYSROOT}'])
# copy all these vars to the build environment (UNIX process env, not just
# scons "Environment").
for key in vars.keys():
env['ENV'][key] = env[key]
env.VariantDir("${BUILD_DIR}", ".", duplicate=0)
return env
build()