diff --git a/CMakeLists.txt b/CMakeLists.txt index 674c40f4..e1c5aa6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,6 +82,59 @@ if(MSVC) string(REPLACE "/MD" "/MT" CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE}) endif() else() +# detect host arch. + execute_process(COMMAND ${CMAKE_C_COMPILER} -dM -E - + INPUT_FILE /dev/null + OUTPUT_VARIABLE UC_COMPILER_MACRO) + while(TRUE) + string(FIND ${UC_COMPILER_MACRO} "__x86_64__" UC_RET) + if (${UC_RET} GREATER "0") + set(UNICORN_TARGET_ARCH "i386") + break() + endif() + string(FIND ${UC_COMPILER_MACRO} "__i386__" UC_RET) + if (${UC_RET} GREATER "0") + set(UNICORN_TARGET_ARCH "i386") + break() + endif() + string(FIND ${UC_COMPILER_MACRO} "__arm__" UC_RET) + if (${UC_RET} GREATER "0") + set(UNICORN_TARGET_ARCH "arm") + break() + endif() + string(FIND ${UC_COMPILER_MACRO} "__aarch64__" UC_RET) + if (${UC_RET} GREATER "0") + set(UNICORN_TARGET_ARCH "aarch64") + break() + endif() + string(FIND ${UC_COMPILER_MACRO} "__mips__" UC_RET) + if (${UC_RET} GREATER "0") + set(UNICORN_TARGET_ARCH "mips") + break() + endif() + string(FIND ${UC_COMPILER_MACRO} "__sparc__" UC_RET) + if (${UC_RET} GREATER "0") + set(UNICORN_TARGET_ARCH "sparc") + break() + endif() + string(FIND ${UC_COMPILER_MACRO} "__ia64__" UC_RET) + if (${UC_RET} GREATER "0") + set(UNICORN_TARGET_ARCH "ia64") + break() + endif() + string(FIND ${UC_COMPILER_MACRO} "_ARCH_PPC" UC_RET) + if (${UC_RET} GREATER "0") + set(UNICORN_TARGET_ARCH "ppc") + break() + endif() + string(FIND ${UC_COMPILER_MACRO} "__s390__" UC_RET) + if (${UC_RET} GREATER "0") + set(UNICORN_TARGET_ARCH "s390") + break() + endif() + message(FATAL_ERROR "Unknown host compiler: ${CMAKE_C_COMPILER}.") + endwhile(TRUE) + # check python find_program(PYTHON_CMD python) if (NOT PYTHON_CMD) @@ -219,7 +272,7 @@ else() -c -o ${CMAKE_BINARY_DIR} -b -i ${CMAKE_CURRENT_SOURCE_DIR}/qemu/qapi-schema.json ) add_compile_options( - -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/tcg/i386 + -I${CMAKE_CURRENT_SOURCE_DIR}/qemu/tcg/${UNICORN_TARGET_ARCH} -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE