FEXLoader: Moves mingw check up one level

Now that only FEXLoader is under the FEXLoader folder, the mingw build
check can be moved up one level.

No functional change, just moving the check and re-aligning. Might be
good to view without whitespace changes.
This commit is contained in:
Ryan Houdek committed 2023-12-18 12:16:11 -08:00
1 parent c3d2d01c1f
commit c7bc15785b
2 files changed
+127 -129

No files matched your search

+2 -2
View File
@@ -23,9 +23,9 @@ if (NOT MINGW_BUILD)
if (BUILD_TESTS)
add_subdirectory(IRLoader/)
endif()
endif()
add_subdirectory(FEXLoader/)
add_subdirectory(FEXLoader/)
endif()
if (BUILD_TESTS)
add_subdirectory(TestHarnessRunner/)
+125 -127
View File
@@ -5,155 +5,153 @@ if (ENABLE_VIXL_SIMULATOR)
list(APPEND DEFINES -DVIXL_SIMULATOR=1)
endif()
if (NOT MINGW_BUILD)
if (TERMUX_BUILD)
# Termux needs android-shmem to get the shm emulation library.
list(APPEND LIBS android-shmem)
if (TERMUX_BUILD)
# Termux needs android-shmem to get the shm emulation library.
list(APPEND LIBS android-shmem)
endif()
function(GenerateInterpreter NAME AsInterpreter)
add_executable(${NAME}
FEXLoader.cpp
AOT/AOTGenerator.cpp)
target_compile_definitions(${NAME} PRIVATE ${DEFINES})
# Enable FEX APIs to be used by targets that use target_link_libraries on FEXLoader
set_target_properties(${NAME} PROPERTIES ENABLE_EXPORTS 1)
target_include_directories(${NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/
${CMAKE_BINARY_DIR}/generated
)
target_link_libraries(${NAME}
PRIVATE
${LIBS}
LinuxEmulation
CommonTools
${PTHREAD_LIB}
fmt::fmt
)
target_compile_options(${NAME} PRIVATE ${FEX_TUNE_COMPILE_FLAGS})
target_compile_definitions(${NAME} PRIVATE -DFEXLOADER_AS_INTERPRETER=${AsInterpreter})
if (CMAKE_BUILD_TYPE MATCHES "RELEASE")
target_link_options(${NAME}
PRIVATE
"LINKER:--gc-sections"
"LINKER:--strip-all"
"LINKER:--as-needed"
)
endif()
function(GenerateInterpreter NAME AsInterpreter)
add_executable(${NAME}
FEXLoader.cpp
AOT/AOTGenerator.cpp)
install(TARGETS ${NAME}
RUNTIME
DESTINATION bin
COMPONENT runtime
)
endfunction()
target_compile_definitions(${NAME} PRIVATE ${DEFINES})
GenerateInterpreter(FEXLoader 0)
GenerateInterpreter(FEXInterpreter 1)
# Enable FEX APIs to be used by targets that use target_link_libraries on FEXLoader
set_target_properties(${NAME} PROPERTIES ENABLE_EXPORTS 1)
install(PROGRAMS "${PROJECT_SOURCE_DIR}/Scripts/FEXUpdateAOTIRCache.sh" DESTINATION bin RENAME FEXUpdateAOTIRCache)
target_include_directories(${NAME}
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/
${CMAKE_BINARY_DIR}/generated
if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
# Check for conflicting binfmt before installing
set (CONFLICTING_BINFMTS_32
${CMAKE_INSTALL_PREFIX}/share/binfmts/qemu-i386
${CMAKE_INSTALL_PREFIX}/share/binfmts/box86)
set (CONFLICTING_BINFMTS_64
${CMAKE_INSTALL_PREFIX}/share/binfmts/qemu-x86_64
${CMAKE_INSTALL_PREFIX}/share/binfmts/box64)
find_program(UPDATE_BINFMTS_PROGRAM update-binfmts)
if (UPDATE_BINFMTS_PROGRAM)
add_custom_target(binfmt_misc_32
echo "Attempting to install FEX-x86 misc now."
COMMAND "${CMAKE_SOURCE_DIR}/Scripts/CheckBinfmtNotInstall.sh" ${CONFLICTING_BINFMTS_32}
COMMAND "update-binfmts" "--importdir=${CMAKE_INSTALL_PREFIX}/share/binfmts/" "--import" "FEX-x86"
COMMAND ${CMAKE_COMMAND} -E
echo "binfmt_misc FEX-x86 installed"
)
target_link_libraries(${NAME}
PRIVATE
${LIBS}
LinuxEmulation
CommonTools
${PTHREAD_LIB}
fmt::fmt
)
target_compile_options(${NAME} PRIVATE ${FEX_TUNE_COMPILE_FLAGS})
target_compile_definitions(${NAME} PRIVATE -DFEXLOADER_AS_INTERPRETER=${AsInterpreter})
if (CMAKE_BUILD_TYPE MATCHES "RELEASE")
target_link_options(${NAME}
PRIVATE
"LINKER:--gc-sections"
"LINKER:--strip-all"
"LINKER:--as-needed"
add_custom_target(binfmt_misc_64
COMMAND ${CMAKE_COMMAND} -E
echo "Attempting to install FEX-x86_64 misc now."
COMMAND "${CMAKE_SOURCE_DIR}/Scripts/CheckBinfmtNotInstall.sh" ${CONFLICTING_BINFMTS_64}
COMMAND "update-binfmts" "--importdir=${CMAKE_INSTALL_PREFIX}/share/binfmts/" "--import" "FEX-x86_64"
COMMAND ${CMAKE_COMMAND} -E
echo "binfmt_misc FEX-x86_64 installed"
)
if(TARGET uninstall)
add_custom_target(uninstall_binfmt_misc_32
COMMAND update-binfmts --unimport FEX-x86 || (exit 0)
)
add_custom_target(uninstall_binfmt_misc_64
COMMAND update-binfmts --unimport FEX-x86_64 || (exit 0)
)
add_dependencies(uninstall uninstall_binfmt_misc_32)
add_dependencies(uninstall uninstall_binfmt_misc_64)
endif()
else()
set (SUPPORTED_BINFMT_MISC_FLAGS "POCF")
execute_process(COMMAND uname -r OUTPUT_VARIABLE UNAME_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX MATCH "[0-9]+.[0-9]+" KERNEL_VERSION ${UNAME_VERSION})
message(STATUS "Kernel version: ${KERNEL_VERSION}")
if (KERNEL_VERSION VERSION_GREATER_EQUAL 9999.0)
# New binfmt_misc flag for exposing the interpreter was added in version '9999.0'
# Only enable it if the host kernel is at least that.
set (SUPPORTED_BINFMT_MISC_FLAGS "POCFI")
endif()
install(TARGETS ${NAME}
RUNTIME
DESTINATION bin
COMPONENT runtime
)
endfunction()
GenerateInterpreter(FEXLoader 0)
GenerateInterpreter(FEXInterpreter 1)
install(PROGRAMS "${PROJECT_SOURCE_DIR}/Scripts/FEXUpdateAOTIRCache.sh" DESTINATION bin RENAME FEXUpdateAOTIRCache)
if (CMAKE_SYSTEM_PROCESSOR MATCHES "aarch64")
# Check for conflicting binfmt before installing
set (CONFLICTING_BINFMTS_32
${CMAKE_INSTALL_PREFIX}/share/binfmts/qemu-i386
${CMAKE_INSTALL_PREFIX}/share/binfmts/box86)
set (CONFLICTING_BINFMTS_64
${CMAKE_INSTALL_PREFIX}/share/binfmts/qemu-x86_64
${CMAKE_INSTALL_PREFIX}/share/binfmts/box64)
find_program(UPDATE_BINFMTS_PROGRAM update-binfmts)
if (UPDATE_BINFMTS_PROGRAM)
add_custom_target(binfmt_misc_32
# In the case of update-binfmts not being available (Arch for example) then we need to install manually
add_custom_target(binfmt_misc_32
COMMAND ${CMAKE_COMMAND} -E
echo "Attempting to remove FEX-x86 misc prior to install. Ignore permission denied"
COMMAND ${CMAKE_COMMAND} -E
echo -1 > /proc/sys/fs/binfmt_misc/FEX-x86 || (exit 0)
COMMAND ${CMAKE_COMMAND} -E
echo "Attempting to install FEX-x86 misc now."
COMMAND "${CMAKE_SOURCE_DIR}/Scripts/CheckBinfmtNotInstall.sh" ${CONFLICTING_BINFMTS_32}
COMMAND "update-binfmts" "--importdir=${CMAKE_INSTALL_PREFIX}/share/binfmts/" "--import" "FEX-x86"
COMMAND ${CMAKE_COMMAND} -E
COMMAND ${CMAKE_COMMAND} -E
echo
':FEX-x86:M:0:\\x7fELF\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x03\\x00:\\xff\\xff\\xff\\xff\\xff\\xfe\\xfe\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xfe\\xff\\xff\\xff:${CMAKE_INSTALL_PREFIX}/bin/FEXInterpreter:${SUPPORTED_BINFMT_MISC_FLAGS}' > /proc/sys/fs/binfmt_misc/register
COMMAND ${CMAKE_COMMAND} -E
echo "binfmt_misc FEX-x86 installed"
)
add_custom_target(binfmt_misc_64
COMMAND ${CMAKE_COMMAND} -E
add_custom_target(binfmt_misc_64
COMMAND ${CMAKE_COMMAND} -E
echo "Attempting to remove FEX-x86_64 misc prior to install. Ignore permission denied"
COMMAND ${CMAKE_COMMAND} -E
echo -1 > /proc/sys/fs/binfmt_misc/FEX-x86_64 || (exit 0)
COMMAND ${CMAKE_COMMAND} -E
echo "Attempting to install FEX-x86_64 misc now."
COMMAND "${CMAKE_SOURCE_DIR}/Scripts/CheckBinfmtNotInstall.sh" ${CONFLICTING_BINFMTS_64}
COMMAND "update-binfmts" "--importdir=${CMAKE_INSTALL_PREFIX}/share/binfmts/" "--import" "FEX-x86_64"
COMMAND ${CMAKE_COMMAND} -E
COMMAND ${CMAKE_COMMAND} -E
echo
':FEX-x86_64:M:0:\\x7fELF\\x02\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x3e\\x00:\\xff\\xff\\xff\\xff\\xff\\xfe\\xfe\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xfe\\xff\\xff\\xff:${CMAKE_INSTALL_PREFIX}/bin/FEXInterpreter:${SUPPORTED_BINFMT_MISC_FLAGS}' > /proc/sys/fs/binfmt_misc/register
COMMAND ${CMAKE_COMMAND} -E
echo "binfmt_misc FEX-x86_64 installed"
)
if(TARGET uninstall)
add_custom_target(uninstall_binfmt_misc_32
COMMAND update-binfmts --unimport FEX-x86 || (exit 0)
)
add_custom_target(uninstall_binfmt_misc_64
COMMAND update-binfmts --unimport FEX-x86_64 || (exit 0)
)
add_dependencies(uninstall uninstall_binfmt_misc_32)
add_dependencies(uninstall uninstall_binfmt_misc_64)
endif()
else()
set (SUPPORTED_BINFMT_MISC_FLAGS "POCF")
execute_process(COMMAND uname -r OUTPUT_VARIABLE UNAME_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
string(REGEX MATCH "[0-9]+.[0-9]+" KERNEL_VERSION ${UNAME_VERSION})
message(STATUS "Kernel version: ${KERNEL_VERSION}")
if (KERNEL_VERSION VERSION_GREATER_EQUAL 9999.0)
# New binfmt_misc flag for exposing the interpreter was added in version '9999.0'
# Only enable it if the host kernel is at least that.
set (SUPPORTED_BINFMT_MISC_FLAGS "POCFI")
endif()
# In the case of update-binfmts not being available (Arch for example) then we need to install manually
add_custom_target(binfmt_misc_32
COMMAND ${CMAKE_COMMAND} -E
echo "Attempting to remove FEX-x86 misc prior to install. Ignore permission denied"
if(TARGET uninstall)
add_custom_target(uninstall_binfmt_misc_32
COMMAND ${CMAKE_COMMAND} -E
echo -1 > /proc/sys/fs/binfmt_misc/FEX-x86 || (exit 0)
COMMAND ${CMAKE_COMMAND} -E
echo "Attempting to install FEX-x86 misc now."
COMMAND ${CMAKE_COMMAND} -E
echo
':FEX-x86:M:0:\\x7fELF\\x01\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x03\\x00:\\xff\\xff\\xff\\xff\\xff\\xfe\\xfe\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xfe\\xff\\xff\\xff:${CMAKE_INSTALL_PREFIX}/bin/FEXInterpreter:${SUPPORTED_BINFMT_MISC_FLAGS}' > /proc/sys/fs/binfmt_misc/register
COMMAND ${CMAKE_COMMAND} -E
echo "binfmt_misc FEX-x86 installed"
)
add_custom_target(binfmt_misc_64
COMMAND ${CMAKE_COMMAND} -E
echo "Attempting to remove FEX-x86_64 misc prior to install. Ignore permission denied"
)
add_custom_target(uninstall_binfmt_misc_64
COMMAND ${CMAKE_COMMAND} -E
echo -1 > /proc/sys/fs/binfmt_misc/FEX-x86_64 || (exit 0)
COMMAND ${CMAKE_COMMAND} -E
echo "Attempting to install FEX-x86_64 misc now."
COMMAND ${CMAKE_COMMAND} -E
echo
':FEX-x86_64:M:0:\\x7fELF\\x02\\x01\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x02\\x00\\x3e\\x00:\\xff\\xff\\xff\\xff\\xff\\xfe\\xfe\\x00\\x00\\x00\\x00\\xff\\xff\\xff\\xff\\xff\\xfe\\xff\\xff\\xff:${CMAKE_INSTALL_PREFIX}/bin/FEXInterpreter:${SUPPORTED_BINFMT_MISC_FLAGS}' > /proc/sys/fs/binfmt_misc/register
COMMAND ${CMAKE_COMMAND} -E
echo "binfmt_misc FEX-x86_64 installed"
)
)
if(TARGET uninstall)
add_custom_target(uninstall_binfmt_misc_32
COMMAND ${CMAKE_COMMAND} -E
echo -1 > /proc/sys/fs/binfmt_misc/FEX-x86 || (exit 0)
)
add_custom_target(uninstall_binfmt_misc_64
COMMAND ${CMAKE_COMMAND} -E
echo -1 > /proc/sys/fs/binfmt_misc/FEX-x86_64 || (exit 0)
)
add_dependencies(uninstall uninstall_binfmt_misc_32)
add_dependencies(uninstall uninstall_binfmt_misc_64)
endif()
add_dependencies(uninstall uninstall_binfmt_misc_32)
add_dependencies(uninstall uninstall_binfmt_misc_64)
endif()
add_custom_target(binfmt_misc
DEPENDS binfmt_misc_32
DEPENDS binfmt_misc_64
)
endif()
add_custom_target(binfmt_misc
DEPENDS binfmt_misc_32
DEPENDS binfmt_misc_64
)
endif()