blob: ff6ddecc452d1bfb5a67329080541f96a947e29b [file] [log] [blame]
# Copyright (c) 2011 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
import sys
def GlibMarshalEmitter(target, source, env):
""" Inputs:
target: unused
source: list containing the source .list file
env: the scons environment in which we are compiling
Outputs:
target: the list of targets we'll emit
source: the list of sources we'll process"""
output = str(source[0])
output = output[0:output.rfind('.list')]
target = [
output + '.glibmarshal.c',
output + '.glibmarshal.h'
]
return target, source
def GlibMarshalGenerator(source, target, env, for_signature):
""" Inputs:
source: list of sources to process
target: list of targets to generate
env: scons environment in which we are working
for_signature: unused
Outputs: a list of commands to execute to generate the targets from
the sources."""
commands = []
for target_file in target:
if str(target_file).endswith('.glibmarshal.h'):
mode_flag = '--header '
else:
mode_flag = '--body '
cmd = '/usr/bin/glib-genmarshal %s --prefix=marshal ' \
'%s > %s' % (mode_flag, str(source[0]), str(target_file))
commands.append(cmd)
return commands
glib_marshal_builder = Builder(generator = GlibMarshalGenerator,
emitter = GlibMarshalEmitter,
single_source = 1,
suffix = 'glibmarshal.c')
base_env = Environment()
base_env['BUILDERS']['GlibMarshal'] = glib_marshal_builder
for key in Split('CC CXX AR RANLIB LD NM CFLAGS CCFLAGS LINKFLAGS'):
value = os.environ.get(key)
if value != None:
base_env[key] = Split(value)
pkgconfig = os.environ.get('PKG_CONFIG', 'pkg-config')
# Fix issue with scons not passing some vars through the environment.
for key in Split('PKG_CONFIG_LIBDIR PKG_CONFIG_PATH SYSROOT'):
if os.environ.has_key(key):
base_env['ENV'][key] = os.environ[key]
# Append these after pulling in the stuff from the environment so they
# don't get overwritten.
base_env.Append(CPPPATH=Split('. ..'))
base_env.Append(CCFLAGS=Split('-ggdb -fPIC -fno-exceptions -Wall -Werror'))
base_env.Append(LINKFLAGS=Split('-fPIC'))
SOURCES = Split('''\
chromeos_network.cc
cros_string.cc
marshal.glibmarshal.c
version_check.cc
''')
env = base_env.Clone()
BASE_VER = os.environ.get('BASE_VER', '85268')
# glib and dbus environment
env.ParseConfig('%s --cflags --libs dbus-1 glib-2.0 dbus-glib-1 '
'libchrome-%s libchromeos-%s libpcrecpp x11' %
(pkgconfig, BASE_VER, BASE_VER))
env.GlibMarshal('marshal.glibmarshal.c', 'marshal.list')
Default(env.SharedLibrary('cros', SOURCES))
env_test = base_env.Clone()
env_test.Append(LIBS=['nss3'])
env_test.ParseConfig('%s --cflags --libs gobject-2.0 dbus-glib-1 dbus-1 '
'libchrome-%s nss' % (pkgconfig, BASE_VER))
env_test.Append(CCFLAGS=['-DOS_CHROMEOS'])
env_gtest = env_test.Clone()
env_gtest.Append(LIBS=['gtest'])
env_gtest_main = env_test.Clone()
env_gtest_main.Append(LIBS=['gtest', 'gtest_main'])
env_gtest_main.ParseConfig('%s --cflags --libs libchrome-%s libchromeos-%s '
'libpcrecpp x11' % (pkgconfig, BASE_VER, BASE_VER))
env_network_monitor = env_test.Clone()
env_network_monitor.ParseConfig('%s --cflags --libs dbus-glib-1' % pkgconfig)
env_load = base_env.Clone()
env_load.ParseConfig('%s --cflags --libs dbus-glib-1 libchrome-%s'
% (pkgconfig, BASE_VER))
Load = env_load.Object('load.cc')
# Tests that do require libcros.so.
tests = [
env_network_monitor.Program('monitor_sms', ['monitor_sms.cc', Load]),
]
test_alias = Alias('test', tests)
AlwaysBuild(test_alias)
Alias('crosapi', env_load.StaticLibrary('crosapi', Load), CCFLAGS='-ggdb')