Help with gimptool-2.99

Here’s a bash script, it can point at a directory of C plugins to compile:

target_dir="$HOME/Code/plug-ins-C/plug-ins"

It includes files needed from the GIMP source build and my additional C files:

meson_config="/build/gimp/_build"
meson_intl="/build/gimp/libgimp"
pixelmixer="$HOME/Code/plug-ins-C/include"
pixelmixer_source="$HOME/Code/plug-ins-C/include/pixelmixer.c"

It uses the output of gimptool to provide the input to gcc, and also copies the binary to my flatpak version. SImplEs :melting_face:

#!/usr/bin/env bash

# Set target directory to search for C plug-ins to compile
target_dir="$HOME/Code/plug-ins-C/plug-ins"

# GIMP build environment from another shell script
source "$HOME/Artwork/Misc/linux-scripts/gimp_definitions.sh"

# Define paths and plug-in name
gimp_source_dir="$HOME/Code/gimp-source"
source_dir="$HOME/Code/plug-ins-C/${plugin_name}"
output_dir_base="${gimp_source_dir}/lib/x86_64-linux-gnu/gimp/2.99/plug-ins"
flatpak_dir_base="$HOME/.config/GIMP/2.99/plug-ins"
meson_config="/build/gimp/_build"
meson_intl="/build/gimp/libgimp"
pixelmixer="$HOME/Code/plug-ins-C/include"
pixelmixer_source="$HOME/Code/plug-ins-C/include/pixelmixer.c"

# Store gimptool output in a variable
gimptool_libs=$("${gimp_source_dir}/bin/gimptool-2.99" --libs)
gimptool_flags=$("${gimp_source_dir}/bin/gimptool-2.99" --cflags)

# Find source files and compile
find "$target_dir" -name "*.c" | while IFS= read -r source_file; do
  plugin_name=$(basename "$(dirname "$source_file")")
  output_dir="${gimp_source_dir}/lib/x86_64-linux-gnu/gimp/2.99/plug-ins/${plugin_name}"
  flatpak_dir="$HOME/.config/GIMP/2.99/plug-ins/${plugin_name}"

  # Create output and flatpak directories for the current plugin
  mkdir -p "$output_dir"
  mkdir -p "$flatpak_dir"

  # Compile only if the source file or dependencies have changed
  if [ "$source_file" -nt "$output_dir/$plugin_name" ] || [ "$pixelmixer_source" -nt "$output_dir/$plugin_name" ]; then
    # Compile
    gcc "$source_file" "$pixelmixer_source" \
    $gimptool_libs \
    $gimptool_flags \
    -I"${gimp_source_dir}${meson_config}" \
    -I"${gimp_source_dir}${meson_intl}" \
    -I"${pixelmixer}" \
    -o "$output_dir/$plugin_name"

    # Check compilation status
    if [ $? -eq 0 ]; then
      echo "Compilation successful for $plugin_name. Copying plugin to $flatpak_dir."
      cp "$output_dir/$plugin_name" "$flatpak_dir"
    else
      echo "Compilation failed for $plugin_name. Plugin not copied."
    fi
  else
    echo "No changes detected for $plugin_name. Skipping compilation."
  fi
done

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.