diff --git a/CMakeLists.txt b/CMakeLists.txt index ccdcd4552..cde91776a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.14) project(FEX) option(BUILD_TESTS "Build unit tests to ensure sanity" TRUE) -option(BUILD_FEX_LINUX_TESTS "Build FEXLinuxTests, requires g++/g++-multilib or g++-x86-64-linux-gnu/g++-multilib-x86-64-linux-gnu" FALSE) +option(BUILD_FEX_LINUX_TESTS "Build FEXLinuxTests, requires x86 compiler" FALSE) option(BUILD_THUNKS "Build thunks" FALSE) option(ENABLE_CLANG_FORMAT "Run clang format over the source" FALSE) option(ENABLE_IWYU "Enables include what you use program" FALSE) @@ -25,8 +25,7 @@ option(ENABLE_INTERPRETER "Enables FEX's Interpreter" FALSE) option(ENABLE_CCACHE "Enables ccache for compile caching" TRUE) option(ENABLE_TERMUX_BUILD "Forces building for Termux on a non-Termux build machine" FALSE) -set (X86_C_COMPILER "x86_64-linux-gnu-gcc" CACHE STRING "c compiler for compiling x86 guest libs") -set (X86_CXX_COMPILER "x86_64-linux-gnu-g++" CACHE STRING "c++ compiler for compiling x86 guest libs") +set (X86_TOOLCHAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/toolchain_x86.cmake" CACHE FILEPATH "Toolchain file for the x86 (cross-)compiler") set (DATA_DIRECTORY "${CMAKE_INSTALL_PREFIX}/share/fex-emu" CACHE PATH "global data directory") # These options are meant for package management @@ -76,6 +75,7 @@ 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") @@ -514,8 +514,7 @@ if (BUILD_THUNKS) BINARY_DIR "Guest" CMAKE_ARGS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" - "-DX86_C_COMPILER:STRING=${X86_C_COMPILER}" - "-DX86_CXX_COMPILER:STRING=${X86_CXX_COMPILER}" + "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${X86_TOOLCHAIN_FILE}" "-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}" "-DSTRUCT_VERIFIER=${CMAKE_SOURCE_DIR}/Scripts/StructPackVerifier.py" "-DGENERATOR_EXE=$" diff --git a/ThunkLibs/GuestLibs/CMakeLists.txt b/ThunkLibs/GuestLibs/CMakeLists.txt index 9209535c7..cb75db2f4 100644 --- a/ThunkLibs/GuestLibs/CMakeLists.txt +++ b/ThunkLibs/GuestLibs/CMakeLists.txt @@ -5,14 +5,9 @@ if (CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_SOURCE_DIR) # We've been included using ExternalProject_add, so set up the actual thunk libraries to be cross-compiled set(CMAKE_CXX_STANDARD 17) - # These get passed in from the main cmake project - set (X86_C_COMPILER "x86_64-linux-gnu-gcc" CACHE STRING "c compiler for compiling x86 guest libs") - set (X86_CXX_COMPILER "x86_64-linux-gnu-g++" CACHE STRING "c++ compiler for compiling x86 guest libs") + # This gets passed in from the main cmake project set (DATA_DIRECTORY "${CMAKE_INSTALL_PREFIX}/share/fex-emu" CACHE PATH "global data directory") - set(CMAKE_C_COMPILER "${X86_C_COMPILER}") - set(CMAKE_CXX_COMPILER "${X86_CXX_COMPILER}") - set(TARGET_TYPE SHARED) set(GENERATE_GUEST_INSTALL_TARGETS TRUE) else() diff --git a/toolchain_x86.cmake b/toolchain_x86.cmake new file mode 100644 index 000000000..6d3a27ebd --- /dev/null +++ b/toolchain_x86.cmake @@ -0,0 +1,2 @@ +set(CMAKE_C_COMPILER x86_64-linux-gnu-gcc) +set(CMAKE_CXX_COMPILER x86_64-linux-gnu-g++) diff --git a/unittests/FEXLinuxTests/CMakeLists.txt b/unittests/FEXLinuxTests/CMakeLists.txt index c4f29e831..0da39cf51 100644 --- a/unittests/FEXLinuxTests/CMakeLists.txt +++ b/unittests/FEXLinuxTests/CMakeLists.txt @@ -5,8 +5,7 @@ ExternalProject_Add(FEXLinuxTests BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/FEXLinuxTests" CMAKE_ARGS "-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" - "-DX86_C_COMPILER:STRING=${X86_C_COMPILER}" - "-DX86_CXX_COMPILER:STRING=${X86_CXX_COMPILER}" + "-DCMAKE_TOOLCHAIN_FILE:FILEPATH=${X86_TOOLCHAIN_FILE}" INSTALL_COMMAND "" BUILD_ALWAYS ON ) @@ -101,4 +100,4 @@ add_custom_target( USES_TERMINAL COMMAND "ctest" "--timeout" "30" "-j${CORES}" "-R" "\.*\.flt$$" "--output-on-failure" DEPENDS FEXLinuxTests FEXLoader -) \ No newline at end of file +) diff --git a/unittests/FEXLinuxTests/tests/CMakeLists.txt b/unittests/FEXLinuxTests/tests/CMakeLists.txt index 96fd1d02b..8118e8c3a 100644 --- a/unittests/FEXLinuxTests/tests/CMakeLists.txt +++ b/unittests/FEXLinuxTests/tests/CMakeLists.txt @@ -3,12 +3,6 @@ project(FEXLinuxTests) set(CMAKE_CXX_STANDARD 17) -set (X86_C_COMPILER "x86_64-linux-gnu-gcc" CACHE STRING "c compiler for compiling x86 guest libs") -set (X86_CXX_COMPILER "x86_64-linux-gnu-g++" CACHE STRING "c++ compiler for compiling x86 guest libs") - -set(CMAKE_C_COMPILER "${X86_C_COMPILER}") -set(CMAKE_CXX_COMPILER "${X86_CXX_COMPILER}") - unset (CMAKE_C_FLAGS) unset (CMAKE_CXX_FLAGS)