summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMauro Sardara <msardara@cisco.com>2019-12-06 18:25:28 +0100
committerMauro Sardara <msardara@cisco.com>2019-12-10 17:50:49 +0100
commit3f21100e1d2ec47b64670a8b08d0c9d067bf9ef3 (patch)
tree6774ce7f2bc020b646366503eaa6acf2f0af13eb
parente8eda2c819b36555d9d6b080eaf8b4b1109d7646 (diff)
[HICN-430] Rework on CMake
Change way targets are defined: each project defines targets. Fix project BUILD flags Add build-extras bash script Rework build tree of extras folder, using ExternalProject_Add Change-Id: I82fa29896e54c8a033490eba013c3f0431bec9d0 Signed-off-by: Mauro Sardara <msardara@cisco.com>
-rw-r--r--CMakeLists.txt86
-rw-r--r--apps/CMakeLists.txt4
-rw-r--r--cmake/Modules/Packager.cmake2
-rw-r--r--ctrl/facemgr/CMakeLists.txt5
-rw-r--r--ctrl/libhicnctrl/CMakeLists.txt34
-rw-r--r--ctrl/sysrepo-plugins/CMakeLists.txt34
-rw-r--r--extras/CMakeLists.txt33
-rw-r--r--extras/libmemif/CMakeLists.txt72
-rw-r--r--extras/libmemif/CMakeLists1.patch11
-rw-r--r--extras/libyang/CMakeLists.txt37
-rw-r--r--extras/libyang/libyang.patch60
-rw-r--r--extras/router-plugin/CMakeLists.txt (renamed from extras/hicn-extra-plugin/CMakeLists.txt)20
-rw-r--r--extras/router-plugin/README.md (renamed from extras/hicn-extra-plugin/README.md)0
-rw-r--r--extras/router-plugin/cmake/Modules/Packaging.cmake (renamed from extras/hicn-extra-plugin/cmake/Modules/Packaging.cmake)0
-rw-r--r--extras/router-plugin/devices/rtnetlink/mapper.c (renamed from extras/hicn-extra-plugin/devices/rtnetlink/mapper.c)0
-rw-r--r--extras/router-plugin/devices/rtnetlink/mapper.h (renamed from extras/hicn-extra-plugin/devices/rtnetlink/mapper.h)0
-rw-r--r--extras/router-plugin/devices/rtnetlink/netns.c (renamed from extras/hicn-extra-plugin/devices/rtnetlink/netns.c)0
-rw-r--r--extras/router-plugin/devices/rtnetlink/netns.h (renamed from extras/hicn-extra-plugin/devices/rtnetlink/netns.h)0
-rw-r--r--extras/router-plugin/devices/rtnetlink/rtnl.c (renamed from extras/hicn-extra-plugin/devices/rtnetlink/rtnl.c)0
-rw-r--r--extras/router-plugin/devices/rtnetlink/rtnl.h (renamed from extras/hicn-extra-plugin/devices/rtnetlink/rtnl.h)0
-rw-r--r--extras/router-plugin/devices/rtnetlink/test.c (renamed from extras/hicn-extra-plugin/devices/rtnetlink/test.c)0
-rw-r--r--extras/router-plugin/rtinject/tap_inject.c (renamed from extras/hicn-extra-plugin/rtinject/tap_inject.c)0
-rw-r--r--extras/router-plugin/rtinject/tap_inject.h (renamed from extras/hicn-extra-plugin/rtinject/tap_inject.h)0
-rw-r--r--extras/router-plugin/rtinject/tap_inject_netlink.c (renamed from extras/hicn-extra-plugin/rtinject/tap_inject_netlink.c)0
-rw-r--r--extras/router-plugin/rtinject/tap_inject_node.c (renamed from extras/hicn-extra-plugin/rtinject/tap_inject_node.c)0
-rw-r--r--extras/router-plugin/rtinject/tap_inject_tap.c (renamed from extras/hicn-extra-plugin/rtinject/tap_inject_tap.c)0
-rw-r--r--extras/sysrepo/CMakeLists.txt40
-rw-r--r--extras/sysrepo/sysrepo.patch9
-rw-r--r--hicn-light/CMakeLists.txt7
-rw-r--r--hicn-plugin/CMakeLists.txt9
-rw-r--r--lib/CMakeLists.txt8
-rw-r--r--libtransport/CMakeLists.txt24
-rw-r--r--scripts/build-extras.sh (renamed from scripts/build-sysrepo.sh)44
-rw-r--r--scripts/build-packages.sh40
-rw-r--r--utils/CMakeLists.txt4
35 files changed, 281 insertions, 302 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 68b7e10ab..ab764906f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,10 +27,30 @@ option(BUILD_UTILS "Build the hicn utils" ON)
option(BUILD_APPS "Build the hicn apps" OFF)
option(BUILD_CTRL "Build the hicn control tools" ON)
option(BUILD_HICNPLUGIN "Build the hicn vpp plugin" OFF)
-option(BUILD_HICNEXTRAPLUGIN "Build the hicn extra plugin" OFF)
option(BUILD_SYSREPOPLUGIN "Build the sysrepo plugin" OFF)
-option(BUILD_SYSREPOP "Build the sysrepo plugin" OFF)
-option(BUILD_LIBYANG "Build the sysrepo plugin" OFF)
+option(BUILD_EXTRAS "Build external projects." OFF)
+
+if ((BUILD_APPS OR BUILD_UTILS) AND NOT BUILD_LIBTRANSPORT)
+ message(STATUS "Libhicntransport required. Enabled by default.")
+ set (BUILD_LIBTRANSPORT ON)
+endif()
+
+if (BUILD_SYSREPOPLUGIN AND NOT BUILD_HICNPLUGIN)
+ message(STATUS "Hicn-plugin required. Enabled by default.")
+ set (BUILD_HICNPLUGIN ON)
+endif()
+
+if ((BUILD_HICNLIGHT OR
+ BUILD_LIBTRANSPORT OR
+ BUILD_UTILS OR
+ BUILD_APPS OR
+ BUILD_CTRL OR
+ BUILD_HICNPLUGIN OR
+ BUILD_SYSREPOPLUGIN)
+ AND NOT BUILD_LIBHICN)
+ message(STATUS "Libhicn required. Enabled by default.")
+ set(BUILD_LIBHICN ON)
+endif()
list(APPEND dir_options
BUILD_LIBHICN
@@ -40,11 +60,8 @@ list(APPEND dir_options
BUILD_UTILS
BUILD_APPS
BUILD_CTRL
- BUILD_HICNEXTRAPLUGIN
BUILD_SYSREPOPLUGIN
- BUILD_SYSREPO
- BUILD_LIBYANG
- BUILD_LIBMEMIF
+ BUILD_EXTRAS
)
set(BUILD_LIBHICN_DIR lib)
@@ -55,11 +72,7 @@ set(BUILD_APPS_DIR apps)
set(BUILD_CTRL_DIR ctrl)
set(BUILD_HICNPLUGIN_DIR hicn-plugin)
set(BUILD_SYSREPOPLUGIN_DIR ctrl/sysrepo-plugins)
-set(BUILD_SYSREPO_DIR extras/sysrepo)
-set(BUILD_LIBYANG_DIR extras/libyang)
-set(BUILD_HICNEXTRAPLUGIN_DIR extras/hicn-extra-plugin)
-set(BUILD_LIBMEMIF_DIR extras/libmemif)
-
+set(BUILD_EXTRAS_DIR extras/)
## Add enabled components
foreach (opt ${dir_options})
@@ -70,55 +83,6 @@ foreach (opt ${dir_options})
endif()
endforeach()
-## Static targets
-set(LIBHICN hicn)
-set(HICN_LIGHT hicn-light)
-set(HICN_LIGHT_CONTROL hicn-light-control)
-set(HICN_LIGHT_DAEMON hicn-light-daemon)
-set(HICN_PLUGIN hicn-plugin)
-set(HICN_EXTRA_PLUGIN hicn-extra-plugin)
-set(LIBTRANSPORT hicntransport)
-set(HICN_UTILS hicn-utils)
-set(HICNCTRL hicnctrl)
-set(LIBHICNCTRL hicnctrl)
-set(HICN_APPS hicn-apps)
-set(LIBFACEMGR facemgr)
-set(FACEMGR facemgr)
-set(LIBMEMIF memif)
-
-if (BUILD_HICNPLUGIN AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
- find_package(Libmemif)
-
- if (NOT Libmemif_FOUND)
- message(STATUS "Libmemif not found in the system. Building it as external project.")
- list(INSERT subdirs 0
- ${BUILD_LIBMEMIF_DIR}
- )
-
- unset(LIBMEMIF_INCLUDE_DIRS)
- unset(LIBMEMIF_LIBRARIES)
- endif()
-
- set(LIBTRANSPORT ${LIBTRANSPORT}-memif)
- set(LIBHICNCTRL ${LIBHICNCTRL}-memif)
-endif()
-
-## Libraries targets
-set(LIBHICN_SHARED ${LIBHICN}.shared)
-set(LIBTRANSPORT_SHARED ${LIBTRANSPORT}.shared)
-set(LIBHICNCTRL_SHARED ${LIBHICNCTRL}.shared)
-set(LIBMEMIF_SHARED ${LIBMEMIF}.shared)
-
-set(LIBHICN_STATIC ${LIBHICN}.static)
-set(LIBTRANSPORT_STATIC ${LIBTRANSPORT}.static)
-set(LIBHICNCTRL_STATIC ${LIBHICNCTRL}.static)
-set(LIBMEMIF_STATIC ${LIBMEMIF}.static)
-
-## HEADER FILES
-set(HICN_INCLUDE_DIRS "" "" CACHE INTERNAL "" FORCE)
-set(LIBTRANSPORT_INCLUDE_DIRS "" "" CACHE INTERNAL "" FORCE)
-set(LIBHICNCTRL_INCLUDE_DIRS "" "" CACHE INTERNAL "" FORCE)
-
if (NOT WIN32)
add_compile_options(-Wall -Werror)
endif ()
diff --git a/apps/CMakeLists.txt b/apps/CMakeLists.txt
index c74be92ba..1778ba557 100644
--- a/apps/CMakeLists.txt
+++ b/apps/CMakeLists.txt
@@ -25,11 +25,12 @@ set(CMAKE_MODULE_PATH
include(BuildMacros)
include(WindowsMacros)
+set(HICN_APPS hicn-apps CACHE INTERNAL "" FORCE)
+
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
find_package(Libtransport REQUIRED)
find_package(Threads REQUIRED)
include_directories(${LIBTRANSPORT_INCLUDE_DIRS})
- set(HICN_APPS hicn-apps)
else()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
find_package(OpenSSL REQUIRED)
@@ -38,6 +39,7 @@ else()
else ()
set(LIBTRANSPORT_LIBRARIES ${LIBTRANSPORT_SHARED})
endif ()
+
list(APPEND DEPENDENCIES
${LIBTRANSPORT_LIBRARIES}
)
diff --git a/cmake/Modules/Packager.cmake b/cmake/Modules/Packager.cmake
index 56221fcca..fdda9a203 100644
--- a/cmake/Modules/Packager.cmake
+++ b/cmake/Modules/Packager.cmake
@@ -55,7 +55,7 @@ macro(extract_version)
message(STATUS "Git describe output: ${VER}")
- string(REGEX REPLACE "v([0-9]+).([0-9]+)-([0-9]+)-(g[0-9a-f]+)" "\\1;\\2;\\3;\\4" VER ${VER})
+ string(REGEX REPLACE "v([0-9]+).([0-9]+).*-([0-9]+)-(g[0-9a-f]+)" "\\1;\\2;\\3;\\4" VER ${VER})
list(GET VER 0 VERSION_MAJOR)
list(GET VER 1 VERSION_MINOR)
list(GET VER 2 VERSION_REVISION)
diff --git a/ctrl/facemgr/CMakeLists.txt b/ctrl/facemgr/CMakeLists.txt
index 63a5f3c84..db40eade3 100644
--- a/ctrl/facemgr/CMakeLists.txt
+++ b/ctrl/facemgr/CMakeLists.txt
@@ -62,11 +62,12 @@ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH ON)
find_package_wrapper(Config REQUIRED)
find_package_wrapper(LibEvent REQUIRED)
+set(FACEMGR facemgr CACHE INTERNAL "" FORCE)
+set(LIBFACEMGR facemgr CACHE INTERNAL "" FORCE)
+
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
find_package_wrapper(Libhicn REQUIRED)
find_package_wrapper(Libhicnctrl REQUIRED)
- set(FACEMGR facemgr)
- set(LIBFACEMGR facemgr)
else()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
set(HICN_LIBRARIES ${LIBHICN_STATIC} log)
diff --git a/ctrl/libhicnctrl/CMakeLists.txt b/ctrl/libhicnctrl/CMakeLists.txt
index 08441075b..d0a4bbef3 100644
--- a/ctrl/libhicnctrl/CMakeLists.txt
+++ b/ctrl/libhicnctrl/CMakeLists.txt
@@ -33,22 +33,29 @@ set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_MACOSX_RPATH ON)
+
+set(LIBHICNCTRL hicnctrl)
+
+if (BUILD_HICNPLUGIN AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+ set(LIBHICNCTRL ${LIBHICNCTRL}-memif PARENT_SCOPE)
+ set(LINK_FLAGS "-Wl,-unresolved-symbols=ignore-in-shared-libs")
+ list(APPEND HICN_LIBRARIES ${HICNPLUGIN_LIBRARIES})
+endif()
+
+set(LIBHICNCTRL ${LIBHICNCTRL} CACHE INTERNAL "" FORCE)
+set(LIBHICNCTRL_SHARED ${LIBHICNCTRL}.shared CACHE INTERNAL "" FORCE)
+set(LIBHICNCTRL_STATIC ${LIBHICNCTRL}.static CACHE INTERNAL "" FORCE)
+set(HICNCTRL hicnctrl CACHE INTERNAL "" FORCE)
+set(LIBHICNCTRL_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/includes CACHE INTERNAL "" FORCE)
+
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
- set(HICNCTRL hicnctrl)
- set(LIBHICNCTRL hicnctrl)
if (BUILD_HICNPLUGIN AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
- set(LIBHICNCTRL ${LIBHICNCTRL}-memif)
find_package_wrapper(HicnPlugin REQUIRED)
- list(APPEND HICN_LIBRARIES ${HICNPLUGIN_LIBRARIES})
- set(LINK_FLAGS "-Wl,-unresolved-symbols=ignore-in-shared-libs")
endif()
find_package_wrapper(Libhicn REQUIRED)
list(APPEND HICN_LIBRARIES ${LIBHICN_SHARED})
- set(LIBHICNCTRL_SHARED ${LIBHICNCTRL}.shared)
- set(LIBHICNCTRL_STATIC ${LIBHICNCTRL}.static)
-
set(HICN_INCLUDE_DIRS
${HICN_INCLUDE_DIRS}
${HICNPLUGIN_INCLUDE_DIRS})
@@ -60,12 +67,11 @@ else()
${LIBHICN_STATIC}
)
elseif (BUILD_HICNPLUGIN AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
- set(HICN_INCLUDE_DIRS
- ${HICN_INCLUDE_DIRS}
- ${HICNPLUGIN_INCLUDE_DIRS})
-
- set(HICN_LIBRARIES ${HICNPLUGIN_LIBRARIES})
- set(LINK_FLAGS "-Wl,-unresolved-symbols=ignore-in-shared-libs")
+ set(
+ HICN_INCLUDE_DIRS
+ ${HICN_INCLUDE_DIRS}
+ ${HICNPLUGIN_INCLUDE_DIRS}
+ )
list(APPEND DEPENDENCIES
hicn_plugin
diff --git a/ctrl/sysrepo-plugins/CMakeLists.txt b/ctrl/sysrepo-plugins/CMakeLists.txt
index d87319f06..1a9bca18c 100644
--- a/ctrl/sysrepo-plugins/CMakeLists.txt
+++ b/ctrl/sysrepo-plugins/CMakeLists.txt
@@ -26,30 +26,34 @@ include(BuildMacros)
find_package(PkgConfig REQUIRED)
find_package(Sysrepo REQUIRED)
+if (NOT "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
+ message(FATAL_ERROR "Sysrepo plugin supported only on Linux systems")
+endif()
+
if (NOT SRPD_PLUGINS_PATH)
- if (PKG_CONFIG_FOUND)
- execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} "--variable=SRPD_PLUGINS_PATH" "libsysrepo" OUTPUT_VARIABLE SRPD_PLUGINS_PATH)
- string(STRIP ${SRPD_PLUGINS_PATH} SRPD_PLUGINS_PATH)
- endif()
+ if (PKG_CONFIG_FOUND)
+ execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} "--variable=SRPD_PLUGINS_PATH" "libsysrepo" OUTPUT_VARIABLE SRPD_PLUGINS_PATH)
+ string(STRIP ${SRPD_PLUGINS_PATH} SRPD_PLUGINS_PATH)
+ endif()
endif()
+
if (NOT SRPD_PLUGINS_PATH)
- message(FATAL_ERROR "Cannot get sysrepo plugins directory due to missing pkg-config, set SRPD_PLUGINS_PATH manually.")
+ message(FATAL_ERROR "Cannot get sysrepo plugins directory due to missing pkg-config, set SRPD_PLUGINS_PATH manually.")
endif()
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
- find_package(Vpp REQUIRED)
- find_package(HicnPlugin REQUIRED)
- find_package(Libhicn REQUIRED)
- add_subdirectory(hicn-plugin)
+ find_package(Vpp REQUIRED)
+ find_package(HicnPlugin REQUIRED)
+ find_package(Libhicn REQUIRED)
else()
- if (BUILD_HICNPLUGIN AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
- list(APPEND DEPENDENCIES
- hicn_plugin)
- add_subdirectory(hicn-plugin)
- endif ()
+ list(APPEND DEPENDENCIES
+ ${LIBHICN_SHARED}
+ ${LIBHICN_STATIC}
+ hicn_plugin
+ )
endif()
-# add subdirectories
+add_subdirectory(hicn-plugin)
include(Packaging)
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
diff --git a/extras/CMakeLists.txt b/extras/CMakeLists.txt
new file mode 100644
index 000000000..71a598326
--- /dev/null
+++ b/extras/CMakeLists.txt
@@ -0,0 +1,33 @@
+# 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.
+
+cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
+
+project(extras)
+
+list(APPEND CMAKE_MODULE_PATH
+ ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/Modules
+)
+
+set (DESTDIR ${CMAKE_BINARY_DIR}/extras-root)
+
+add_subdirectory(router-plugin)
+add_subdirectory(libmemif)
+add_subdirectory(libyang)
+add_subdirectory(sysrepo)
+
+
+if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
+ include(Packager)
+ make_packages()
+endif() \ No newline at end of file
diff --git a/extras/libmemif/CMakeLists.txt b/extras/libmemif/CMakeLists.txt
index 3b2b87729..8d141510a 100644
--- a/extras/libmemif/CMakeLists.txt
+++ b/extras/libmemif/CMakeLists.txt
@@ -11,58 +11,34 @@
# 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 --depth 1 vpp;
- else
- pushd vpp && git pull && popd;
- fi"
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-)
+cmake_minimum_required(VERSION 3.5)
+project(libmemif)
-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}
+list(APPEND MODULE_PATH
+ ${CMAKE_MODULE_PATH}
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules
)
-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}
-)
+string(REPLACE ";" "|" MODULE_PATH "${MODULE_PATH}")
-execute_process(
- COMMAND
- ${CMAKE_COMMAND} -E
- copy ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists1.patch libmemif/CMakeLists.txt
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-)
+include(ExternalProject)
-execute_process(
- COMMAND ${CMAKE_COMMAND} -E
- copy ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists2.patch libmemif/memif/CMakeLists.txt
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ExternalProject_Add(libmemif
+ GIT_REPOSITORY https://github.com/FDio/vpp.git
+ GIT_TAG v19.08.1
+ GIT_SHALLOW TRUE
+ PREFIX ${CMAKE_CURRENT_BINARY_DIR}/libmemif
+ PATCH_COMMAND bash -c "cp ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists1.patch ./extras/libmemif/CMakeLists.txt && cp ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists2.patch ./extras/libmemif/src/CMakeLists.txt"
+ # Use the alternate list separator
+ # (https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#lists)
+ LIST_SEPARATOR |
+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_MODULE_PATH=${MODULE_PATH}
+ SOURCE_SUBDIR ./extras/libmemif
+ BUILD_COMMAND make package
+ INSTALL_COMMAND make DESTDIR=${DESTDIR} install
)
-include(Packaging)
-add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/libmemif ${CMAKE_CURRENT_BINARY_DIR}/libmemif) \ No newline at end of file
+if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
+ include(Packager)
+ make_packages()
+endif()
diff --git a/extras/libmemif/CMakeLists1.patch b/extras/libmemif/CMakeLists1.patch
index 012dc606c..91da8a7c9 100644
--- a/extras/libmemif/CMakeLists1.patch
+++ b/extras/libmemif/CMakeLists1.patch
@@ -16,7 +16,9 @@ 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")
+list(APPEND CMAKE_MODULE_PATH
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake
+)
include(CheckCCompilerFlag)
include(CheckFunctionExists)
@@ -62,4 +64,9 @@ set(LIBMEMIF_LIBRARIES
"" FORCE
)
-add_subdirectory(memif) \ No newline at end of file
+add_subdirectory(src)
+
+if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
+ include(Packager)
+ make_packages()
+endif() \ No newline at end of file
diff --git a/extras/libyang/CMakeLists.txt b/extras/libyang/CMakeLists.txt
index 734e14641..70218f643 100644
--- a/extras/libyang/CMakeLists.txt
+++ b/extras/libyang/CMakeLists.txt
@@ -10,35 +10,32 @@
# 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 2.8)
+cmake_minimum_required(VERSION 3.5)
project(libyang)
-set(CMAKE_MODULE_PATH
+list(APPEND MODULE_PATH
${CMAKE_MODULE_PATH}
- "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/Modules"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules"
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules
)
-include(ExternalProject)
-include(Packaging)
+string(REPLACE ";" "|" MODULE_PATH "${MODULE_PATH}")
-if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
- set(LIBYANG libyang)
-endif()
+include(ExternalProject)
-execute_process(
- COMMAND bash -c "if [ ! -d libyang ]; then
- git clone https://github.com/CESNET/libyang.git -b devel --depth 1 libyang;
- cd libyang; git apply ${CMAKE_CURRENT_SOURCE_DIR}/libyang.patch;
- else
- pushd libyang && git pull && popd;
- fi"
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ExternalProject_Add(libyang
+ GIT_REPOSITORY https://github.com/CESNET/libyang.git
+ GIT_TAG devel
+ GIT_SHALLOW TRUE
+ PREFIX ${CMAKE_CURRENT_BINARY_DIR}/libyang
+ PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/libyang.patch
+ # Use the alternate list separator
+ # (https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#lists)
+ LIST_SEPARATOR |
+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_MODULE_PATH=${MODULE_PATH}
+ BUILD_COMMAND make package
+ INSTALL_COMMAND make DESTDIR=${DESTDIR} install
)
-add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/libyang ${CMAKE_CURRENT_BINARY_DIR}/libyang)
-
-include(Packaging)
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
include(Packager)
make_packages()
diff --git a/extras/libyang/libyang.patch b/extras/libyang/libyang.patch
index b5e5c8858..ac6a63746 100644
--- a/extras/libyang/libyang.patch
+++ b/extras/libyang/libyang.patch
@@ -1,28 +1,16 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 19b7eb96..6567851f 100644
+index 3e0fe79..037d60b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -1,5 +1,11 @@
- cmake_minimum_required(VERSION 2.8.12)
-
-+set(CMAKE_MODULE_PATH
-+ ${CMAKE_MODULE_PATH}
-+ "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules"
-+)
-+
-+
- # force out-of-source build
- if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
- message(FATAL_ERROR "In-source build is not allowed. Please make a standalone build directory and run CMake from there. You may need to remove CMakeCache.txt.")
-@@ -306,14 +312,14 @@ find_package(PCRE REQUIRED)
+@@ -317,14 +317,14 @@ find_package(PCRE REQUIRED)
include_directories(${PCRE_INCLUDE_DIRS})
target_link_libraries(yang ${PCRE_LIBRARIES})
-
+
-install(TARGETS yang DESTINATION ${CMAKE_INSTALL_LIBDIR})
-install(FILES ${headers} ${PROJECT_BINARY_DIR}/src/libyang.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libyang)
+install(TARGETS yang DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libyang)
+install(FILES ${headers} ${PROJECT_BINARY_DIR}/src/libyang.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libyang COMPONENT libyang)
-
+
find_package(PkgConfig)
if(PKG_CONFIG_FOUND)
# generate and install pkg-config file
@@ -32,7 +20,7 @@ index 19b7eb96..6567851f 100644
# check that pkg-config includes the used path
execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --variable pc_path pkg-config RESULT_VARIABLE RETURN OUTPUT_VARIABLE PC_PATH ERROR_QUIET)
if(RETURN EQUAL 0)
-@@ -399,14 +405,14 @@ configure_file(${PROJECT_SOURCE_DIR}/src/plugin_config.h.in ${PROJECT_BINARY_DIR
+@@ -410,14 +410,14 @@ configure_file(${PROJECT_SOURCE_DIR}/src/plugin_config.h.in ${PROJECT_BINARY_DIR
# yanglint
add_executable(yanglint ${lintsrc})
target_link_libraries(yanglint yang)
@@ -40,7 +28,7 @@ index 19b7eb96..6567851f 100644
-install(FILES ${PROJECT_SOURCE_DIR}/tools/lint/yanglint.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
+install(TARGETS yanglint DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libyang)
+install(FILES ${PROJECT_SOURCE_DIR}/tools/lint/yanglint.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT libyang)
-
+
#yangre
add_executable(yangre ${resrc})
target_link_libraries(yangre yang)
@@ -48,43 +36,15 @@ index 19b7eb96..6567851f 100644
-install(FILES ${PROJECT_SOURCE_DIR}/tools/re/yangre.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
+install(TARGETS yangre DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT libyang)
+install(FILES ${PROJECT_SOURCE_DIR}/tools/re/yangre.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1 COMPONENT libyang)
-
+
# yang2yin
add_executable(yang2yin ${yang2yinsrc})
-@@ -435,3 +441,10 @@ endif(ENABLE_BUILD_FUZZ_TARGETS)
+@@ -446,3 +446,8 @@ endif(ENABLE_BUILD_FUZZ_TARGETS)
if(GEN_LANGUAGE_BINDINGS AND GEN_CPP_BINDINGS)
add_subdirectory(swig)
endif()
+
+
+include(Packaging)
-+if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
-+ include(Packager)
-+ make_packages()
-+endif()
-diff --git a/src/extensions/CMakeLists.txt b/src/extensions/CMakeLists.txt
-index e2c18b5e..48885302 100644
---- a/src/extensions/CMakeLists.txt
-+++ b/src/extensions/CMakeLists.txt
-@@ -2,7 +2,7 @@ macro(EXTENSION_PLUGIN PLUGIN_NAME SRCS)
- add_library(${PLUGIN_NAME} SHARED ${SRCS})
- set_target_properties(${PLUGIN_NAME} PROPERTIES PREFIX "")
- target_link_libraries(${PLUGIN_NAME} yang)
-- install(TARGETS ${PLUGIN_NAME} DESTINATION ${EXTENSIONS_PLUGINS_DIR_MACRO})
-+ install(TARGETS ${PLUGIN_NAME} DESTINATION ${EXTENSIONS_PLUGINS_DIR_MACRO} COMPONENT libyang)
- endmacro(EXTENSION_PLUGIN)
-
- foreach(EXTENSION ${EXTENSIONS_LIST})
-diff --git a/src/user_types/CMakeLists.txt b/src/user_types/CMakeLists.txt
-index 74aae322..e5f67bd7 100644
---- a/src/user_types/CMakeLists.txt
-+++ b/src/user_types/CMakeLists.txt
-@@ -2,7 +2,7 @@ macro(USER_TYPE_PLUGIN PLUGIN_NAME SRCS)
- add_library(${PLUGIN_NAME} SHARED ${SRCS})
- set_target_properties(${PLUGIN_NAME} PROPERTIES PREFIX "")
- target_link_libraries(${PLUGIN_NAME} yang)
-- install(TARGETS ${PLUGIN_NAME} DESTINATION ${USER_TYPES_PLUGINS_DIR_MACRO})
-+ install(TARGETS ${PLUGIN_NAME} DESTINATION ${USER_TYPES_PLUGINS_DIR_MACRO} COMPONENT libyang)
- endmacro(USER_TYPE_PLUGIN)
-
- foreach(USER_TYPE ${USER_TYPE_LIST})
++include(Packager)
++make_packages()
diff --git a/extras/hicn-extra-plugin/CMakeLists.txt b/extras/router-plugin/CMakeLists.txt
index 6147afa1b..bbff755d4 100644
--- a/extras/hicn-extra-plugin/CMakeLists.txt
+++ b/extras/router-plugin/CMakeLists.txt
@@ -12,7 +12,7 @@
# limitations under the License.
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
-project(extra-plugin)
+project(router-plugin)
include(GNUInstallDirs)
@@ -21,21 +21,11 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/"
)
-set (CMAKE_CXX_STANDARD 11)
set (CMAKE_C_STANDARD 11)
include (Packaging)
-# Check for memfd_create syscall
-include(CheckSymbolExists)
-CHECK_SYMBOL_EXISTS ( "__NR_memfd_create" "sys/syscall.h" HAVE_MEMFD_CREATE )
-if ( HAVE_MEMFD_CREATE )
- add_definitions ( -DHAVE_MEMFD_CREATE )
-endif()
-
-if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
- set(HICN_EXTRA_PLUGIN extra-plugin)
-endif()
+set(HICN_EXTRA_PLUGIN hicn-router-plugin)
# Dependencies
@@ -84,7 +74,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DEXTRA_VPP_PLUGIN=1")
-add_library(hicn_extra_plugin SHARED
+add_library(hicn_router_plugin SHARED
${HICN_EXTRA_PLUGIN_SOURCE_FILES}
)
@@ -92,7 +82,7 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins)
set(VPP_INSTALL_PLUGIN ${EXTRA_INSTALL_PREFIX}/vpp_plugins)
-set_target_properties(hicn_extra_plugin
+set_target_properties(hicn_router_plugin
PROPERTIES
LINKER_LANGUAGE C
INSTALL_RPATH ${VPP_INSTALL_PLUGIN}
@@ -105,7 +95,7 @@ install(DIRECTORY
COMPONENT ${HICN_EXTRA_PLUGIN}
)
-install(TARGETS hicn_extra_plugin
+install(TARGETS hicn_router_plugin
DESTINATION
${VPP_INSTALL_PLUGIN}
COMPONENT ${HICN_EXTRA_PLUGIN}
diff --git a/extras/hicn-extra-plugin/README.md b/extras/router-plugin/README.md
index 40363ef18..40363ef18 100644
--- a/extras/hicn-extra-plugin/README.md
+++ b/extras/router-plugin/README.md
diff --git a/extras/hicn-extra-plugin/cmake/Modules/Packaging.cmake b/extras/router-plugin/cmake/Modules/Packaging.cmake
index 69f63971f..69f63971f 100644
--- a/extras/hicn-extra-plugin/cmake/Modules/Packaging.cmake
+++ b/extras/router-plugin/cmake/Modules/Packaging.cmake
diff --git a/extras/hicn-extra-plugin/devices/rtnetlink/mapper.c b/extras/router-plugin/devices/rtnetlink/mapper.c
index ed4fa5634..ed4fa5634 100644
--- a/extras/hicn-extra-plugin/devices/rtnetlink/mapper.c
+++ b/extras/router-plugin/devices/rtnetlink/mapper.c
diff --git a/extras/hicn-extra-plugin/devices/rtnetlink/mapper.h b/extras/router-plugin/devices/rtnetlink/mapper.h
index 32e95d48f..32e95d48f 100644
--- a/extras/hicn-extra-plugin/devices/rtnetlink/mapper.h
+++ b/extras/router-plugin/devices/rtnetlink/mapper.h
diff --git a/extras/hicn-extra-plugin/devices/rtnetlink/netns.c b/extras/router-plugin/devices/rtnetlink/netns.c
index 19adb469a..19adb469a 100644
--- a/extras/hicn-extra-plugin/devices/rtnetlink/netns.c
+++ b/extras/router-plugin/devices/rtnetlink/netns.c
diff --git a/extras/hicn-extra-plugin/devices/rtnetlink/netns.h b/extras/router-plugin/devices/rtnetlink/netns.h
index 53effe5ce..53effe5ce 100644
--- a/extras/hicn-extra-plugin/devices/rtnetlink/netns.h
+++ b/extras/router-plugin/devices/rtnetlink/netns.h
diff --git a/extras/hicn-extra-plugin/devices/rtnetlink/rtnl.c b/extras/router-plugin/devices/rtnetlink/rtnl.c
index ed3db9e72..ed3db9e72 100644
--- a/extras/hicn-extra-plugin/devices/rtnetlink/rtnl.c
+++ b/extras/router-plugin/devices/rtnetlink/rtnl.c
diff --git a/extras/hicn-extra-plugin/devices/rtnetlink/rtnl.h b/extras/router-plugin/devices/rtnetlink/rtnl.h
index 3f96252c1..3f96252c1 100644
--- a/extras/hicn-extra-plugin/devices/rtnetlink/rtnl.h
+++ b/extras/router-plugin/devices/rtnetlink/rtnl.h
diff --git a/extras/hicn-extra-plugin/devices/rtnetlink/test.c b/extras/router-plugin/devices/rtnetlink/test.c
index 031748dd3..031748dd3 100644
--- a/extras/hicn-extra-plugin/devices/rtnetlink/test.c
+++ b/extras/router-plugin/devices/rtnetlink/test.c
diff --git a/extras/hicn-extra-plugin/rtinject/tap_inject.c b/extras/router-plugin/rtinject/tap_inject.c
index f41ae86c8..f41ae86c8 100644
--- a/extras/hicn-extra-plugin/rtinject/tap_inject.c
+++ b/extras/router-plugin/rtinject/tap_inject.c
diff --git a/extras/hicn-extra-plugin/rtinject/tap_inject.h b/extras/router-plugin/rtinject/tap_inject.h
index ec5121a09..ec5121a09 100644
--- a/extras/hicn-extra-plugin/rtinject/tap_inject.h
+++ b/extras/router-plugin/rtinject/tap_inject.h
diff --git a/extras/hicn-extra-plugin/rtinject/tap_inject_netlink.c b/extras/router-plugin/rtinject/tap_inject_netlink.c
index a221e8eaa..a221e8eaa 100644
--- a/extras/hicn-extra-plugin/rtinject/tap_inject_netlink.c
+++ b/extras/router-plugin/rtinject/tap_inject_netlink.c
diff --git a/extras/hicn-extra-plugin/rtinject/tap_inject_node.c b/extras/router-plugin/rtinject/tap_inject_node.c
index 73c296451..73c296451 100644
--- a/extras/hicn-extra-plugin/rtinject/tap_inject_node.c
+++ b/extras/router-plugin/rtinject/tap_inject_node.c
diff --git a/extras/hicn-extra-plugin/rtinject/tap_inject_tap.c b/extras/router-plugin/rtinject/tap_inject_tap.c
index a3ec9ffef..a3ec9ffef 100644
--- a/extras/hicn-extra-plugin/rtinject/tap_inject_tap.c
+++ b/extras/router-plugin/rtinject/tap_inject_tap.c
diff --git a/extras/sysrepo/CMakeLists.txt b/extras/sysrepo/CMakeLists.txt
index 071c7f5bd..c4b74e07b 100644
--- a/extras/sysrepo/CMakeLists.txt
+++ b/extras/sysrepo/CMakeLists.txt
@@ -10,37 +10,33 @@
# 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 2.8)
+cmake_minimum_required(VERSION 3.5)
project(sysrepo)
-set(CMAKE_MODULE_PATH
+list(APPEND MODULE_PATH
${CMAKE_MODULE_PATH}
- "${CMAKE_CURRENT_SOURCE_DIR}/../../cmake/Modules"
- "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules"
+ ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules
)
-include(ExternalProject)
-include(Packaging)
+string(REPLACE ";" "|" MODULE_PATH "${MODULE_PATH}")
-if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
- set(SYSREPO sysrepo)
-endif()
+include(ExternalProject)
-execute_process(
- COMMAND bash -c "if [ ! -d sysrepo ]; then
- git clone https://github.com/sysrepo/sysrepo.git -b devel --depth 1 sysrepo;
- cd sysrepo; git apply ${CMAKE_CURRENT_SOURCE_DIR}/sysrepo.patch;
- else
- pushd sysrepo && git pull && popd;
- fi"
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ExternalProject_Add(sysrepo
+ GIT_REPOSITORY https://github.com/sysrepo/sysrepo.git
+ GIT_TAG devel
+ GIT_SHALLOW TRUE
+ DEPENDS libyang
+ PREFIX ${CMAKE_CURRENT_BINARY_DIR}/sysrepo
+ PATCH_COMMAND git apply ${CMAKE_CURRENT_SOURCE_DIR}/sysrepo.patch
+ # Use the alternate list separator
+ # (https://cmake.org/cmake/help/latest/manual/cmake-language.7.html#lists)
+ LIST_SEPARATOR |
+ CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_MODULE_PATH=${MODULE_PATH} -DBUILD_EXAMPLES=OFF -DCMAKE_PREFIX_PATH=${DESTDIR}/usr
+ BUILD_COMMAND make package
+ INSTALL_COMMAND make DESTDIR=${DESTDIR} install
)
-add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/sysrepo ${CMAKE_CURRENT_BINARY_DIR}/sysrepo)
-
-
-include(Packaging)
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
include(Packager)
make_packages()
diff --git a/extras/sysrepo/sysrepo.patch b/extras/sysrepo/sysrepo.patch
index 3412c5e17..ef3fa510d 100644
--- a/extras/sysrepo/sysrepo.patch
+++ b/extras/sysrepo/sysrepo.patch
@@ -14,6 +14,15 @@ index 181387b0..356bf32c 100644
# osx specific
set(CMAKE_MACOSX_RPATH TRUE)
+@@ -81,7 +86,7 @@ endif()
+ option(GEN_LANGUAGE_BINDINGS "Enable library bindings for different languages." OFF)
+
+ option(GEN_CPP_BINDINGS "Enable C++ bindings." ON)
+-option(BUILD_CPP_EXAMPLES "Enable C++ example application compilation." ON)
++option(BUILD_CPP_EXAMPLES "Enable C++ example application compilation." OFF)
+
+ option(GEN_PYTHON_BINDINGS "Enable Python bindings." ON)
+ option(ENABLE_PYTHON_TESTS "Enable Python tests." ON)
@@ -206,13 +211,13 @@ add_executable(sysrepo-plugind ${SYSREPOPLUGIND_SRC})
target_link_libraries(sysrepo-plugind sysrepo dl)
diff --git a/hicn-light/CMakeLists.txt b/hicn-light/CMakeLists.txt
index 14a7b9710..41eeb5d84 100644
--- a/hicn-light/CMakeLists.txt
+++ b/hicn-light/CMakeLists.txt
@@ -52,11 +52,12 @@ include(WindowsMacros)
find_package_wrapper(Libparc REQUIRED)
+set(HICN_LIGHT hicn-light CACHE INTERNAL "" FORCE)
+set(HICN_LIGHT_CONTROL ${HICN_LIGHT}-control CACHE INTERNAL "" FORCE)
+set(HICN_LIGHT_DAEMON ${HICN_LIGHT}-daemon CACHE INTERNAL "" FORCE)
+
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
find_package_wrapper(Libhicn REQUIRED)
- set(HICN_LIGHT hicn-light)
- set(HICN_LIGHT_CONTROL ${HICN_LIGHT}-control)
- set(HICN_LIGHT_DAEMON ${HICN_LIGHT}-daemon)
else()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
set(HICN_LIBRARIES ${LIBHICN_STATIC} log)
diff --git a/hicn-plugin/CMakeLists.txt b/hicn-plugin/CMakeLists.txt
index e0b06663f..01ac26c7c 100644
--- a/hicn-plugin/CMakeLists.txt
+++ b/hicn-plugin/CMakeLists.txt
@@ -31,9 +31,7 @@ if ( HAVE_MEMFD_CREATE )
add_definitions ( -DHAVE_MEMFD_CREATE )
endif()
-if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
- set(HICN_PLUGIN hicn-plugin)
-endif()
+set(HICN_PLUGIN hicn-plugin CACHE INTERNAL "" FORCE)
include (Packaging)
@@ -314,5 +312,6 @@ install(FILES ${HICN_VAPI_GENERATED_FILES}
#Set variables for other project depending on hicn-plugin
set(HICNPLUGIN_INCLUDE_DIRS
${CMAKE_CURRENT_BINARY_DIR}
- ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins PARENT_SCOPE)
-set(HICNPLUGIN_LIBRARIES ${VPP_LIBRARIES} PARENT_SCOPE) \ No newline at end of file
+ ${CMAKE_CURRENT_BINARY_DIR}/vpp_plugins
+ CACHE INTERNAL "" FORCE)
+set(HICNPLUGIN_LIBRARIES ${VPP_LIBRARIES} CACHE INTERNAL "" FORCE) \ No newline at end of file
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 4df09c0dd..3cc40bb7f 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -26,10 +26,10 @@ if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
endif()
-if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
- set(LIBHICN hicn)
- set(LIBHICN_STATIC ${LIBHICN}.static)
-endif()
+set(LIBHICN hicn CACHE INTERNAL "" FORCE)
+set(LIBHICN_SHARED ${LIBHICN}.shared CACHE INTERNAL "" FORCE)
+set(LIBHICN_STATIC ${LIBHICN}.static CACHE INTERNAL "" FORCE)
+set(HICN_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/includes CACHE INTERNAL "" FORCE)
include (Packaging)
diff --git a/libtransport/CMakeLists.txt b/libtransport/CMakeLists.txt
index 690b86cd8..cc302d09a 100644
--- a/libtransport/CMakeLists.txt
+++ b/libtransport/CMakeLists.txt
@@ -55,8 +55,10 @@ set(TRANSPORT_INTERFACES ${TRANSPORT_ROOT_PATH}/interfaces)
# Install includes
set(INSTALL_INCLUDE_DIR include/hicn/transport)
+set(LIBTRANSPORT hicntransport)
if ((BUILD_HICNPLUGIN OR BUILD_MEMIF_CONNECTOR) AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
set(__vpp__ 1)
+ set(LIBTRANSPORT ${LIBTRANSPORT}-memif)
find_package(Vpp REQUIRED)
list(APPEND LIBTRANSPORT_INTERNAL_INCLUDE_DIRS
@@ -64,18 +66,24 @@ if ((BUILD_HICNPLUGIN OR BUILD_MEMIF_CONNECTOR) AND "${CMAKE_SYSTEM_NAME}" STREQ
)
endif ()
+set(LIBTRANSPORT ${LIBTRANSPORT} CACHE INTERNAL "" FORCE)
+set(LIBTRANSPORT_SHARED ${LIBTRANSPORT}.shared CACHE INTERNAL "" FORCE)
+set(LIBTRANSPORT_STATIC ${LIBTRANSPORT}.static CACHE INTERNAL "" FORCE)
+set(LIBTRANSPORT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src CACHE INTERNAL "" FORCE)
+
include(WindowsMacros)
include(IosMacros)
find_package_wrapper(Libparc REQUIRED)
find_package_wrapper(Asio REQUIRED)
+if (__vpp__)
+ find_package(Libmemif REQUIRED)
+endif()
+
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
- set(LIBTRANSPORT hicntransport)
if (__vpp__)
find_package(HicnPlugin REQUIRED)
- find_package(Libmemif REQUIRED)
find_package(Libhicnctrl REQUIRED)
- set(LIBTRANSPORT ${LIBTRANSPORT}-memif)
list(APPEND LIBRARIES
${LIBMEMIF_LIBRARIES}
@@ -84,9 +92,6 @@ if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
endif()
find_package_wrapper(Libhicn REQUIRED)
-
- set(LIBTRANSPORT_SHARED ${LIBTRANSPORT}.shared)
- set(LIBTRANSPORT_STATIC ${LIBTRANSPORT}.static)
else()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
set(HICN_LIBRARIES ${LIBHICN_STATIC} log)
@@ -105,12 +110,6 @@ else()
${LIBHICNCTRL_SHARED}
)
- if (NOT Libmemif_FOUND)
- list(APPEND DEPENDENCIES
- ${LIBMEMIF_SHARED}
- )
- endif()
-
set(LIBHICNCTRL_LIBRARIES ${LIBHICNCTRL_SHARED})
list(APPEND LIBRARIES
${LIBMEMIF_LIBRARIES}
@@ -121,6 +120,7 @@ endif()
list(APPEND LIBTRANSPORT_INTERNAL_INCLUDE_DIRS
${LIBMEMIF_INCLUDE_DIRS}
+ ${LIBHICNCTRL_INCLUSE_DIRS}
)
include(Packaging)
diff --git a/scripts/build-sysrepo.sh b/scripts/build-extras.sh
index e51b25f4a..17e443890 100644
--- a/scripts/build-sysrepo.sh
+++ b/scripts/build-extras.sh
@@ -18,7 +18,6 @@ SCRIPT_PATH=$( cd "$(dirname "${BASH_SOURCE}")" ; pwd -P )
APT_PATH=`which apt-get` || true
apt_get=${APT_PATH:-"/usr/local/bin/apt-get"}
-
PACKAGECLOUD_RELEASE_REPO_DEB="https://packagecloud.io/install/repositories/fdio/release/script.deb.sh"
PACKAGECLOUD_RELEASE_REPO_RPM="https://packagecloud.io/install/repositories/fdio/release/script.rpm.sh"
@@ -30,10 +29,18 @@ VPP_VERSION_RPM="19.08.1-release.x86_64"
BUILD_TOOLS_UBUNTU="build-essential doxygen"
LIBSSL_LIBEVENT_UBUNTU="libevent-dev libssl-dev"
-DEPS_UBUNTU="hicn-light libhicn-dev libhicnctrl libhicnctrl-dev hicn-plugin hicn-plugin-dev libvppinfra=${VPP_VERSION_DEB} libvppinfra-dev=${VPP_VERSION_DEB} vpp=${VPP_VERSION_DEB} vpp-dev=${VPP_VERSION_DEB} vpp-plugin-core=${VPP_VERSION_DEB}"
+DEPS_UBUNTU="libvppinfra=${VPP_VERSION_DEB} \
+ libvppinfra-dev=${VPP_VERSION_DEB} \
+ vpp=${VPP_VERSION_DEB} \
+ vpp-dev=${VPP_VERSION_DEB} \
+ vpp-plugin-core=${VPP_VERSION_DEB}"
# BUILD_TOOLS_GROUP_CENTOS="'Development Tools'"
-DEPS_CENTOS="vpp-devel-${VPP_VERSION_RPM} vpp-lib-${VPP_VERSION_RPM} libparc-devel asio-devel centos-release-scl devtoolset-7"
+DEPS_CENTOS="vpp-devel-${VPP_VERSION_RPM} \
+ vpp-lib-${VPP_VERSION_RPM} \
+ centos-release-scl \
+ devtoolset-7"
+
LATEST_EPEL_REPO="http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm"
install_cmake() {
@@ -47,7 +54,6 @@ install_cmake() {
CMAKE_INSTALL_SCRIPT="/tmp/install_cmake.sh"
curl ${CMAKE_INSTALL_SCRIPT_URL} > ${CMAKE_INSTALL_SCRIPT}
-
sudo mkdir -p /opt/cmake
sudo bash ${CMAKE_INSTALL_SCRIPT} --skip-license --prefix=/opt/cmake
export PATH=/opt/cmake/bin:${PATH}
@@ -73,7 +79,7 @@ setup_fdio_repo() {
fi
}
- setup() {
+setup() {
# Figure out what system we are running on
if [ -f /etc/os-release ]; then
. /etc/os-release
@@ -132,26 +138,22 @@ build_package() {
mkdir -p build && pushd build
rm -rf *
- cmake -DCMAKE_INSTALL_PREFIX=/usr ${SCRIPT_PATH}/../extras/libyang
- make install
+ cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_LIBHICN=OFF \
+ -DBUILD_UTILS=OFF \
+ -DBUILD_HICNPLUGIN=OFF \
+ -DBUILD_HICNLIGHT=OFF \
+ -DBUILD_LIBTRANSPORT=OFF \
+ -DBUILD_APPS=OFF \
+ -DBUILD_CTRL=OFF \
+ -DBUILD_SYSREPOPLUGIN=OFF \
+ -DBUILD_EXTRAS=ON \
+ ${SCRIPT_PATH}/..
make package
- find . -not -name '*.deb' -not -name '*.rpm' -print0 | xargs -0 rm -rf -- || true
+ find . -type d -iname '_CPack_Packages' -print0 | xargs -0 rm -rf -- || true
rm *Unspecified* || true
- cmake -DCMAKE_INSTALL_PREFIX=/usr ${SCRIPT_PATH}/../extras/sysrepo
- make install
- make package
-
- find . -not -name '*.deb' -not -name '*.rpm' -print0 | xargs -0 rm -rf -- || true
- rm *Unspecified* || true
-
- cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_HICNPLUGIN=ON -DBUILD_HICNLIGHT=OFF \
- -DBUILD_LIBTRANSPORT=OFF -DBUILD_UTILS=OFF -DBUILD_CTRL=OFF \
- -DBUILD_SYSREPOPLUGIN=ON ${SCRIPT_PATH}/..
- make install
- make package
-
popd
echo "*******************************************************************"
diff --git a/scripts/build-packages.sh b/scripts/build-packages.sh
index 76aa7b389..2205d6277 100644
--- a/scripts/build-packages.sh
+++ b/scripts/build-packages.sh
@@ -29,12 +29,43 @@ VPP_VERSION_RPM="19.08.1-release.x86_64"
BUILD_TOOLS_UBUNTU="build-essential doxygen"
LIBSSL_LIBEVENT_UBUNTU="libevent-dev libssl-dev"
-DEPS_UBUNTU="libparc-dev libasio-dev libconfig-dev libcurl4-openssl-dev vpp=${VPP_VERSION_DEB} vpp-dev=${VPP_VERSION_DEB} libvppinfra=${VPP_VERSION_DEB} libvppinfra-dev=${VPP_VERSION_DEB} vpp-plugin-core=${VPP_VERSION_DEB} python3-ply"
+DEPS_UBUNTU="libparc-dev \
+ libmemif-dev \
+ libmemif \
+ libasio-dev \
+ libconfig-dev \
+ libcurl4-openssl-dev \
+ vpp=${VPP_VERSION_DEB} \
+ vpp-dev=${VPP_VERSION_DEB} \
+ libvppinfra=${VPP_VERSION_DEB} \
+ libvppinfra-dev=${VPP_VERSION_DEB} \
+ vpp-plugin-core=${VPP_VERSION_DEB} \
+ python3-ply"
+
DEPS_CMAKE_UBUNTU="curl"
# BUILD_TOOLS_GROUP_CENTOS="'Development Tools'"
-DEPS_CENTOS="vpp-devel-${VPP_VERSION_RPM} vpp-lib-${VPP_VERSION_RPM} libparc-devel libcurl-devel asio-devel libconfig-devel centos-release-scl devtoolset-7"
-DEPS_CENTOS_NOVERSION="vpp-devel vpp-lib libparc-devel libcurl-devel asio-devel centos-release-scl devtoolset-7"
+DEPS_CENTOS="vpp-devel-${VPP_VERSION_RPM} \
+ vpp-lib-${VPP_VERSION_RPM} \
+ libparc-devel \
+ libmemif-devel \
+ libmemif \
+ libcurl-devel \
+ asio-devel \
+ libconfig-devel \
+ centos-release-scl \
+ devtoolset-7"
+
+DEPS_CENTOS_NOVERSION="vpp-devel \
+ vpp-lib \
+ libparc-devel \
+ libcurl-devel \
+ asio-devel \
+ libmemif-devel \
+ libmemif \
+ centos-release-scl \
+ devtoolset-7"
+
LATEST_EPEL_REPO="http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm"
install_cmake() {
@@ -143,11 +174,10 @@ build_package() {
cmake -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_APPS=ON ${SCRIPT_PATH}/..
make -j8 package
- rm -rf libtransport
+ rm -rf libtransport ctrl/libctrl
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_HICNPLUGIN=ON \
- -DBUILD_HICNEXTRAPLUGIN=ON \
-DBUILD_LIBTRANSPORT=ON \
-DBUILD_APPS=ON \
${SCRIPT_PATH}/..
diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt
index 0e5430356..3216582c2 100644
--- a/utils/CMakeLists.txt
+++ b/utils/CMakeLists.txt
@@ -30,9 +30,10 @@ endif ()
include(BuildMacros)
include(WindowsMacros)
+set(HICN_UTILS hicn-utils CACHE INTERNAL "" FORCE)
+
if(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
find_package(Libtransport REQUIRED)
- set(HICN_UTILS hicn-utils)
else()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Android")
set(LIBTRANSPORT_LIBRARIES ${LIBTRANSPORT_STATIC})
@@ -45,6 +46,7 @@ else()
endif()
set(SUFFIX "")
+message("~~~~~~~~~~~~~~~~~~~~~~> ${LIBTRANSPORT_LIBRARIES}")
if (${LIBTRANSPORT_LIBRARIES} MATCHES ".*-memif.*")
set(SUFFIX "-memif")
set(LINK_FLAGS "-Wl,-unresolved-symbols=ignore-in-shared-libs")