summaryrefslogtreecommitdiffstats
path: root/libtransport
diff options
context:
space:
mode:
authorLuca Muscariello <lumuscar+fdio@cisco.com>2019-01-22 17:50:52 +0000
committerGerrit Code Review <gerrit@fd.io>2019-01-22 17:50:52 +0000
commitbed18df840364847e378d1ce2dea2fbace029720 (patch)
treed0cd5b86ba9c159f9e8a32331a82e121bafdb4c5 /libtransport
parent471bcdc47dce89394a724e96f7c4bd6f242b6a31 (diff)
parent211b6a8bc6d959a874a43f28d4cda43eae48200d (diff)
Merge "[HICN-3] First version of packaging system based on cmake."
Diffstat (limited to 'libtransport')
-rwxr-xr-xlibtransport/CMakeLists.txt14
-rwxr-xr-xlibtransport/cmake/Modules/Packager.cmake197
-rwxr-xr-xlibtransport/cmake/Modules/Packaging.cmake80
-rwxr-xr-xlibtransport/src/hicn/transport/CMakeLists.txt8
4 files changed, 90 insertions, 209 deletions
diff --git a/libtransport/CMakeLists.txt b/libtransport/CMakeLists.txt
index f2ade4520..097ab03ab 100755
--- a/libtransport/CMakeLists.txt
+++ b/libtransport/CMakeLists.txt
@@ -22,7 +22,6 @@ set(CMAKE_MODULE_PATH
)
include(DefaultConfiguration)
-include(Packager)
include(BuildMacros)
if (NOT CMAKE_BUILD_TYPE)
@@ -69,7 +68,7 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
if (__vpp__)
find_package_wrapper(HicnBinaryApi REQUIRED)
endif()
- set(LIBTRANSPORT transport)
+ set(LIBTRANSPORT hicntransport)
else()
set(HICN_LIBRARIES ${LIBHICN_SHARED})
list(APPEND DEPENDENCIES
@@ -84,6 +83,8 @@ else()
endif()
endif()
+include(Packaging)
+
find_package(Threads REQUIRED)
if (${COMPILE_TESTS})
@@ -112,11 +113,4 @@ list(APPEND LIBTRANSPORT_INCLUDE_DIRS
${ASIO_INCLUDE_DIRS}
)
-add_subdirectory(${TRANSPORT_ROOT_PATH})
-
-# Packaging
-add_package(libtransport
- NAME "libtransport"
- # DEPENDENCIES "fd.io" FIXME
- DESCRIPTION "Shared Memory Interface"
-)
+add_subdirectory(${TRANSPORT_ROOT_PATH}) \ No newline at end of file
diff --git a/libtransport/cmake/Modules/Packager.cmake b/libtransport/cmake/Modules/Packager.cmake
deleted file mode 100755
index 019f18c4e..000000000
--- a/libtransport/cmake/Modules/Packager.cmake
+++ /dev/null
@@ -1,197 +0,0 @@
-# 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.
-
-# Generate DEB / RPM packages
-
-# Default variables
-
-if (NOT DEFINED ENV{VENDOR})
- set(VENDOR "Cisco Systems" CACHE STRING "Vendor")
-else ()
- set(VENDOR ENV{VENDOR} CACHE STRING "Vendor")
-endif ()
-
-if (NOT DEFINED ENV{CONTACT})
- set(CONTACT "msardara@cisco.com" CACHE STRING "Contact")
-else ()
- set(CONTACT ENV{CONTACT} CACHE STRING "Contact")
-endif()
-
-if (NOT DEFINED ENV{PACKAGE_MAINTAINER})
- set(PACKAGE_MAINTAINER "Mauro Sardara (msardara@cisco.com)" CACHE STRING "Maintainer")
-else ()
- set(PACKAGE_MAINTAINER ENV{PACKAGE_MAINTAINER} CACHE STRING "Maintainer")
-endif()
-
-if (NOT DEFINED ENV{CPACK_PACKAGING_INSTALL_PREFIX})
- set(CPACK_PACKAGING_INSTALL_PREFIX "/usr")
-else ()
- set(CPACK_PACKAGING_INSTALL_PREFIX ENV{CPACK_PACKAGING_INSTALL_PREFIX})
-endif()
-
-set(CPACK_COMPONENTS_ALL library headers utils documentation)
-
-function (make_package_internal PACKAGE_NAME PACKAGE_VERSION ARCHITECTURE GENERATOR TYPE DESCRIPTION HOMEPAGE)
- set(CPACK_GENERATOR ${GENERATOR})
- set(CPACK_PACKAGE_VENDOR ${VENDOR})
- set(CPACK_PACKAGE_CONTACT ${CONTACT})
-
- set(CPACK_${GENERATOR}_COMPONENT_INSTALL ON)
- 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 ${DESCRIPTION})
- set(CPACK_${TYPE}_PACKAGE_HOMEPAGE ${HOMEPAGE})
-
- include(CPack)
-endfunction()
-
-function(make_deb_package PACKAGE_NAME PACKAGE_VERSION ARCHITECTURE DEPS BUILD_DEPS DESCRIPTION HOMEPAGE)
-
- set(TYPE "DEBIAN")
- set(GENERATOR "DEB")
-
- set(CPACK_${TYPE}_LIBRARY_PACKAGE_NAME "${PACKAGE_NAME}")
- set(CPACK_${TYPE}_UTILS_PACKAGE_NAME "${PACKAGE_NAME}-utils")
- set(CPACK_${TYPE}_HEADERS_PACKAGE_NAME "${PACKAGE_NAME}-dev")
- set(CPACK_${TYPE}_DOCUMENTATION_PACKAGE_NAME "${PACKAGE_NAME}-doc")
-
- set(CPACK_${TYPE}_LIBRARY_FILE_NAME "${CPACK_${TYPE}_LIBRARY_PACKAGE_NAME}_${PACKAGE_VERSION}_${ARCHITECTURE}.deb")
- set(CPACK_${TYPE}_UTILS_FILE_NAME "${CPACK_${TYPE}_UTILS_PACKAGE_NAME}_${PACKAGE_VERSION}_${ARCHITECTURE}.deb")
- set(CPACK_${TYPE}_HEADERS_FILE_NAME "${CPACK_${TYPE}_HEADERS_PACKAGE_NAME}_${PACKAGE_VERSION}_${ARCHITECTURE}.deb")
- set(CPACK_${TYPE}_DOCUMENTATION_FILE_NAME "${CPACK_${TYPE}_DOCUMENTATION_PACKAGE_NAME}_${PACKAGE_VERSION}_${ARCHITECTURE}.deb")
-
- set(CPACK_DEBIAN_LIBRARY_PACKAGE_SHLIBDEPS OFF)
-
- set(CPACK_${TYPE}_LIBRARY_PACKAGE_DEPENDS ${DEPS})
- set(CPACK_${TYPE}_UTILS_PACKAGE_DEPENDS ${CPACK_${TYPE}_LIBRARY_PACKAGE_NAME})
- set(CPACK_${TYPE}_HEADERS_PACKAGE_DEPENDS ${BUILD_DEPS})
- set(CPACK_${TYPE}_DOCUMENTATION_PACKAGE_DEPENDS "")
-
- make_package_internal(${PACKAGE_NAME} ${PACKAGE_VERSION} ${ARCHITECTURE} ${GENERATOR} ${TYPE} ${DESCRIPTION} ${HOMEPAGE})
-endfunction()
-
-function(make_rpm_package PACKAGE_NAME PACKAGE_VERSION ARCHITECTURE DEPS BUILD_DEPS DESCRIPTION HOMEPAGE)
- set(TYPE "RPM")
- set(GENERATOR "RPM")
-
- set(CPACK_${TYPE}_LIBRARY_PACKAGE_NAME "${PACKAGE_NAME}")
- set(CPACK_${TYPE}_UTILS_PACKAGE_NAME "${PACKAGE_NAME}-utils")
- set(CPACK_${TYPE}_HEADERS_PACKAGE_NAME "${PACKAGE_NAME}-devel")
- set(CPACK_${TYPE}_DOCUMENTATION_PACKAGE_NAME "${PACKAGE_NAME}-doc")
-
- set(CPACK_${TYPE}_LIBRARY_FILE_NAME "${CPACK_${TYPE}_LIBRARY_PACKAGE_NAME}-${PACKAGE_VERSION}.${ARCHITECTURE}.rpm")
- set(CPACK_${TYPE}_LIBRARY_FILE_NAME "${CPACK_${TYPE}_UTILS_PACKAGE_NAME}-${PACKAGE_VERSION}.${ARCHITECTURE}.rpm")
- set(CPACK_${TYPE}_HEADERS_FILE_NAME "${CPACK_${TYPE}_HEADERS_PACKAGE_NAME}-${PACKAGE_VERSION}.${ARCHITECTURE}.rpm")
- set(CPACK_${TYPE}_DOCUMENTATION_FILE_NAME "${CPACK_${TYPE}_DOCUMENTATION_PACKAGE_NAME}-${PACKAGE_VERSION}.${ARCHITECTURE}.rpm")
-
- set(CPACK_${TYPE}_LIBRARY_PACKAGE_AUTOREQ OFF)
-
- set(CPACK_${TYPE}_LIBRARY_PACKAGE_REQUIRES ${DEPS})
- set(CPACK_${TYPE}_UTILS_PACKAGE_DEPENDS ${CPACK_${TYPE}_LIBRARY_PACKAGE_NAME})
- set(CPACK_${TYPE}_HEADERS_PACKAGE_REQUIRES ${BUILD_DEPS})
- set(CPACK_${TYPE}_DOCUMENTATION_PACKAGE_REQUIRES "")
-
- set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/usr/etc" "/usr/lib/python2.7" "/usr/lib/python2.7/site-packages")
-
- make_package_internal(${PACKAGE_NAME} ${PACKAGE_VERSION} ${ARCHITECTURE} ${GENERATOR} ${TYPE} ${DESCRIPTION} ${HOMEPAGE})
-endfunction()
-
-function(make_tgz_package PACKAGE_NAME PACKAGE_VERSION ARCHITECTURE)
-
- set(TYPE "ARCHIVE")
- set(GENERATOR "TGZ")
-
- set(CPACK_${TYPE}_COMPONENT_INSTALL ON)
- set(CPACK_${TYPE}_LIBRARY_FILE_NAME "${PACKAGE_NAME}_${PACKAGE_VERSION}_${ARCHITECTURE}")
- set(CPACK_${TYPE}_UTILS_FILE_NAME "${PACKAGE_NAME}-utils_${PACKAGE_VERSION}_${ARCHITECTURE}")
- set(CPACK_${TYPE}_HEADERS_FILE_NAME "${PACKAGE_NAME}-dev_${PACKAGE_VERSION}_${ARCHITECTURE}")
- set(CPACK_${TYPE}_DOCUMENTATION_FILE_NAME "${PACKAGE_NAME}-doc_${PACKAGE_VERSION}_${ARCHITECTURE}")
-
- set(CPACK_GENERATOR ${GENERATOR})
- set(CPACK_PACKAGE_VENDOR ${VENDOR})
- set(CPACK_PACKAGE_CONTACT ${CONTACT})
-
- include(CPack)
-
-endfunction()
-
-function (make_package DEPS_DEB DEPS_RPM BUILD_DEPS_DEB BUILD_DEPS_RPM DESCRIPTION HOMEPAGE)
-
- if (NOT DEFINED ENV{PACKAGE_NAME})
- string(TOLOWER ${CMAKE_PROJECT_NAME} PACKAGE_NAME)
- else ()
- string(TOLOWER $ENV{PACKAGE_NAME} PACKAGE_NAME)
- endif ()
-
- # Get the version
- execute_process(COMMAND bash ${CMAKE_SOURCE_DIR}/scripts/version
- OUTPUT_VARIABLE PACKAGE_VERSION)
-
- if (PACKAGE_VERSION)
- string(STRIP ${PACKAGE_VERSION} PACKAGE_VERSION)
- else ()
- set(PACKAGE_VERSION 1.0)
- endif ()
-
- if (EXISTS "/etc/lsb-release")
- execute_process(COMMAND grep -oP "(?<=DISTRIB_ID=).*" /etc/lsb-release OUTPUT_VARIABLE DISTRIB_ID)
- execute_process(COMMAND grep -oP "(?<=DISTRIB_RELEASE=).*" /etc/lsb-release OUTPUT_VARIABLE DISTRIB_RELEASE)
- execute_process(COMMAND grep -oP "(?<=DISTRIB_CODENAME=).*" /etc/lsb-release OUTPUT_VARIABLE DISTRIB_CODENAME)
- execute_process(COMMAND grep -oP "(?<=DISTRIB_DESCRIPTION=).*" /etc/lsb-release OUTPUT_VARIABLE DISTRIB_DESCRIPTION)
- execute_process(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE)
-
- if (${ARCHITECTURE} STREQUAL "x86_64")
- set(ARCHITECTURE "amd64")
- endif()
-
- make_deb_package(${PACKAGE_NAME}
- ${PACKAGE_VERSION}
- ${ARCHITECTURE}
- ${DEPS_DEB}
- ${BUILD_DEPS_DEB}
- ${DESCRIPTION}
- ${HOMEPAGE})
-
- elseif(EXISTS "/etc/redhat-release")
- execute_process(COMMAND sudo yum install -y redhat-lsb)
- execute_process(COMMAND lsb_release -si OUTPUT_VARIABLE DISTRIB_ID)
- execute_process(COMMAND lsb_release -sr OUTPUT_VARIABLE DISTRIB_RELEASE)
- execute_process(COMMAND lsb_release -sc OUTPUT_VARIABLE DISTRIB_CODENAME)
- execute_process(COMMAND lsb_release -sd OUTPUT_VARIABLE DISTRIB_DESCRIPTION)
- execute_process(COMMAND uname -m -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE)
-
- make_rpm_package(${PACKAGE_NAME}
- ${PACKAGE_VERSION}
- ${ARCHITECTURE}
- ${DEPS_RPM}
- ${BUILD_DEPS_RPM}
- ${DESCRIPTION}
- ${HOMEPAGE})
- else()
- execute_process(COMMAND uname -m COMMAND tr -d '\n' OUTPUT_VARIABLE ARCHITECTURE)
-
- if (${ARCHITECTURE} STREQUAL "x86_64")
- set(ARCHITECTURE "amd64")
- endif()
-
- # Other linux system. Create a tar.gz package
- make_tgz_package(${PACKAGE_NAME}
- ${PACKAGE_VERSION}
- ${ARCHITECTURE})
-
- endif()
-endfunction()
diff --git a/libtransport/cmake/Modules/Packaging.cmake b/libtransport/cmake/Modules/Packaging.cmake
new file mode 100755
index 000000000..6dc0eb457
--- /dev/null
+++ b/libtransport/cmake/Modules/Packaging.cmake
@@ -0,0 +1,80 @@
+# 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.
+
+# Generate DEB / RPM packages
+
+######################
+# Packages section
+######################
+
+set(lib${LIBTRANSPORT}_DESCRIPTION
+"Libhicn-transport provides transport services and \
+socket API for applications willing to communicate \
+using the hICN protocol stack."
+ CACHE STRING "Description for deb/rpm package."
+)
+
+set(lib${LIBTRANSPORT}-dev_DESCRIPTION ${lib${LIBTRANSPORT}_DESCRIPTION}
+ CACHE STRING "Description for deb/rpm package.")
+set(lib${LIBTRANSPORT}-devel_DESCRIPTION ${lib${LIBTRANSPORT}_DESCRIPTION}
+ CACHE STRING "Description for deb/rpm package.")
+
+if ((BUILD_MEMIF_CONNECTOR OR BUILD_VPP_PLUGIN) AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+
+ set(lib${LIBTRANSPORT}_DEB_DEPENDENCIES
+ "libhicn (>= 1.0), libparc (>= 1.0), vpp-lib (== 19.01-release)"
+ CACHE STRING "Dependencies for deb/rpm package."
+ )
+
+ set(lib${LIBTRANSPORT}_RPM_DEPENDENCIES
+ "libhicn >= 1.0, libparc >= 1.0, vpp-lib = 19.01-release"
+ CACHE STRING "Dependencies for deb/rpm package."
+ )
+
+ set(lib${LIBTRANSPORT}-dev_DEB_DEPENDENCIES
+ "libtransport (>= 1.0), libasio-dev (>= 1.10), libhicn-dev (>= 1.0), libparc-dev (>= 1.0), vpp-dev (== 19.01-release)"
+ CACHE STRING "Dependencies for deb/rpm package."
+ )
+
+ set(lib${LIBTRANSPORT}-devel_RPM_DEPENDENCIES
+ "libtransport >= 1.0, asio-devel >= 1.10, libhicn-devel >= 1.0, libparc-devel >= 1.0, vpp-devel = 19.01-release"
+ CACHE STRING "Dependencies for deb/rpm package."
+ )
+
+else()
+<<<<<<< HEAD
+
+=======
+
+>>>>>>> 691dfde... [HICN-3] First version of packaging system based on cmake.
+ set(lib${LIBTRANSPORT}_DEB_DEPENDENCIES
+ "libhicn (>= 1.0), libparc (>= 1.0)"
+ CACHE STRING "Dependencies for deb/rpm package."
+ )
+
+ set(lib${LIBTRANSPORT}_RPM_DEPENDENCIES
+ "libhicn >= 1.0, libparc >= 1.0"
+ CACHE STRING "Dependencies for deb/rpm package."
+ )
+
+ set(lib${LIBTRANSPORT}-dev_DEB_DEPENDENCIES
+ "libtransport (>= 1.0), libasio-dev (>= 1.10), libhicn-dev (>= 1.0), libparc-dev (>= 1.0)"
+ CACHE STRING "Dependencies for deb/rpm package."
+ )
+
+ set(lib${LIBTRANSPORT}-devel_RPM_DEPENDENCIES
+ "libtransport >= 1.0, asio-devel >= 1.10, libhicn-devel >= 1.0, libparc-devel >= 1.0"
+ CACHE STRING "Dependencies for deb/rpm package."
+ )
+
+endif() \ No newline at end of file
diff --git a/libtransport/src/hicn/transport/CMakeLists.txt b/libtransport/src/hicn/transport/CMakeLists.txt
index f3c1cd2dc..fd5721273 100755
--- a/libtransport/src/hicn/transport/CMakeLists.txt
+++ b/libtransport/src/hicn/transport/CMakeLists.txt
@@ -14,7 +14,11 @@
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
configure_file("config.h.in" "config.h" @ONLY)
-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h DESTINATION include/hicn/transport COMPONENT libtransport-dev)
+install(
+ FILES ${CMAKE_CURRENT_BINARY_DIR}/config.h
+ DESTINATION include/hicn/transport
+ COMPONENT lib${LIBTRANSPORT}
+)
add_subdirectory(core)
add_subdirectory(errors)
@@ -42,7 +46,7 @@ build_library(${LIBTRANSPORT}
INSTALL_HEADERS ${HEADER_FILES}
LINK_LIBRARIES ${LIBRARIES}
DEPENDS ${DEPENDENCIES}
- COMPONENT libtransport
+ COMPONENT lib${LIBTRANSPORT}
INCLUDE_DIRS ${LIBTRANSPORT_INCLUDE_DIRS}
INSTALL_ROOT_DIR hicn/transport
DEFINITIONS ${COMPILER_DEFINITIONS}