blob: 852569a0ca315008d1d2af7e4a229e0dc5e58d99 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
#UNAME_S := $(shell uname -s)
#ifeq ($(UNAME_S),Darwin)
# LIB := -L/Applications/Binary\ Ninja.app/Contents/MacOS/ -lbinaryninjacore
#else
# LIB := -L$(HOME)/binaryninja/ -lbinaryninjacore
#endif
INSTALLPATH := ~/binaryninja
TARGETDIR := bin
TARGETNAME := libbinaryninjaapi
TARGET := $(TARGETDIR)/$(TARGETNAME)
SRCEXT = .cpp
SOURCES = $(wildcard *$(SRCEXT))
OBJECTS = $(SOURCES:.cpp=.o) json.o
CFLAGS := -c -fPIC -O2 -pipe -std=gnu++11 -Wall -W -Wextra -Wshadow
CPPFLAGS := -O2 -std=c++11 -Wall -W -Wextra -Wshadow
ifeq ($(UNAME_S),Darwin)
CC := $(shell xcrun -f g++)
AR := $(shell xcrun -f ar)
CFLAGS += -stdlib=libc++
else
CC := g++
AR := ar
endif
all: $(TARGET).a
$(TARGET).a: $(OBJECTS)
@mkdir -p $(TARGETDIR)
$(AR) rcs $@ $^
%.o: %.cpp
@echo " Compiling... $@ $<"
$(CC) $(CFLAGS) $(INC) -c -o $@ $<
json.o: ./json/jsoncpp.cpp ./json/json.h ./json/json-forwards.h
$(CC) $(CFLAGS) -I. -c -o $@ $<
install: generate $(TARGET).a
@echo "Installing binaryninja API.";
cp -r python/* $(INSTALLPATH)/python/binaryninja
cp $(TARGETDIR)/$(TARGET).a $(INSTALLPATH)
generator: python/generator.cpp $(TARGET).a
@echo "Building generator...";
$(CC) $(CPPFLAGS) -I . $< -L$(TARGETDIR) -lbinaryninjaapi -L $(INSTALLPATH) -lbinaryninjacore -o $@
chmod +x $@
generate: generator
@echo "Running generator...";
LD_LIBRARY_PATH=$(INSTALLPATH) ./generator binaryninjacore.h python/_binaryninjacore.py python/enums.py
python/_binaryninjacore.py: generate
python/enums.py: generate
python_test: environment python/_binaryninjacore.py python/enums.py
python2 suite/unit.py
python3 suite/unit.py
oracle: environment python/_binaryninjacore.py python/enums.py
python3 suite/generator.py
environment: python/_binaryninjacore.py python/enums.py
@echo "Copying libs to needed locations..."
@cp $(INSTALLPATH)/libbinaryninjacore.so.1 .
@cp $(INSTALLPATH)/libcurl.so.4 .
@cp $(INSTALLPATH)/libcrypto.so.1.0.2 .
@cp $(INSTALLPATH)/libssl.so.1.0.2 .
@mkdir -p api/python/examples
@cp python/examples/bin_info.py api/python/examples/
@cp $(INSTALLPATH)/libbinaryninjacore.so.1 api/python/
@cp $(INSTALLPATH)/libcurl.so.4 api/python/
@cp $(INSTALLPATH)/libcrypto.so.1.0.2 api/python/
@cp $(INSTALLPATH)/libssl.so.1.0.2 api/python/
@echo "Building 'binaryninja' Packages..."
@mkdir -p suite/binaryninja/
@cp -r python/* suite/binaryninja/
@mkdir -p api/python/examples/binaryninja/
@cp -r python/* api/python/examples/binaryninja/
@echo "Copying Architectures Over..."
@cp -r $(INSTALLPATH)/types/ .
@cp -r $(INSTALLPATH)/plugins/ .
@cp -r $(INSTALLPATH)/plugins/ api/python/
environment_clean:
@echo "Removing 'binaryninja' Packages..."
@rm -r suite/binaryninja/
@rm -r api/
-@rm suite/*.pyc
@echo "Removing libs..."
@rm lib*
@echo "Removing Architectures..."
@rm -r types/
@rm -r plugins/
clean:
@echo " Cleaning...";
$(RM) -r *.o $(TARGETDIR) generator
squeaky: clean environment_clean
.PHONY: clean environment_clean squeaky python/_binaryninjacore.py python/enums.py
|