packages feed

hdis86-0.1: tools/gen_opcode.sh

#!/bin/sh -e

if [ -z "$1" ]; then
  echo "Usage: $0 path/to/udis86-1.x/libudis86/itab.h" >&2
  echo >&2
  echo "Outputs the generated Opcode.hs on standard out." >&2
  exit 1
fi

cat <<EOF
{-# OPTIONS_HADDOCK
    hide #-}
{-# LANGUAGE
    DeriveDataTypeable #-}
module Hdis86.Internal.Opcode where
-- generated by gen_opcode.sh, do not exit

import Data.Typeable ( Typeable )
import Data.Data ( Data )

data Opcode
EOF

PFX=" ="
grep '^  UD_' "$1" | sed 's/^  UD_//; s/,//' | \
  while read inst; do
    echo "$PFX $inst"
    PFX=" |"
  done

echo " deriving (Eq, Ord, Show, Read, Enum, Bounded, Typeable, Data)"