# 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')

env.AppendUnique(CPPPATH = [
    '#',
    '$BUILDDIR',
    ])

env.PrependUnique(LIBPATH = [
    '$BUILDDIR/libxorp',
    '$BUILDDIR/libcomm',
    '$BUILDDIR/libxipc',
    '$BUILDDIR/libproto',
    '$BUILDDIR/libfeaclient',
    '$BUILDDIR/policy/backend',
    '$BUILDDIR/policy/common',
    '$BUILDDIR/xrl/interfaces',
    '$BUILDDIR/xrl/targets',
    '$BUILDDIR/mrt',
    '.'
    ])

env.AppendUnique(LIBS = [
    'xorp_pim',			# The library, not the executable.
    'xorp_fea_client',
    'xif_rib',
    'xif_mld6igmp',
    'xif_mfea',
    'xif_fea_rawpkt4',
    'xif_fea_ifmgr_mirror',
    'xif_fea_ifmgr_replicator',
    'xif_cli_manager',
    'xif_finder_event_notifier',
    'xst_fea_ifmgr_mirror',
    'xst_pim',
    'xorp_mrt',
    'xorp_proto',
    'xorp_ipc',
    'xorp_core',
    'xorp_comm'
])

if not is_shared:
    env.AppendUnique(LIBS = [
        "crypto",
        ])

    if not (env.has_key('mingw') and env['mingw']):
        env.AppendUnique(LIBS = [
            "rt",
            ])

if (env.has_key('mingw') and env['mingw']):
    env.AppendUnique(LIBS = [
        'ws2_32',
        'iphlpapi',
        'winmm',
        ])

if not (env.has_key('disable_ipv6') and env['disable_ipv6']):
    env.AppendUnique(LIBS = [
        'xif_fea_rawpkt6',
        ])

env.Replace(RPATH = [
    env.Literal(env['xorp_module_rpath'])
])

libxorp_pim_srcs = [
	     'pim_bsr.cc',
	     'pim_config.cc',
	     'pim_mfc.cc',
	     'pim_mre.cc',
	     'pim_mre_assert.cc',
	     'pim_mre_data.cc',
	     'pim_mre_join_prune.cc',
	     'pim_mre_register.cc',
	     'pim_mre_rpf.cc',
	     'pim_mre_task.cc',
	     'pim_mre_track_state.cc',
	     'pim_mrib_table.cc',
	     'pim_mrt.cc',
	     'pim_mrt_mfc.cc',
	     'pim_mrt_task.cc',
	     'pim_nbr.cc',
	     'pim_node.cc',
	     'pim_node_cli.cc',
	     'pim_proto_assert.cc',
	     'pim_proto_bootstrap.cc',
	     'pim_proto_cand_rp_adv.cc',
	     'pim_proto_graft.cc',
	     'pim_proto_graft_ack.cc',
	     'pim_proto_hello.cc',
	     'pim_proto_join_prune.cc',
	     'pim_proto_join_prune_message.cc',
	     'pim_proto_register.cc',
	     'pim_proto_register_stop.cc',
	     'pim_rp.cc',
	     'pim_scope_zone_table.cc',
	     'pim_vif.cc',
	     'xrl_pim_node.cc'
             ]

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

pim4srcs = [
          'xorp_pimsm4.cc',
          ]

pim4 = env.Program(target = 'xorp_pimsm4', source = pim4srcs)
if env['enable_builddirrun']:
    for obj in pim4:
        env.AddPostAction(pim4,
            env.Symlink(obj.abspath,
                os.path.join(env['xorp_alias_moduledir'], str(obj))))
env.Alias('install', env.InstallProgram(env['xorp_moduledir'], pim4))

if not (env.has_key('disable_ipv6') and env['disable_ipv6']):
    pim6srcs = [
        'xorp_pimsm6.cc',
        ]

    pim6 = env.Program(target = 'xorp_pimsm6', source = pim6srcs)
    if env['enable_builddirrun']:
        for obj in pim6:
            env.AddPostAction(pim6,
                env.Symlink(obj.abspath,
                    os.path.join(env['xorp_alias_moduledir'], str(obj))))

    env.Alias('install', env.InstallProgram(env['xorp_moduledir'], pim6))

    Default(pim4, pim6)
else:
    Default(pim4)
