blob: 6828d034e79b05fa454a72aff2653c450508c270 [file] [log] [blame]
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +08001# Capstone Disassembler Engine
Nguyen Anh Quynh05e27132014-03-10 11:58:57 +08002# By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +08003
Nguyen Anh Quynh8abb3452014-03-01 20:44:58 +08004include ../config.mk
5
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +08006INCDIR = ../include
7LIBDIR = ..
8
Nguyen Anh Quynhd80cede2014-01-16 21:07:59 +08009ifeq ($(CROSS),)
10CC ?= cc
11else
12CC = $(CROSS)gcc
13endif
14
opn73b60682014-01-16 12:08:49 +010015
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +080016CFLAGS += -fPIC -O3 -Wall -I$(INCDIR) -L$(LIBDIR)
17
18LIBNAME = capstone
19
Daniel Godas-Lopez0f7c4322013-11-28 18:22:50 +000020BIN_EXT =
Nguyen Anh Quynhd159a032014-01-09 15:49:44 +080021AR_EXT = a
Daniel Godas-Lopez0f7c4322013-11-28 18:22:50 +000022
23# Cygwin?
24IS_CYGWIN := $(shell $(CC) -dumpmachine | grep -i cygwin | wc -l)
25ifeq ($(IS_CYGWIN),1)
26CFLAGS := $(CFLAGS:-fPIC=)
27BIN_EXT = .exe
Nguyen Anh Quynhd159a032014-01-09 15:49:44 +080028AR_EXT = dll.a
Daniel Godas-Lopez0f7c4322013-11-28 18:22:50 +000029else
30# mingw?
31IS_MINGW := $(shell $(CC) --version | grep -i mingw | wc -l)
32ifeq ($(IS_MINGW),1)
33CFLAGS := $(CFLAGS:-fPIC=)
34BIN_EXT = .exe
Nguyen Anh Quynhd159a032014-01-09 15:49:44 +080035AR_EXT = dll.a
Daniel Godas-Lopez0f7c4322013-11-28 18:22:50 +000036endif
37endif
38
39.PHONY: all clean
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +080040
Nguyen Anh Quynh8abb3452014-03-01 20:44:58 +080041SOURCES = test.c test_detail.c
42ifneq (,$(findstring arm,$(CAPSTONE_ARCHS)))
43SOURCES += test_arm.c
44endif
45ifneq (,$(findstring aarch64,$(CAPSTONE_ARCHS)))
46SOURCES += test_arm64.c
47endif
48ifneq (,$(findstring mips,$(CAPSTONE_ARCHS)))
49SOURCES += test_mips.c
50endif
51ifneq (,$(findstring powerpc,$(CAPSTONE_ARCHS)))
52SOURCES += test_ppc.c
53endif
Nguyen Anh Quynh05e27132014-03-10 11:58:57 +080054ifneq (,$(findstring sparc,$(CAPSTONE_ARCHS)))
55SOURCES += test_sparc.c
56endif
Nguyen Anh Quynh48a14ca2014-03-23 08:35:45 +080057ifneq (,$(findstring systemz,$(CAPSTONE_ARCHS)))
58SOURCES += test_systemz.c
59endif
Nguyen Anh Quynh8abb3452014-03-01 20:44:58 +080060ifneq (,$(findstring x86,$(CAPSTONE_ARCHS)))
61SOURCES += test_x86.c
62endif
63
danghvua0f93bd2013-11-28 02:46:15 -060064OBJS = $(SOURCES:.c=.o)
Daniel Godas-Lopez0f7c4322013-11-28 18:22:50 +000065BINARY = $(SOURCES:.c=$(BIN_EXT))
pancakead3cbaf2013-11-28 04:57:51 +010066
Daniel Godas-Lopez0f7c4322013-11-28 18:22:50 +000067all: $(BINARY)
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +080068
69clean:
Nguyen Anh Quynhd159a032014-01-09 15:49:44 +080070 rm -rf $(OBJS) $(SOURCES:.c=) *.exe *.static lib$(LIBNAME).*
danghvua0f93bd2013-11-28 02:46:15 -060071
Daniel Godas-Lopez0f7c4322013-11-28 18:22:50 +000072$(BINARY): $(OBJS)
danghvua0f93bd2013-11-28 02:46:15 -060073
Daniel Godas-Lopez0f7c4322013-11-28 18:22:50 +000074%$(BIN_EXT): %.o
Nguyen Anh Quynhe29eaf92014-01-03 12:13:48 +080075 ${CC} $(CFLAGS) $(LDFLAGS) $< -O3 -Wall -l$(LIBNAME) -o $@
Nguyen Anh Quynhd159a032014-01-09 15:49:44 +080076 ${CC} $(CFLAGS) $(LDFLAGS) $< -O3 -Wall ../lib$(LIBNAME).$(AR_EXT) -o $(subst $(BIN_EXT),,$@).static$(BIN_EXT)
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +080077
Daniel Godas-Lopez0f7c4322013-11-28 18:22:50 +000078%.o: %.c
Nguyen Anh Quynh26ee41a2013-11-27 12:11:31 +080079 ${CC} ${CFLAGS} -c $< -o $@