1+ cmake_minimum_required (VERSION 3.9 FATAL_ERROR)
2+
3+ project (view_minidump)
4+
5+ file (GLOB_RECURSE PLUGIN_SOURCES CONFIGURE_DEPENDS
6+ ${PROJECT_SOURCE_DIR} /Cargo.toml
7+ ${PROJECT_SOURCE_DIR} /src/*.rs)
8+
9+ file (GLOB API_SOURCES CONFIGURE_DEPENDS
10+ ${PROJECT_SOURCE_DIR} /../../binaryninjacore.h
11+ ${PROJECT_SOURCE_DIR} /../../rust/binaryninjacore-sys/build .rs
12+ ${PROJECT_SOURCE_DIR} /../../rust/binaryninjacore-sys/Cargo.toml
13+ ${PROJECT_SOURCE_DIR} /../../rust/binaryninjacore-sys/src/*
14+ ${PROJECT_SOURCE_DIR} /../../rust/Cargo.toml
15+ ${PROJECT_SOURCE_DIR} /../../rust/src/*/*.rs)
16+
17+ if (CMAKE_BUILD_TYPE MATCHES Debug)
18+ set (TARGET_DIR ${PROJECT_BINARY_DIR} /target /debug)
19+ set (CARGO_OPTS --target -dir=${PROJECT_BINARY_DIR} /target )
20+ else ()
21+ set (TARGET_DIR ${PROJECT_BINARY_DIR} /target /release)
22+ set (CARGO_OPTS --target -dir=${PROJECT_BINARY_DIR} /target --release)
23+ set (OUTPUT_PDB_NAME ${CMAKE_SHARED_LIBRARY_PREFIX} view_minidump.pdb)
24+ endif ()
25+
26+ set (OUTPUT_FILE ${CMAKE_STATIC_LIBRARY_PREFIX} view_minidump${CMAKE_SHARED_LIBRARY_SUFFIX} )
27+ set (PLUGIN_PATH ${TARGET_DIR} /${OUTPUT_FILE} )
28+
29+ add_custom_target (view_minidump ALL DEPENDS ${PLUGIN_PATH} )
30+ add_dependencies (view_minidump binaryninjaapi)
31+
32+ find_program (RUSTUP_PATH rustup REQUIRED HINTS ~/.cargo/bin)
33+ if (CARGO_API_VERSION)
34+ set (RUSTUP_COMMAND ${RUSTUP_PATH} run ${CARGO_API_VERSION} cargo build )
35+ else ()
36+ set (RUSTUP_COMMAND ${RUSTUP_PATH} run ${CARGO_STABLE_VERSION} cargo build )
37+ endif ()
38+
39+ if (APPLE )
40+ if (UNIVERSAL)
41+ if (CMAKE_BUILD_TYPE MATCHES Debug)
42+ set (AARCH64_LIB_PATH ${PROJECT_BINARY_DIR} /target /aarch64-apple -darwin/debug/${OUTPUT_FILE} )
43+ set (X86_64_LIB_PATH ${PROJECT_BINARY_DIR} /target /x86_64-apple -darwin/debug/${OUTPUT_FILE} )
44+ else ()
45+ set (AARCH64_LIB_PATH ${PROJECT_BINARY_DIR} /target /aarch64-apple -darwin/release/${OUTPUT_FILE} )
46+ set (X86_64_LIB_PATH ${PROJECT_BINARY_DIR} /target /x86_64-apple -darwin/release/${OUTPUT_FILE} )
47+ endif ()
48+
49+ add_custom_command (
50+ OUTPUT ${PLUGIN_PATH}
51+ COMMAND ${CMAKE_COMMAND} -E env
52+ MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_CORE_OUTPUT_DIR}
53+ ${RUSTUP_COMMAND} --target =aarch64-apple -darwin ${CARGO_OPTS}
54+ COMMAND ${CMAKE_COMMAND} -E env
55+ MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_CORE_OUTPUT_DIR}
56+ ${RUSTUP_COMMAND} --target =x86_64-apple -darwin ${CARGO_OPTS}
57+ COMMAND mkdir -p ${TARGET_DIR}
58+ COMMAND lipo -create ${AARCH64_LIB_PATH} ${X86_64_LIB_PATH} -output ${PLUGIN_PATH}
59+ COMMAND ${CMAKE_COMMAND} -E copy ${PLUGIN_PATH} ${BN_CORE_PLUGIN_DIR}
60+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
61+ DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES} )
62+ else ()
63+ if (CMAKE_BUILD_TYPE MATCHES Debug)
64+ set (LIB_PATH ${PROJECT_BINARY_DIR} /target /debug/${OUTPUT_FILE} )
65+ else ()
66+ set (LIB_PATH ${PROJECT_BINARY_DIR} /target /release/${OUTPUT_FILE} )
67+ endif ()
68+
69+ add_custom_command (
70+ OUTPUT ${PLUGIN_PATH}
71+ COMMAND ${CMAKE_COMMAND} -E env MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS}
72+ COMMAND ${CMAKE_COMMAND} -E copy ${PLUGIN_PATH} ${BN_CORE_PLUGIN_DIR}
73+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
74+ DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES} )
75+ endif ()
76+ elseif (WIN32 )
77+ add_custom_command (
78+ OUTPUT ${PLUGIN_PATH}
79+ COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS}
80+ COMMAND ${CMAKE_COMMAND} -E copy ${PLUGIN_PATH} ${BN_CORE_PLUGIN_DIR}
81+ COMMAND ${CMAKE_COMMAND} -E copy ${TARGET_DIR} /${OUTPUT_PDB_NAME} ${BN_CORE_PLUGIN_DIR}
82+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
83+ DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES} )
84+ else ()
85+ add_custom_command (
86+ OUTPUT ${PLUGIN_PATH}
87+ COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS}
88+ COMMAND ${CMAKE_COMMAND} -E copy ${PLUGIN_PATH} ${BN_CORE_PLUGIN_DIR}
89+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
90+ DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES} )
91+ endif ()
0 commit comments