#!/usr/bin/bash

outdir=
while getopts "o:" arg; do
  case ${arg} in
    o )
        outdir=$OPTARG
        ;;
    \? )
        echo "Usage: ./tests/data/acpi/disassemle-aml.sh [-o <output-directory>]"
        exit 1
        ;;

  esac
done

for machine in tests/data/acpi/*
do
    if [[ ! -d "$machine" ]];
    then
        continue
    fi

    if [[ "${outdir}" ]];
    then
        mkdir -p "${outdir}"/${machine} || exit $?
    fi
    for aml in $machine/*
    do
        if [[ "$aml" == $machine/*.dsl ]];
        then
            continue
        fi
        if [[ "$aml" == $machine/SSDT*.* ]];
        then
            dsdt=${aml/SSDT*./DSDT.}
            extra="-e ${dsdt}"
        elif [[ "$aml" == $machine/SSDT* ]];
        then
            dsdt=${aml/SSDT*/DSDT};
            extra="-e ${dsdt}"
        else
            extra=""
        fi
        if [[ "${outdir}" ]];
        then
            # iasl strips an extension from prefix if there.
            # since we have some files with . in the name, the
            # last component gets interpreted as an extension:
            # add another extension to work around that.
            prefix="-p ${outdir}/${aml}.dsl"
        else
            prefix=""
        fi
        iasl ${extra} ${prefix} -d ${aml}
    done
done
