@@ -22,33 +22,56 @@ file(GLOB_RECURSE PLUGIN_SOURCES CONFIGURE_DEPENDS
2222 ${PROJECT_SOURCE_DIR} /src/*.rs)
2323
2424if (CMAKE_BUILD_TYPE MATCHES Debug)
25- set (TARGET_DIR ${PROJECT_BINARY_DIR} /target /debug)
26- set (CARGO_OPTS --target -dir=${PROJECT_BINARY_DIR} /target )
25+ if (DEMO)
26+ set (TARGET_DIR ${PROJECT_BINARY_DIR} /target /dev-demo)
27+ set (CARGO_OPTS --target -dir=${PROJECT_BINARY_DIR} /target --profile=dev-demo)
28+ else ()
29+ set (TARGET_DIR ${PROJECT_BINARY_DIR} /target /debug)
30+ set (CARGO_OPTS --target -dir=${PROJECT_BINARY_DIR} /target )
31+ endif ()
2732else ()
28- set (TARGET_DIR ${PROJECT_BINARY_DIR} /target /release)
29- set (CARGO_OPTS --target -dir=${PROJECT_BINARY_DIR} /target --release)
33+ if (DEMO)
34+ set (TARGET_DIR ${PROJECT_BINARY_DIR} /target /release-demo)
35+ set (CARGO_OPTS --target -dir=${PROJECT_BINARY_DIR} /target --profile=release-demo)
36+ else ()
37+ set (TARGET_DIR ${PROJECT_BINARY_DIR} /target /release)
38+ set (CARGO_OPTS --target -dir=${PROJECT_BINARY_DIR} /target --release)
39+ endif ()
3040endif ()
3141
3242if (FORCE_COLORED_OUTPUT)
3343 set (CARGO_OPTS ${CARGO_OPTS} --color always)
3444endif ()
3545
36- # NOTE: --no-default-features is set to disable building artifacts used for testing
37- # NOTE: the linker is looking in the target dir and linking on it apparently.
38- set (CARGO_FEATURES "--no-default-features" )
39- set (OUTPUT_FILE_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} )
40- set (OUTPUT_PDB_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME} .pdb)
41- set (OUTPUT_FILE_PATH ${BN_CORE_PLUGIN_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} )
42- set (OUTPUT_PDB_PATH ${BN_CORE_PLUGIN_DIR} /${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME} .pdb)
46+ if (DEMO)
47+ set (CARGO_FEATURES --features demo --manifest-path ${PROJECT_SOURCE_DIR} /demo/Cargo.toml)
48+
49+ set (OUTPUT_FILE_NAME ${CMAKE_STATIC_LIBRARY_PREFIX}${PROJECT_NAME} _static${CMAKE_STATIC_LIBRARY_SUFFIX} )
50+ set (OUTPUT_PDB_NAME ${CMAKE_STATIC_LIBRARY_PREFIX}${PROJECT_NAME} .pdb)
51+ set (OUTPUT_FILE_PATH ${CMAKE_BINARY_DIR} /${OUTPUT_FILE_NAME} )
52+ set (OUTPUT_PDB_PATH ${CMAKE_BINARY_DIR} /${OUTPUT_PDB_NAME} )
53+
54+ set (BINJA_LIB_DIR $<TARGET_FILE_DIR:binaryninjacore>)
55+ else ()
56+ # NOTE: --no-default-features is set to disable building artifacts used for testing
57+ # NOTE: the linker is looking in the target dir and linking on it apparently.
58+ set (CARGO_FEATURES "--no-default-features" )
59+
60+ set (OUTPUT_FILE_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} )
61+ set (OUTPUT_PDB_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}${PROJECT_NAME} .pdb)
62+ set (OUTPUT_FILE_PATH ${BN_CORE_PLUGIN_DIR} /${OUTPUT_FILE_NAME} )
63+ set (OUTPUT_PDB_PATH ${BN_CORE_PLUGIN_DIR} /${OUTPUT_PDB_NAME} )
64+
65+ set (BINJA_LIB_DIR ${BN_INSTALL_BIN_DIR} )
66+ endif ()
67+
4368
4469add_custom_target (${PROJECT_NAME} ALL DEPENDS ${OUTPUT_FILE_PATH} )
4570add_dependencies (${PROJECT_NAME} binaryninjaapi)
4671get_target_property (BN_API_SOURCE_DIR binaryninjaapi SOURCE_DIR)
4772list (APPEND CMAKE_MODULE_PATH "${BN_API_SOURCE_DIR} /cmake" )
4873find_package (BinaryNinjaCore REQUIRED)
4974
50- set (BINJA_LIB_DIR ${BN_INSTALL_BIN_DIR} )
51-
5275set_property (TARGET ${PROJECT_NAME} PROPERTY OUTPUT_FILE_PATH ${OUTPUT_FILE_PATH} )
5376
5477# Add the whole api to the depends too
@@ -63,11 +86,21 @@ set(RUSTUP_COMMAND ${RUSTUP_PATH} run ${CARGO_STABLE_VERSION} cargo)
6386if (APPLE )
6487 if (UNIVERSAL)
6588 if (CMAKE_BUILD_TYPE MATCHES Debug)
66- set (AARCH64_LIB_PATH ${PROJECT_BINARY_DIR} /target /aarch64-apple -darwin/debug/${OUTPUT_FILE_NAME} )
67- set (X86_64_LIB_PATH ${PROJECT_BINARY_DIR} /target /x86_64-apple -darwin/debug/${OUTPUT_FILE_NAME} )
89+ if (DEMO)
90+ set (AARCH64_LIB_PATH ${PROJECT_BINARY_DIR} /target /aarch64-apple -darwin/dev-demo/${OUTPUT_FILE_NAME} )
91+ set (X86_64_LIB_PATH ${PROJECT_BINARY_DIR} /target /x86_64-apple -darwin/dev-demo/${OUTPUT_FILE_NAME} )
92+ else ()
93+ set (AARCH64_LIB_PATH ${PROJECT_BINARY_DIR} /target /aarch64-apple -darwin/debug/${OUTPUT_FILE_NAME} )
94+ set (X86_64_LIB_PATH ${PROJECT_BINARY_DIR} /target /x86_64-apple -darwin/debug/${OUTPUT_FILE_NAME} )
95+ endif ()
6896 else ()
69- set (AARCH64_LIB_PATH ${PROJECT_BINARY_DIR} /target /aarch64-apple -darwin/release/${OUTPUT_FILE_NAME} )
70- set (X86_64_LIB_PATH ${PROJECT_BINARY_DIR} /target /x86_64-apple -darwin/release/${OUTPUT_FILE_NAME} )
97+ if (DEMO)
98+ set (AARCH64_LIB_PATH ${PROJECT_BINARY_DIR} /target /aarch64-apple -darwin/release-demo/${OUTPUT_FILE_NAME} )
99+ set (X86_64_LIB_PATH ${PROJECT_BINARY_DIR} /target /x86_64-apple -darwin/release-demo/${OUTPUT_FILE_NAME} )
100+ else ()
101+ set (AARCH64_LIB_PATH ${PROJECT_BINARY_DIR} /target /aarch64-apple -darwin/release/${OUTPUT_FILE_NAME} )
102+ set (X86_64_LIB_PATH ${PROJECT_BINARY_DIR} /target /x86_64-apple -darwin/release/${OUTPUT_FILE_NAME} )
103+ endif ()
71104 endif ()
72105
73106 add_custom_command (
@@ -89,12 +122,6 @@ if(APPLE)
89122 DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}
90123 )
91124 else ()
92- if (CMAKE_BUILD_TYPE MATCHES Debug)
93- set (LIB_PATH ${PROJECT_BINARY_DIR} /target /debug/${OUTPUT_FILE_NAME} )
94- else ()
95- set (LIB_PATH ${PROJECT_BINARY_DIR} /target /release/${OUTPUT_FILE_NAME} )
96- endif ()
97-
98125 add_custom_command (
99126 OUTPUT ${OUTPUT_FILE_PATH}
100127 COMMAND ${CMAKE_COMMAND} -E env
@@ -103,21 +130,32 @@ if(APPLE)
103130 COMMAND ${CMAKE_COMMAND} -E env
104131 MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR}
105132 ${RUSTUP_COMMAND} build ${CARGO_OPTS} ${CARGO_FEATURES}
106- COMMAND ${CMAKE_COMMAND} -E copy ${LIB_PATH } ${OUTPUT_FILE_PATH}
133+ COMMAND ${CMAKE_COMMAND} -E copy ${TARGET_DIR} / ${OUTPUT_FILE_NAME } ${OUTPUT_FILE_PATH}
107134 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
108135 DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}
109136 )
110137 endif ()
111138elseif (WIN32 )
112- add_custom_command (
113- OUTPUT ${OUTPUT_FILE_PATH}
114- COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BINJA_LIB_DIR} ${RUSTUP_COMMAND} clean ${CARGO_OPTS} --package binaryninjacore-sys
115- COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BINJA_LIB_DIR} ${RUSTUP_COMMAND} build ${CARGO_OPTS} ${CARGO_FEATURES}
116- COMMAND ${CMAKE_COMMAND} -E copy ${TARGET_DIR} /${OUTPUT_FILE_NAME} ${OUTPUT_FILE_PATH}
117- COMMAND ${CMAKE_COMMAND} -E copy ${TARGET_DIR} /${OUTPUT_PDB_NAME} ${OUTPUT_PDB_PATH}
118- WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
119- DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}
120- )
139+ if (DEMO)
140+ add_custom_command (
141+ OUTPUT ${OUTPUT_FILE_PATH}
142+ COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BINJA_LIB_DIR} ${RUSTUP_COMMAND} clean ${CARGO_OPTS}
143+ COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BINJA_LIB_DIR} ${RUSTUP_COMMAND} build ${CARGO_OPTS} ${CARGO_FEATURES}
144+ COMMAND ${CMAKE_COMMAND} -E copy ${TARGET_DIR} /${OUTPUT_FILE_NAME} ${OUTPUT_FILE_PATH}
145+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
146+ DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}
147+ )
148+ else ()
149+ add_custom_command (
150+ OUTPUT ${OUTPUT_FILE_PATH}
151+ COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BINJA_LIB_DIR} ${RUSTUP_COMMAND} clean ${CARGO_OPTS} --package binaryninjacore-sys
152+ COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BINJA_LIB_DIR} ${RUSTUP_COMMAND} build ${CARGO_OPTS} ${CARGO_FEATURES}
153+ COMMAND ${CMAKE_COMMAND} -E copy ${TARGET_DIR} /${OUTPUT_FILE_NAME} ${OUTPUT_FILE_PATH}
154+ COMMAND ${CMAKE_COMMAND} -E copy ${TARGET_DIR} /${OUTPUT_PDB_NAME} ${OUTPUT_PDB_PATH}
155+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
156+ DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}
157+ )
158+ endif ()
121159else ()
122160 add_custom_command (
123161 OUTPUT ${OUTPUT_FILE_PATH}
0 commit comments