CMake: Add toolchain file for 32-bit cross-compiler

This commit is contained in:
Tony Wasserka 2022-09-19 09:19:22 +02:00
parent d4b5bf0f78
commit 2cb455b9d4
5 changed files with 11 additions and 9 deletions

View File

@ -29,7 +29,8 @@ option(ENABLE_CCACHE "Enables ccache for compile caching" TRUE)
option(ENABLE_TERMUX_BUILD "Forces building for Termux on a non-Termux build machine" FALSE)
option(ENABLE_VIXL_SIMULATOR "Forces the FEX JIT to use the VIXL simulator" FALSE)
set (X86_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/toolchain_x86.cmake" CACHE FILEPATH "Toolchain file for the x86 (cross-)compiler")
set (X86_32_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/toolchain_x86_32.cmake" CACHE FILEPATH "Toolchain file for the (cross-)compiler targeting i686")
set (X86_64_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/toolchain_x86_64.cmake" CACHE FILEPATH "Toolchain file for the (cross-)compiler targeting x86_64")
set (DATA_DIRECTORY "${CMAKE_INSTALL_PREFIX}/share/fex-emu" CACHE PATH "global data directory")
# uninstall target
@ -96,7 +97,6 @@ if (CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
set(_M_X86_64 1)
add_definitions(-D_M_X86_64=1)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mcx16")
set (X86_TOOLCHAIN_FILE "")
endif()
if (CMAKE_SYSTEM_PROCESSOR MATCHES "^aarch64|^arm64|^armv8\.*")
@ -414,7 +414,7 @@ if (BUILD_THUNKS)
BINARY_DIR "Guest"
CMAKE_ARGS
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
"-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${X86_TOOLCHAIN_FILE}"
"-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${X86_64_TOOLCHAIN_FILE}"
"-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
"-DSTRUCT_VERIFIER=${CMAKE_SOURCE_DIR}/Scripts/StructPackVerifier.py"
"-DFEX_PROJECT_SOURCE_DIR=${FEX_PROJECT_SOURCE_DIR}"

4
toolchain_x86_32.cmake Normal file
View File

@ -0,0 +1,4 @@
set(CMAKE_SYSTEM_PROCESSOR i686)
set(CMAKE_C_COMPILER x86_64-linux-gnu-gcc -m32)
set(CMAKE_CXX_COMPILER x86_64-linux-gnu-g++ -m32)

View File

@ -1,2 +1,4 @@
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(CMAKE_C_COMPILER x86_64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER x86_64-linux-gnu-g++)

View File

@ -5,7 +5,7 @@ ExternalProject_Add(FEXLinuxTests
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/FEXLinuxTests"
CMAKE_ARGS
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
"-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${X86_TOOLCHAIN_FILE}"
"-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${X86_64_TOOLCHAIN_FILE}"
"-DBITNESS=64"
INSTALL_COMMAND ""
BUILD_ALWAYS ON
@ -17,7 +17,7 @@ ExternalProject_Add(FEXLinuxTests_32
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/FEXLinuxTests_32"
CMAKE_ARGS
"-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}"
"-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${X86_TOOLCHAIN_FILE}"
"-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${X86_32_TOOLCHAIN_FILE}"
"-DBITNESS=32"
INSTALL_COMMAND ""
BUILD_ALWAYS ON

View File

@ -18,10 +18,6 @@ foreach(TEST ${TESTS})
get_filename_component(TEST_NAME ${TEST} NAME_WLE)
add_executable(${TEST_NAME}.${BITNESS} ${TEST})
if(BITNESS EQUAL 32)
target_compile_options(${TEST_NAME}.${BITNESS} PRIVATE -m32)
target_link_options(${TEST_NAME}.${BITNESS} PRIVATE -m32)
endif()
endforeach()
target_link_libraries(pthread_cancel.${BITNESS} PRIVATE pthread)