1*9a0e4156SSadaf Ebrahimi# Capstone Disassembler Engine 2*9a0e4156SSadaf Ebrahimi# By Nguyen Anh Quynh <[email protected]>, 2013> 3*9a0e4156SSadaf Ebrahimi 4*9a0e4156SSadaf Ebrahimiifndef BUILDDIR 5*9a0e4156SSadaf EbrahimiBLDIR = . 6*9a0e4156SSadaf EbrahimiOBJDIR = . 7*9a0e4156SSadaf Ebrahimielse 8*9a0e4156SSadaf EbrahimiBLDIR = $(abspath $(BUILDDIR))/bindings/java 9*9a0e4156SSadaf EbrahimiOBJDIR = $(abspath $(BUILDDIR))/obj/bindings/java 10*9a0e4156SSadaf Ebrahimiendif 11*9a0e4156SSadaf Ebrahimi 12*9a0e4156SSadaf EbrahimiJNA = /usr/share/java/jna/jna.jar 13*9a0e4156SSadaf Ebrahimi 14*9a0e4156SSadaf Ebrahimiifneq ($(wildcard $(JNA)),) 15*9a0e4156SSadaf Ebrahimielse 16*9a0e4156SSadaf Ebrahimi ifneq ($(wildcard /usr/share/java/jna.jar),) 17*9a0e4156SSadaf Ebrahimi JNA = /usr/share/java/jna.jar 18*9a0e4156SSadaf Ebrahimi else 19*9a0e4156SSadaf Ebrahimi JNA = 20*9a0e4156SSadaf Ebrahimi endif 21*9a0e4156SSadaf Ebrahimiendif 22*9a0e4156SSadaf Ebrahimi 23*9a0e4156SSadaf EbrahimiPYTHON2 ?= python 24*9a0e4156SSadaf Ebrahimi 25*9a0e4156SSadaf EbrahimiCAPSTONE_JAVA = Capstone.java Arm_const.java Arm64_const.java Mips_const.java \ 26*9a0e4156SSadaf Ebrahimi X86_const.java Xcore_const.java Ppc_const.java Sparc_const.java\ 27*9a0e4156SSadaf Ebrahimi Sysz_const.java M680x_const.java \ 28*9a0e4156SSadaf Ebrahimi Arm.java Arm64.java Mips.java X86.java Xcore.java Ppc.java\ 29*9a0e4156SSadaf Ebrahimi Sparc.java Systemz.java M680x.java 30*9a0e4156SSadaf Ebrahimi 31*9a0e4156SSadaf Ebrahimiall: gen_const capstone tests 32*9a0e4156SSadaf Ebrahimi 33*9a0e4156SSadaf Ebrahimicapstone: capstone_class 34*9a0e4156SSadaf Ebrahimi @mkdir -p $(BLDIR) 35*9a0e4156SSadaf Ebrahimi cd $(OBJDIR) && jar cf $(BLDIR)/capstone.jar capstone/*.class 36*9a0e4156SSadaf Ebrahimi 37*9a0e4156SSadaf Ebrahimicapstone_class: jna 38*9a0e4156SSadaf Ebrahimiifdef BUILDDIR 39*9a0e4156SSadaf Ebrahimi @mkdir -p $(OBJDIR) 40*9a0e4156SSadaf Ebrahimi cd capstone && javac -d $(OBJDIR) -classpath $(JNA) $(CAPSTONE_JAVA) 41*9a0e4156SSadaf Ebrahimielse 42*9a0e4156SSadaf Ebrahimi cd capstone && javac -classpath $(JNA) $(CAPSTONE_JAVA) 43*9a0e4156SSadaf Ebrahimiendif 44*9a0e4156SSadaf Ebrahimi 45*9a0e4156SSadaf Ebrahimitests: capstone_class jna 46*9a0e4156SSadaf Ebrahimi @mkdir -p $(OBJDIR) 47*9a0e4156SSadaf Ebrahimi javac -d $(OBJDIR) -classpath "$(JNA):$(BLDIR)/capstone.jar" TestBasic.java\ 48*9a0e4156SSadaf Ebrahimi TestArm.java TestArm64.java TestMips.java TestX86.java TestXcore.java\ 49*9a0e4156SSadaf Ebrahimi TestPpc.java TestSparc.java TestSystemz.java TestM680x.java 50*9a0e4156SSadaf Ebrahimi 51*9a0e4156SSadaf Ebrahimigen_const: 52*9a0e4156SSadaf Ebrahimi cd ../ && $(PYTHON2) const_generator.py java 53*9a0e4156SSadaf Ebrahimi 54*9a0e4156SSadaf Ebrahimijna: 55*9a0e4156SSadaf Ebrahimi @if [ ! $(JNA) ]; then echo "*** Unable to find JNA ***"; exit 1; fi 56*9a0e4156SSadaf Ebrahimi 57*9a0e4156SSadaf Ebrahimiclean: 58*9a0e4156SSadaf Ebrahimi rm -rf $(OBJDIR)/capstone/*.class 59*9a0e4156SSadaf Ebrahimi rm -rf $(OBJDIR)/*.class $(OBJDIR)/*.log $(BLDIR)/*.jar 60*9a0e4156SSadaf Ebrahimiifdef BUILDDIR 61*9a0e4156SSadaf Ebrahimi rm -rf $(BLDIR) 62*9a0e4156SSadaf Ebrahimi rm -rf $(OBJDIR) 63*9a0e4156SSadaf Ebrahimiendif 64*9a0e4156SSadaf Ebrahimi 65*9a0e4156SSadaf EbrahimiTESTS = testbasic arm arm64 m680x mips ppc sparc systemz x86 xcore 66*9a0e4156SSadaf Ebrahimicheck: 67*9a0e4156SSadaf Ebrahimi @for t in $(TESTS); do \ 68*9a0e4156SSadaf Ebrahimi echo Check $$t ... ; \ 69*9a0e4156SSadaf Ebrahimi ./run.sh $$t > /dev/null && echo OK || echo FAILED; \ 70*9a0e4156SSadaf Ebrahimi done 71*9a0e4156SSadaf Ebrahimi 72