Nguyen Anh Quynh | 26ee41a | 2013-11-27 12:11:31 +0800 | [diff] [blame^] | 1 | # Capstone Disassembler Engine |
| 2 | # By Nguyen Anh Quynh <aquynh@gmail.com>, 2013> |
| 3 | |
| 4 | # NOTE: at the moment this Makefile is for *nix only. |
| 5 | |
| 6 | CC ?= $(CROSS)gcc |
| 7 | |
| 8 | CFLAGS += -fPIC -O3 -Wall -Iinclude |
| 9 | LDFLAGS += -shared |
| 10 | |
| 11 | LIBNAME = capstone |
| 12 | LIBOBJ = |
| 13 | LIBOBJ += cs.o asprintf.o utils.o SStream.o MCInstrDesc.o MCRegisterInfo.o |
| 14 | LIBOBJ += arch/Mips/MipsDisassembler.o arch/Mips/MipsInstPrinter.o arch/Mips/mapping.o |
| 15 | LIBOBJ += arch/X86/X86DisassemblerDecoder.o arch/X86/X86Disassembler.o arch/X86/X86IntelInstPrinter.o arch/X86/X86ATTInstPrinter.o arch/X86/mapping.o |
| 16 | LIBOBJ += arch/ARM/ARMDisassembler.o arch/ARM/ARMInstPrinter.o arch/ARM/mapping.o |
| 17 | LIBOBJ += arch/AArch64/AArch64BaseInfo.o arch/AArch64/AArch64Disassembler.o arch/AArch64/AArch64InstPrinter.o arch/AArch64/mapping.o |
| 18 | LIBOBJ += MCInst.o |
| 19 | |
| 20 | |
| 21 | # by default, lib extension is .so |
| 22 | EXT = so |
| 23 | |
| 24 | # OSX is the exception |
| 25 | UNAME_S := $(shell uname -s) |
| 26 | ifeq ($(UNAME_S),Darwin) |
| 27 | EXT = dylib |
| 28 | endif |
| 29 | |
| 30 | |
| 31 | .PHONY: all clean lib windows win_lib install uninstall |
| 32 | |
| 33 | all: lib |
| 34 | make -C tests |
| 35 | install -m0644 lib$(LIBNAME).$(EXT) tests |
| 36 | |
| 37 | lib: $(LIBOBJ) |
| 38 | $(CC) $(LDFLAGS) $(LIBOBJ) -o lib$(LIBNAME).$(EXT) |
| 39 | # MacOS doesn't like strip |
| 40 | #strip lib$(LIBNAME).$(EXT) |
| 41 | |
| 42 | install: lib |
| 43 | install -m0644 lib$(LIBNAME).$(EXT) /usr/lib |
| 44 | mkdir -p /usr/include/$(LIBNAME) |
| 45 | install -m0644 include/capstone.h /usr/include/$(LIBNAME) |
| 46 | install -m0644 include/x86.h /usr/include/$(LIBNAME) |
| 47 | install -m0644 include/arm.h /usr/include/$(LIBNAME) |
| 48 | install -m0644 include/arm64.h /usr/include/$(LIBNAME) |
| 49 | install -m0644 include/mips.h /usr/include/$(LIBNAME) |
| 50 | |
| 51 | uninstall: |
| 52 | rm -rf /usr/include/$(LIBNAME) |
| 53 | rm -rf /usr/lib/lib$(LIBNAME).$(EXT) |
| 54 | |
| 55 | # Mingw32 |
| 56 | windows: win_lib |
| 57 | install -m0644 $(LIBNAME).dll tests |
| 58 | make -C tests windows |
| 59 | |
| 60 | # Mingw32 |
| 61 | win_lib: $(LIBOBJ) |
| 62 | $(CC) $(LDFLAGS) $(LIBOBJ) -o $(LIBNAME).dll |
| 63 | strip $(LIBNAME).dll |
| 64 | |
| 65 | clean: |
| 66 | rm -f $(LIBOBJ) lib$(LIBNAME).* $(LIBNAME).dll |
| 67 | #cd bindings/ruby; make clean; rm -rf Makefile |
| 68 | cd bindings/python; make clean |
| 69 | cd bindings/csharp; make clean |
| 70 | cd bindings/java; make clean |
| 71 | cd bindings/ocaml; make clean |
| 72 | make -C tests clean |
| 73 | |
| 74 | .c.o: |
| 75 | ${CC} ${CFLAGS} -c $< -o $@ |
| 76 | |