diff options
| -rw-r--r-- | .gitignore | 2 | ||||
| -rw-r--r-- | CMakeLists.txt | 87 | ||||
| -rw-r--r-- | Makefile | 106 | ||||
| -rw-r--r-- | api-docs/source/conf.py | 10 | ||||
| -rw-r--r-- | examples/bin-info/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | examples/bin-info/Makefile | 54 | ||||
| -rw-r--r-- | examples/breakpoint/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | examples/breakpoint/Makefile | 57 | ||||
| -rw-r--r-- | examples/cmdline_disasm/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | examples/cmdline_disasm/Makefile | 51 | ||||
| -rw-r--r-- | examples/llil_parser/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | examples/llil_parser/Makefile | 51 | ||||
| -rw-r--r-- | examples/mlil_parser/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | examples/mlil_parser/Makefile | 51 | ||||
| -rw-r--r-- | examples/print_syscalls/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | examples/print_syscalls/Makefile | 54 | ||||
| -rw-r--r-- | examples/triage/CMakeLists.txt | 28 | ||||
| -rw-r--r-- | examples/x86_extension/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | examples/x86_extension/Makefile | 59 | ||||
| -rw-r--r-- | python/CMakeLists.txt | 36 |
20 files changed, 134 insertions, 530 deletions
@@ -57,3 +57,5 @@ examples/triage/moc_predefs.h.cbt examples/triage/triage.dll examples/triage/triage.lib *.opt +Makefile +!api-docs/Makefile diff --git a/CMakeLists.txt b/CMakeLists.txt index b42b9d01..b024a3a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,8 @@ -cmake_minimum_required(VERSION 3.4 FATAL_ERROR) +cmake_minimum_required(VERSION 3.9 FATAL_ERROR) -project(binaryninja-api) +project(binaryninjaapi) -option(BINJA_BUILD_EXAMPLES "Builds example plugins" OFF) +option(BN_API_BUILD_EXAMPLES "Builds example plugins" OFF) if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) if (MSVC) @@ -13,70 +13,85 @@ if(NOT CMAKE_SIZEOF_VOID_P EQUAL 8) endif() if(WIN32) - set(BINJA_DIR "C:\\Program Files\\Vector35\\BinaryNinja" - CACHE PATH "Binary Ninja installation directory") - set(BINJA_BIN_DIR "${BINJA_DIR}" + if(NOT BN_INSTALL_DIR) + set(BN_INSTALL_DIR "C:\\Program Files\\Vector35\\BinaryNinja" + CACHE PATH "Binary Ninja installation directory") + endif() + set(BN_INSTALL_BIN_DIR "${BN_INSTALL_DIR}" CACHE PATH "Binary Ninja binary directory") - set(BINJA_PLUGINS_DIR "$ENV{APPDATA}/Binary Ninja/plugins" + set(BN_USER_PLUGINS_DIR "$ENV{APPDATA}/Binary Ninja/plugins" CACHE PATH "Binary Ninja user plugins directory") elseif(APPLE) - set(BINJA_DIR "/Applications/Binary Ninja.app" - CACHE PATH "Binary Ninja installation directory") - set(BINJA_BIN_DIR "${BINJA_DIR}/Contents/MacOS" + if(NOT BN_INSTALL_DIR) + set(BN_INSTALL_DIR "/Applications/Binary Ninja.app" + CACHE PATH "Binary Ninja installation directory") + endif() + set(BN_INSTALL_BIN_DIR "${BN_INSTALL_DIR}/Contents/MacOS" CACHE PATH "Binary Ninja binary directory") - set(BINJA_PLUGINS_DIR "$ENV{HOME}/Library/Application Support/Binary Ninja/plugins" + set(BN_USER_PLUGINS_DIR "$ENV{HOME}/Library/Application Support/Binary Ninja/plugins" CACHE PATH "Binary Ninja user plugins directory") else() - set(BINJA_DIR "$ENV{HOME}/binaryninja" - CACHE PATH "Binary Ninja installation directory") - set(BINJA_BIN_DIR "${BINJA_DIR}" + if(NOT BN_INSTALL_DIR) + set(BN_INSTALL_DIR "$ENV{HOME}/binaryninja" + CACHE PATH "Binary Ninja installation directory") + endif() + set(BN_INSTALL_BIN_DIR "${BN_INSTALL_DIR}" CACHE PATH "Binary Ninja binary directory") - set(BINJA_PLUGINS_DIR "$ENV{HOME}/.binaryninja/plugins" + set(BN_USER_PLUGINS_DIR "$ENV{HOME}/.binaryninja/plugins" CACHE PATH "Binary Ninja user plugins directory") endif() -if(NOT BINJA_CORE_LIBRARY) - find_library(BINJA_CORE_LIBRARY +if((NOT BN_CORE_LIBRARY) AND (NOT BN_INTERNAL_BUILD)) + find_library(BN_CORE_LIBRARY NAMES binaryninjacore libbinaryninjacore.so.1 - PATHS ${BINJA_BIN_DIR}) + PATHS ${BN_INSTALL_BIN_DIR}) - if(BINJA_CORE_LIBRARY) - message(STATUS "Binary Ninja Core: ${BINJA_CORE_LIBRARY}") + if(BN_CORE_LIBRARY) + message(STATUS "Binary Ninja Core: ${BN_CORE_LIBRARY}") else() message(FATAL_ERROR "Binary Ninja Core Not Found") endif() endif() -file(GLOB BINJA_SOURCES *.cpp *.h json/json.h json/jsoncpp.cpp json/json-forwards.h) +file(GLOB BN_API_SOURCES *.cpp *.h json/json.h json/json-forwards.h) +if(NOT DEMO) + list(APPEND BN_API_SOURCES json/jsoncpp.cpp) +endif() -add_library(binaryninjaapi STATIC ${BINJA_SOURCES}) +add_library(binaryninjaapi STATIC ${BN_API_SOURCES}) target_include_directories(binaryninjaapi PUBLIC ${PROJECT_SOURCE_DIR}) -target_link_libraries(binaryninjaapi - ${BINJA_CORE_LIBRARY}) +if(NOT BN_INTERNAL_BUILD) + target_link_libraries(binaryninjaapi ${BN_CORE_LIBRARY}) +else() + target_link_libraries(binaryninjaapi binaryninjacore) +endif() set_target_properties(binaryninjaapi PROPERTIES - CXX_STANDARD 11 + CXX_STANDARD 17 CXX_VISIBILITY_PRESET hidden + CXX_STANDARD_REQUIRED ON VISIBILITY_INLINES_HIDDEN ON POSITION_INDEPENDENT_CODE ON - ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin) + ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/out) -function(binja_install_plugin target) - if(WIN32) - install(TARGETS ${target} RUNTIME - DESTINATION ${BINJA_PLUGINS_DIR}) +function(bn_install_plugin target) + if(NOT BN_INTERNAL_BUILD) + if(WIN32) + install(TARGETS ${target} RUNTIME + DESTINATION ${BN_USER_PLUGINS_DIR}) - install(FILES $<TARGET_PDB_FILE:${target}> - DESTINATION ${BINJA_PLUGINS_DIR} OPTIONAL) - else() - install(TARGETS ${target} LIBRARY - DESTINATION ${BINJA_PLUGINS_DIR}) + install(FILES $<TARGET_PDB_FILE:${target}> + DESTINATION ${BN_USER_PLUGINS_DIR} OPTIONAL) + else() + install(TARGETS ${target} LIBRARY + DESTINATION ${BN_USER_PLUGINS_DIR}) + endif() endif() endfunction() -if(BINJA_BUILD_EXAMPLES) +if(BN_API_BUILD_EXAMPLES) add_subdirectory(examples) endif() diff --git a/Makefile b/Makefile deleted file mode 100644 index 8480c05a..00000000 --- a/Makefile +++ /dev/null @@ -1,106 +0,0 @@ -#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 $(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) generator - -squeaky: clean environment_clean - -.PHONY: clean environment_clean squeaky python/_binaryninjacore.py python/enums.py diff --git a/api-docs/source/conf.py b/api-docs/source/conf.py index 7662c649..b3b929c8 100644 --- a/api-docs/source/conf.py +++ b/api-docs/source/conf.py @@ -22,9 +22,15 @@ import platform import inspect if (platform.system() == "Darwin"): - bnpath=os.path.join(os.path.abspath('.'), "..", "..", "..", "ui", "binaryninja.app", "Contents", "Resources", "python") + bnpath=os.path.join(os.path.abspath('.'), "..", "..", "..", "build", "out", "binaryninja.app", "Contents", "Resources", "python") else: - bnpath=os.path.join(os.path.abspath('.'), "..", "..", "..", "ui", "python") + bnpath=os.path.join(os.path.abspath('.'), "..", "..", "..", "build", "out", "python") + +if not os.path.exists(bnpath): + if (platform.system() == "Darwin"): + bnpath=os.path.join(os.path.abspath('.'), "..", "..", "..", "out", "binaryninja.app", "Contents", "Resources", "python") + else: + bnpath=os.path.join(os.path.abspath('.'), "..", "..", "..", "out", "python") sys.path.insert(0, bnpath) import binaryninja diff --git a/examples/bin-info/CMakeLists.txt b/examples/bin-info/CMakeLists.txt index 498a5793..54381871 100644 --- a/examples/bin-info/CMakeLists.txt +++ b/examples/bin-info/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) +cmake_minimum_required(VERSION 3.9 FATAL_ERROR) project(bin-info CXX) diff --git a/examples/bin-info/Makefile b/examples/bin-info/Makefile deleted file mode 100644 index c8b2efc2..00000000 --- a/examples/bin-info/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# Path to prebuilt libbinaryninjaapi.a -BINJA_API_A := ../../bin/libbinaryninjaapi.a - -# Path to binaryninjaapi.h and json -INC := -I../../ - -UNAME_S := $(shell uname -s) -ifeq ($(UNAME_S),Linux) - # Path to binaryninja install - BINJAPATH := $(HOME)/binaryninja/ - CC := g++ -else - BINJAPATH := /Applications/Binary\ Ninja.app/Contents/MacOS - CC := $(shell xcrun -f clang++) -endif - -SRCDIR := src -BUILDDIR := build -TARGETDIR := bin - -TARGETNAME := bininfo -TARGET := $(TARGETDIR)/$(TARGETNAME) - -SRCEXT := cpp -SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) -OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) - -LIBS := -L $(BINJAPATH) -lbinaryninjacore -CFLAGS := -c -std=gnu++11 -O2 -Wall -W -fPIC -pipe -ifeq ($(UNAME_S),Darwin) - CFLAGS += -arch x86_64 -pipe -stdlib=libc++ -endif - -all: $(TARGET) - -ifeq ($(UNAME_S),Linux) -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -Wl,-rpath=$(BINJAPATH) -ldl -o $@ -else -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -o $@ - install_name_tool -change @rpath/libbinaryninjacore.dylib $(BINJAPATH)/libbinaryninjacore.dylib $@ -endif - -$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) - @mkdir -p $(BUILDDIR) - $(CC) $(CFLAGS) $(INC) -c -o $@ $< - -clean: - $(RM) -r $(BUILDDIR) $(TARGETDIR) - -.PHONY: clean diff --git a/examples/breakpoint/CMakeLists.txt b/examples/breakpoint/CMakeLists.txt index 70de8884..f0ed85c9 100644 --- a/examples/breakpoint/CMakeLists.txt +++ b/examples/breakpoint/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) +cmake_minimum_required(VERSION 3.9 FATAL_ERROR) project(breakpoint CXX) @@ -12,4 +12,4 @@ set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 11 LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin) -binja_install_plugin(${PROJECT_NAME}) +bn_install_plugin(${PROJECT_NAME}) diff --git a/examples/breakpoint/Makefile b/examples/breakpoint/Makefile deleted file mode 100644 index d85b63e5..00000000 --- a/examples/breakpoint/Makefile +++ /dev/null @@ -1,57 +0,0 @@ -# Path to prebuilt libbinaryninjaapi.a -BINJA_API_A := ../../bin/libbinaryninjaapi.a - -# Path to binaryninjaapi.h and json -INC := -I../../ - -UNAME_S := $(shell uname -s) -ifeq ($(UNAME_S),Linux) - # Path to binaryninja install - BINJAPATH := $(HOME)/binaryninja -else - BINJAPATH := /Applications/Binary\ Ninja.app/Contents/MacOS -endif - -SRCDIR := src -BUILDDIR := build -TARGETDIR := bin - -TARGETNAME := breakpoint -TARGET := $(TARGETDIR)/$(TARGETNAME) -INSTALLBINDIR := $(BINJAPATH)/plugins/ - -SRCEXT := cpp -SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) -OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) - -LIBS := -L $(BINJAPATH) -lbinaryninjacore -CFLAGS := -c -std=gnu++11 -O2 -Wall -W -fPIC -pipe -ifeq ($(UNAME_S),Linux) - CC := g++ -all: $(TARGET).so -else - CC := $(shell xcrun -f clang++) - CFLAGS += -arch x86_64 -pipe -stdlib=libc++ -mmacosx-version-min=10.7 -all: $(TARGET).dylib -endif - -$(TARGET).so: $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) -shared $^ $(BINJA_API_A) $(LIBS) -o $@ - -$(TARGET).dylib: $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) -dynamiclib $^ $(BINJA_API_A) $(LIBS) -o $@ - install_name_tool -id @loader_path/$(TARGETNAME).dylib -add_rpath @loader_path/.. $@ - -$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) - @mkdir -p $(BUILDDIR) - $(CC) $(CFLAGS) $(INC) -c -o $@ $< - -clean: - $(RM) -r $(BUILDDIR) $(TARGETDIR) - -install: - cp $(TARGET) $(INSTALLBINDIR) - -.PHONY: clean diff --git a/examples/cmdline_disasm/CMakeLists.txt b/examples/cmdline_disasm/CMakeLists.txt index 98e5f535..c76d49fc 100644 --- a/examples/cmdline_disasm/CMakeLists.txt +++ b/examples/cmdline_disasm/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) +cmake_minimum_required(VERSION 3.9 FATAL_ERROR) project(cmdline_disasm CXX) diff --git a/examples/cmdline_disasm/Makefile b/examples/cmdline_disasm/Makefile deleted file mode 100644 index 12931876..00000000 --- a/examples/cmdline_disasm/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# Path to prebuilt libbinaryninjaapi.a -BINJA_API_A := ../../bin/libbinaryninjaapi.a - -# Path to binaryninjaapi.h and json -INC := -I../../ - -UNAME_S := $(shell uname -s) -ifeq ($(UNAME_S),Linux) - # Path to binaryninja install - BINJAPATH := $(HOME)/binaryninja/ - CC := gcc -else - BINJAPATH := /Applications/Binary\ Ninja.app/Contents/MacOS - CC := clang -endif - -SRCDIR := src -BUILDDIR := build -TARGETDIR := bin - -TARGETNAME := disasm -TARGET := $(TARGETDIR)/$(TARGETNAME) - -SRCEXT := cpp -SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) -OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) - -LIBS := -L $(BINJAPATH) -lbinaryninjacore -CPPFLAGS := -c -O2 -Wall -W -fPIC --std=c++11 -pipe - -all: $(TARGET) - -ifeq ($(UNAME_S),Linux) -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -Wl,-rpath=$(BINJAPATH) -ldl -o $@ -else -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -o $@ - install_name_tool -change @rpath/libbinaryninjacore.dylib $(BINJAPATH)/libbinaryninjacore.dylib $@ -endif - -$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) - @mkdir -p $(BUILDDIR) - $(CC) $(CPPFLAGS) $(INC) -c -o $@ $< - -clean: - $(RM) -r $(BUILDDIR) $(TARGETDIR) - -.PHONY: clean diff --git a/examples/llil_parser/CMakeLists.txt b/examples/llil_parser/CMakeLists.txt index dd850fc5..bc744ccb 100644 --- a/examples/llil_parser/CMakeLists.txt +++ b/examples/llil_parser/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) +cmake_minimum_required(VERSION 3.9 FATAL_ERROR) project(llil_parser CXX) diff --git a/examples/llil_parser/Makefile b/examples/llil_parser/Makefile deleted file mode 100644 index 13c01e62..00000000 --- a/examples/llil_parser/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# Path to prebuilt libbinaryninjaapi.a -BINJA_API_A := ../../bin/libbinaryninjaapi.a - -# Path to binaryninjaapi.h and json -INC := -I../../ - -UNAME_S := $(shell uname -s) -ifeq ($(UNAME_S),Linux) - # Path to binaryninja install - BINJAPATH := $(HOME)/binaryninja/ - CC := g++ -else - BINJAPATH := /Applications/Binary\ Ninja.app/Contents/MacOS - CC := clang++ -endif - -SRCDIR := src -BUILDDIR := build -TARGETDIR := bin - -TARGETNAME := llil_parser -TARGET := $(TARGETDIR)/$(TARGETNAME) - -SRCEXT := cpp -SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) -OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) - -LIBS := -L $(BINJAPATH) -lbinaryninjacore -CFLAGS := -c -std=gnu++11 -O2 -Wall -W -fPIC -pipe - -all: $(TARGET) - -ifeq ($(UNAME_S),Linux) -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -Wl,-rpath=$(BINJAPATH) -ldl -o $@ -else -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -o $@ - install_name_tool -change @rpath/libbinaryninjacore.dylib $(BINJAPATH)/libbinaryninjacore.dylib $@ -endif - -$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) - @mkdir -p $(BUILDDIR) - $(CC) $(CFLAGS) $(INC) -c -o $@ $< - -clean: - $(RM) -r $(BUILDDIR) $(TARGETDIR) - -.PHONY: clean diff --git a/examples/mlil_parser/CMakeLists.txt b/examples/mlil_parser/CMakeLists.txt index 4f4f450b..f5cfa1ef 100644 --- a/examples/mlil_parser/CMakeLists.txt +++ b/examples/mlil_parser/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) +cmake_minimum_required(VERSION 3.9 FATAL_ERROR) project(mlil_parser CXX) diff --git a/examples/mlil_parser/Makefile b/examples/mlil_parser/Makefile deleted file mode 100644 index 44b7b77f..00000000 --- a/examples/mlil_parser/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# Path to prebuilt libbinaryninjaapi.a -BINJA_API_A := ../../bin/libbinaryninjaapi.a - -# Path to binaryninjaapi.h and json -INC := -I../../ - -UNAME_S := $(shell uname -s) -ifeq ($(UNAME_S),Linux) - # Path to binaryninja install - BINJAPATH := $(HOME)/binaryninja/ - CC := g++ -else - BINJAPATH := /Applications/Binary\ Ninja.app/Contents/MacOS - CC := clang++ -endif - -SRCDIR := src -BUILDDIR := build -TARGETDIR := bin - -TARGETNAME := mlil_parser -TARGET := $(TARGETDIR)/$(TARGETNAME) - -SRCEXT := cpp -SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) -OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) - -LIBS := -L $(BINJAPATH) -lbinaryninjacore -CFLAGS := -c -std=gnu++11 -O2 -Wall -W -fPIC -pipe - -all: $(TARGET) - -ifeq ($(UNAME_S),Linux) -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -Wl,-rpath=$(BINJAPATH) -ldl -o $@ -else -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -o $@ - install_name_tool -change @rpath/libbinaryninjacore.dylib $(BINJAPATH)/libbinaryninjacore.dylib $@ -endif - -$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) - @mkdir -p $(BUILDDIR) - $(CC) $(CFLAGS) $(INC) -c -o $@ $< - -clean: - $(RM) -r $(BUILDDIR) $(TARGETDIR) - -.PHONY: clean diff --git a/examples/print_syscalls/CMakeLists.txt b/examples/print_syscalls/CMakeLists.txt index d8495b3c..166017fe 100644 --- a/examples/print_syscalls/CMakeLists.txt +++ b/examples/print_syscalls/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) +cmake_minimum_required(VERSION 3.9 FATAL_ERROR) project(print_syscalls CXX) diff --git a/examples/print_syscalls/Makefile b/examples/print_syscalls/Makefile deleted file mode 100644 index 54fd1237..00000000 --- a/examples/print_syscalls/Makefile +++ /dev/null @@ -1,54 +0,0 @@ -# Path to prebuilt libbinaryninjaapi.a -BINJA_API_A := ../../bin/libbinaryninjaapi.a - -# Path to binaryninjaapi.h and json -INC := -I../../ - -UNAME_S := $(shell uname -s) -ifeq ($(UNAME_S),Linux) - # Path to binaryninja install - BINJAPATH := $(HOME)/binaryninja/ - CC := g++ -else - BINJAPATH := /Applications/Binary\ Ninja.app/Contents/MacOS - CC := $(shell xcrun -f clang++) -endif - -SRCDIR := src -BUILDDIR := build -TARGETDIR := bin - -TARGETNAME := print_syscalls -TARGET := $(TARGETDIR)/$(TARGETNAME) - -SRCEXT := cpp -SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) -OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) - -LIBS := -L $(BINJAPATH) -lbinaryninjacore -CFLAGS := -c -std=gnu++11 -O2 -Wall -W -fPIC -pipe -ggdb -ifeq ($(UNAME_S),Darwin) - CFLAGS += -arch x86_64 -pipe -stdlib=libc++ -endif - -all: $(TARGET) - -ifeq ($(UNAME_S),Linux) -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -Wl,-rpath=$(BINJAPATH) -ldl -o $@ -else -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -o $@ - install_name_tool -change @rpath/libbinaryninjacore.dylib $(BINJAPATH)/libbinaryninjacore.dylib $@ -endif - -$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) - @mkdir -p $(BUILDDIR) - $(CC) $(CFLAGS) $(INC) -c -o $@ $< - -clean: - $(RM) -r $(BUILDDIR) $(TARGETDIR) - -.PHONY: clean diff --git a/examples/triage/CMakeLists.txt b/examples/triage/CMakeLists.txt new file mode 100644 index 00000000..f3d77fb4 --- /dev/null +++ b/examples/triage/CMakeLists.txt @@ -0,0 +1,28 @@ +cmake_minimum_required(VERSION 3.9 FATAL_ERROR) + +project(triage) + +file(GLOB SOURCES + *.cpp + *.h) + +if(DEMO) + add_library(triage STATIC ${SOURCES}) +else() + add_library(triage SHARED ${SOURCES}) +endif() + +target_link_libraries(triage binaryninjaapi binaryninjaui) + +set_target_properties(triage PROPERTIES + CXX_STANDARD 17 + CXX_VISIBILITY_PRESET hidden + CXX_STANDARD_REQUIRED ON + VISIBILITY_INLINES_HIDDEN ON + POSITION_INDEPENDENT_CODE ON) + +if(BN_INTERNAL_BUILD) + ui_plugin_rpath(triage) + set_target_properties(triage PROPERTIES + LIBRARY_OUTPUT_DIRECTORY ${BN_CORE_PLUGIN_DIR}) +endif() diff --git a/examples/x86_extension/CMakeLists.txt b/examples/x86_extension/CMakeLists.txt index 632a9381..7f04d5a5 100644 --- a/examples/x86_extension/CMakeLists.txt +++ b/examples/x86_extension/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR) +cmake_minimum_required(VERSION 3.9 FATAL_ERROR) project(x86_extension CXX) @@ -14,4 +14,4 @@ set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 11 LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../../bin) -binja_install_plugin(${PROJECT_NAME}) +bn_install_plugin(${PROJECT_NAME}) diff --git a/examples/x86_extension/Makefile b/examples/x86_extension/Makefile deleted file mode 100644 index 1ee60891..00000000 --- a/examples/x86_extension/Makefile +++ /dev/null @@ -1,59 +0,0 @@ -# Path to prebuilt libbinaryninjaapi.a -BINJA_API_A := ../../bin/libbinaryninjaapi.a - -# Path to binaryninjaapi.h and json -INC := -I../../ - -UNAME_S := $(shell uname -s) -ifeq ($(UNAME_S),Linux) - # Path to binaryninja install - BINJAPATH := $(shell cat ~/.binaryninja/lastrun) - PLUGIN_DIR := ~/.binaryninja/plugins/ - CC := g++ -else - BINJAPATH := /Applications/Binary\ Ninja.app/Contents/MacOS - PLUGIN_DIR := ~/Library/Application\ Support/Binary\ Ninja/plugins/ - CC := clang++ -endif - -SRCDIR := src -BUILDDIR := build -TARGETDIR := bin - -TARGETNAME := x86_extension -TARGET := $(TARGETDIR)/$(TARGETNAME) - -SRCEXT := cpp -SOURCES := $(shell find $(SRCDIR) -type f -name *.$(SRCEXT)) -OBJECTS := $(patsubst $(SRCDIR)/%,$(BUILDDIR)/%,$(SOURCES:.$(SRCEXT)=.o)) src/asmx86/libasmx86.a - -LIBS := -L$(BINJAPATH) -lbinaryninjacore -CFLAGS := -c -std=gnu++11 -O2 -Wall -W -fPIC -pipe -Wno-unused-function - -all: $(TARGET) - -ifeq ($(UNAME_S),Linux) -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -shared -Wl,-rpath=$(BINJAPATH) -ldl -o bin/lib$(TARGETNAME).so -else -$(TARGET): $(OBJECTS) - @mkdir -p $(TARGETDIR) - $(CC) $^ $(BINJA_API_A) $(LIBS) -single_module -dynamiclib -o bin/lib$(TARGETNAME).dylib - install_name_tool -add_rpath $(BINJAPATH)/libbinaryninjacore.dylib bin/lib$(TARGETNAME).dylib -endif - -$(BUILDDIR)/%.o: $(SRCDIR)/%.$(SRCEXT) - @mkdir -p $(BUILDDIR) - $(CC) $(CFLAGS) $(INC) -c -o $@ $< - -src/asmx86/libasmx86.a: - $(MAKE) -C src/asmx86 - -install: - cp bin/lib$(TARGETNAME).dylib $(PLUGIN_DIR) - -clean: - $(RM) -r $(BUILDDIR) $(TARGETDIR) - -.PHONY: clean diff --git a/python/CMakeLists.txt b/python/CMakeLists.txt new file mode 100644 index 00000000..ffe54917 --- /dev/null +++ b/python/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.9 FATAL_ERROR) + +project(python-api) + +file(GLOB PYTHON_SOURCES ${PROJECT_SOURCE_DIR}/*.py) +list(REMOVE_ITEM PYTHON_SOURCES ${PROJECT_SOURCE_DIR}/_binaryninjacore.py) +list(REMOVE_ITEM PYTHON_SOURCES ${PROJECT_SOURCE_DIR}/enums.py) + +add_executable(generator + ${PROJECT_SOURCE_DIR}/generator.cpp + ${PYTHON_SOURCES} + ${PROJECT_SOURCE_DIR}/_binaryninjacore.py + ${PROJECT_SOURCE_DIR}/enums.py) +target_link_libraries(generator binaryninjaapi) + +set_target_properties(generator PROPERTIES + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + BUILD_WITH_INSTALL_RPATH OFF + RUNTIME_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}) + +if(BN_INTERNAL_BUILD) + if(WIN32) + add_custom_command(TARGET generator PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${BN_CORE_OUTPUT_DIR}/binaryninjacore.dll ${PROJECT_BINARY_DIR}/) + endif() + + file(MAKE_DIRECTORY ${BN_RESOURCE_DIR}/python/binaryninja) + add_custom_command(OUTPUT ${PROJECT_SOURCE_DIR}/_binaryninjacore.py ${PROJECT_SOURCE_DIR}/enums.py + DEPENDS ${PYTHON_SOURCES} ${PROJECT_SOURCE_DIR}/../binaryninjacore.h $<TARGET_FILE:generator> + COMMAND ${CMAKE_COMMAND} -E env ASAN_OPTIONS=detect_leaks=0 $<TARGET_FILE:generator> ${PROJECT_SOURCE_DIR}/../binaryninjacore.h ${PROJECT_SOURCE_DIR}/_binaryninjacore.py ${PROJECT_SOURCE_DIR}/enums.py + COMMAND ${CMAKE_COMMAND} -E copy ${PYTHON_SOURCES} ${BN_RESOURCE_DIR}/python/binaryninja/ + COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/_binaryninjacore.py ${BN_RESOURCE_DIR}/python/binaryninja/ + COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/enums.py ${BN_RESOURCE_DIR}/python/binaryninja/ + COMMAND ${CMAKE_COMMAND} -E copy_directory ${PROJECT_SOURCE_DIR}/enum ${BN_RESOURCE_DIR}/python/binaryninja/enum/) +endif() |
