From 0c455f30c8e9f0970009bd19013ab7712faf2e8f Mon Sep 17 00:00:00 2001 From: Parth Shitole Date: Wed, 23 Oct 2024 20:10:40 +0530 Subject: [PATCH] Macro converted to a function and placed in P4CUtils - The Previous implementation of a macro is now converted to a function and placed in the P4CUtils.cmake file - Other minor changes are made to improve the functionality. Signed-off-by: Parth Shitole --- CMakeLists.txt | 26 -------------------------- backends/ebpf/CMakeLists.txt | 10 ++++------ cmake/P4CUtils.cmake | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b9a6341cd49..981722f0ca9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -282,32 +282,6 @@ endif() # enable CTest enable_testing () -# Macro to check dependencies before adding tests - -macro(CHECK_DEPENDENCIES TEST_DEPENDENCY_PROGRAMS TEST_DEPENDENCY_LIBRARIES) - foreach(PROG ${TEST_DEPENDENCY_PROGRAMS}) - find_program(${PROG}_FOUND ${PROG}) - if (${PROG}_FOUND) - message(STATUS "Found program ${PROG} at ${${PROG}_FOUND}") - else() - message(WARNING "Missing program ${PROG}, disabling relevant tests." - " Please install ${PROG} and ensure it is in your PATH.") - set(TEST_DEPENDENCY_PRESENT FALSE) - endif() - endforeach() - - foreach(LIB ${TEST_DEPENDENCY_LIBRARIES}) - find_library(${LIB}_FOUND ${LIB} HINTS "${CMAKE_CURRENT_SOURCE_DIR}/runtime/usr/lib64/") - if (${LIB}_FOUND) - message(STATUS "Found library ${LIB} at ${${LIB}_FOUND}") - else() - message(WARNING "Missing library ${LIB}, disabling relevant tests." - " Please install ${LIB}.") - set(TEST_DEPENDENCY_PRESENT FALSE) - endif() - endforeach() -endmacro() - # if we want to manage versions in CMake ... # include (cmake/P4CVersion.cmake) # set (CPACK_PACKAGE_VERSION_MAJOR ${__P4C_VERSION_MAJOR}) diff --git a/backends/ebpf/CMakeLists.txt b/backends/ebpf/CMakeLists.txt index fbe0da20b64..b1154c7e624 100644 --- a/backends/ebpf/CMakeLists.txt +++ b/backends/ebpf/CMakeLists.txt @@ -222,14 +222,12 @@ else() endif() # List of executable dependencies -set(TEST_DEPENDENCY_PROGRAMS scapy tcpdump pcap) +set(TEST_DEPENDENCY_PROGRAMS tcpdump) # List of library dependencies -set(TEST_DEPENDENCY_LIBRARIES libpcap-dev gcc-multilib) +set(TEST_DEPENDENCY_LIBRARIES libpcap-dev gcc-multilib scapy) -set(TEST_DEPENDENCY_PRESENT TRUE) - -CHECK_DEPENDENCIES("${TEST_DEPENDENCY_PROGRAMS}" "${TEST_DEPENDENCY_LIBRARIES}") +CHECK_DEPENDENCIES(TEST_DEPENDENCY_PRESENT "${TEST_DEPENDENCY_PROGRAMS}" "${TEST_DEPENDENCY_LIBRARIES}") # check for the libbpf library find_library(LIBBPF NAMES bpf HINTS "${CMAKE_CURRENT_SOURCE_DIR}/runtime/usr/lib64/") @@ -264,7 +262,7 @@ if(TEST_DEPENDENCY_PRESENT) # We do not have support for dynamic addition of tables in the test framework p4c_add_test_with_args("ebpf" ${EBPF_DRIVER_TEST} TRUE "testdata/p4_16_samples/ebpf_conntrack_extern.p4" "testdata/p4_16_samples/ebpf_conntrack_extern.p4" "--extern-file ${P4C_SOURCE_DIR}/testdata/extern_modules/extern-conntrack-ebpf.c" "") else() - message(WARNING "Skipped adding Tests due to missing dependencies. Please install the dependencies and try again") + message(WARNING "Skipped adding Tests due to missing dependencies" "Please install the dependencies and try again") endif() message(STATUS "Done with configuring BPF back end") diff --git a/cmake/P4CUtils.cmake b/cmake/P4CUtils.cmake index 509c90f7b16..944e1b8b7e3 100644 --- a/cmake/P4CUtils.cmake +++ b/cmake/P4CUtils.cmake @@ -420,3 +420,36 @@ function(get_all_targets _result _dir) get_directory_property(_sub_targets DIRECTORY "${_dir}" BUILDSYSTEM_TARGETS) set(${_result} ${${_result}} ${_sub_targets} PARENT_SCOPE) endfunction() + +# Checks for presence of programs and dependencies +function(CHECK_DEPENDENCIES OUT_VAR TEST_DEPENDENCY_PROGRAMS TEST_DEPENDENCY_LIBRARIES) + set(ALL_FOUND TRUE) + + foreach(PROG ${TEST_DEPENDENCY_PROGRAMS}) + find_program(PROG_PATH ${PROG}) + if (NOT PROG_PATH) + message(WARNING "Missing program ${PROG}." + " Please install ${PROG} and ensure it is in your PATH.") + set(ALL_FOUND FALSE) + else() + message(STATUS "Found program ${PROG} at ${PROG_PATH}") + endif() + endforeach() + + foreach(LIB ${TEST_DEPENDENCY_LIBRARIES}) + find_library(LIB_PATH ${LIB} HINTS "${CMAKE_CURRENT_SOURCE_DIR}/runtime/usr/lib64/") + if (NOT LIB_PATH) + message(WARNING "Missing library ${LIB}." + " Please install ${LIB}.") + set(ALL_FOUND FALSE) + else() + message(STATUS "Found library ${LIB} at ${LIB_PATH}") + endif() + endforeach() + + if (ALL_FOUND) + set(${OUT_VAR} TRUE PARENT_SCOPE) + else() + set(${OUT_VAR} FALSE PARENT_SCOPE) + endif() +endfunction() \ No newline at end of file