Here are all of the changes put into individual commits. The issue with the protected method in execution_engine.rb was an unfortunate side effect of me learning git. I thought I had removed that change.
The ibr instruction's optional parameter isn't arbitrary (at least here it isn't): the value is the same default value as found in the C++ API. I've subclassed Instruction and provided a method (and alias) for calling LLVMAddDestination.
Moved existing bindings to the bindings.rb file. Changed lib/llvm.rb …
…and lib/llvm/core.rb to reflect this change, and removed references to lib/llvm/target.rb, as it was no longer needed.
Changed the Rakefile to use the rubygems/package_task instead of rake…
Added the check_bindings target, which will use objdump to collect symbols from libLLVM and compare them to the symbols defined in the bindings module.
Added missing scalar and ipo transformation passes.
Added bindings and methods for all supported LLVM targets.
Added missing instructions to the builder.
Added the LLVMAddDestination binding and then created an subclass of …
…Instruction (IndirectBr) to use it.
Laying the groundwork for adding custom C bindings for LLVM that can …
…be bound to Ruby code using FFI.
Moved the extended bindings code into the ext/LLVM-EB directory.
Removed the Makefile and replaced it with one generated by the new extconf.rb file.
Added the new extconf.rb file to the gem specification.
Corrected a typo in the build.rb file.
Is there any further work that needs to be done before you can pull this?
@chriswailes I believe I've ported all your changes: ruby-llvm/ruby-llvm#16