| set(ARCHIVE "${CMAKE_CURRENT_LIST_DIR}/7zip-arm64-bcj.7z") |
| set(OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/extract") |
| set(OUTPUT_FILE "${OUTPUT_DIR}/payload.bin") |
| set(EXPECTED_HEX "1f2003d500000094000000141f2003d5") |
| |
| file(REMOVE_RECURSE "${OUTPUT_DIR}") |
| file(MAKE_DIRECTORY "${OUTPUT_DIR}") |
| |
| execute_process( |
| COMMAND "${CMAKE_COMMAND}" -E tar xvf "${ARCHIVE}" |
| WORKING_DIRECTORY "${OUTPUT_DIR}" |
| RESULT_VARIABLE result |
| OUTPUT_VARIABLE stdout |
| ERROR_VARIABLE stderr |
| ) |
| |
| if(NOT result EQUAL 0) |
| message(FATAL_ERROR |
| "Failed to extract ARM64 BCJ 7z archive:\n" |
| "result: ${result}\n" |
| "stdout: ${stdout}\n" |
| "stderr: ${stderr}" |
| ) |
| endif() |
| |
| if(NOT EXISTS "${OUTPUT_FILE}") |
| message(FATAL_ERROR "Expected file was not extracted:\n ${OUTPUT_FILE}") |
| endif() |
| |
| file(READ "${OUTPUT_FILE}" actual_hex HEX) |
| if(NOT actual_hex STREQUAL EXPECTED_HEX) |
| message(FATAL_ERROR |
| "Extracted file content mismatch:\n" |
| "expected: ${EXPECTED_HEX}\n" |
| "actual: ${actual_hex}" |
| ) |
| endif() |