summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile69
1 files changed, 65 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 23414c45..8480c05a 100644
--- a/Makefile
+++ b/Makefile
@@ -5,6 +5,7 @@
# LIB := -L$(HOME)/binaryninja/ -lbinaryninjacore
#endif
+INSTALLPATH := ~/binaryninja
TARGETDIR := bin
TARGETNAME := libbinaryninjaapi
@@ -15,7 +16,8 @@ SOURCES = $(wildcard *$(SRCEXT))
OBJECTS = $(SOURCES:.cpp=.o) json.o
-CFLAGS := -c -fPIC -O2 -pipe -std=gnu++11 -Wall -W
+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)
@@ -30,7 +32,7 @@ all: $(TARGET).a
$(TARGET).a: $(OBJECTS)
@mkdir -p $(TARGETDIR)
$(AR) rcs $@ $^
-
+
%.o: %.cpp
@echo " Compiling... $@ $<"
$(CC) $(CFLAGS) $(INC) -c -o $@ $<
@@ -38,8 +40,67 @@ $(TARGET).a: $(OBJECTS)
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 $(TARGET).a $(INSTALLPATH)
+ @echo "Done.";
+
+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: environment_clean python/_binaryninjacore.py python/enums.py
+ @echo "Copying over libs..."
+ cp $(INSTALLPATH)/libbinaryninjacore.so.1 .
+ cp $(INSTALLPATH)/libbinaryninjacore.so.1 python/
+
+ @echo "Building 'binaryninja' Packages..."
+ mkdir -p suite/binaryninja/
+ cp -r python/* suite/binaryninja/
+ cp -r suite/binaryninja/ python/examples/
+
+ @echo "Copying Architectures Over..."
+ cp -r $(INSTALLPATH)/types/ .
+ cp -r $(INSTALLPATH)/plugins/ .
+ cp -r $(INSTALLPATH)/types/ python/
+ cp -r $(INSTALLPATH)/plugins/ python/
+
+environment_clean:
+ @echo "Removing 'binaryninja' Packages..."
+ rm -rf suite/binaryninja/
+ rm -rf python/examples/binaryninja/
+
+ @echo "Removing libs..."
+ rm -f libbinaryninjacore.so.1
+ rm -f python/libbinaryninjacore.so.1
+
+ @echo "Removing Architectures..."
+ rm -rf types/
+ rm -rf plugins/
+ rm -rf python/types/
+ rm -rf python/plugins/
+
clean:
@echo " Cleaning...";
- $(RM) -r *.o $(TARGETDIR)
+ $(RM) -r *.o $(TARGETDIR) generator
+
+squeaky: clean environment_clean
-.PHONY: clean
+.PHONY: clean environment_clean squeaky python/_binaryninjacore.py python/enums.py