From a0da41b243661a039481d2c254d7db8f55f18d2b Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Mon, 23 Sep 2019 19:34:23 +0200 Subject: [HICN-279] Added libmemif packaging. Change-Id: Ie8662059163b7a01211bb18fb8f6b77bbbc07279 Signed-off-by: Mauro Sardara --- extras/libmemif/CMakeLists.txt | 68 +++++++++++++++++++++++++++ extras/libmemif/CMakeLists1.patch | 58 +++++++++++++++++++++++ extras/libmemif/CMakeLists2.patch | 42 +++++++++++++++++ extras/libmemif/cmake/Modules/Packaging.cmake | 29 ++++++++++++ 4 files changed, 197 insertions(+) create mode 100644 extras/libmemif/CMakeLists.txt create mode 100644 extras/libmemif/CMakeLists1.patch create mode 100644 extras/libmemif/CMakeLists2.patch create mode 100644 extras/libmemif/cmake/Modules/Packaging.cmake (limited to 'extras/libmemif') diff --git a/extras/libmemif/CMakeLists.txt b/extras/libmemif/CMakeLists.txt new file mode 100644 index 000000000..c9cea96f1 --- /dev/null +++ b/extras/libmemif/CMakeLists.txt @@ -0,0 +1,68 @@ +# 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(CMAKE_MODULE_PATH + ${CMAKE_MODULE_PATH} + "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/Modules" + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules" +) + +include(ExternalProject) +include(Packaging) + +if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) + set(LIBMEMIF memif) +endif() + +execute_process( + COMMAND bash -c "if [ ! -d vpp ]; then + git clone https://github.com/FDio/vpp.git -b stable/1908 vpp; + else + pushd vpp && git pull && popd; + fi" + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +execute_process( + COMMAND ${CMAKE_COMMAND} -E + remove_directory ${CMAKE_CURRENT_BINARY_DIR}/libmemif + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +execute_process( + COMMAND ${CMAKE_COMMAND} -E + copy_directory vpp/extras/libmemif ${CMAKE_CURRENT_BINARY_DIR}/libmemif + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +execute_process( + COMMAND ${CMAKE_COMMAND} -E rename ${CMAKE_CURRENT_BINARY_DIR}/libmemif/src + ${CMAKE_CURRENT_BINARY_DIR}/libmemif/memif + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +execute_process( + COMMAND + ${CMAKE_COMMAND} -E + copy ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists1.patch libmemif/CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +execute_process( + COMMAND ${CMAKE_COMMAND} -E + copy ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists2.patch libmemif/memif/CMakeLists.txt + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} +) + +include(Packaging) +add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/libmemif ${CMAKE_CURRENT_BINARY_DIR}/libmemif) \ No newline at end of file diff --git a/extras/libmemif/CMakeLists1.patch b/extras/libmemif/CMakeLists1.patch new file mode 100644 index 000000000..f699a3ce5 --- /dev/null +++ b/extras/libmemif/CMakeLists1.patch @@ -0,0 +1,58 @@ +# 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. + +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) + +project(memif) +set(CMAKE_C_STANDARD 11) + +set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") + +include(CheckCCompilerFlag) +include(CheckFunctionExists) + +execute_process( + COMMAND find ${VPP_SRC} -type d -name "cmake" + OUTPUT_VARIABLE CMAKE_DEPS_FOLDER + OUTPUT_STRIP_TRAILING_WHITESPACE +) +include(BuildMacros) + +if (NOT CMAKE_BUILD_TYPE) + message(STATUS "${PROJECT_NAME}: No build type selected, default to Release") + set(CMAKE_BUILD_TYPE "Release") +endif () + +set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g -DMEMIF_DBG -DICMP_DBG") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib) +set(CMAKE_INSTALL_MESSAGE NEVER) + +find_package(Threads REQUIRED) +include_directories(${CMAKE_THREADS_INCLUDE_DIRS}) + +check_function_exists(memfd_create HAVE_MEMFD_CREATE) +if(${HAVE_MEMFD_CREATE}) + add_definitions(-DHAVE_MEMFD_CREATE) +endif() + +include_directories(src) +set(LIBMEMIF memif) + +set(LIBMEMIF_INCLUDE_DIRS + ${CMAKE_CURRENT_SOURCE_DIR} + "" CACHE INTERNAL + "" FORCE +) + +add_subdirectory(memif) \ No newline at end of file diff --git a/extras/libmemif/CMakeLists2.patch b/extras/libmemif/CMakeLists2.patch new file mode 100644 index 000000000..69a7e773b --- /dev/null +++ b/extras/libmemif/CMakeLists2.patch @@ -0,0 +1,42 @@ +# 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. + +cmake_minimum_required(VERSION 3.5 FATAL_ERROR) + +set(HEADERS_DIR ${CMAKE_CURRENT_SOURCE_DIR}) + +list(APPEND MEMIF_HEADERS + libmemif.h + memif.h +) + +list(APPEND MEMIF_PRIVATE_HEADERS + memif_private.h + socket.h +) + +list(APPEND MEMIF_SOURCES + main.c + socket.c +) + +include_directories(${HEADERS_DIR}) + +build_library(${LIBMEMIF} + SHARED + SOURCES ${MEMIF_SOURCES} + INSTALL_HEADERS ${MEMIF_HEADERS} + LINK_LIBRARIES ${CMAKE_THREAD_LIBS_INIT} + INSTALL_ROOT_DIR memif + COMPONENT libmemif +) \ No newline at end of file diff --git a/extras/libmemif/cmake/Modules/Packaging.cmake b/extras/libmemif/cmake/Modules/Packaging.cmake new file mode 100644 index 000000000..d6db75a72 --- /dev/null +++ b/extras/libmemif/cmake/Modules/Packaging.cmake @@ -0,0 +1,29 @@ +# 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(${LIBMEMIF}_DESCRIPTION + "Libmemif, shared memory interface" + CACHE STRING "Description for deb/rpm package." +) + +set(${LIBMEMIF}_DEB_DEPENDENCIES + "" CACHE STRING "Dependencies for deb/rpm package." +) + +set(${LIBMEMIF}_RPM_DEPENDENCIES + "" CACHE STRING "Dependencies for deb/rpm package." +) -- cgit 1.2.3-korg