@@ -88,6 +88,15 @@ find_program(RUSTUP_PATH rustup REQUIRED HINTS ~/.cargo/bin)
8888set (RUSTUP_COMMAND ${RUSTUP_PATH} run ${CARGO_STABLE_VERSION} cargo)
8989
9090if (APPLE )
91+ set (CARGO_DSYM_ENV)
92+ if (NOT DEMO)
93+ if (CMAKE_BUILD_TYPE MATCHES Debug)
94+ set (CARGO_DSYM_ENV CARGO_PROFILE_DEV_SPLIT_DEBUGINFO=packed)
95+ else ()
96+ set (CARGO_DSYM_ENV CARGO_PROFILE_RELEASE_SPLIT_DEBUGINFO=packed)
97+ endif ()
98+ endif ()
99+
91100 if (UNIVERSAL)
92101 if (CMAKE_BUILD_TYPE MATCHES Debug)
93102 if (DEMO)
@@ -107,34 +116,60 @@ if(APPLE)
107116 endif ()
108117 endif ()
109118
119+ set (DSYM_BYPRODUCTS)
120+ set (DSYM_COMMANDS)
121+ if (NOT DEMO)
122+ set (DSYM_BYPRODUCTS BYPRODUCTS ${OUTPUT_FILE_PATH} .dSYM)
123+ set (DSYM_COMMANDS
124+ COMMAND ${CMAKE_COMMAND } -E rm -rf ${OUTPUT_FILE_PATH} .dSYM
125+ COMMAND ${CMAKE_COMMAND } -E copy_directory ${AARCH64_LIB_PATH} .dSYM ${OUTPUT_FILE_PATH} .dSYM
126+ COMMAND lipo -create
127+ ${AARCH64_LIB_PATH} .dSYM/Contents/Resources/DWARF/${OUTPUT_FILE_NAME}
128+ ${X86_64_LIB_PATH} .dSYM/Contents/Resources/DWARF/${OUTPUT_FILE_NAME}
129+ -output ${OUTPUT_FILE_PATH} .dSYM/Contents/Resources/DWARF/${OUTPUT_FILE_NAME} )
130+ endif ()
131+
110132 add_custom_command (
111133 OUTPUT ${OUTPUT_FILE_PATH}
134+ ${DSYM_BYPRODUCTS}
112135 COMMAND ${CMAKE_COMMAND } -E env
113- MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR}
136+ MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR} ${CARGO_DSYM_ENV}
114137 ${RUSTUP_COMMAND} clean --target=aarch64-apple-darwin ${CARGO_OPTS} --package binaryninjacore-sys
115138 COMMAND ${CMAKE_COMMAND } -E env
116- MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR}
139+ MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR} ${CARGO_DSYM_ENV}
117140 ${RUSTUP_COMMAND} clean --target=x86_64-apple-darwin ${CARGO_OPTS} --package binaryninjacore-sys
118141 COMMAND ${CMAKE_COMMAND } -E env
119- MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR}
142+ MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR} ${CARGO_DSYM_ENV}
120143 ${RUSTUP_COMMAND} build --target=aarch64-apple-darwin ${CARGO_OPTS} ${CARGO_FEATURES}
121144 COMMAND ${CMAKE_COMMAND } -E env
122- MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR}
145+ MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR} ${CARGO_DSYM_ENV}
123146 ${RUSTUP_COMMAND} build --target=x86_64-apple-darwin ${CARGO_OPTS} ${CARGO_FEATURES}
124147 COMMAND lipo -create ${AARCH64_LIB_PATH} ${X86_64_LIB_PATH} -output ${OUTPUT_FILE_PATH}
148+ ${DSYM_COMMANDS}
125149 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR }
126150 DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}
127151 )
128152 else ()
153+ set (DSYM_BYPRODUCTS)
154+ set (DSYM_COMMANDS)
155+ if (NOT DEMO)
156+ set (DSYM_BYPRODUCTS BYPRODUCTS ${OUTPUT_FILE_PATH} .dSYM)
157+ set (DSYM_COMMANDS
158+ COMMAND ${CMAKE_COMMAND } -E rm -rf ${OUTPUT_FILE_PATH} .dSYM
159+ COMMAND ${CMAKE_COMMAND } -E copy_directory ${TARGET_DIR} /${OUTPUT_FILE_NAME} .dSYM ${OUTPUT_FILE_PATH} .dSYM)
160+ endif ()
161+
129162 add_custom_command (
130163 OUTPUT ${OUTPUT_FILE_PATH}
164+ ${DSYM_BYPRODUCTS}
131165 COMMAND ${CMAKE_COMMAND } -E env
132- MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR}
166+ MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR} ${CARGO_DSYM_ENV}
133167 ${RUSTUP_COMMAND} clean ${CARGO_OPTS} --package binaryninjacore-sys
134168 COMMAND ${CMAKE_COMMAND } -E env
135- MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR}
169+ MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BINJA_LIB_DIR} ${CARGO_DSYM_ENV}
136170 ${RUSTUP_COMMAND} build ${CARGO_OPTS} ${CARGO_FEATURES}
137171 COMMAND ${CMAKE_COMMAND } -E copy ${TARGET_DIR} /${OUTPUT_FILE_NAME} ${OUTPUT_FILE_PATH}
172+ ${DSYM_COMMANDS}
138173 WORKING_DIRECTORY ${PROJECT_SOURCE_DIR }
139174 DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES}
140175 )
0 commit comments