aboutsummaryrefslogtreecommitdiffstats
path: root/extras/vom/vom/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'extras/vom/vom/CMakeLists.txt')
-rw-r--r--extras/vom/vom/CMakeLists.txt239
1 files changed, 239 insertions, 0 deletions
diff --git a/extras/vom/vom/CMakeLists.txt b/extras/vom/vom/CMakeLists.txt
new file mode 100644
index 00000000000..c9ff7aa41ee
--- /dev/null
+++ b/extras/vom/vom/CMakeLists.txt
@@ -0,0 +1,239 @@
+# 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 (VAPICLIENT_LIB)
+unset (ACL_FILE)
+unset (NAT_FILE)
+unset (L2E_FILE)
+unset (GBP_FILE)
+unset (VOM_SOURCES)
+unset (VOM_HEADERS)
+
+find_library(VAPICLIENT_LIB NAMES vapiclient REQUIRED HINTS ${VPP_LIB_DIR_HINT})
+find_path(VAPICLIENT_INCLUDE_DIR NAMES vapi/vapi.hpp HINTS ${VPP_INCLUDE_DIR_HINT})
+
+if(NOT VAPICLIENT_INCLUDE_DIR OR NOT VAPICLIENT_LIB)
+ message(FATAL_ERROR "Cannot find vapiclient library and/or headers")
+endif()
+
+include_directories(${VAPICLIENT_INCLUDE_DIR})
+include_directories(${CMAKE_SOURCE_DIR})
+
+find_file(ACL_FILE NAMES acl.api.vapi.hpp PATH_SUFFIXES vapi HINTS ${VPP_INCLUDE_DIR_HINT})
+find_file(NAT_FILE NAMES nat.api.vapi.hpp PATH_SUFFIXES vapi HINTS ${VPP_INCLUDE_DIR_HINT})
+find_file(L2E_FILE NAMES l2e.api.vapi.hpp PATH_SUFFIXES vapi HINTS ${VPP_INCLUDE_DIR_HINT})
+find_file(GBP_FILE NAMES gbp.api.vapi.hpp PATH_SUFFIXES vapi HINTS ${VPP_INCLUDE_DIR_HINT})
+
+if(ACL_FILE)
+ list(APPEND VOM_SOURCES
+ acl_binding_cmds.cpp
+ acl_binding.cpp
+ acl_ethertype_cmds.cpp
+ acl_ethertype.cpp
+ acl_l2_rule.cpp
+ acl_l3_rule.cpp
+ acl_list_cmds.cpp
+ acl_list.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_recirc_cmds.cpp
+ gbp_recirc.cpp
+ gbp_subnet_cmds.cpp
+ gbp_subnet.cpp
+ gbp_endpoint_cmds.cpp
+ gbp_endpoint.cpp
+ gbp_endpoint_group_cmds.cpp
+ gbp_endpoint_group.cpp
+ gbp_contract_cmds.cpp
+ gbp_contract.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_unnumbered_cmds.cpp
+ ip_unnumbered.cpp
+ l2_binding_cmds.cpp
+ l2_binding.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
+ om.cpp
+ pipe.cpp
+ pipe_cmds.cpp
+ prefix.cpp
+ ra_config.cpp
+ ra_prefix.cpp
+ route.cpp
+ route_cmds.cpp
+ route_domain.cpp
+ route_domain_cmds.cpp
+ sub_interface_cmds.cpp
+ sub_interface.cpp
+ tap_interface.cpp
+ tap_interface_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_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_endpoint.hpp
+ gbp_endpoint_group.hpp
+ gbp_subnet.hpp
+ gbp_recirc.hpp
+ gbp_contract.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_unnumbered.hpp
+ l2_binding.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
+ ra_config.hpp
+ ra_prefix.hpp
+ route.hpp
+ route_domain.hpp
+ rpc_cmd.hpp
+ singular_db.hpp
+ singular_db_funcs.hpp
+ sub_interface.hpp
+ tap_interface.hpp
+ types.hpp
+ api_types.hpp
+ vxlan_tunnel.hpp
+)
+
+add_library(vom SHARED ${VOM_SOURCES})
+target_link_libraries(vom ${VAPICLIENT_LIB} Threads::Threads boost_thread
+ ${BOOST_SYSTEM_LIB} ${BOOST_FILESYSTEM_LIB} ${BOOST_ASIO_LIB} m rt)
+add_definitions(-Wall -Werror -std=gnu++11)
+install(TARGETS vom DESTINATION ${VOM_LIB_DIR_NAME})
+
+foreach(file ${VOM_HEADERS})
+ install(FILES ${file} DESTINATION include/vom)
+endforeach()