aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xcicn-plugin/CMakeLists.txt122
-rw-r--r--cicn-plugin/cmake/Modules/FindVpp.cmake48
-rw-r--r--cicn-plugin/cmake/Modules/FindVppDpdk.cmake37
3 files changed, 174 insertions, 33 deletions
diff --git a/cicn-plugin/CMakeLists.txt b/cicn-plugin/CMakeLists.txt
index c68a8021..6b1f3835 100755
--- a/cicn-plugin/CMakeLists.txt
+++ b/cicn-plugin/CMakeLists.txt
@@ -13,40 +13,49 @@
cmake_minimum_required(VERSION 3.2)
project(cicn_plugin)
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
+
+set(${CMAKE_PROJECT_NAME}_VERSION_MAJOR 1)
+set(${CMAKE_PROJECT_NAME}_VERSION_MINOR 0)
+
+# Dependencies
+
+find_package(Vpp REQUIRED)
+find_package(VppDpdk REQUIRED)
set(CICN_PLUGIN_SOURCE_FILES
- cicn/cicn.c
- cicn/cicn_face.c
- cicn/cicn_fib.c
- cicn/cicn_hashtb.c
- cicn/cicn_hello.c
- cicn/cicn_mgmt.c
- cicn/cicn_parser.c
- cicn/cicn_pcs.c
- cicn/cicn_pg.c
- cicn/node.c)
+ cicn/cicn.c
+ cicn/cicn_face.c
+ cicn/cicn_fib.c
+ cicn/cicn_hashtb.c
+ cicn/cicn_hello.c
+ cicn/cicn_mgmt.c
+ cicn/cicn_parser.c
+ cicn/cicn_pcs.c
+ cicn/cicn_pg.c
+ cicn/node.c)
set(CICN_PLUGIN_HEADER_FILES
- cicn/cicn_all_api_h.h
- cicn/cicn_api_handler.h
- cicn/cicn_fib.h
- cicn/cicn_hashtb.h
- cicn/cicn_hello_inlines.h
- cicn/cicn_mgmt.h
- cicn/cicn_params.h
- cicn/cicn_pcs.h
- cicn/cicn_rte_mbuf_inlines.h
- cicn/cicn_std.h
- cicn/cicn_api.h
- cicn/cicn_face.h
- cicn/cicn.h
- cicn/cicn_hello.h
- cicn/cicn_infra.h
- cicn/cicn_msg_enum.h
- cicn/cicn_parser.h
- cicn/cicn_rte_mbuf.h
- cicn/cicn_siphash.h
- cicn/cicn_types.h)
+ cicn/cicn_all_api_h.h
+ cicn/cicn_api_handler.h
+ cicn/cicn_fib.h
+ cicn/cicn_hashtb.h
+ cicn/cicn_hello_inlines.h
+ cicn/cicn_mgmt.h
+ cicn/cicn_params.h
+ cicn/cicn_pcs.h
+ cicn/cicn_rte_mbuf_inlines.h
+ cicn/cicn_std.h
+ cicn/cicn_api.h
+ cicn/cicn_face.h
+ cicn/cicn.h
+ cicn/cicn_hello.h
+ cicn/cicn_infra.h
+ cicn/cicn_msg_enum.h
+ cicn/cicn_parser.h
+ cicn/cicn_rte_mbuf.h
+ cicn/cicn_siphash.h
+ cicn/cicn_types.h)
if(NOT NO_UNIT_TEST)
list(APPEND CICN_PLUGIN_SOURCE_FILES
@@ -72,10 +81,11 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/cicn/cicn.api.h
--show-name ${CMAKE_CURRENT_BINARY_DIR}/cicn/cicn.api.h
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/cicn/cicn.api)
+include_directories(SYSTEM)
include_directories(${CMAKE_CURRENT_BINARY_DIR})
include_directories(./)
include_directories(cicn/test)
-include_directories(/usr/include/vpp-dpdk)
+include_directories(${VPP_DPDK_INCLUDE_DIRS})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -march=native -O3")
add_library(cicn_api_test_plugin SHARED
@@ -99,8 +109,8 @@ set_target_properties(cicn_api_test_plugin
target_link_libraries(cicn_plugin)
target_link_libraries(cicn_api_test_plugin)
-set(VPP_INSTALL_PLUGIN /usr/lib/vpp_plugins)
-set(VPP_INSTALL_API_TEST_PLUGIN /usr/lib/vpp_api_test_plugins)
+set(VPP_INSTALL_PLUGIN ${CMAKE_INSTALL_PREFIX}/lib/vpp_plugins)
+set(VPP_INSTALL_API_TEST_PLUGIN ${CMAKE_INSTALL_PREFIX}/lib/vpp_api_test_plugins)
install(DIRECTORY DESTINATION ${VPP_INSTALL_PLUGIN})
install(TARGETS cicn_plugin
@@ -111,3 +121,49 @@ install(DIRECTORY DESTINATION ${VPP_INSTALL_API_TEST_PLUGIN})
install(TARGETS cicn_api_test_plugin
DESTINATION
${VPP_INSTALL_API_TEST_PLUGIN})
+
+# Generate DEB / RPM packages
+
+option(DEB_PACKAGE "Create deb package" OFF)
+option(RPM_PACKAGE "Create deb package" OFF)
+
+SET(VENDOR "Cisco Systems" CACHE STRING "Vendor")
+SET(CONTACT "msardara@cisco.com" CACHE STRING "Contact")
+SET(DISTRIBUTION "xenial" CACHE STRING "Distribution")
+SET(ARCHITECTURE "amd64" CACHE STRING "Architecture")
+SET(PACKAGE_MAINTAINER "Mauro Sardara" CACHE STRING "Maintainer")
+SET(PACKAGE_VERSION "1.0" CACHE STRING "Version")
+SET(BUILD_NUMBER "1" CACHE STRING "Build Number")
+STRING(TOLOWER ${CMAKE_PROJECT_NAME} PACKAGE_NAME)
+
+SET(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
+SET(CPACK_PACKAGE_VERSION_MAJOR ${${CMAKE_PROJECT_NAME}_VERSION_MAJOR})
+SET(CPACK_PACKAGE_VERSION_MINOR ${${CMAKE_PROJECT_NAME}_VERSION_MINOR})
+SET(CPACK_PACKAGE_VENDOR ${VENDOR})
+SET(CPACK_PACKAGE_CONTACT ${CONTACT})
+
+if (DEB_PACKAGE)
+ SET(TYPE "DEBIAN")
+ SET(GENERATOR "DEB")
+ SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}_${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${BUILD_NUMBER}~${DISTRIBUTION}_${ARCHITECTURE}")
+ SET(CPACK_${TYPE}_PACKAGE_REQUIRES "vpp-dev >= 17.01, vpp-dpdk-dev >= 17.01")
+elseif (RPM_PACKAGE)
+ SET(TYPE "RPM")
+ SET(GENERATOR "RPM")
+ SET(CPACK_PACKAGE_FILE_NAME "${PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-${BUILD_NUMBER}.${DISTRIBUTION}.${ARCHITECTURE}")
+ SET(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/usr/etc" "/usr/lib/python2.7" "/usr/lib/python2.7/site-packages")
+ SET(CPACK_${TYPE}_PACKAGE_REQUIRES "vpp-devel >= 17.01, vpp-dpdk-devel >= 17.01")
+else ()
+ RETURN()
+endif ()
+
+SET(CPACK_GENERATOR ${GENERATOR})
+SET(CPACK_${TYPE}_PACKAGE_MAINTAINER ${PACKAGE_MAINTAINER})
+SET(CPACK_${TYPE}_PACKAGE_NAME ${PACKAGE_NAME})
+SET(CPACK_${TYPE}_PACKAGE_VERSION ${PACKAGE_VERSION})
+SET(CPACK_${TYPE}_PACKAGE_ARCHITECTURE ${ARCHITECTURE})
+SET(CPACK_${TYPE}_PACKAGE_RELEASE 1)
+SET(CPACK_${TYPE}_PACKAGE_VENDOR ${VENDOR})
+SET(CPACK_${TYPE}_PACKAGE_DESCRIPTION "High-performance CCNx ICN forwarder as a plugin to VPP.")
+
+INCLUDE(CPack)
diff --git a/cicn-plugin/cmake/Modules/FindVpp.cmake b/cicn-plugin/cmake/Modules/FindVpp.cmake
new file mode 100644
index 00000000..a930a946
--- /dev/null
+++ b/cicn-plugin/cmake/Modules/FindVpp.cmake
@@ -0,0 +1,48 @@
+# Copyright (c) 2017 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.
+
+########################################
+#
+# Find the VPP libraries and includes
+# This module sets:
+# VPP_FOUND: True if VPP was found
+# VPP_INCLUDE_DIR: The VPP include dir
+#
+
+set(VPP_SEARCH_PATH_LIST
+ ${VPP_HOME}
+ $ENV{VPP_HOME}
+ /usr/local
+ /opt
+ /usr)
+
+find_path(VPP_INCLUDE_DIR vpp-api/vpe.api.h
+ HINTS ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ DOC "Find the VPP includes")
+
+set(VPP_INCLUDE_DIRS
+ ${VPP_INCLUDE_DIR}
+ ${VPP_INCLUDE_DIR}/vpp-api
+ ${VPP_INCLUDE_DIR}/pneum
+ ${VPP_INCLUDE_DIR}/vlibmemory
+ ${VPP_INCLUDE_DIR}/vat
+ ${VPP_INCLUDE_DIR}/vlibapi
+ ${VPP_INCLUDE_DIR}/jvpp-common
+ ${VPP_INCLUDE_DIR}/vppinfra
+ ${VPP_INCLUDE_DIR}/vnet
+ ${VPP_INCLUDE_DIR}/vlibsocket
+ ${VPP_INCLUDE_DIR}/vlib)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Vpp DEFAULT_MSG VPP_INCLUDE_DIR)
diff --git a/cicn-plugin/cmake/Modules/FindVppDpdk.cmake b/cicn-plugin/cmake/Modules/FindVppDpdk.cmake
new file mode 100644
index 00000000..5c6bd62a
--- /dev/null
+++ b/cicn-plugin/cmake/Modules/FindVppDpdk.cmake
@@ -0,0 +1,37 @@
+# Copyright (c) 2017 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.
+
+########################################
+#
+# Find the VPP libraries and includes
+# This module sets:
+# VPP_DPDK_FOUND: True if VPP was found
+# VPP_DPDK_INCLUDE_DIR: The VPP include dir
+#
+
+set(VPP_DPDK_SEARCH_PATH_LIST
+ ${VPP_DPDK_ROOT}
+ $ENV{VPP_DODK_ROOT}
+ /usr/local
+ /opt
+ /usr)
+
+find_path(VPP_DPDK_INCLUDE_DIR vpp-dpdk/rte_version.h
+ HINTS ${VPP_DPDK_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ DOC "Find the VPP-DPDK includes")
+
+set(VPP_DPDK_INCLUDE_DIRS ${VPP_DPDK_INCLUDE_DIR} ${VPP_DPDK_INCLUDE_DIR}/vpp-dpdk)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(VppDpdk DEFAULT_MSG VPP_DPDK_INCLUDE_DIR)