diff --git a/pkgs/development/tools/boomerang/default.nix b/pkgs/development/tools/boomerang/default.nix new file mode 100644 index 00000000000..eadeb51d1b3 --- /dev/null +++ b/pkgs/development/tools/boomerang/default.nix @@ -0,0 +1,30 @@ +{ stdenv, fetchgit, cmake, boehmgc, expat, cppunit }: + +stdenv.mkDerivation { + name = "boomerang-1.0pre"; + + buildInputs = [ cmake boehmgc expat cppunit ]; + + installPhase = '' + for loaderfile in loader/*.so + do + install -vD "$loaderfile" "$out/lib/$(basename "$loaderfile")" + done + + install -vD boomerang "$out/bin/boomerang" + ''; + + patches = [ ./dlopen_path.patch ]; + + src = fetchgit { + url = "git://github.com/aszlig/boomerang.git"; + rev = "d0b147a5dfc915a5fa8fe6c517e66a049a37bf22"; + sha256 = "6cfd95a3539ff45c18b17de76407568b0d0c17fde4e45dda54486c7eac113969"; + }; + + meta = { + homepage = http://boomerang.sourceforge.net/; + license = stdenv.lib.licenses.bsd3; + description = "A general, open source, retargetable decompiler"; + }; +} diff --git a/pkgs/development/tools/boomerang/dlopen_path.patch b/pkgs/development/tools/boomerang/dlopen_path.patch new file mode 100644 index 00000000000..1e4bf3c75a3 --- /dev/null +++ b/pkgs/development/tools/boomerang/dlopen_path.patch @@ -0,0 +1,13 @@ +diff --git a/loader/BinaryFileFactory.cpp b/loader/BinaryFileFactory.cpp +index 889a4ed..ca86765 100644 +--- a/loader/BinaryFileFactory.cpp ++++ b/loader/BinaryFileFactory.cpp +@@ -109,7 +109,7 @@ BinaryFile* BinaryFileFactory::getInstanceFor( const char *sName ) { + + // Load the specific loader library + #ifndef _WIN32 // Cygwin, Unix/Linux +- libName = std::string("lib/lib") + libName; ++ libName = std::string("lib") + libName; + #ifdef __CYGWIN__ + libName += ".dll"; // Cygwin wants .dll, but is otherwise like Unix + #else diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 7bc0730b112..69493785515 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -437,6 +437,8 @@ let bfr = callPackage ../tools/misc/bfr { }; + boomerang = callPackage ../development/tools/boomerang { }; + bootchart = callPackage ../tools/system/bootchart { }; bsod = callPackage ../misc/emulators/bsod { };