aboutsummaryrefslogtreecommitdiffstats
path: root/ctrl/sysrepo-plugins/cmake
diff options
context:
space:
mode:
authorMauro Sardara <msardara@cisco.com>2019-09-23 19:34:23 +0200
committerMauro Sardara <msardara@cisco.com>2019-09-24 11:14:16 +0200
commita0da41b243661a039481d2c254d7db8f55f18d2b (patch)
treee06e06a609588ceb8f5e293abc02a4a02da39d4d /ctrl/sysrepo-plugins/cmake
parentd6bd901a818e10f2e224bfaaaf20b39b60b6009f (diff)
[HICN-279] Added libmemif packaging.
Change-Id: Ie8662059163b7a01211bb18fb8f6b77bbbc07279 Signed-off-by: Mauro Sardara <msardara@cisco.com>
Diffstat (limited to 'ctrl/sysrepo-plugins/cmake')
-rw-r--r--ctrl/sysrepo-plugins/cmake/FindHicnLight.cmake39
-rw-r--r--ctrl/sysrepo-plugins/cmake/FindHicnPlugin.cmake39
-rw-r--r--ctrl/sysrepo-plugins/cmake/FindSysrepo.cmake46
-rw-r--r--ctrl/sysrepo-plugins/cmake/FindVPP.cmake178
-rw-r--r--ctrl/sysrepo-plugins/cmake/Packager.cmake149
-rw-r--r--ctrl/sysrepo-plugins/cmake/Packaging.cmake31
6 files changed, 482 insertions, 0 deletions
diff --git a/ctrl/sysrepo-plugins/cmake/FindHicnLight.cmake b/ctrl/sysrepo-plugins/cmake/FindHicnLight.cmake
new file mode 100644
index 000000000..bce3265fa
--- /dev/null
+++ b/ctrl/sysrepo-plugins/cmake/FindHicnLight.cmake
@@ -0,0 +1,39 @@
+#sed 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.
+
+set(HICNLIGHT_SEARCH_PATH_LIST
+ ${HICNLIGHT_HOME}
+ $ENV{HICNLIGHT_HOME}
+ /usr/local
+ /opt
+ /usr
+)
+
+find_path(HICNLIGHT_INCLUDE_DIR hicn/api/api.h
+ HINTS ${HICNLIGHT_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ DOC "Find the hicn plugin includes"
+)
+
+find_library(HICNLIGHT_LIBRARY NAMES libhicn-light-ctrl.so
+ HINTS ${HICNLIGHT_SEARCH_PATH_LIST}
+ PATH_SUFFIXES lib
+ DOC "Find the hicn light lib"
+)
+
+set(HICNLIGHT_LIBRARIES ${HICNLIGHT_LIBRARY})
+set(HICNLIGHT_INCLUDE_DIRS ${HICNLIGHT_INCLUDE_DIR})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Hicnlight HICNLIGHT_LIBRARIES HICNLIGHT_INCLUDE_DIRS)
+
+mark_as_advanced(HICNLIGHT_LIBRARY HICNLIGHT_INCLUDE_DIR)
diff --git a/ctrl/sysrepo-plugins/cmake/FindHicnPlugin.cmake b/ctrl/sysrepo-plugins/cmake/FindHicnPlugin.cmake
new file mode 100644
index 000000000..f50ed736e
--- /dev/null
+++ b/ctrl/sysrepo-plugins/cmake/FindHicnPlugin.cmake
@@ -0,0 +1,39 @@
+#sed 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.
+
+set(HICNPLUGIN_SEARCH_PATH_LIST
+ ${HICNPLUGIN_HOME}
+ $ENV{HICNPLUGIN_HOME}
+ /usr/local
+ /opt
+ /usr
+)
+
+find_path(HICNPLUGIN_INCLUDE_DIR vapi/hicn.api.vapi.h
+ HINTS ${HICNPLUGIN_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ DOC "Find the hicn plugin includes"
+)
+
+find_library(HICNPLUGIN_LIBRARY NAMES vpp_plugins/hicn_plugin.so
+ HINTS ${HICNPLUGIN_SEARCH_PATH_LIST}
+ PATH_SUFFIXES lib
+ DOC "Find the hicn plugin plugin"
+)
+
+set(HICNPLUGIN_LIBRARIES ${HICNPLUGIN_LIBRARY})
+set(HICNPLUGIN_INCLUDE_DIRS ${HICNPLUGIN_INCLUDE_DIR})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(HicnPlugin DEFAULT_MSG HICNPLUGIN_LIBRARIES HICNPLUGIN_INCLUDE_DIRS)
+
+mark_as_advanced(HICNPLUGIN_LIBRARY HICNPLUGIN_INCLUDE_DIR) \ No newline at end of file
diff --git a/ctrl/sysrepo-plugins/cmake/FindSysrepo.cmake b/ctrl/sysrepo-plugins/cmake/FindSysrepo.cmake
new file mode 100644
index 000000000..4228ef93a
--- /dev/null
+++ b/ctrl/sysrepo-plugins/cmake/FindSysrepo.cmake
@@ -0,0 +1,46 @@
+# Copyright (c) 2019 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.
+
+set(SYSREPO_SEARCH_PATH_LIST
+ ${SYSREPO_HOME}
+ $ENV{SYSREPO_HOME}
+ /usr/local
+ /opt
+ /usr
+)
+
+find_path(SYSREPO_INCLUDE_DIR sysrepo/values.h
+ HINTS ${SYSREPO_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ DOC "Find the sysrepo includes"
+)
+
+find_path(SYSREPO_INCLUDE_MAIN_DIR sysrepo.h
+ HINTS ${SYSREPO_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ DOC "Find the sysrepo includes"
+)
+
+find_library(SYSREPO_LIBRARY NAMES libsysrepo.so
+ HINTS ${SYSREPO_SEARCH_PATH_LIST}
+ PATH_SUFFIXES lib
+ DOC "Find the sysrepo library"
+)
+
+set(SYSREPO_LIBRARIES ${SYSREPO_LIBRARY})
+set(SYSREPO_INCLUDE_DIRS ${SYSREPO_INCLUDE_DIR} ${SYSREPO_INCLUDE_MAIN_DIR})
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(Sysrepo DEFAULT_MSG SYSREPO_LIBRARIES SYSREPO_INCLUDE_DIRS)
+
+mark_as_advanced(SYSREPO_LIBRARY SYSREPO_INCLUDE_DIR SYSREPO_INCLUDE_MAIN_DIR) \ No newline at end of file
diff --git a/ctrl/sysrepo-plugins/cmake/FindVPP.cmake b/ctrl/sysrepo-plugins/cmake/FindVPP.cmake
new file mode 100644
index 000000000..62abc29da
--- /dev/null
+++ b/ctrl/sysrepo-plugins/cmake/FindVPP.cmake
@@ -0,0 +1,178 @@
+# Copyright (c) 2019 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.
+
+#if (VPP_LIBRARIES AND VPP_INCLUDE_DIRS)
+ # in cache already
+# set(VPP_FOUND TRUE)
+#else (VPP_LIBRARIES AND VPP_INCLUDE_DIRS)
+
+set(VPP_SEARCH_PATH_LIST
+# ${VPP_HOME}
+# $ENV{VPP_HOME}
+ /usr/lib
+ /usr/lib64
+ /usr/local/lib
+ /usr/local/lib64
+ /opt/local/lib
+ /sw/lib
+ /usr/local
+ /opt
+ /usr)
+
+# set(VPP_INCLUDE_PATH
+# /usr/include
+# /usr/local/include
+# /opt/local/include
+# /sw/include
+# )
+
+# set(VPP_LIBRARY_PATH
+# /usr/lib
+# /usr/lib64
+# /usr/local/lib
+# /usr/local/lib64
+# /opt/local/lib
+# /sw/lib
+# )
+
+ find_path(VNET_INCLUDE_DIR
+ NAMES
+ vnet/vnet.h
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ )
+
+ find_path(VLIB_API_INCLUDE_DIR
+ NAMES
+ vlibapi/api.h
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ )
+
+ find_path(VLIBMEMORY_INCLUDE_DIR
+ NAMES
+ vlibmemory/api.h
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ )
+
+ find_path(VPP_MSG_INCLUDE_DIR
+ NAMES
+ vpp/api/vpe_msg_enum.h
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ )
+
+ find_path(VPP_ALL_INCLUDE_DIR
+ NAMES
+ vpp/api/vpe_all_api_h.h
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ )
+
+ find_path(VAPI_INCLUDE_DIR
+ NAMES
+ vapi/interface.api.vapi.h
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES include
+ )
+
+ find_library(VLIBMEMORYCLIENT_LIBRARY
+ NAMES
+ vlibmemoryclient
+ libvlibmemoryclient
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES lib lib64
+ )
+
+ find_library(SVM_LIBRARY
+ NAMES
+ svm
+ libsvm
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES lib lib64
+ )
+
+ find_library(VPPINFRA_LIBRARY
+ NAMES
+ vppinfra
+ libvppinfra
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES lib lib64
+ )
+
+ find_library(VLIB_LIBRARY
+ NAMES
+ vlib
+ libvlib
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES lib lib64
+ )
+
+ find_library(VATPLUGIN_LIBRARY
+ NAMES
+ vatplugin
+ libvatplugin
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES lib lib64
+ )
+
+ find_library(VAPI_LIBRARY
+ NAMES
+ vapiclient
+ libvapiclient
+ HINTS
+ ${VPP_SEARCH_PATH_LIST}
+ PATH_SUFFIXES lib lib64
+ )
+
+ if (VPP_INCLUDE_DIR AND VPP_LIBRARY)
+ set(VPP_FOUND TRUE)
+ else (VPP_INCLUDE_DIR AND VPP_LIBRARY)
+ set(VPP_FOUND FALSE)
+ endif (VPP_INCLUDE_DIR AND VPP_LIBRARY)
+
+ set(VPP_INCLUDE_DIRS
+ ${VNET_INCLUDE_DIR}
+ ${VLIB_API_INCLUDE_DIR}
+ ${VLIB_MEMORY_INCLUDE_DIR}
+ ${VPP_MSG_INCLUDE_DIR}
+ ${VPP_ALL_INCLUDE_DIR}
+ ${VAPI_INCLUDE_DIR}
+ )
+
+message(${VAPI_LIBRARY})
+ set(VPP_LIBRARIES
+ ${VLIBMEMORYCLIENT_LIBRARY}
+ ${SVM_LIBRARY}
+ ${VPPINFRA_LIBRARY}
+ ${VLIB_LIBRARY}
+ ${VATPLUGIN_LIBRARY}
+ ${VAPI_LIBRARY}
+ )
+
+ # show the VPP_INCLUDE_DIRS and VPP_LIBRARIES variables only in the advanced view
+ mark_as_advanced(VPP_INCLUDE_DIRS VPP_LIBRARIES)
+
+#endif (VPP_LIBRARIES AND VPP_INCLUDE_DIRS)
diff --git a/ctrl/sysrepo-plugins/cmake/Packager.cmake b/ctrl/sysrepo-plugins/cmake/Packager.cmake
new file mode 100644
index 000000000..b19145025
--- /dev/null
+++ b/ctrl/sysrepo-plugins/cmake/Packager.cmake
@@ -0,0 +1,149 @@
+# Copyright (c) 2017-2019 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.
+
+#############
+# RPM/DEB/TGZ Packaging utils
+#
+
+set(CONTACT "hicn-dev@lists.fd.io" CACHE STRING "Contact")
+set(PACKAGE_MAINTAINER "ICN Team" CACHE STRING "Maintainer")
+set(PACKAGE_VENDOR "fd.io" CACHE STRING "Vendor")
+
+# macro(set)
+
+macro(make_packages)
+ if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+ # parse /etc/os-release
+ file(READ "/etc/os-release" os_version)
+ string(REPLACE "\n" ";" os_version ${os_version})
+ foreach(_ver ${os_version})
+ string(REPLACE "=" ";" _ver ${_ver})
+ list(GET _ver 0 _name)
+ list(GET _ver 1 _value)
+ set(OS_${_name} ${_value})
+ endforeach()
+
+ # extract version from git
+ execute_process(
+ COMMAND git describe --long --match v*
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
+ OUTPUT_VARIABLE VER
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ if (NOT VER)
+ set(VER "v1.0-1-gcafe")
+ endif()
+
+ string(REGEX REPLACE "v(.*)-([0-9]+)-(g[0-9a-f]+)" "\\1;\\2;\\3" VER ${VER})
+ list(GET VER 0 tag)
+ string(REPLACE "-" "~" tag ${tag})
+ list(GET VER 1 commit_num)
+ list(GET VER 2 commit_name)
+
+ if (NOT DEFINED ENV{BUILD_NUMBER})
+ set(bld "b1")
+ else()
+ set(bld "b$ENV{BUILD_NUMBER}")
+ endif()
+
+ message("Build number is: ${bld}")
+
+ #define DEB and RPM version numbers
+ if(${commit_num} EQUAL 0)
+ set(deb_ver "${tag}")
+ set(rpm_ver "${tag}")
+ else()
+ set(deb_ver "${tag}-${commit_num}-release")
+ set(rpm_ver "${tag}-${commit_num}-release")
+ endif()
+
+ get_cmake_property(components COMPONENTS)
+
+ if(OS_ID_LIKE MATCHES "debian")
+ set(CPACK_GENERATOR "DEB")
+ set(type "DEBIAN")
+
+ execute_process(
+ COMMAND dpkg --print-architecture
+ OUTPUT_VARIABLE arch
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ set(CPACK_PACKAGE_VERSION "${deb_ver}")
+ foreach(lc ${components})
+ if (${lc} MATCHES ".*Unspecified.*")
+ continue()
+ endif()
+
+ string(TOUPPER ${lc} uc)
+ set(CPACK_${type}_${uc}_FILE_NAME "${lc}_${deb_ver}_${arch}.deb")
+
+ set(DEB_DEPS)
+ if (NOT ${${lc}_DEB_DEPENDENCIES} STREQUAL "")
+ string(REPLACE "stable_version" ${tag} DEB_DEPS ${${lc}_DEB_DEPENDENCIES})
+ endif()
+
+ set(CPACK_${type}_${uc}_PACKAGE_DEPENDS "${DEB_DEPS}")
+ set(CPACK_${type}_${uc}_PACKAGE_NAME "${lc}")
+ set(CPACK_COMPONENT_${uc}_DESCRIPTION "${${lc}_DESCRIPTION}")
+ endforeach()
+ elseif(OS_ID_LIKE MATCHES "rhel")
+ set(CPACK_GENERATOR "RPM")
+ set(type "RPM")
+
+ execute_process(
+ COMMAND uname -m
+ OUTPUT_VARIABLE arch
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ set(CPACK_PACKAGE_VERSION "${rpm_ver}")
+ foreach(lc ${components})
+ if (${lc} MATCHES ".*Unspecified.*")
+ continue()
+ endif()
+
+ string(TOUPPER ${lc} uc)
+ set(CPACK_${type}_${uc}_DESCRIPTION "${${lc}_DESCRIPTION}")
+
+ set(RPM_DEPS)
+ if (NOT ${${lc}_DEB_DEPENDENCIES} STREQUAL "")
+ string(REPLACE "stable_version" ${tag} RPM_DEPS ${${lc}_RPM_DEPENDENCIES})
+ endif()
+
+ set(CPACK_${type}_${uc}_PACKAGE_REQUIRES "${RPM_DEPS}")
+
+ if(${lc} MATCHES ".*-dev")
+ set(package_name ${lc}el)
+ else()
+ set(package_name ${lc})
+ endif()
+
+ set(CPACK_RPM_${uc}_PACKAGE_NAME "${package_name}")
+ set(CPACK_${type}_${uc}_FILE_NAME "${package_name}-${rpm_ver}.${arch}.rpm")
+ endforeach()
+ endif()
+
+ if(CPACK_GENERATOR)
+ set(CPACK_PACKAGE_NAME ${ARG_NAME})
+ set(CPACK_STRIP_FILES OFF)
+ set(CPACK_PACKAGE_VENDOR "${PACKAGE_VENDOR}")
+ set(CPACK_COMPONENTS_IGNORE_GROUPS 1)
+ set(CPACK_${CPACK_GENERATOR}_COMPONENT_INSTALL ON)
+ set(CPACK_${type}_PACKAGE_MAINTAINER "HICN Team")
+ set(CPACK_${type}_PACKAGE_RELEASE 1)
+ include(CPack)
+ endif()
+ endif()
+endmacro()
diff --git a/ctrl/sysrepo-plugins/cmake/Packaging.cmake b/ctrl/sysrepo-plugins/cmake/Packaging.cmake
new file mode 100644
index 000000000..f5e8426fb
--- /dev/null
+++ b/ctrl/sysrepo-plugins/cmake/Packaging.cmake
@@ -0,0 +1,31 @@
+# Copyright (c) 2017-2019 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.
+
+######################
+# Packages section
+######################
+
+set(hicn_sysrepo_plugin_DESCRIPTION
+ "A Plugin to enable hICN VPP in sysrepo."
+ CACHE STRING "Description for deb/rpm package."
+)
+
+set(hicn_sysrepo_plugin_DEB_DEPENDENCIES
+ "hicn-plugin (= stable_version-release), vpp (= stable_version-release), vpp-plugins (= stable_version-release)"
+ CACHE STRING "Dependencies for deb/rpm package."
+)
+
+set(hicn_sysrepo_plugin_RPM_DEPENDENCIES
+"hicn-plugin (= stable_version-release), vpp (= stable_version-release), vpp-plugins (= stable_version-release)"
+CACHE STRING "Dependencies for deb/rpm package."
+)