@@ -30,6 +30,43 @@ related crates:
3030 expose APIs for constructing or reasoning about control-flow graphs. A more robust analysis
3131 is forthcoming, depending on my research needs.
3232
33+ ## Requirements
34+
35+ ### Building
36+
37+ If you're working directly with the ` jingle ` source distribution,
38+ you will need to manually download a copy of the ` ghidra ` source tree
39+ in order to build ` jingle ` or ` jingle_sleigh `
40+
41+ If you're working with ` git ` , this can be done using the existing submodule.
42+ Simply run
43+
44+ ``` shell
45+ git submodule init && git submodule update
46+ ```
47+
48+ If you are for some reason using a zipped source distribution,
49+ then you can run the following:
50+
51+ ``` shell
52+ cd jingle_sleigh
53+ git clone https://github.com/NationalSecurityAgency/ghidra.git
54+ ```
55+
56+ If you are using ` jingle ` as a cargo ` git ` or ` crates.io ` dependency,
57+ this step is not necessary. ` cargo ` will handle all this in the ` git ` case
58+ and we will vendor the necessary ` ghidra ` sources into all ` crates.io ` releases.
59+
60+ ### Running
61+
62+ While ` jingle ` can be configured to work with a single set ` sleigh ` architecture,
63+ the default way to use it is to point it to an existing ` ghidra ` installation.
64+ [ Install ghidra] ( https://ghidra-sre.org ) and, if you are using ` jingle ` programatically,
65+ point it at the top level folder of the installation. If you are using the [ CLI] ( ./jingle ) ,
66+ then provide the path to ghidra as an argument in your first run.
67+
68+ The only thing ghidra is used for here is as a standardized folder layout for ` sleigh ` architectures.
69+ ` jingle ` has no ghidra dependency outside of the bundled ` sleigh ` C++ code.
3370## Usage
3471
3572In order to use ` jingle ` , include it in your ` Cargo.toml ` as usual:
0 commit comments