blob: 1ea21bb15f498d7b19d62a0886061149a1ada808 [file] [log] [blame]
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +08001# 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
Nguyen Anh Quynhd02474c2013-11-27 15:37:10 +08006CC = $(CROSS)gcc
pancakef1cbce22013-11-27 15:31:26 +01007AR?=ar
8RANLIB?=ranlib
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +08009
10CFLAGS += -fPIC -O3 -Wall -Iinclude
11LDFLAGS += -shared
12
13LIBNAME = capstone
14LIBOBJ =
15LIBOBJ += cs.o asprintf.o utils.o SStream.o MCInstrDesc.o MCRegisterInfo.o
16LIBOBJ += arch/Mips/MipsDisassembler.o arch/Mips/MipsInstPrinter.o arch/Mips/mapping.o
17LIBOBJ += arch/X86/X86DisassemblerDecoder.o arch/X86/X86Disassembler.o arch/X86/X86IntelInstPrinter.o arch/X86/X86ATTInstPrinter.o arch/X86/mapping.o
18LIBOBJ += arch/ARM/ARMDisassembler.o arch/ARM/ARMInstPrinter.o arch/ARM/mapping.o
19LIBOBJ += arch/AArch64/AArch64BaseInfo.o arch/AArch64/AArch64Disassembler.o arch/AArch64/AArch64InstPrinter.o arch/AArch64/mapping.o
20LIBOBJ += MCInst.o
21
22
23# by default, lib extension is .so
24EXT = so
25
26# OSX is the exception
27UNAME_S := $(shell uname -s)
28ifeq ($(UNAME_S),Darwin)
29EXT = dylib
30endif
31
32
33.PHONY: all clean lib windows win_lib install uninstall
34
35all: lib
36 make -C tests
37 install -m0644 lib$(LIBNAME).$(EXT) tests
38
39lib: $(LIBOBJ)
40 $(CC) $(LDFLAGS) $(LIBOBJ) -o lib$(LIBNAME).$(EXT)
41 # MacOS doesn't like strip
42 #strip lib$(LIBNAME).$(EXT)
43
pancakef1cbce22013-11-27 15:31:26 +010044archive: $(LIBOBJ)
45 $(AR) q lib$(LIBNAME).a $(LIBOBJ)
46 $(RANLIB) lib$(LIBNAME).a
47
48install: archive lib
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +080049 install -m0644 lib$(LIBNAME).$(EXT) /usr/lib
pancakef1cbce22013-11-27 15:31:26 +010050 install -m0644 lib$(LIBNAME).a /usr/lib
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +080051 mkdir -p /usr/include/$(LIBNAME)
52 install -m0644 include/capstone.h /usr/include/$(LIBNAME)
53 install -m0644 include/x86.h /usr/include/$(LIBNAME)
54 install -m0644 include/arm.h /usr/include/$(LIBNAME)
55 install -m0644 include/arm64.h /usr/include/$(LIBNAME)
56 install -m0644 include/mips.h /usr/include/$(LIBNAME)
57
58uninstall:
59 rm -rf /usr/include/$(LIBNAME)
60 rm -rf /usr/lib/lib$(LIBNAME).$(EXT)
61
62# Mingw32
63windows: win_lib
64 install -m0644 $(LIBNAME).dll tests
65 make -C tests windows
66
67# Mingw32
68win_lib: $(LIBOBJ)
69 $(CC) $(LDFLAGS) $(LIBOBJ) -o $(LIBNAME).dll
70 strip $(LIBNAME).dll
71
72clean:
73 rm -f $(LIBOBJ) lib$(LIBNAME).* $(LIBNAME).dll
74 #cd bindings/ruby; make clean; rm -rf Makefile
75 cd bindings/python; make clean
76 cd bindings/csharp; make clean
77 cd bindings/java; make clean
78 cd bindings/ocaml; make clean
79 make -C tests clean
80
81.c.o:
82 ${CC} ${CFLAGS} -c $< -o $@
83