summaryrefslogtreecommitdiffstats
path: root/extras/libyang
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 /extras/libyang
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>
Diffstat (limited to 'extras/libyang')
-rw-r--r--extras/libyang/CMakeLists.txt37
-rw-r--r--extras/libyang/libyang.patch60
2 files changed, 27 insertions, 70 deletions
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()