Add brillow_update_payload option to enable lz4diff

Test: th
Bug: 206729162
Change-Id: If155b7d59b2e6b32da16a7f227f32f7e5e1d801a
diff --git a/scripts/brillo_update_payload b/scripts/brillo_update_payload
index 2628286..f9c70f3 100755
--- a/scripts/brillo_update_payload
+++ b/scripts/brillo_update_payload
@@ -214,6 +214,10 @@
     "Optional: allowed compressor types. Colon separated, allowe values are bz2 and brotli"
   DEFINE_string enable_zucchini "" \
     "Optional: Whether to enable zucchini diffing"
+  DEFINE_string enable_lz4diff "" \
+    "Optional: Whether to enable lz4 diffing for EROFS"
+  DEFINE_string liblz4_path "" \
+    "Required if --enabled_lz4diff true is passed. Path to liblz4.so. delta_generator will use this copy of liblz4.so for compression. It is important that this copy of liblz4.so is the same as the one on source build."
 fi
 if [[ "${COMMAND}" == "hash" || "${COMMAND}" == "sign" ]]; then
   DEFINE_string unsigned_payload "" "Path to the input unsigned payload."
@@ -729,6 +733,14 @@
       GENERATOR_ARGS+=(
         --enable_zucchini="${FLAGS_enable_zucchini}" )
     fi
+    if [[ -n "${FLAGS_enable_lz4diff}" ]]; then
+      if [[ "${FLAGS_enable_lz4diff}" == "true" && -z "${FLAGS_liblz4_path}" ]]; then
+        echo "--liblz4_path is required when enable_lz4diff is set to true."
+        exit 1
+      fi
+      GENERATOR_ARGS+=(
+        --enable_lz4diff="${FLAGS_enable_lz4diff}" )
+    fi
   fi
 
   if [[ -n "${FLAGS_enable_vabc_xor}" ]]; then
@@ -780,7 +792,11 @@
   fi
 
   echo "Running delta_generator with args: ${GENERATOR_ARGS[@]}"
-  "${GENERATOR}" "${GENERATOR_ARGS[@]}"
+  if [[ -n "${FLAGS_enable_lz4diff}" ]]; then
+    LD_PRELOAD=${LD_PRELOAD}:${FLAGS_liblz4_path} "${GENERATOR}" "${GENERATOR_ARGS[@]}"
+  else
+    "${GENERATOR}" "${GENERATOR_ARGS[@]}"
+  fi
 
   echo "Done generating ${payload_type} update."
 }