# Copyright (c) 2009 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

SOURCES=['theme_draw.cc', 'theme_main.cc']

env = Environment(
    CPPPATH=[ '..' ],
    CCFLAGS=['-g'],
)

for key in Split('CC CXX AR RANLIB LD NM CFLAGS CCFLAGS'):
  value = os.environ.get(key)
  if value != None:
    env[key] = Split(value)
env['CCFLAGS'] += ['-fPIC', '-fno-exceptions', '-Wall', '-Werror']

# 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):
    env['ENV'][key] = os.environ[key]

pkgconfig = os.environ.get('PKG_CONFIG', 'pkg-config')

env.ParseConfig(pkgconfig + ' --cflags --libs gtk+-2.0 glib-2.0')

env.SharedLibrary('theme', SOURCES)
