Renames for Yoga and libjpeg

Addresses the Unity issues raised by Adam here: https://2dimensions.slack.com/archives/CLLCU09T6/p1718727712078119

libjpeg has a flag `NEED_SHORT_EXTERNAL_NAMES`, which renames functions to shorter names, however, I didn't use this approach because its possible we could get naming collisions if someone brings another 3rd party lib which also has this flag enabled.

Diffs=
a4439ee42 Renames for Yoga and libjpeg (#7446)

Co-authored-by: Philip Chung <philterdesign@gmail.com>
diff --git a/.rive_head b/.rive_head
index aaeeaf3..2027035 100644
--- a/.rive_head
+++ b/.rive_head
@@ -1 +1 @@
-97578005cb9eb1561b13e80755d3cfe632c0752f
+a4439ee42b2a159663212b9bff3f0b32c46e06c3
diff --git a/decoders/premake5_v2.lua b/decoders/premake5_v2.lua
index bf0a115..44ba4c9 100644
--- a/decoders/premake5_v2.lua
+++ b/decoders/premake5_v2.lua
@@ -14,4 +14,12 @@
     includedirs({ 'include', '../include', libpng, libjpeg })
 
     files({ 'src/**.cpp' })
+
+    filter({ 'options:not no-libjpeg-renames' })
+    do
+        includedirs({
+            rive .. '/dependencies',
+        })
+        forceincludes({ 'rive_libjpeg_renames.h' })
+    end
 end
diff --git a/dependencies/gen_libjpeg_renames/gen_header.dart b/dependencies/gen_libjpeg_renames/gen_header.dart
new file mode 100644
index 0000000..59cc213
--- /dev/null
+++ b/dependencies/gen_libjpeg_renames/gen_header.dart
@@ -0,0 +1,74 @@
+import 'dart:collection';
+import 'dart:io';
+
+final skip = HashSet.from(
+  [],
+);
+
+final extras = HashSet.from(
+  [
+    'read_quant_tables',
+    'read_scan_script',
+    'set_quality_ratings',
+    'set_quant_slots',
+    'set_sample_factors',
+    'read_color_map',
+    'enable_signal_catcher',
+    'start_progress_monitor',
+    'end_progress_monitor',
+    'read_stdin',
+    'write_stdout',
+    'jdiv_round_up',
+    'jround_up',
+    'jzero_far',
+    'jcopy_sample_rows',
+    'jcopy_block_row',
+    'jtransform_parse_crop_spec',
+    'jtransform_request_workspace',
+    'jtransform_adjust_parameters',
+    'jtransform_execute_transform',
+    'jtransform_perfect_transform',
+    'jcopy_markers_setup',
+    'jcopy_markers_execute',
+  ],
+);
+
+void main() {
+  final uniqueNames = HashSet<String>();
+  var header = StringBuffer();
+  header.writeln('// clang-format off');
+  header.writeln('// jpeg_*');
+  var contents = File('libjpeg_names.txt').readAsStringSync();
+  RegExp exp = RegExp(r'\s_(jpeg_([a-zA-Z0-9_]*))', multiLine: true);
+  Iterable<RegExpMatch> matches = exp.allMatches(contents);
+  for (final m in matches) {
+    var symbolName = m[1];
+    if (symbolName == null ||
+        skip.contains(symbolName) ||
+        uniqueNames.contains(symbolName)) {
+      continue;
+    }
+    uniqueNames.add(symbolName);
+    header.writeln('#define $symbolName rive_$symbolName');
+  }
+  header.writeln('// jinit_*');
+  {
+    RegExp exp = RegExp(r'\s_(jinit_([a-zA-Z0-9_]*))', multiLine: true);
+    Iterable<RegExpMatch> matches = exp.allMatches(contents);
+    for (final m in matches) {
+      var symbolName = m[1];
+      if (symbolName == null ||
+          skip.contains(symbolName) ||
+          uniqueNames.contains(symbolName)) {
+        continue;
+      }
+      uniqueNames.add(symbolName);
+      header.writeln('#define $symbolName rive_$symbolName');
+    }
+  }
+  header.writeln('// _j extras');
+  for (final symbolName in extras) {
+    header.writeln('#define $symbolName rive_$symbolName');
+  }
+  File('../rive_libjpeg_renames.h').writeAsStringSync(header.toString());
+}
diff --git a/dependencies/gen_libjpeg_renames/gen_renames.sh b/dependencies/gen_libjpeg_renames/gen_renames.sh
new file mode 100755
index 0000000..6f45c0b
--- /dev/null
+++ b/dependencies/gen_libjpeg_renames/gen_renames.sh
@@ -0,0 +1,58 @@
+#!/bin/bash
+set -e
+
+# This script should be called on a Mac!
+
+# NOTE: Before building, jconfig.txt needs to be renamed to jconfig.h
+
+if [[ ! -f "dependencies/bin/premake5" ]]; then
+    mkdir -p dependencies/bin
+    pushd dependencies
+    # v5.0.0-beta2 doesn't support apple silicon properly, update the branch
+    # once a stable one is avaialble that supports it
+    git clone --depth 1 --branch master https://github.com/premake/premake-core.git
+    pushd premake-core
+    if [[ $LOCAL_ARCH == "arm64" ]]; then
+        PREMAKE_MAKE_ARCH=ARM
+    else
+        PREMAKE_MAKE_ARCH=x86
+    fi
+    make -f Bootstrap.mak osx PLATFORM=$PREMAKE_MAKE_ARCH
+    cp bin/release/* ../bin
+    popd
+    popd
+fi
+
+export PREMAKE=$PWD/dependencies/bin/premake5
+
+for var in "$@"; do
+    if [[ $var = "clean" ]]; then
+        echo 'Cleaning...'
+        rm -fR out
+    fi
+done
+
+mkdir -p out
+mkdir -p out_with_renames
+
+pushd ../../../
+PACKAGES=$PWD
+popd
+export PREMAKE_PATH="dependencies/export-compile-commands":"$PACKAGES/runtime_unity/native_plugin/platform":"$PACKAGES/runtime/build":"$PREMAKE_PATH"
+
+$PREMAKE gmake2 --file=../premake5_libjpeg_v2.lua --out=out --no-libjpeg-renames
+pushd out
+make -j$(($(sysctl -n hw.physicalcpu) + 1))
+popd
+
+nm out/liblibjpeg.a --demangle &>libjpeg_names.txt
+
+dart gen_header.dart
+
+# make with renames just to examine the exported symbols...
+$PREMAKE gmake2 --file=../premake5_libjpeg_v2.lua --out=out_with_renames
+pushd out_with_renames
+make -j$(($(sysctl -n hw.physicalcpu) + 1))
+popd
+
+nm out_with_renames/liblibjpeg.a --demangle &>libjpeg_renames.txt
diff --git a/dependencies/gen_yoga_renames/gen_header.dart b/dependencies/gen_yoga_renames/gen_header.dart
new file mode 100644
index 0000000..d5f724d
--- /dev/null
+++ b/dependencies/gen_yoga_renames/gen_header.dart
@@ -0,0 +1,46 @@
+import 'dart:collection';
+import 'dart:io';
+
+final skip = HashSet.from(
+  [],
+);
+
+final extras = HashSet.from(
+  [],
+);
+
+void main() {
+  final uniqueNames = HashSet<String>();
+  var header = StringBuffer();
+  header.writeln('// clang-format off');
+  header.writeln('// YG*');
+  var contents = File('yoga_names.txt').readAsStringSync();
+  RegExp exp = RegExp(r'\s(YG([a-zA-Z0-9_]*))', multiLine: true);
+  Iterable<RegExpMatch> matches = exp.allMatches(contents);
+  for (final m in matches) {
+    var symbolName = m[1];
+    if (symbolName == null ||
+        skip.contains(symbolName) ||
+        uniqueNames.contains(symbolName)) {
+      continue;
+    }
+    uniqueNames.add(symbolName);
+    header.writeln('#define $symbolName rive_$symbolName');
+  }
+  header.writeln('// _YG*');
+  {
+    RegExp exp = RegExp(r'\s_(YG([a-zA-Z0-9_]*))', multiLine: true);
+    Iterable<RegExpMatch> matches = exp.allMatches(contents);
+    for (final m in matches) {
+      var symbolName = m[1];
+      if (symbolName == null ||
+          skip.contains(symbolName) ||
+          uniqueNames.contains(symbolName)) {
+        continue;
+      }
+      uniqueNames.add(symbolName);
+      header.writeln('#define $symbolName rive_$symbolName');
+    }
+  }
+  File('../rive_yoga_renames.h').writeAsStringSync(header.toString());
+}
diff --git a/dependencies/gen_yoga_renames/gen_renames.sh b/dependencies/gen_yoga_renames/gen_renames.sh
new file mode 100755
index 0000000..eadf7d7
--- /dev/null
+++ b/dependencies/gen_yoga_renames/gen_renames.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -e
+
+# This script should be called on a Mac!
+
+if [[ ! -f "dependencies/bin/premake5" ]]; then
+    mkdir -p dependencies/bin
+    pushd dependencies
+    # v5.0.0-beta2 doesn't support apple silicon properly, update the branch
+    # once a stable one is avaialble that supports it
+    git clone --depth 1 --branch master https://github.com/premake/premake-core.git
+    pushd premake-core
+    if [[ $LOCAL_ARCH == "arm64" ]]; then
+        PREMAKE_MAKE_ARCH=ARM
+    else
+        PREMAKE_MAKE_ARCH=x86
+    fi
+    make -f Bootstrap.mak osx PLATFORM=$PREMAKE_MAKE_ARCH
+    cp bin/release/* ../bin
+    popd
+    popd
+fi
+
+export PREMAKE=$PWD/dependencies/bin/premake5
+
+for var in "$@"; do
+    if [[ $var = "clean" ]]; then
+        echo 'Cleaning...'
+        rm -fR out
+    fi
+done
+
+mkdir -p out
+mkdir -p out_with_renames
+
+pushd ../../../
+PACKAGES=$PWD
+popd
+export PREMAKE_PATH="dependencies/export-compile-commands":"$PACKAGES/runtime_unity/native_plugin/platform":"$PACKAGES/runtime/build":"$PREMAKE_PATH"
+
+$PREMAKE gmake2 --file=../premake5_yoga_v2.lua --out=out --no-yoga-renames
+pushd out
+make -j$(($(sysctl -n hw.physicalcpu) + 1))
+popd
+
+nm out/librive_yoga.a --demangle &>yoga_names.txt
+
+dart gen_header.dart
+
+# make with renames just to examine the exported symbols...
+$PREMAKE gmake2 --file=../premake5_yoga_v2.lua --out=out_with_renames
+pushd out_with_renames
+make -j$(($(sysctl -n hw.physicalcpu) + 1))
+popd
+
+nm out_with_renames/librive_yoga.a --demangle &>yoga_renames.txt
diff --git a/dependencies/premake5_libjpeg_v2.lua b/dependencies/premake5_libjpeg_v2.lua
index 4b5280f..6ef35f9 100644
--- a/dependencies/premake5_libjpeg_v2.lua
+++ b/dependencies/premake5_libjpeg_v2.lua
@@ -7,6 +7,11 @@
 local dependency = require('dependency')
 libjpeg = dependency.github('rive-app/libjpeg', 'v9f')
 
+newoption({
+    trigger = 'no-libjpeg-renames',
+    description = 'don\'t rename libjpeg symbols',
+})
+
 project('libjpeg')
 do
     kind('StaticLib')
@@ -62,4 +67,10 @@
         libjpeg .. '/jmemmgr.c',
         libjpeg .. '/jmemansi.c',
     })
+
+    filter({ 'options:not no-libjpeg-renames' })
+    do
+        includedirs({ './' })
+        forceincludes({ 'rive_libjpeg_renames.h' })
+    end
 end
diff --git a/dependencies/premake5_yoga_v2.lua b/dependencies/premake5_yoga_v2.lua
index 4583132..30d8284 100644
--- a/dependencies/premake5_yoga_v2.lua
+++ b/dependencies/premake5_yoga_v2.lua
@@ -3,6 +3,11 @@
 local dependency = require('dependency')
 yoga = dependency.github('rive-app/yoga', 'rive_changes_v2_0_1')
 
+newoption({
+    trigger = 'no-yoga-renames',
+    description = 'don\'t rename yoga symbols',
+})
+
 project('rive_yoga')
 do
     kind('StaticLib')
@@ -25,4 +30,10 @@
         yoga .. '/yoga/event/event.cpp',
         yoga .. '/yoga/log.cpp',
     })
+
+    filter({ 'options:not no-yoga-renames' })
+    do
+        includedirs({ './' })
+        forceincludes({ 'rive_yoga_renames.h' })
+    end
 end
diff --git a/dependencies/rive_libjpeg_renames.h b/dependencies/rive_libjpeg_renames.h
new file mode 100644
index 0000000..9e1ad74
--- /dev/null
+++ b/dependencies/rive_libjpeg_renames.h
@@ -0,0 +1,204 @@
+// clang-format off
+// jpeg_*
+#define jpeg_aritab rive_jpeg_aritab
+#define jpeg_CreateCompress rive_jpeg_CreateCompress
+#define jpeg_abort rive_jpeg_abort
+#define jpeg_abort_compress rive_jpeg_abort_compress
+#define jpeg_destroy rive_jpeg_destroy
+#define jpeg_destroy_compress rive_jpeg_destroy_compress
+#define jpeg_finish_compress rive_jpeg_finish_compress
+#define jpeg_natural_order rive_jpeg_natural_order
+#define jpeg_suppress_tables rive_jpeg_suppress_tables
+#define jpeg_write_m_byte rive_jpeg_write_m_byte
+#define jpeg_write_m_header rive_jpeg_write_m_header
+#define jpeg_write_marker rive_jpeg_write_marker
+#define jpeg_write_tables rive_jpeg_write_tables
+#define jpeg_start_compress rive_jpeg_start_compress
+#define jpeg_write_raw_data rive_jpeg_write_raw_data
+#define jpeg_write_scanlines rive_jpeg_write_scanlines
+#define jpeg_fdct_10x10 rive_jpeg_fdct_10x10
+#define jpeg_fdct_10x5 rive_jpeg_fdct_10x5
+#define jpeg_fdct_11x11 rive_jpeg_fdct_11x11
+#define jpeg_fdct_12x12 rive_jpeg_fdct_12x12
+#define jpeg_fdct_12x6 rive_jpeg_fdct_12x6
+#define jpeg_fdct_13x13 rive_jpeg_fdct_13x13
+#define jpeg_fdct_14x14 rive_jpeg_fdct_14x14
+#define jpeg_fdct_14x7 rive_jpeg_fdct_14x7
+#define jpeg_fdct_15x15 rive_jpeg_fdct_15x15
+#define jpeg_fdct_16x16 rive_jpeg_fdct_16x16
+#define jpeg_fdct_16x8 rive_jpeg_fdct_16x8
+#define jpeg_fdct_1x1 rive_jpeg_fdct_1x1
+#define jpeg_fdct_1x2 rive_jpeg_fdct_1x2
+#define jpeg_fdct_2x1 rive_jpeg_fdct_2x1
+#define jpeg_fdct_2x2 rive_jpeg_fdct_2x2
+#define jpeg_fdct_2x4 rive_jpeg_fdct_2x4
+#define jpeg_fdct_3x3 rive_jpeg_fdct_3x3
+#define jpeg_fdct_3x6 rive_jpeg_fdct_3x6
+#define jpeg_fdct_4x2 rive_jpeg_fdct_4x2
+#define jpeg_fdct_4x4 rive_jpeg_fdct_4x4
+#define jpeg_fdct_4x8 rive_jpeg_fdct_4x8
+#define jpeg_fdct_5x10 rive_jpeg_fdct_5x10
+#define jpeg_fdct_5x5 rive_jpeg_fdct_5x5
+#define jpeg_fdct_6x12 rive_jpeg_fdct_6x12
+#define jpeg_fdct_6x3 rive_jpeg_fdct_6x3
+#define jpeg_fdct_6x6 rive_jpeg_fdct_6x6
+#define jpeg_fdct_7x14 rive_jpeg_fdct_7x14
+#define jpeg_fdct_7x7 rive_jpeg_fdct_7x7
+#define jpeg_fdct_8x16 rive_jpeg_fdct_8x16
+#define jpeg_fdct_8x4 rive_jpeg_fdct_8x4
+#define jpeg_fdct_9x9 rive_jpeg_fdct_9x9
+#define jpeg_fdct_float rive_jpeg_fdct_float
+#define jpeg_fdct_ifast rive_jpeg_fdct_ifast
+#define jpeg_fdct_islow rive_jpeg_fdct_islow
+#define jpeg_alloc_huff_table rive_jpeg_alloc_huff_table
+#define jpeg_gen_optimal_table rive_jpeg_gen_optimal_table
+#define jpeg_make_c_derived_tbl rive_jpeg_make_c_derived_tbl
+#define jpeg_std_huff_table rive_jpeg_std_huff_table
+#define jpeg_calc_jpeg_dimensions rive_jpeg_calc_jpeg_dimensions
+#define jpeg_natural_order2 rive_jpeg_natural_order2
+#define jpeg_natural_order3 rive_jpeg_natural_order3
+#define jpeg_natural_order4 rive_jpeg_natural_order4
+#define jpeg_natural_order5 rive_jpeg_natural_order5
+#define jpeg_natural_order6 rive_jpeg_natural_order6
+#define jpeg_natural_order7 rive_jpeg_natural_order7
+#define jpeg_alloc_quant_table rive_jpeg_alloc_quant_table
+#define jpeg_add_quant_table rive_jpeg_add_quant_table
+#define jpeg_default_colorspace rive_jpeg_default_colorspace
+#define jpeg_default_qtables rive_jpeg_default_qtables
+#define jpeg_quality_scaling rive_jpeg_quality_scaling
+#define jpeg_set_colorspace rive_jpeg_set_colorspace
+#define jpeg_set_defaults rive_jpeg_set_defaults
+#define jpeg_set_linear_quality rive_jpeg_set_linear_quality
+#define jpeg_set_quality rive_jpeg_set_quality
+#define jpeg_simple_progression rive_jpeg_simple_progression
+#define jpeg_copy_critical_parameters rive_jpeg_copy_critical_parameters
+#define jpeg_write_coefficients rive_jpeg_write_coefficients
+#define jpeg_CreateDecompress rive_jpeg_CreateDecompress
+#define jpeg_abort_decompress rive_jpeg_abort_decompress
+#define jpeg_consume_input rive_jpeg_consume_input
+#define jpeg_destroy_decompress rive_jpeg_destroy_decompress
+#define jpeg_finish_decompress rive_jpeg_finish_decompress
+#define jpeg_has_multiple_scans rive_jpeg_has_multiple_scans
+#define jpeg_input_complete rive_jpeg_input_complete
+#define jpeg_read_header rive_jpeg_read_header
+#define jpeg_finish_output rive_jpeg_finish_output
+#define jpeg_read_raw_data rive_jpeg_read_raw_data
+#define jpeg_read_scanlines rive_jpeg_read_scanlines
+#define jpeg_start_decompress rive_jpeg_start_decompress
+#define jpeg_start_output rive_jpeg_start_output
+#define jpeg_mem_dest rive_jpeg_mem_dest
+#define jpeg_stdio_dest rive_jpeg_stdio_dest
+#define jpeg_mem_src rive_jpeg_mem_src
+#define jpeg_resync_to_restart rive_jpeg_resync_to_restart
+#define jpeg_stdio_src rive_jpeg_stdio_src
+#define jpeg_idct_10x10 rive_jpeg_idct_10x10
+#define jpeg_idct_10x5 rive_jpeg_idct_10x5
+#define jpeg_idct_11x11 rive_jpeg_idct_11x11
+#define jpeg_idct_12x12 rive_jpeg_idct_12x12
+#define jpeg_idct_12x6 rive_jpeg_idct_12x6
+#define jpeg_idct_13x13 rive_jpeg_idct_13x13
+#define jpeg_idct_14x14 rive_jpeg_idct_14x14
+#define jpeg_idct_14x7 rive_jpeg_idct_14x7
+#define jpeg_idct_15x15 rive_jpeg_idct_15x15
+#define jpeg_idct_16x16 rive_jpeg_idct_16x16
+#define jpeg_idct_16x8 rive_jpeg_idct_16x8
+#define jpeg_idct_1x1 rive_jpeg_idct_1x1
+#define jpeg_idct_1x2 rive_jpeg_idct_1x2
+#define jpeg_idct_2x1 rive_jpeg_idct_2x1
+#define jpeg_idct_2x2 rive_jpeg_idct_2x2
+#define jpeg_idct_2x4 rive_jpeg_idct_2x4
+#define jpeg_idct_3x3 rive_jpeg_idct_3x3
+#define jpeg_idct_3x6 rive_jpeg_idct_3x6
+#define jpeg_idct_4x2 rive_jpeg_idct_4x2
+#define jpeg_idct_4x4 rive_jpeg_idct_4x4
+#define jpeg_idct_4x8 rive_jpeg_idct_4x8
+#define jpeg_idct_5x10 rive_jpeg_idct_5x10
+#define jpeg_idct_5x5 rive_jpeg_idct_5x5
+#define jpeg_idct_6x12 rive_jpeg_idct_6x12
+#define jpeg_idct_6x3 rive_jpeg_idct_6x3
+#define jpeg_idct_6x6 rive_jpeg_idct_6x6
+#define jpeg_idct_7x14 rive_jpeg_idct_7x14
+#define jpeg_idct_7x7 rive_jpeg_idct_7x7
+#define jpeg_idct_8x16 rive_jpeg_idct_8x16
+#define jpeg_idct_8x4 rive_jpeg_idct_8x4
+#define jpeg_idct_9x9 rive_jpeg_idct_9x9
+#define jpeg_idct_float rive_jpeg_idct_float
+#define jpeg_idct_ifast rive_jpeg_idct_ifast
+#define jpeg_idct_islow rive_jpeg_idct_islow
+#define jpeg_fill_bit_buffer rive_jpeg_fill_bit_buffer
+#define jpeg_huff_decode rive_jpeg_huff_decode
+#define jpeg_make_d_derived_tbl rive_jpeg_make_d_derived_tbl
+#define jpeg_zigzag_order rive_jpeg_zigzag_order
+#define jpeg_zigzag_order2 rive_jpeg_zigzag_order2
+#define jpeg_zigzag_order3 rive_jpeg_zigzag_order3
+#define jpeg_zigzag_order4 rive_jpeg_zigzag_order4
+#define jpeg_zigzag_order5 rive_jpeg_zigzag_order5
+#define jpeg_zigzag_order6 rive_jpeg_zigzag_order6
+#define jpeg_zigzag_order7 rive_jpeg_zigzag_order7
+#define jpeg_core_output_dimensions rive_jpeg_core_output_dimensions
+#define jpeg_save_markers rive_jpeg_save_markers
+#define jpeg_set_marker_processor rive_jpeg_set_marker_processor
+#define jpeg_calc_output_dimensions rive_jpeg_calc_output_dimensions
+#define jpeg_new_colormap rive_jpeg_new_colormap
+#define jpeg_read_coefficients rive_jpeg_read_coefficients
+#define jpeg_std_error rive_jpeg_std_error
+#define jpeg_std_message_table rive_jpeg_std_message_table
+#define jpeg_free_large rive_jpeg_free_large
+#define jpeg_free_small rive_jpeg_free_small
+#define jpeg_get_large rive_jpeg_get_large
+#define jpeg_get_small rive_jpeg_get_small
+#define jpeg_mem_available rive_jpeg_mem_available
+#define jpeg_mem_init rive_jpeg_mem_init
+#define jpeg_mem_term rive_jpeg_mem_term
+#define jpeg_open_backing_store rive_jpeg_open_backing_store
+// jinit_*
+#define jinit_marker_writer rive_jinit_marker_writer
+#define jinit_memory_mgr rive_jinit_memory_mgr
+#define jinit_compress_master rive_jinit_compress_master
+#define jinit_arith_encoder rive_jinit_arith_encoder
+#define jinit_c_coef_controller rive_jinit_c_coef_controller
+#define jinit_color_converter rive_jinit_color_converter
+#define jinit_forward_dct rive_jinit_forward_dct
+#define jinit_huff_encoder rive_jinit_huff_encoder
+#define jinit_c_main_controller rive_jinit_c_main_controller
+#define jinit_c_master_control rive_jinit_c_master_control
+#define jinit_c_prep_controller rive_jinit_c_prep_controller
+#define jinit_downsampler rive_jinit_downsampler
+#define jinit_input_controller rive_jinit_input_controller
+#define jinit_marker_reader rive_jinit_marker_reader
+#define jinit_master_decompress rive_jinit_master_decompress
+#define jinit_arith_decoder rive_jinit_arith_decoder
+#define jinit_d_coef_controller rive_jinit_d_coef_controller
+#define jinit_color_deconverter rive_jinit_color_deconverter
+#define jinit_inverse_dct rive_jinit_inverse_dct
+#define jinit_huff_decoder rive_jinit_huff_decoder
+#define jinit_d_main_controller rive_jinit_d_main_controller
+#define jinit_1pass_quantizer rive_jinit_1pass_quantizer
+#define jinit_2pass_quantizer rive_jinit_2pass_quantizer
+#define jinit_d_post_controller rive_jinit_d_post_controller
+#define jinit_merged_upsampler rive_jinit_merged_upsampler
+#define jinit_upsampler rive_jinit_upsampler
+// _j extras
+#define jtransform_execute_transform rive_jtransform_execute_transform
+#define read_scan_script rive_read_scan_script
+#define jcopy_markers_execute rive_jcopy_markers_execute
+#define jcopy_markers_setup rive_jcopy_markers_setup
+#define enable_signal_catcher rive_enable_signal_catcher
+#define set_quant_slots rive_set_quant_slots
+#define read_stdin rive_read_stdin
+#define set_quality_ratings rive_set_quality_ratings
+#define write_stdout rive_write_stdout
+#define set_sample_factors rive_set_sample_factors
+#define jtransform_perfect_transform rive_jtransform_perfect_transform
+#define jcopy_sample_rows rive_jcopy_sample_rows
+#define jdiv_round_up rive_jdiv_round_up
+#define jtransform_request_workspace rive_jtransform_request_workspace
+#define jcopy_block_row rive_jcopy_block_row
+#define end_progress_monitor rive_end_progress_monitor
+#define read_quant_tables rive_read_quant_tables
+#define jzero_far rive_jzero_far
+#define read_color_map rive_read_color_map
+#define jtransform_adjust_parameters rive_jtransform_adjust_parameters
+#define jround_up rive_jround_up
+#define start_progress_monitor rive_start_progress_monitor
+#define jtransform_parse_crop_spec rive_jtransform_parse_crop_spec
diff --git a/dependencies/rive_yoga_renames.h b/dependencies/rive_yoga_renames.h
new file mode 100644
index 0000000..f10efae
--- /dev/null
+++ b/dependencies/rive_yoga_renames.h
@@ -0,0 +1,241 @@
+// clang-format off
+// YG*
+#define YGFloatMax rive_YGFloatMax
+#define YGFloatMin rive_YGFloatMin
+#define YGValueEqual rive_YGValueEqual
+#define YGValue rive_YGValue
+#define YGDoubleEqual rive_YGDoubleEqual
+#define YGFloatsEqual rive_YGFloatsEqual
+#define YGFloatSanitize rive_YGFloatSanitize
+#define YGFloatOptionalMax rive_YGFloatOptionalMax
+#define YGFloatOptional rive_YGFloatOptional
+#define YGFlexDirectionCross rive_YGFlexDirectionCross
+#define YGDirection rive_YGDirection
+#define YGResolveFlexDirection rive_YGResolveFlexDirection
+#define YGFlexDirectionIsColumn rive_YGFlexDirectionIsColumn
+#define YGConfig rive_YGConfig
+#define YGNode rive_YGNode
+#define YGLogLevel rive_YGLogLevel
+#define YGErrata rive_YGErrata
+#define YGEnums rive_YGEnums
+#define YGLayout rive_YGLayout
+#define YGFloatArrayEqual rive_YGFloatArrayEqual
+#define YGCachedMeasurement rive_YGCachedMeasurement
+#define YGResolveValue rive_YGResolveValue
+#define YGFlexDirectionIsRow rive_YGFlexDirectionIsRow
+#define YGResolveValueMargin rive_YGResolveValueMargin
+#define YGMeasureMode rive_YGMeasureMode
+#define YGEdge rive_YGEdge
+#define YGStyle rive_YGStyle
+#define YGPositionType rive_YGPositionType
+#define YGFlexDirection rive_YGFlexDirection
+#define YGNodePrint rive_YGNodePrint
+#define YGPrintOptions rive_YGPrintOptions
+#define YGOverflow rive_YGOverflow
+#define YGWrap rive_YGWrap
+#define YGAlign rive_YGAlign
+#define YGDisplay rive_YGDisplay
+#define YGJustify rive_YGJustify
+#define YGLayoutNodeInternal rive_YGLayoutNodeInternal
+#define YGConfigGetDefault rive_YGConfigGetDefault
+#define YGBaseline rive_YGBaseline
+#define YGDefaultLog rive_YGDefaultLog
+#define YGNodeAlignItem rive_YGNodeAlignItem
+#define YGNodeBoundAxis rive_YGNodeBoundAxis
+#define YGNodelayoutImpl rive_YGNodelayoutImpl
+#define YGJustifyMainAxis rive_YGJustifyMainAxis
+#define YGCollectFlexItemsRowValues rive_YGCollectFlexItemsRowValues
+#define YGMeasureModeName rive_YGMeasureModeName
+#define YGIsBaselineLayout rive_YGIsBaselineLayout
+#define YGRoundToPixelGrid rive_YGRoundToPixelGrid
+#define YGDoubleIsUndefined rive_YGDoubleIsUndefined
+#define YGNodeDimWithMargin rive_YGNodeDimWithMargin
+#define YGNodePrintInternal rive_YGNodePrintInternal
+#define YGNodeIsStyleDimDefined rive_YGNodeIsStyleDimDefined
+#define YGResolveFlexibleLength rive_YGResolveFlexibleLength
+#define YGNodeIsLayoutDimDefined rive_YGNodeIsLayoutDimDefined
+#define YGConstrainMaxSizeForMode rive_YGConstrainMaxSizeForMode
+#define YGNodeAbsoluteLayoutChild rive_YGNodeAbsoluteLayoutChild
+#define YGZeroOutLayoutRecursively rive_YGZeroOutLayoutRecursively
+#define YGNodePaddingAndBorderForAxis rive_YGNodePaddingAndBorderForAxis
+#define YGDistributeFreeSpaceFirstPass rive_YGDistributeFreeSpaceFirstPass
+#define YGNodeBoundAxisWithinMinAndMax rive_YGNodeBoundAxisWithinMinAndMax
+#define YGNodeComputeFlexBasisForChild rive_YGNodeComputeFlexBasisForChild
+#define YGNodeSetChildTrailingPosition rive_YGNodeSetChildTrailingPosition
+#define YGDistributeFreeSpaceSecondPass rive_YGDistributeFreeSpaceSecondPass
+#define YGNodeCalculateAvailableInnerDim rive_YGNodeCalculateAvailableInnerDim
+#define YGDimension rive_YGDimension
+#define YGNodeComputeFlexBasisForChildren rive_YGNodeComputeFlexBasisForChildren
+#define YGCalculateCollectFlexItemsRowValues rive_YGCalculateCollectFlexItemsRowValues
+#define YGNodeFixedSizeSetMeasuredDimensions rive_YGNodeFixedSizeSetMeasuredDimensions
+#define YGNodeEmptyContainerSetMeasuredDimensions rive_YGNodeEmptyContainerSetMeasuredDimensions
+#define YGNodeWithMeasureFuncSetMeasuredDimensions rive_YGNodeWithMeasureFuncSetMeasuredDimensions
+#define YGMeasureModeOldSizeIsUnspecifiedAndStillFits rive_YGMeasureModeOldSizeIsUnspecifiedAndStillFits
+#define YGMeasureModeSizeIsExactAndMatchesOldMeasuredSize rive_YGMeasureModeSizeIsExactAndMatchesOldMeasuredSize
+#define YGMeasureModeNewMeasureSizeIsStricterAndStillValid rive_YGMeasureModeNewMeasureSizeIsStricterAndStillValid
+#define YGSpacer rive_YGSpacer
+#define YGGutter rive_YGGutter
+// _YG*
+#define YGNodeClone rive_YGNodeClone
+#define YGAlignToString rive_YGAlignToString
+#define YGDimensionToString rive_YGDimensionToString
+#define YGDirectionToString rive_YGDirectionToString
+#define YGDisplayToString rive_YGDisplayToString
+#define YGEdgeToString rive_YGEdgeToString
+#define YGErrataToString rive_YGErrataToString
+#define YGExperimentalFeatureToString rive_YGExperimentalFeatureToString
+#define YGFlexDirectionToString rive_YGFlexDirectionToString
+#define YGGutterToString rive_YGGutterToString
+#define YGJustifyToString rive_YGJustifyToString
+#define YGLogLevelToString rive_YGLogLevelToString
+#define YGMeasureModeToString rive_YGMeasureModeToString
+#define YGNodeTypeToString rive_YGNodeTypeToString
+#define YGOverflowToString rive_YGOverflowToString
+#define YGPositionTypeToString rive_YGPositionTypeToString
+#define YGPrintOptionsToString rive_YGPrintOptionsToString
+#define YGUnitToString rive_YGUnitToString
+#define YGWrapToString rive_YGWrapToString
+#define YGAssert rive_YGAssert
+#define YGAssertWithConfig rive_YGAssertWithConfig
+#define YGAssertWithNode rive_YGAssertWithNode
+#define YGValueAuto rive_YGValueAuto
+#define YGValueUndefined rive_YGValueUndefined
+#define YGValueZero rive_YGValueZero
+#define YGNodeGetChild rive_YGNodeGetChild
+#define YGConfigCopy rive_YGConfigCopy
+#define YGConfigFree rive_YGConfigFree
+#define YGConfigGetContext rive_YGConfigGetContext
+#define YGConfigGetErrata rive_YGConfigGetErrata
+#define YGConfigGetInstanceCount rive_YGConfigGetInstanceCount
+#define YGConfigGetPointScaleFactor rive_YGConfigGetPointScaleFactor
+#define YGConfigGetUseLegacyStretchBehaviour rive_YGConfigGetUseLegacyStretchBehaviour
+#define YGConfigGetUseWebDefaults rive_YGConfigGetUseWebDefaults
+#define YGConfigIsExperimentalFeatureEnabled rive_YGConfigIsExperimentalFeatureEnabled
+#define YGConfigNew rive_YGConfigNew
+#define YGConfigSetCloneNodeFunc rive_YGConfigSetCloneNodeFunc
+#define YGConfigSetContext rive_YGConfigSetContext
+#define YGConfigSetErrata rive_YGConfigSetErrata
+#define YGConfigSetExperimentalFeatureEnabled rive_YGConfigSetExperimentalFeatureEnabled
+#define YGConfigSetLogger rive_YGConfigSetLogger
+#define YGConfigSetPointScaleFactor rive_YGConfigSetPointScaleFactor
+#define YGConfigSetPrintTreeFlag rive_YGConfigSetPrintTreeFlag
+#define YGConfigSetUseLegacyStretchBehaviour rive_YGConfigSetUseLegacyStretchBehaviour
+#define YGConfigSetUseWebDefaults rive_YGConfigSetUseWebDefaults
+#define YGFloatIsUndefined rive_YGFloatIsUndefined
+#define YGNodeCalculateLayout rive_YGNodeCalculateLayout
+#define YGNodeCalculateLayoutWithContext rive_YGNodeCalculateLayoutWithContext
+#define YGNodeCanUseCachedMeasurement rive_YGNodeCanUseCachedMeasurement
+#define YGNodeCopyStyle rive_YGNodeCopyStyle
+#define YGNodeDeallocate rive_YGNodeDeallocate
+#define YGNodeFree rive_YGNodeFree
+#define YGNodeFreeRecursive rive_YGNodeFreeRecursive
+#define YGNodeFreeRecursiveWithCleanupFunc rive_YGNodeFreeRecursiveWithCleanupFunc
+#define YGNodeGetChildCount rive_YGNodeGetChildCount
+#define YGNodeGetConfig rive_YGNodeGetConfig
+#define YGNodeGetContext rive_YGNodeGetContext
+#define YGNodeGetDirtiedFunc rive_YGNodeGetDirtiedFunc
+#define YGNodeGetHasNewLayout rive_YGNodeGetHasNewLayout
+#define YGNodeGetNodeType rive_YGNodeGetNodeType
+#define YGNodeGetOwner rive_YGNodeGetOwner
+#define YGNodeGetParent rive_YGNodeGetParent
+#define YGNodeHasBaselineFunc rive_YGNodeHasBaselineFunc
+#define YGNodeHasMeasureFunc rive_YGNodeHasMeasureFunc
+#define YGNodeInsertChild rive_YGNodeInsertChild
+#define YGNodeIsDirty rive_YGNodeIsDirty
+#define YGNodeIsReferenceBaseline rive_YGNodeIsReferenceBaseline
+#define YGNodeLayoutGetBorder rive_YGNodeLayoutGetBorder
+#define YGNodeLayoutGetBottom rive_YGNodeLayoutGetBottom
+#define YGNodeLayoutGetDirection rive_YGNodeLayoutGetDirection
+#define YGNodeLayoutGetHadOverflow rive_YGNodeLayoutGetHadOverflow
+#define YGNodeLayoutGetHeight rive_YGNodeLayoutGetHeight
+#define YGNodeLayoutGetLeft rive_YGNodeLayoutGetLeft
+#define YGNodeLayoutGetMargin rive_YGNodeLayoutGetMargin
+#define YGNodeLayoutGetPadding rive_YGNodeLayoutGetPadding
+#define YGNodeLayoutGetRight rive_YGNodeLayoutGetRight
+#define YGNodeLayoutGetTop rive_YGNodeLayoutGetTop
+#define YGNodeLayoutGetWidth rive_YGNodeLayoutGetWidth
+#define YGNodeMarkDirty rive_YGNodeMarkDirty
+#define YGNodeMarkDirtyAndPropagateToDescendants rive_YGNodeMarkDirtyAndPropagateToDescendants
+#define YGNodeNew rive_YGNodeNew
+#define YGNodeNewWithConfig rive_YGNodeNewWithConfig
+#define YGNodeRemoveAllChildren rive_YGNodeRemoveAllChildren
+#define YGNodeRemoveChild rive_YGNodeRemoveChild
+#define YGNodeReset rive_YGNodeReset
+#define YGNodeSetBaselineFunc rive_YGNodeSetBaselineFunc
+#define YGNodeSetChildren rive_YGNodeSetChildren
+#define YGNodeSetConfig rive_YGNodeSetConfig
+#define YGNodeSetContext rive_YGNodeSetContext
+#define YGNodeSetDirtiedFunc rive_YGNodeSetDirtiedFunc
+#define YGNodeSetHasNewLayout rive_YGNodeSetHasNewLayout
+#define YGNodeSetIsReferenceBaseline rive_YGNodeSetIsReferenceBaseline
+#define YGNodeSetMeasureFunc rive_YGNodeSetMeasureFunc
+#define YGNodeSetNodeType rive_YGNodeSetNodeType
+#define YGNodeSetPrintFunc rive_YGNodeSetPrintFunc
+#define YGNodeStyleGetAlignContent rive_YGNodeStyleGetAlignContent
+#define YGNodeStyleGetAlignItems rive_YGNodeStyleGetAlignItems
+#define YGNodeStyleGetAlignSelf rive_YGNodeStyleGetAlignSelf
+#define YGNodeStyleGetAspectRatio rive_YGNodeStyleGetAspectRatio
+#define YGNodeStyleGetBorder rive_YGNodeStyleGetBorder
+#define YGNodeStyleGetDirection rive_YGNodeStyleGetDirection
+#define YGNodeStyleGetDisplay rive_YGNodeStyleGetDisplay
+#define YGNodeStyleGetFlex rive_YGNodeStyleGetFlex
+#define YGNodeStyleGetFlexBasis rive_YGNodeStyleGetFlexBasis
+#define YGNodeStyleGetFlexDirection rive_YGNodeStyleGetFlexDirection
+#define YGNodeStyleGetFlexGrow rive_YGNodeStyleGetFlexGrow
+#define YGNodeStyleGetFlexShrink rive_YGNodeStyleGetFlexShrink
+#define YGNodeStyleGetFlexWrap rive_YGNodeStyleGetFlexWrap
+#define YGNodeStyleGetGap rive_YGNodeStyleGetGap
+#define YGNodeStyleGetHeight rive_YGNodeStyleGetHeight
+#define YGNodeStyleGetJustifyContent rive_YGNodeStyleGetJustifyContent
+#define YGNodeStyleGetMargin rive_YGNodeStyleGetMargin
+#define YGNodeStyleGetMaxHeight rive_YGNodeStyleGetMaxHeight
+#define YGNodeStyleGetMaxWidth rive_YGNodeStyleGetMaxWidth
+#define YGNodeStyleGetMinHeight rive_YGNodeStyleGetMinHeight
+#define YGNodeStyleGetMinWidth rive_YGNodeStyleGetMinWidth
+#define YGNodeStyleGetOverflow rive_YGNodeStyleGetOverflow
+#define YGNodeStyleGetPadding rive_YGNodeStyleGetPadding
+#define YGNodeStyleGetPosition rive_YGNodeStyleGetPosition
+#define YGNodeStyleGetPositionType rive_YGNodeStyleGetPositionType
+#define YGNodeStyleGetWidth rive_YGNodeStyleGetWidth
+#define YGNodeStyleSetAlignContent rive_YGNodeStyleSetAlignContent
+#define YGNodeStyleSetAlignItems rive_YGNodeStyleSetAlignItems
+#define YGNodeStyleSetAlignSelf rive_YGNodeStyleSetAlignSelf
+#define YGNodeStyleSetAspectRatio rive_YGNodeStyleSetAspectRatio
+#define YGNodeStyleSetBorder rive_YGNodeStyleSetBorder
+#define YGNodeStyleSetDirection rive_YGNodeStyleSetDirection
+#define YGNodeStyleSetDisplay rive_YGNodeStyleSetDisplay
+#define YGNodeStyleSetFlex rive_YGNodeStyleSetFlex
+#define YGNodeStyleSetFlexBasis rive_YGNodeStyleSetFlexBasis
+#define YGNodeStyleSetFlexBasisAuto rive_YGNodeStyleSetFlexBasisAuto
+#define YGNodeStyleSetFlexBasisPercent rive_YGNodeStyleSetFlexBasisPercent
+#define YGNodeStyleSetFlexDirection rive_YGNodeStyleSetFlexDirection
+#define YGNodeStyleSetFlexGrow rive_YGNodeStyleSetFlexGrow
+#define YGNodeStyleSetFlexShrink rive_YGNodeStyleSetFlexShrink
+#define YGNodeStyleSetFlexWrap rive_YGNodeStyleSetFlexWrap
+#define YGNodeStyleSetGap rive_YGNodeStyleSetGap
+#define YGNodeStyleSetHeight rive_YGNodeStyleSetHeight
+#define YGNodeStyleSetHeightAuto rive_YGNodeStyleSetHeightAuto
+#define YGNodeStyleSetHeightPercent rive_YGNodeStyleSetHeightPercent
+#define YGNodeStyleSetJustifyContent rive_YGNodeStyleSetJustifyContent
+#define YGNodeStyleSetMargin rive_YGNodeStyleSetMargin
+#define YGNodeStyleSetMarginAuto rive_YGNodeStyleSetMarginAuto
+#define YGNodeStyleSetMarginPercent rive_YGNodeStyleSetMarginPercent
+#define YGNodeStyleSetMaxHeight rive_YGNodeStyleSetMaxHeight
+#define YGNodeStyleSetMaxHeightPercent rive_YGNodeStyleSetMaxHeightPercent
+#define YGNodeStyleSetMaxWidth rive_YGNodeStyleSetMaxWidth
+#define YGNodeStyleSetMaxWidthPercent rive_YGNodeStyleSetMaxWidthPercent
+#define YGNodeStyleSetMinHeight rive_YGNodeStyleSetMinHeight
+#define YGNodeStyleSetMinHeightPercent rive_YGNodeStyleSetMinHeightPercent
+#define YGNodeStyleSetMinWidth rive_YGNodeStyleSetMinWidth
+#define YGNodeStyleSetMinWidthPercent rive_YGNodeStyleSetMinWidthPercent
+#define YGNodeStyleSetOverflow rive_YGNodeStyleSetOverflow
+#define YGNodeStyleSetPadding rive_YGNodeStyleSetPadding
+#define YGNodeStyleSetPaddingPercent rive_YGNodeStyleSetPaddingPercent
+#define YGNodeStyleSetPosition rive_YGNodeStyleSetPosition
+#define YGNodeStyleSetPositionPercent rive_YGNodeStyleSetPositionPercent
+#define YGNodeStyleSetPositionType rive_YGNodeStyleSetPositionType
+#define YGNodeStyleSetWidth rive_YGNodeStyleSetWidth
+#define YGNodeStyleSetWidthAuto rive_YGNodeStyleSetWidthAuto
+#define YGNodeStyleSetWidthPercent rive_YGNodeStyleSetWidthPercent
+#define YGNodeSwapChild rive_YGNodeSwapChild
+#define YGRoundValueToPixelGrid rive_YGRoundValueToPixelGrid
diff --git a/dev/test/premake5.lua b/dev/test/premake5.lua
index 78c2296..318aeba 100644
--- a/dev/test/premake5.lua
+++ b/dev/test/premake5.lua
@@ -54,4 +54,12 @@
         })
         forceincludes({ 'rive_harfbuzz_renames.h' })
     end
+
+    filter({ 'options:not no-yoga-renames' })
+    do
+        includedirs({
+            dependencies,
+        })
+        forceincludes({ 'rive_yoga_renames.h' })
+    end
 end
diff --git a/premake5_v2.lua b/premake5_v2.lua
index 44244a2..3d6c8aa 100644
--- a/premake5_v2.lua
+++ b/premake5_v2.lua
@@ -60,6 +60,14 @@
         forceincludes({ 'rive_harfbuzz_renames.h' })
     end
 
+    filter({ 'options:not no-yoga-renames' })
+    do
+        includedirs({
+            dependencies,
+        })
+        forceincludes({ 'rive_yoga_renames.h' })
+    end
+
     filter({ 'system:linux' })
     do
         defines({ 'MA_NO_RUNTIME_LINKING' })