From c11abeeaf59ab5494038e5f48cbbdd0b0490fd5f Mon Sep 17 00:00:00 2001
From: Florian Reimold <11774314+FlorianReimold@users.noreply.github.com>
Date: Mon, 4 Mar 2024 19:41:16 +0100
Subject: [PATCH] Added npcap to GH Actions

---
 .github/workflows/build-windows.yml | 24 ++++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml
index 7e6a912..9f9909f 100644
--- a/.github/workflows/build-windows.yml
+++ b/.github/workflows/build-windows.yml
@@ -17,8 +17,9 @@ jobs:
 
     strategy:
       matrix:
-        library_type: [static, shared, object]
-        build_arch:   [x64, win32]
+        library_type:  [static, shared, object]
+        build_arch:    [x64, win32]
+        npcap_enabled: [ON, OFF]
 
     # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
     # You can convert this to a matrix build if you need cross-platform coverage.
@@ -31,23 +32,29 @@ jobs:
       run: |
         if ( '${{ matrix.library_type }}' -eq 'static' )
         {
-          echo "build_shared_libs=OFF"       >> "$Env:GITHUB_ENV"
           echo "ecaludp_library_type=STATIC" >> "$Env:GITHUB_ENV"
           echo "package_postfix=static"      >> "$Env:GITHUB_ENV"
         }
         elseif( '${{ matrix.library_type }}' -eq 'shared' )
         {
-          echo "build_shared_libs=ON"        >> "$Env:GITHUB_ENV"
           echo "ecaludp_library_type=SHARED" >> "$Env:GITHUB_ENV"
           echo "package_postfix=shared"      >> "$Env:GITHUB_ENV"
         }
         elseif( '${{ matrix.library_type }}' -eq 'object' )
         {
-          echo "build_shared_libs=OFF"       >> "$Env:GITHUB_ENV"
           echo "ecaludp_library_type=OBJECT" >> "$Env:GITHUB_ENV"
           echo "package_postfix=object"      >> "$Env:GITHUB_ENV"
         }
 
+        if ( '${{ matrix.npcap_enabled }}' -eq 'ON' )
+        {
+          echo "npcap_enabled_string=-npcap" >> "$Env:GITHUB_ENV"
+        }
+        else
+        {
+          echo "npcap_enabled_string=" >> "$Env:GITHUB_ENV"
+        }
+
     - name: Checkout
       uses: actions/checkout@v3
       with:
@@ -73,8 +80,8 @@ jobs:
                  -DECALUDP_USE_BUILTIN_RECYCLE=ON ^
                  -DECALUDP_USE_BUILTIN_GTEST=ON ^
                  -DECALUDP_LIBRARY_TYPE=${{env.ecaludp_library_type}} ^
-                 -DCMAKE_INSTALL_PREFIX=${{env.INSTALL_PREFIX}} ^
-                 -DBUILD_SHARED_LIBS=${{ env.build_shared_libs }}
+                 -DECALUDP_ENABLE_NPCAP=${{ matrix.npcap_enabled }} ^
+                 -DCMAKE_INSTALL_PREFIX=${{env.INSTALL_PREFIX}}
 
     - name: Build (Release)
       shell: cmd
@@ -101,6 +108,7 @@ jobs:
     - name: Run Tests
       run: ctest -C Release -V
       working-directory: ${{ github.workspace }}/_build
+      if: ${{ matrix.npcap_enabled != 'ON' }}             # Npcap driver is missing, so we cannot execute tests
            
     - name: Read Project Version from CMakeCache
       run: |
@@ -111,7 +119,7 @@ jobs:
     - name: Upload binaries
       uses: actions/upload-artifact@v3
       with:
-        name: ${{ env.PROJECT_NAME }}-${{ env.CMAKE_PROJECT_VERSION }}-windows-${{ matrix.build_arch }}-${{ env.VS_NAME }}-${{ matrix.library_type }}
+        name: ${{ env.PROJECT_NAME }}-${{ env.CMAKE_PROJECT_VERSION }}${{ env.npcap_enabled_string }}-windows-${{ matrix.build_arch }}-${{ env.VS_NAME }}-${{ matrix.library_type }}
         path: ${{github.workspace}}/${{env.INSTALL_PREFIX}}
       if: ${{ matrix.library_type != 'object' }}