diff options
-rw-r--r-- | .github/workflows/build.yml | 23 | ||||
-rw-r--r-- | CMakeLists.txt | 14 |
2 files changed, 32 insertions, 5 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d20042a6c..42c18d405 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,6 +33,7 @@ jobs: os: "ubuntu-latest" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "-DBUILD_RUST_EXAMPLES=ON" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -46,6 +47,7 @@ jobs: os: "ubuntu-latest" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=ON" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "-DNDPI_WITH_MAXMINDDB=ON -DNDPI_WITH_PCRE=ON -DENABLE_MEMORY_PROFILING=ON" @@ -59,6 +61,7 @@ jobs: os: "ubuntu-latest" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=OFF" ndpid_extras: "" @@ -72,6 +75,7 @@ jobs: os: "ubuntu-latest" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -84,6 +88,7 @@ jobs: os: "ubuntu-latest" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -96,6 +101,7 @@ jobs: os: "ubuntu-22.04" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -108,6 +114,7 @@ jobs: os: "ubuntu-22.04" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=OFF" ndpid_extras: "" @@ -120,6 +127,7 @@ jobs: os: "ubuntu-22.04" ndpi_build: "-DBUILD_NDPI=ON" ndpid_examples: "-DBUILD_EXAMPLES=ON" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -132,6 +140,7 @@ jobs: os: "macOS-13" ndpi_build: "-DBUILD_NDPI=OFF" ndpid_examples: "-DBUILD_EXAMPLES=OFF" + ndpid_rust_examples: "" ndpid_gcrypt: "-DNDPI_WITH_GCRYPT=OFF" ndpid_zlib: "-DENABLE_ZLIB=ON" ndpid_extras: "" @@ -191,6 +200,10 @@ jobs: sudo apt-get update sudo apt-get install autoconf automake cmake libtool pkg-config gettext libjson-c-dev flex bison libpcap-dev zlib1g-dev libcurl4-openssl-dev libdbus-1-dev sudo apt-get install ${{ matrix.compiler }} lcov iproute2 + - name: Install Ubuntu Prerequisites (Rust/Cargo) + if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.ndpid_rust_examples, '-DBUILD_RUST_EXAMPLES=ON') + run: | + sudo apt-get install cargo - name: Install Ubuntu Prerequisites (libgcrypt) if: startsWith(matrix.os, 'ubuntu') && startsWith(matrix.ndpid_gcrypt, '-DNDPI_WITH_GCRYPT=ON') run: | @@ -217,7 +230,7 @@ jobs: cmake -S . -B build -DCMAKE_C_COMPILER="$CMAKE_C_COMPILER" -DCMAKE_C_FLAGS="$CMAKE_C_FLAGS" -DCMAKE_MODULE_LINKER_FLAGS="$CMAKE_MODULE_LINKER_FLAGS" -DCMAKE_C_EXE_LINKER_FLAGS="$CMAKE_C_EXE_LINKER_FLAGS" \ -DENABLE_DBUS=ON -DENABLE_CURL=ON -DENABLE_SYSTEMD=ON \ ${{ matrix.poll }} ${{ matrix.coverage }} ${{ matrix.sanitizer }} ${{ matrix.ndpi_build }} \ - ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_zlib }} ${{ matrix.ndpid_gcrypt }} ${{ matrix.ndpid_extras }} + ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_rust_examples }} ${{ matrix.ndpid_zlib }} ${{ matrix.ndpid_gcrypt }} ${{ matrix.ndpid_extras }} - name: Build nDPId run: | cmake --build build --verbose @@ -276,7 +289,7 @@ jobs: cmake -S . -B ./build \ -DENABLE_DBUS=ON -DENABLE_CURL=ON -DENABLE_SYSTEMD=ON \ ${{ matrix.poll }} ${{ matrix.coverage }} ${{ matrix.sanitizer }} ${{ matrix.ndpi_build }} \ - ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_zlib }} ${{ matrix.ndpid_gcrypt }} ${{ matrix.ndpid_extras }} + ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_rust_examples }} ${{ matrix.ndpid_zlib }} ${{ matrix.ndpid_gcrypt }} ${{ matrix.ndpid_extras }} cd ../.. rm -rf "nDPId-dist-${RAND_ID}" - name: CPack DEB @@ -351,7 +364,7 @@ jobs: -DBUILD_NDPI=OFF -DBUILD_EXAMPLES=ON \ -DENABLE_DBUS=ON -DENABLE_CURL=ON -DENABLE_SYSTEMD=ON \ ${{ matrix.poll }} ${{ matrix.coverage }} \ - ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }}; } + ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_rust_examples }}; } test $WGET_RET -ne 0 || { echo "Running Make.. (pkgconfig)"; \ cmake --build ./build-local-pkgconfig --verbose; } test $WGET_RET -ne 0 || { echo "Testing Executable.. (pkgconfig)"; \ @@ -366,7 +379,7 @@ jobs: -DENABLE_DBUS=ON -DENABLE_CURL=ON -DENABLE_SYSTEMD=ON \ -DNDPI_NO_PKGCONFIG=ON -DSTATIC_LIBNDPI_INSTALLDIR=/usr \ ${{ matrix.poll }} ${{ matrix.coverage }} ${{ matrix.ndpid_gcrypt }} \ - ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }}; } + ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_rust_examples }}; } test $WGET_RET -ne 0 || { echo "Running Make.. (static)"; \ cmake --build ./build-local-static --verbose; } test $WGET_RET -ne 0 || { echo "Testing Executable.. (static)"; \ @@ -383,7 +396,7 @@ jobs: -DPFRING_LINK_STATIC=OFF \ -DPFRING_INSTALLDIR=/usr -DPFRING_KERNEL_INC="$(realpath ./PF_RING/kernel)" \ ${{ matrix.poll }} ${{ matrix.coverage }} ${{ matrix.ndpid_gcrypt }} \ - ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }}; } + ${{ matrix.sanitizer }} ${{ matrix.ndpid_examples }} ${{ matrix.ndpid_rust_examples }}; } test $WGET_RET -ne 0 || test ! -d ./PF_RING || { echo "Running Make.. (PF_RING)"; \ cmake --build ./build-local-pfring --verbose; } test $WGET_RET -ne 0 || test ! -d ./PF_RING || { echo "Testing Executable.. (PF_RING)"; \ diff --git a/CMakeLists.txt b/CMakeLists.txt index 1bcae37de..f254c6122 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -94,6 +94,7 @@ option(ENABLE_MEMORY_PROFILING "Enable dynamic memory tracking." OFF) option(ENABLE_ZLIB "Enable zlib support for nDPId (experimental)." OFF) option(ENABLE_SYSTEMD "Install systemd components." OFF) option(BUILD_EXAMPLES "Build C examples." ON) +option(BUILD_RUST_EXAMPLES "Build Rust examples." OFF) if(BUILD_EXAMPLES) option(ENABLE_DBUS "Build DBus notification example." OFF) option(ENABLE_CURL "Build influxdb data write example." OFF) @@ -555,6 +556,18 @@ if(BUILD_EXAMPLES) install(DIRECTORY examples/c-collectd/www DESTINATION share/nDPId/nDPIsrvd-collectd) endif() +if(BUILD_RUST_EXAMPLES) + add_custom_command( + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/target/release/rs-simple + COMMAND cargo build --release + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/examples/rs-simple + COMMENT "Build Rust executable with cargo: rs-simple" + ) + add_custom_target(rs-simple ALL + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/target/release/rs-simple + ) +endif() + if(ENABLE_SYSTEMD) configure_file(packages/systemd/ndpisrvd.service.in ndpisrvd.service @ONLY) configure_file(packages/systemd/ndpid@.service.in ndpid@.service @ONLY) @@ -621,6 +634,7 @@ message(STATUS "ENABLE_MEMORY_PROFILING..: ${ENABLE_MEMORY_PROFILING}") message(STATUS "ENABLE_ZLIB..............: ${ENABLE_ZLIB}") message(STATUS "BUILD_NDPI...............: ${BUILD_NDPI}") message(STATUS "BUILD_EXAMPLES...........: ${BUILD_EXAMPLES}") +message(STATUS "BUILD_RUST_EXAMPLES......: ${BUILD_RUST_EXAMPLES}") if(BUILD_EXAMPLES) message(STATUS "ENABLE_DBUS..............: ${ENABLE_DBUS}") message(STATUS "ENABLE_CURL..............: ${ENABLE_CURL}") |