From 0bb48911095fb2dc34a15c42d287a7fd046a6b76 Mon Sep 17 00:00:00 2001 From: Mauro Sardara Date: Mon, 27 Mar 2017 16:31:41 +0200 Subject: Adding support for creating DEB and RPM packages Change-Id: If2ba80f4b7f75cbdaa56349ccfe26663289a403a Signed-off-by: Mauro Sardara --- CMakeLists.txt | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 51 insertions(+), 7 deletions(-) (limited to 'CMakeLists.txt') diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e93cf4d..fed2c166 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,11 +12,11 @@ # limitations under the License. cmake_minimum_required(VERSION 3.2) -project(libicnet) +project(Libicnet) set(CMAKE_CXX_STANDARD 11) -set(CP_Api_VERSION_MAJOR 0) -set(CP_Api_VERSION_MINOR 1) +set(${CMAKE_PROJECT_NAME}_VERSION_MAJOR 1) +set(${CMAKE_PROJECT_NAME}_VERSION_MINOR 0) ## Set build folders #set(CMAKE_BINARY_DIR ${CMAKE_SOURCE_DIR}/build) @@ -70,12 +70,8 @@ include_directories(${CMAKE_THREADS_INCLUDE_DIRS}) find_package(Threads REQUIRED) -find_package(Boost 1.54.0 COMPONENTS system REQUIRED) -include_directories(SYSTEM ${Boost_INCLUDE_DIR}) - set(CMAKE_VERBOSE_MAKEFILE off) - if(ANDROID_API) include_directories(${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.9/include) include_directories(${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include) @@ -83,6 +79,8 @@ if(ANDROID_API) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_C_FLAGS} ${ANDROID_C_FLAGS} -std=c++11 -Wall -fpermissive -O3") else () set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -fpermissive -O3") + find_package(Boost 1.54.0 COMPONENTS system REQUIRED) + include_directories(SYSTEM ${Boost_INCLUDE_DIR}) if (BUILD_APPS) set(SUBFOLDERS ${APPS}) endif (BUILD_APPS) @@ -100,3 +98,49 @@ set(LIBRARIES set(SUBFOLDERS ${SUBFOLDERS} icnet) subdirs(${SUBFOLDERS}) + +# 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 "longbow >= 1.0, libevent-2.0-5, libssl1.0.0, libparc >= 1.0, libccnx-common >= 1.0, libccnx-transport-rta >= 1.0, libccnx-portal >= 1.0, libboost-system-dev >= 1.58") +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 "longbow >= 1.0, libevent >= 2.0, openssl >= 1.0, libparc >= 1.0, libccnx-common >= 1.0, boost-system >= 1.53") +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 "This library is designed to provide a transport layer for applications willing to communicate using an ICN protocol stack.") + +INCLUDE(CPack) -- cgit 1.2.3-korg