summaryrefslogtreecommitdiffstats
path: root/cmake
diff options
context:
space:
mode:
authorAngelo Mantellini <angelo.mantellini@cisco.com>2021-05-26 11:18:35 +0200
committerMauro Sardara <msardara@cisco.com>2021-06-01 09:09:49 +0000
commit7ca1c947dacd1cedee1a574228d2897277198907 (patch)
tree58c684df0bd14d3f6e562271aa6635b5dde89eda /cmake
parent31eea8b286ded60b37fcc87de4beb025eb59924e (diff)
[HICN-705] create packages for windows and mac os
Signed-off-by: Angelo Mantellini <angelo.mantellini@cisco.com> Change-Id: Ie408cf35737b8c66d6de3ef49c2990ff4c868a50
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Modules/License.txt12
-rw-r--r--cmake/Modules/Packager.cmake108
-rw-r--r--cmake/Modules/PostInstall.cmake83
3 files changed, 201 insertions, 2 deletions
diff --git a/cmake/Modules/License.txt b/cmake/Modules/License.txt
new file mode 100644
index 000000000..4d84c0dc7
--- /dev/null
+++ b/cmake/Modules/License.txt
@@ -0,0 +1,12 @@
+Copyright (c) 2017-2021 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. \ No newline at end of file
diff --git a/cmake/Modules/Packager.cmake b/cmake/Modules/Packager.cmake
index 7aad1d7b0..b414f7169 100644
--- a/cmake/Modules/Packager.cmake
+++ b/cmake/Modules/Packager.cmake
@@ -52,7 +52,6 @@ macro(extract_version)
if (NOT VER)
set(VER "v1.2-0-gcafe")
endif()
-
message(STATUS "Git describe output: ${VER}")
string(REGEX REPLACE "v([0-9]+).([0-9]+)-?(.*)?-([0-9]+)-(g[0-9a-f]+)" "\\1;\\2;\\3;\\4;\\5;" VER ${VER})
@@ -93,7 +92,6 @@ function(make_packages)
else()
set(bld "b$ENV{BUILD_NUMBER}")
endif()
-
message(STATUS "Build number is: ${bld}")
#define DEB and RPM version numbers
@@ -225,5 +223,111 @@ function(make_packages)
set(CPACK_PACKAGE_CONTACT ${CONTACT})
include(CPack)
endif()
+ elseif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" OR ${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+ set(CMAKE_SKIP_BUILD_RPATH FALSE)
+ set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
+ set(CMAKE_INSTALL_RPATH /opt/hicn)
+
+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
+
+ set(CPACK_SET_DESTDIR true)
+
+ set(CMAKE_INSTALL_RPATH "\${CPACK_INSTALL_PREFIX}")
+ set(CMAKE_SKIP_INSTALL_RPATH FALSE)
+ set(HICN_DEPENDECIES_INSTALLER "${LIBTRANSPORT_LIBRARIES_LIST};${FACEMGR_LIBRARY_LIST};${APPS_LIBRARY_LIST}")
+ separate_arguments(HICN_DEPENDECIES_INSTALLER)
+ foreach (HICN_DEPENDECY ${HICN_DEPENDECIES_INSTALLER})
+ get_filename_component(DEPENDENCY_NAME "${HICN_DEPENDECY}" NAME)
+ get_filename_component(DEPENDENCY "${HICN_DEPENDECY}" REALPATH)
+ get_filename_component(DEPENDENCY_PATH "${DEPENDENCY}" DIRECTORY)
+ install(FILES ${DEPENDENCY} DESTINATION lib COMPONENT dependencies)
+ endforeach()
+ set(CPACK_PACKAGE_NAME "hicn")
+ extract_version()
+ set(CPACK_PACKAGE_VENDOR "${PACKAGE_VENDOR}")
+ set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "hICN")
+ set(CPACK_PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}")
+ set(CPACK_PACKAGE_VERSION_MAJOR "${VERSION_MAJOR}")
+ set(CPACK_PACKAGE_VERSION_MINOR "${VERSION_MINOR}")
+ set(CPACK_PACKAGE_VERSION_PATCH "${VERSION_REVISION}")
+ set(CPACK_PACKAGE_INSTALL_DIRECTORY "hICN Components")
+
+ set(CPACK_COMPONENTS_ALL dependencies ${HICN_UTILS} ${HICN_LIGHT} ${HICN_APPS} ${FACEMGR} lib${LIBTRANSPORT} ${LIBTRANSPORT}-dev lib${LIBHICN} ${LIBHICN}-dev ${HICN_UTILS}-dev ${HICN_LIGHT}-dev ${HICN_APPS}-dev ${FACEMGR}-dev)
+ set(CPACK_COMPONENT_DEPENDENCIES_DISPLAY_NAME "Dependencies")
+ string(TOUPPER ${HICN_UTILS} HICN_UTILS_UPPERCASE)
+ string(TOUPPER ${HICN_LIGHT} HICN_LIGHT_UPPERCASE)
+ string(TOUPPER ${HICN_APPS} HICN_APPS_UPPERCASE)
+ string(TOUPPER ${FACEMGR} FACEMGR_UPPERCASE)
+
+ string(TOUPPER lib${LIBTRANSPORT} LIBTRANSPORT_UPPERCASE)
+ string(TOUPPER ${LIBTRANSPORT}-dev LIBTRANSPORT_DEV_UPPERCASE)
+ string(TOUPPER lib${LIBHICN} LIBHICN_UPPERCASE)
+ string(TOUPPER ${LIBHICN}-dev LIBHICN_DEV_UPPERCASE)
+ string(TOUPPER ${HICN_UTILS}-dev HICN_UTILS_DEV_UPPERCASE)
+ string(TOUPPER ${HICN_LIGHT}-dev HICN_LIGHT_DEV_UPPERCASE)
+ string(TOUPPER ${HICN_APPS}-dev HICN_APPS_DEV_UPPERCASE)
+ string(TOUPPER ${FACEMGR}-dev FACEMGR_DEV_UPPERCASE)
+
+ set(CPACK_COMPONENT_${HICN_UTILS_UPPERCASE}_DISPLAY_NAME "hICN utils")
+ set(CPACK_COMPONENT_${HICN_LIGHT_UPPERCASE}_DISPLAY_NAME "hICN light apps")
+ set(CPACK_COMPONENT_${HICN_APPS_UPPERCASE}_DISPLAY_NAME "hICN apps")
+ set(CPACK_COMPONENT_${FACEMGR_UPPERCASE}_DISPLAY_NAME "facemgr")
+ set(CPACK_COMPONENT_${LIBTRANSPORT_UPPERCASE}_DISPLAY_NAME "libtransport libs")
+ set(CPACK_COMPONENT_${LIBHICN_UPPERCASE}_DISPLAY_NAME "hicn libs")
+ set(CPACK_COMPONENT_${LIBTRANSPORT_DEV_UPPERCASE}_DISPLAY_NAME "libtransport headers")
+ set(CPACK_COMPONENT_${LIBHICN_DEV_UPPERCASE}_DISPLAY_NAME "hicn headers")
+ set(CPACK_COMPONENT_${HICN_UTILS_DEV_UPPERCASE}_DISPLAY_NAME "hicn utils headers")
+ set(CPACK_COMPONENT_${HICN_LIGHT_DEV_UPPERCASE}_DISPLAY_NAME "hicn-light headers")
+ set(CPACK_COMPONENT_${HICN_APPS_DEV_UPPERCASE}_DISPLAY_NAME "hicn-apps headers")
+ set(CPACK_COMPONENT_${FACEMGR_DEV_UPPERCASE}_DISPLAY_NAME "facemgr headers")
+ set (CPACK_RESOURCE_FILE_LICENSE
+ "${PROJECT_SOURCE_DIR}/cmake/Modules/License.txt")
+ set(CPACK_COMPONENT_DEPENDENCIES_DESCRIPTION
+ "All dependency libreries")
+
+ set(CPACK_COMPONENT_${HICN_UTILS_UPPERCASE}_GROUP "Executables")
+ set(CPACK_COMPONENT_${HICN_LIGHT_UPPERCASE}_GROUP "Executables")
+ set(CPACK_COMPONENT_${HICN_APPS_UPPERCASE}_GROUP "Executables")
+ set(CPACK_COMPONENT_${FACEMGR_UPPERCASE}_GROUP "Executables")
+
+ set(CPACK_COMPONENT_${LIBTRANSPORT_UPPERCASE}_GROUP "Libraries")
+ set(CPACK_COMPONENT_${LIBHICN_UPPERCASE}_GROUP "Libraries")
+ set(CPACK_COMPONENT_${LIBTRANSPORT_DEV_UPPERCASE}_GROUP "Headers")
+ set(CPACK_COMPONENT_${LIBHICN_DEV_UPPERCASE}_GROUP "Headers")
+ set(CPACK_COMPONENT_${HICN_UTILS_DEV_UPPERCASE}_GROUP "Headers")
+ set(CPACK_COMPONENT_${HICN_LIGHT_DEV_UPPERCASE}_GROUP "Headers")
+ set(CPACK_COMPONENT_${HICN_APPS_DEV_UPPERCASE}_GROUP "Headers")
+ set(CPACK_COMPONENT_${FACEMGR_DEV_UPPERCASE}_GROUP "Headers")
+ set(CPACK_COMPONENT_DEPENDENCIES_GROUP "Dependencies")
+
+
+ set(CPACK_COMPONENT_GROUP_DEVELOPMENT_EXPANDED ON)
+ set(CPACK_COMPONENT_GROUP_DEPENDENCIES_DESCRIPTION
+ "All dependency libreries")
+ set(CPACK_ALL_INSTALL_TYPES Full Developer)
+ set(CPACK_INSTALL_TYPE_FULL_DISPLAY_NAME "Everything")
+ set(CPACK_COMPONENT_${HICN_UTILS_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${HICN_LIGHT_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${HICN_APPS_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${FACEMGR_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${LIBTRANSPORT_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${LIBHICN_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${LIBTRANSPORT_DEV_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${LIBHICN_DEV_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${HICN_UTILS_DEV_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${HICN_LIGHT_DEV_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${HICN_APPS_DEV_UPPERCASE}_INSTALL_TYPES Full)
+ set(CPACK_COMPONENT_${FACEMGR_DEV_UPPERCASE}_INSTALL_TYPES Full)
+
+ if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+ set(CMAKE_INSTALL_RPATH /opt/hicn)
+
+ set(CPACK_INSTALL_PREFIX "/opt/hicn")
+ set(CPACK_GENERATOR productbuild)
+ set( CPACK_PRE_BUILD_SCRIPTS "${PROJECT_SOURCE_DIR}/cmake/Modules/PostInstall.cmake")
+ else()
+ set(CPACK_INSTALL_PREFIX "c:/Program Files/hicn")
+ endif()
+ include(CPack)
endif()
endfunction()
diff --git a/cmake/Modules/PostInstall.cmake b/cmake/Modules/PostInstall.cmake
new file mode 100644
index 000000000..89c7b9f68
--- /dev/null
+++ b/cmake/Modules/PostInstall.cmake
@@ -0,0 +1,83 @@
+function(change_rpath LIB_PATH TYPE)
+ execute_process (
+ COMMAND bash -c "ls ${LIB_PATH}"
+ OUTPUT_VARIABLE ITEMS
+ )
+ string(REPLACE "\n" ";" ITEMS ${ITEMS})
+
+ separate_arguments(ITEMS)
+ foreach (ITEM ${ITEMS})
+ if (NOT ITEM MATCHES ".a$")
+ if (TYPE STREQUAL "LIB")
+ execute_process (
+ COMMAND bash -c "otool -L ${LIB_PATH}/${ITEM} | head -2 | tail -1| sed -e 's/^[[:space:]]*//'|awk '{print $1;}'"
+ OUTPUT_VARIABLE OTOOL_OUTPUT
+ )
+ string(REPLACE "\n" "" OTOOL_OUTPUT ${OTOOL_OUTPUT})
+
+ execute_process (
+ COMMAND bash -c "basename ${OTOOL_OUTPUT}| sed -e 's/^[[:space:]]*//'"
+ OUTPUT_VARIABLE BASENAME
+ )
+ string(REPLACE "\n" "" BASENAME ${BASENAME})
+ execute_process (
+ COMMAND bash -c "install_name_tool -id ${CPACK_INSTALL_PREFIX}/${BASENAME} ${LIB_PATH}/${ITEM}"
+ OUTPUT_VARIABLE OUTPUT_INSTALL_NAME_TOOL
+ )
+ #change rpath
+ execute_process (
+ COMMAND bash -c "otool -L ${LIB_PATH}/${ITEM} | tail -n +3| sed -e 's/^[[:space:]]*//'|awk '{print $1;}'"
+ OUTPUT_VARIABLE OTOOL_OUTPUTS
+ )
+ else ()
+ #change rpath
+ execute_process (
+ COMMAND bash -c "otool -L ${LIB_PATH}/${ITEM} | tail -n +2| sed -e 's/^[[:space:]]*//'|awk '{print $1;}'"
+ OUTPUT_VARIABLE OTOOL_OUTPUTS
+ )
+ endif ()
+ string(REPLACE "\n" ";" OTOOL_OUTPUTS ${OTOOL_OUTPUTS})
+ separate_arguments(OTOOL_OUTPUTS)
+ foreach (OTOOL_OUTPUT ${OTOOL_OUTPUTS})
+ execute_process (
+ COMMAND bash -c "basename ${OTOOL_OUTPUT}| sed -e 's/^[[:space:]]*//'"
+ OUTPUT_VARIABLE BASENAME
+ )
+ string(REPLACE "\n" "" BASENAME ${BASENAME})
+ execute_process (
+ COMMAND bash -c "dirname ${OTOOL_OUTPUT}| sed -e 's/^[[:space:]]*//'"
+ OUTPUT_VARIABLE DIRNAME
+ )
+ string(REPLACE "\n" "" DIRNAME ${DIRNAME})
+ if(NOT DIRNAME MATCHES "/usr/lib")
+ execute_process (
+ COMMAND bash -c "install_name_tool -change ${OTOOL_OUTPUT} ${CPACK_INSTALL_PREFIX}/${BASENAME} ${LIB_PATH}/${ITEM}"
+ OUTPUT_VARIABLE OUTPUT_INSTALL_NAME_TOOL
+ )
+ endif()
+
+ endforeach()
+ endif()
+ endforeach()
+endfunction()
+string(TOLOWER ${CPACK_COMPONENT_DEPENDENCIES_GROUP} CPACK_COMPONENT_DEPENDENCIES_GROUP )
+set(LIB_PATH "${CPACK_TEMPORARY_DIRECTORY}/${CPACK_COMPONENT_DEPENDENCIES_GROUP}${CPACK_INSTALL_PREFIX}/lib")
+change_rpath(${LIB_PATH} LIB)
+
+set(LIB_PATH "${CPACK_TEMPORARY_DIRECTORY}/facemgr${CPACK_INSTALL_PREFIX}/lib")
+change_rpath(${LIB_PATH} LIB)
+set(LIB_PATH "${CPACK_TEMPORARY_DIRECTORY}/libhicntransport${CPACK_INSTALL_PREFIX}/lib")
+change_rpath(${LIB_PATH} LIB)
+set(LIB_PATH "${CPACK_TEMPORARY_DIRECTORY}/libhicn${CPACK_INSTALL_PREFIX}/lib")
+change_rpath(${LIB_PATH} LIB)
+
+set(EXE_PATH "${CPACK_TEMPORARY_DIRECTORY}/hicn-utils${CPACK_INSTALL_PREFIX}/bin")
+change_rpath(${EXE_PATH} EXE)
+set(EXE_PATH "${CPACK_TEMPORARY_DIRECTORY}/hicn-light${CPACK_INSTALL_PREFIX}/bin")
+change_rpath(${EXE_PATH} EXE)
+set(EXE_PATH "${CPACK_TEMPORARY_DIRECTORY}/hicn-apps${CPACK_INSTALL_PREFIX}/bin")
+change_rpath(${EXE_PATH} EXE)
+set(EXE_PATH "${CPACK_TEMPORARY_DIRECTORY}/facemgr${CPACK_INSTALL_PREFIX}/bin")
+change_rpath(${EXE_PATH} EXE)
+#set(EXE_PATH "${CPACK_TEMPORARY_DIRECTORY}/hicnctrl${CPACK_INSTALL_PREFIX}/bin")
+#change_rpath(${EXE_PATH} EXE)