# Copyright (c) 2009-2011 XORP, Inc and Others
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, Version 2, June
# 1991 as published by the Free Software Foundation. Redistribution
# and/or modification of this program under the terms of any other
# version of the GNU General Public License is not permitted.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For more details,
# see the GNU General Public License, Version 2, a copy of which can be
# found in the XORP LICENSE.gpl file.
#
# XORP Inc, 2953 Bunker Hill Lane, Suite 204, Santa Clara, CA 95054, USA;
# http://xorp.net

# $XORP$

import os
Import('env')

env = env.Clone()

is_shared = env.has_key('SHAREDLIBS')

# Fedora 19 has broken-ish lex...work around it for now.
env.AppendUnique(CCFLAGS = [
    '-Wno-sign-compare',
    ])

env.AppendUnique(CPPPATH = [ '#' ])

# Automatically generate flex and yacc files

#Create yacc files
yacc_env = env.Clone()

# bison on BSD generates headers files with .h suffix,
# while on other OSs it generates header files with .hh suffix
#
# But, on FreeBSD at least, if you don't do the .hh suffix, it doesn't even
# build a .h file of any type --Ben
yacc_env.Replace(YACCHXXFILESUFFIX='.hh')

yacc_env.AppendUnique(YACCFLAGS='-d')

yacc_env.AppendUnique(YACCFLAGS='-ppolicy_backend_parser')

backend_yacc = yacc_env.CXXFile(target='y.policy_backend_parser_tab.cc',
				source='backend.yy')

#create lex files
lex_env = env.Clone()

lex_env.AppendUnique(LEXFLAGS='-Ppolicy_backend_parser')

backend_lex = lex_env.CXXFile(target='lex.policy_backend_parser.cc',
					source='backend.ll')

libpbesrcs = [
    backend_lex[0],
    backend_yacc[0],
    'iv_exec.cc',
    'policy_filter.cc',
    'policy_filters.cc',
    'policy_redist_map.cc',
    'policytags.cc',
    'set_manager.cc',
    'single_varrw.cc',
    'version_filter.cc',
    'version_filters.cc',
    ]

if not (env.has_key('disable_profile') and env['disable_profile']):
    libpbesrcs.append('policy_profiler.cc')

if is_shared:
    libpbe = env.SharedLibrary(target = 'libxorp_policy_backend',
			       source = libpbesrcs)
    if env['rtld_origin']:
        for obj in libpbe:
            env.AddPostAction(libpbe,
                env.Symlink(obj.abspath,
                            os.path.join(env['xorp_alias_libdir'], str(obj))))
    env.Alias('install',
        env.InstallLibrary(env['xorp_libdir'], libpbe))
else:
    libpbe = env.StaticLibrary(target = 'libxorp_policy_backend',
			       source = libpbesrcs)

Default(libpbe)
