#
# $XORP: xorp/fea/Jamfile,v 1.1 2007/01/11 22:30:46 bms Exp $
#

SubDir TOP fea ;
SubIncludeOnce TOP libcomm ;
SubIncludeOnce TOP libxorp ;
SubIncludeOnce TOP xrl interfaces ;
SubIncludeOnce TOP xrl targets ;
SubIncludeOnce TOP libxipc ;
SubIncludeOnce TOP libproto ;
SubIncludeOnce TOP libfeaclient ;
SubIncludeOnce TOP mrt ;
SubIncludeOnce TOP cli ;
SubIncludeOnce TOP cli libtecla ;
SubDir TOP fea ;

Library libfea : 
	addr_table.cc
	click_socket.cc
	fti_transaction.cc
	fticonfig.cc
	fticonfig_entry_get.cc
	fticonfig_entry_get_click.cc
	fticonfig_entry_get_dummy.cc
	fticonfig_entry_get_iphelper.cc
	fticonfig_entry_get_netlink.cc
	fticonfig_entry_get_rtmv2.cc
	fticonfig_entry_get_rtsock.cc
	fticonfig_entry_observer.cc
	fticonfig_entry_observer_dummy.cc
	fticonfig_entry_observer_iphelper.cc
	fticonfig_entry_observer_netlink.cc
	fticonfig_entry_observer_rtmv2.cc
	fticonfig_entry_observer_rtsock.cc
	fticonfig_entry_parse_nlm.cc
	fticonfig_entry_parse_rtm.cc
	fticonfig_entry_set.cc
	fticonfig_entry_set_click.cc
	fticonfig_entry_set_dummy.cc
	fticonfig_entry_set_iphelper.cc
	fticonfig_entry_set_netlink.cc
	fticonfig_entry_set_rtmv2.cc
	fticonfig_entry_set_rtsock.cc
	fticonfig_table_get.cc
	fticonfig_table_get_click.cc
	fticonfig_table_get_dummy.cc
	fticonfig_table_get_iphelper.cc
	fticonfig_table_get_netlink.cc
	fticonfig_table_get_sysctl.cc
	fticonfig_table_observer.cc
	fticonfig_table_observer_dummy.cc
	fticonfig_table_observer_iphelper.cc
	fticonfig_table_observer_netlink.cc
	fticonfig_table_observer_rtmv2.cc
	fticonfig_table_observer_rtsock.cc
	fticonfig_table_parse_nlm.cc
	fticonfig_table_parse_rtm.cc
	fticonfig_table_set.cc
	fticonfig_table_set_click.cc
	fticonfig_table_set_dummy.cc
	fticonfig_table_set_iphelper.cc
	fticonfig_table_set_netlink.cc
	fticonfig_table_set_rtmv2.cc
	fticonfig_table_set_rtsock.cc
	ifconfig.cc
	ifconfig_addr_table.cc
	ifconfig_get.cc
	ifconfig_get_click.cc
	ifconfig_get_dummy.cc
	ifconfig_get_getifaddrs.cc
	ifconfig_get_ioctl.cc
	ifconfig_get_iphelper.cc
	ifconfig_get_netlink.cc
	ifconfig_get_proc_linux.cc
	ifconfig_get_sysctl.cc
	ifconfig_media.cc
	ifconfig_observer.cc
	ifconfig_observer_dummy.cc
	ifconfig_observer_iphelper.cc
	ifconfig_observer_netlink.cc
	ifconfig_observer_rtsock.cc
	ifconfig_parse_ifaddrs.cc
	ifconfig_parse_ifreq.cc
	ifconfig_parse_nlm.cc
	ifconfig_parse_rtm.cc
	ifconfig_set.cc
	ifconfig_set_click.cc
	ifconfig_set_dummy.cc
	ifconfig_set_ioctl.cc
	ifconfig_set_iphelper.cc
	ifconfig_set_netlink.cc
	ifmanager_transaction.cc
	iftree.cc
	libfeaclient_bridge.cc
	mfea_config.cc
	mfea_dataflow.cc
	mfea_mrouter.cc
	mfea_node.cc
	mfea_node_cli.cc
	mfea_proto_comm.cc
	mfea_vif.cc
	netlink_socket.cc
	netlink_socket_utils.cc
	nexthop_port_mapper.cc
	pa_backend_dummy.cc
	pa_backend_ipfw2.cc
	pa_entry.cc
	pa_table.cc
	pa_transaction.cc
	profile_vars.cc
	rawsock.cc
	rawsock4.cc
	rawsock6.cc
	routing_socket.cc
	routing_socket_utils.cc
	win_rtm_pipe.cc
	win_support.cc
	xrl_packet_acl.cc
	xrl_fti.cc
	xrl_ifmanager.cc
	xrl_ifupdate.cc
	xrl_mfea_node.cc
	xrl_rawsock4.cc
	xrl_rawsock6.cc
	xrl_socket_cmds.cc
	xrl_socket_server.cc
	xrl_target.cc
	;

