diff options
Diffstat (limited to 'extras/deprecated/vom/vom/CMakeLists.txt')
-rw-r--r-- | extras/deprecated/vom/vom/CMakeLists.txt | 323 |
1 files changed, 323 insertions, 0 deletions
diff --git a/extras/deprecated/vom/vom/CMakeLists.txt b/extras/deprecated/vom/vom/CMakeLists.txt new file mode 100644 index 00000000000..92a4348dba4 --- /dev/null +++ b/extras/deprecated/vom/vom/CMakeLists.txt @@ -0,0 +1,323 @@ +# Copyright (c) 2018 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +unset (VPPAPICLIENT_LIB) +unset (VAPICLIENT_LIB) +unset (ACL_FILE) +unset (NAT_FILE) +unset (L2E_FILE) +unset (GBP_FILE) +unset (IGMP_FILE) +unset (VOM_SOURCES) +unset (VOM_HEADERS) + +find_library(VPPAPICLIENT_LIB NAMES vppapiclient REQUIRED) +find_path(VPPAPICLIENT_INCLUDE_DIR NAMES vpp-api/client/vppapiclient.h) +find_library(VAPICLIENT_LIB NAMES vapiclient REQUIRED) +find_path(VAPICLIENT_INCLUDE_DIR NAMES vapi/vapi.hpp) + + +if(NOT VPPAPICLIENT_INCLUDE_DIR OR NOT VPPAPICLIENT_LIB) + message(FATAL_ERROR "Cannot find vppapiclient library and/or headers") +endif() +if(NOT VAPICLIENT_INCLUDE_DIR OR NOT VAPICLIENT_LIB) + message(FATAL_ERROR "Cannot find vapiclient library and/or headers") +endif() + +include_directories(${VPPAPICLIENT_INCLUDE_DIR}) +include_directories(${VAPICLIENT_INCLUDE_DIR}) +include_directories(${CMAKE_SOURCE_DIR}) + +find_file(ACL_FILE NAMES acl.api.vapi.hpp PATH_SUFFIXES vapi) +find_file(NAT_FILE NAMES nat.api.vapi.hpp PATH_SUFFIXES vapi) +find_file(L2E_FILE NAMES l2e.api.vapi.hpp PATH_SUFFIXES vapi) +find_file(GBP_FILE NAMES gbp.api.vapi.hpp PATH_SUFFIXES vapi) +find_file(IGMP_FILE NAMES igmp.api.vapi.hpp PATH_SUFFIXES vapi) + +if(ACL_FILE) + list(APPEND VOM_SOURCES + acl_binding_cmds.cpp + acl_binding.cpp + acl_ethertype_cmds.cpp + acl_ethertype.cpp + acl_l2_list.cpp + acl_l2_rule.cpp + acl_l3_list.cpp + acl_l3_rule.cpp + acl_list_cmds.cpp + acl_types.cpp + ) +endif() + +if(NAT_FILE) + list(APPEND VOM_SOURCES + nat_static.cpp + nat_static_cmds.cpp + nat_binding.cpp + nat_binding_cmds.cpp + ) +endif() + +if (L2E_FILE) + list(APPEND VOM_SOURCES + l2_emulation_cmds.cpp + l2_emulation.cpp + ) +endif() + +if(GBP_FILE) + list(APPEND VOM_SOURCES + gbp_contract_cmds.cpp + gbp_contract.cpp + gbp_bridge_domain_cmds.cpp + gbp_bridge_domain.cpp + gbp_endpoint_cmds.cpp + gbp_endpoint.cpp + gbp_endpoint_group_cmds.cpp + gbp_endpoint_group.cpp + gbp_ext_itf.cpp + gbp_ext_itf_cmds.cpp + gbp_recirc_cmds.cpp + gbp_recirc.cpp + gbp_route_domain_cmds.cpp + gbp_route_domain.cpp + gbp_rule.cpp + gbp_subnet_cmds.cpp + gbp_subnet.cpp + gbp_types.hpp + gbp_vxlan.cpp + gbp_vxlan_cmds.cpp + ) +endif() + +if (IGMP_FILE) + list(APPEND VOM_SOURCES + igmp_binding_cmds.cpp + igmp_binding.cpp + igmp_listen_cmds.cpp + igmp_listen.cpp + ) +endif() + +list(APPEND VOM_SOURCES + types.cpp + api_types.cpp + arp_proxy_binding_cmds.cpp + arp_proxy_binding.cpp + arp_proxy_config_cmds.cpp + arp_proxy_config.cpp + bond_group_binding_cmds.cpp + bond_group_binding.cpp + bond_interface_cmds.cpp + bond_interface.cpp + bond_member.cpp + bridge_domain_cmds.cpp + bridge_domain.cpp + bridge_domain_arp_entry.cpp + bridge_domain_arp_entry_cmds.cpp + bridge_domain_entry_cmds.cpp + bridge_domain_entry.cpp + client_db.cpp + cmd.cpp + connection.cpp + dhcp_client_cmds.cpp + dhcp_client.cpp + hw_cmds.cpp + hw.cpp + inspect.cpp + interface_cmds.cpp + interface.cpp + interface_factory.cpp + interface_ip6_nd_cmds.cpp + interface_span_cmds.cpp + interface_span.cpp + interface_types.cpp + ip_punt_redirect_cmds.cpp + ip_punt_redirect.cpp + ip_unnumbered_cmds.cpp + ip_unnumbered.cpp + l2_binding_cmds.cpp + l2_binding.cpp + l2_vtr.cpp + l2_vtr_cmds.cpp + l2_xconnect_cmds.cpp + l2_xconnect.cpp + l3_binding_cmds.cpp + l3_binding.cpp + lldp_binding_cmds.cpp + lldp_binding.cpp + lldp_global_cmds.cpp + lldp_global.cpp + logger.cpp + neighbour.cpp + neighbour_cmds.cpp + object_base.cpp + mroute_cmds.cpp + om.cpp + pipe.cpp + pipe_cmds.cpp + prefix.cpp + qos_map.cpp + qos_map_cmds.cpp + qos_mark.cpp + qos_mark_cmds.cpp + qos_record.cpp + qos_record_cmds.cpp + qos_store.cpp + qos_store_cmds.cpp + qos_types.cpp + qos_types_api.cpp + ra_config.cpp + ra_prefix.cpp + route.cpp + route_api_types.cpp + route_cmds.cpp + route_domain.cpp + route_domain_cmds.cpp + stat_client.cpp + stat_reader.cpp + sub_interface_cmds.cpp + sub_interface.cpp + tap_interface.cpp + tap_interface_cmds.cpp + vxlan_gbp_tunnel_cmds.cpp + vxlan_tunnel_cmds.cpp + vxlan_tunnel.cpp +) + +if(ACL_FILE) + list(APPEND VOM_HEADERS + acl_binding.hpp + acl_ethertype.hpp + acl_l2_rule.hpp + acl_l3_rule.hpp + acl_l3_list.hpp + acl_l2_list.hpp + acl_types.hpp + ) +endif() + +if(NAT_FILE) + list(APPEND VOM_HEADERS + nat_static.hpp + nat_binding.hpp + ) +endif() + +if(L2E_FILE) + list(APPEND VOM_HEADERS + l2_emulation.hpp + ) +endif() + +if(GBP_FILE) + list(APPEND VOM_HEADERS + gbp_contract.hpp + gbp_bridge_domain.hpp + gbp_endpoint.hpp + gbp_endpoint_group.hpp + gbp_ext_itf.hpp + gbp_recirc.hpp + gbp_route_domain.hpp + gbp_rule.hpp + gbp_subnet.hpp + gbp_types.hpp + gbp_vxlan.hpp + ) +endif() + +if(IGMP_FILE) + list(APPEND VOM_HEADERS + igmp_binding.hpp + igmp_listen.hpp + ) +endif() + +list(APPEND VOM_HEADERS + arp_proxy_binding.hpp + arp_proxy_config.hpp + bond_group_binding.hpp + bond_interface.hpp + bond_member.hpp + bridge_domain.hpp + bridge_domain_arp_entry.hpp + bridge_domain_entry.hpp + client_db.hpp + cmd.hpp + connection.hpp + dhcp_client.hpp + dump_cmd.hpp + enum_base.hpp + event_cmd.hpp + hw.hpp + inspect.hpp + interface.hpp + interface_cmds.hpp + interface_ip6_nd.hpp + interface_span.hpp + ip_punt_redirect.hpp + ip_unnumbered.hpp + l2_binding.hpp + l2_vtr.hpp + l2_xconnect.hpp + l3_binding.hpp + lldp_binding.hpp + lldp_global.hpp + logger.hpp + neighbour.hpp + object_base.hpp + om.hpp + pipe.hpp + prefix.hpp + qos_map.hpp + qos_mark.hpp + qos_record.hpp + qos_store.hpp + qos_types.hpp + ra_config.hpp + ra_prefix.hpp + route.hpp + route_domain.hpp + rpc_cmd.hpp + singular_db.hpp + singular_db_funcs.hpp + stat_client.hpp + stat_reader.hpp + sub_interface.hpp + tap_interface.hpp + types.hpp + api_types.hpp + vxlan_tunnel.hpp +) + +add_definitions(-Wall -Werror -std=gnu++11 -g) +add_library(vom SHARED ${VOM_SOURCES}) +if (VOM_LIB_VERSION) + set_target_properties(vom PROPERTIES SOVERSION ${VOM_LIB_VERSION}) +endif() +target_link_libraries(vom ${VPPAPICLIENT_LIB} ${VAPICLIENT_LIB} Threads::Threads + ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} m rt) +install(TARGETS vom DESTINATION lib COMPONENT vom) +install(FILES ${VOM_HEADERS} DESTINATION include/vom COMPONENT vom) + +if (Boost_FOUND) + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + add_definitions(-stdlib=libstdc++) + endif() + add_executable(vom_stats_test test_stats.cpp) + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + target_link_libraries(vom_stats_test vom stdc++) + else() + target_link_libraries(vom_stats_test vom) + endif() +endif() |