FEA_LDADD =
	libfea
	libfeafibclientxif
	libfeaifmgrclientxif
	libfearawpkt4client
	libfearawpkt6client
	libfeabase
	libfeaifmgrxif
	libclimanagerxif
	libmfeaclientxif
	libmfeabase
	libmrt
	libcli
	libtecla
	libcliprocessorxif
	libclibase
	libfeaclient
	libfeaifmgrmirrorxif
	libfeaifmgrreplicatorxif
	libfeaifmgrmirrorbase
	libpacketaclbase
	libsocket4userxif
	libsocket4xif
	libsocket6userxif
	libsocket6xif
	libfindereventnotifierxif
	libsocketserverbase
	libprofileclientxif
	libproto
	libxipc
	libxorp
	libcomm
	;

Main xorp_fea : fea.cc ;
LinkLibraries xorp_fea : $(FEA_LDADD) ;

#
# Hack to build dummy FEA in Jam in a hopefully portable way.
#
# XXX: MainFromObjects supplies the SUFEXE suffix if and only if
# the filename is not explicitly gristed. Here, it has to be.
#
MainFromObjects <fea>xorp_fea_dummy$(SUFEXE) : <fea>fea_dummy$(SUFOBJ) ;
LinkLibraries <fea>xorp_fea_dummy$(SUFEXE) : $(FEA_LDADD) ;
Object <fea>fea_dummy$(SUFOBJ) : fea.cc ;
C++FLAGS on <fea>fea_dummy$(SUFOBJ) += -DFEA_DUMMY ;

if $(MAKE_CHECK) {

 Main test_mfea : test_mfea.cc ;
 LinkLibraries test_mfea :
	libfea
	libfeafibclientxif
	libfeaifmgrclientxif
	libfearawpkt4client
	libfearawpkt6client
	libfeabase
	libfeaifmgrxif
	libclimanagerxif
	libmfeaclientxif
	libmfeabase
	libmrt
	libcli
	libtecla
	libcliprocessorxif
	libclibase
	libfeaclient
	libfeaifmgrmirrorxif
	libfeaifmgrreplicatorxif
	libfeaifmgrmirrorbase
	libsocket4userxif
	libsocket4xif
	libsocket6userxif
	libsocket6xif
	libfindereventnotifierxif
	libsocketserverbase
	libprofileclientxif
	libproto
	libfinder
	libxipc
	libxorp
	libcomm
	;

 Main test_ifmanager_transaction : test_ifmanager_transaction.cc ;
 LinkLibraries test_ifmanager_transaction :
	libfea
	libxipc
	libxorp
	libcomm
	;

 Main test_rawsock4 : test_rawsock4.cc ;
 LinkLibraries test_rawsock4 :
	libfea
	libproto
	libxipc
	libxorp
	libcomm
	;

 Main test_xrl_sockets4_udp : test_xrl_sockets4_udp.cc ;
 LinkLibraries test_xrl_sockets4_udp :
	libfea
	libsocket4userxif
	libsocket4xif
	libsocket6userxif
	libsocket6xif
	libfindereventnotifierxif
	libsocketserverbase
	libtestsocket4
	libxipc
	libxorp
	libcomm
	;
} # MAKE_CHECK

InstallBin $(PREFIX)/fea :
	xorp_fea xorp_fea_click_config_generator xorp_fea_dummy ;

SubIncludeOnce TOP fea tools ;
