mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 16:00:18 +02:00
Adds new struct_verifier ctest to cmake
Currently only testing 32bit syscall struct definitions
This commit is contained in:
1 parent
e0c5840f2c
commit
aacb0f6891
2 files changed
+76
-9
No files matched your search
@@ -46,8 +46,8 @@ class AliasType:
|
||||
@dataclass
|
||||
class StructDefinition(TypeDefinition):
|
||||
Size: int
|
||||
Aliases: list[AliasType]
|
||||
Members: list[TypeDefinition]
|
||||
Aliases: list
|
||||
Members: list
|
||||
ExpectFEXMatch: bool
|
||||
|
||||
def __init__(self, Name, Size):
|
||||
@@ -60,8 +60,8 @@ class StructDefinition(TypeDefinition):
|
||||
@dataclass
|
||||
class UnionDefinition(TypeDefinition):
|
||||
Size: int
|
||||
Aliases: list[AliasType]
|
||||
Members: list[TypeDefinition]
|
||||
Aliases: list
|
||||
Members: list
|
||||
ExpectFEXMatch: bool
|
||||
|
||||
def __init__(self, Name, Size):
|
||||
@@ -86,12 +86,12 @@ class FieldDefinition(TypeDefinition):
|
||||
class ArchDB:
|
||||
Parsed: bool
|
||||
ArchName: str
|
||||
NamespaceScope: list[str]
|
||||
NamespaceScope: list
|
||||
CurrentNamespace: str
|
||||
TU: TranslationUnit
|
||||
Structs: dict[StructDefinition]
|
||||
Unions: dict[UnionDefinition]
|
||||
FieldDecls: list[FieldDefinition]
|
||||
Structs: dict
|
||||
Unions: dict
|
||||
FieldDecls: list
|
||||
def __init__(self, ArchName):
|
||||
self.Parsed = True
|
||||
self.ArchName = ArchName
|
||||
@@ -103,7 +103,7 @@ class ArchDB:
|
||||
self.FieldDecls = []
|
||||
|
||||
class DBList:
|
||||
DBs: list[ArchDB]
|
||||
DBs: list
|
||||
def __init__(self, DB32, DB64, DBAArch64, DBWin32, DBWin64):
|
||||
self.DBs = [DB32, DB64, DBAArch64, DBWin32, DBWin64]
|
||||
|
||||
@@ -551,6 +551,8 @@ def main():
|
||||
|
||||
args_x86_64 = [
|
||||
"-I/usr/include/x86_64-linux-gnu",
|
||||
"-I/usr/x86_64-linux-gnu/include/c++/10/x86_64-linux-gnu/",
|
||||
"-I/usr/x86_64-linux-gnu/include/",
|
||||
"-O2",
|
||||
"--target=x86_64-linux-unknown",
|
||||
]
|
||||
|
||||
@@ -55,3 +55,68 @@ add_library(LinuxEmulation STATIC
|
||||
|
||||
target_link_libraries(LinuxEmulation FEXCore pthread numa)
|
||||
target_include_directories(LinuxEmulation PRIVATE ${CMAKE_BINARY_DIR}/generated)
|
||||
|
||||
set(HEADERS_TO_VERIFY
|
||||
x32/Types.h x86_32 # This needs to match structs to 32bit structs
|
||||
)
|
||||
|
||||
list(LENGTH HEADERS_TO_VERIFY ARG_COUNT)
|
||||
math(EXPR ARG_COUNT "${ARG_COUNT}-1")
|
||||
|
||||
set (ARGS
|
||||
"-x" "c++"
|
||||
"-std=c++20")
|
||||
# Global include directories
|
||||
get_directory_property (INC_DIRS INCLUDE_DIRECTORIES)
|
||||
list(TRANSFORM INC_DIRS PREPEND "-I")
|
||||
list(APPEND ARGS ${INC_DIRS})
|
||||
|
||||
# FEXCore directories
|
||||
get_target_property(INC_DIRS FEXCore INTERFACE_INCLUDE_DIRECTORIES)
|
||||
list(TRANSFORM INC_DIRS PREPEND "-I")
|
||||
list(APPEND ARGS ${INC_DIRS})
|
||||
|
||||
foreach(Index RANGE 0 ${ARG_COUNT} 2)
|
||||
math(EXPR TEST_TYPE_INDEX "${Index}+1")
|
||||
|
||||
list(GET HEADERS_TO_VERIFY ${Index} HEADER)
|
||||
list(GET HEADERS_TO_VERIFY ${TEST_TYPE_INDEX} TEST_TYPE)
|
||||
|
||||
file(RELATIVE_PATH REL_HEADER ${CMAKE_BINARY_DIR} "${CMAKE_CURRENT_SOURCE_DIR}/${HEADER}")
|
||||
set(TEST_NAME "${TEST_DESC}/Test_verify_${HEADER}")
|
||||
set(TEST_NAME_ARCH "${TEST_DESC}/Test_verify_arch_${HEADER}")
|
||||
|
||||
add_test(
|
||||
NAME ${TEST_NAME}_x86_64
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/StructPackVerifier.py" "-c1" "x86_64" "${REL_HEADER}" ${ARGS})
|
||||
|
||||
add_test(
|
||||
NAME ${TEST_NAME}_aarch64
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/StructPackVerifier.py" "-c1" "aarch64" "${REL_HEADER}" ${ARGS})
|
||||
|
||||
add_test(
|
||||
NAME ${TEST_NAME_ARCH}_x86_64
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/StructPackVerifier.py" "-c1" "x86_64" "-c2" "${TEST_TYPE}" "${REL_HEADER}" ${ARGS})
|
||||
|
||||
add_test(
|
||||
NAME ${TEST_NAME_ARCH}_aarch64
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
COMMAND "python3" "${CMAKE_SOURCE_DIR}/Scripts/StructPackVerifier.py" "-c1" "aarch64" "-c2" "${TEST_TYPE}" "${REL_HEADER}" ${ARGS})
|
||||
|
||||
set_property(TEST ${TEST_NAME}_x86_64 APPEND PROPERTY DEPENDS "${HEADER}")
|
||||
set_property(TEST ${TEST_NAME}_aarch64 APPEND PROPERTY DEPENDS "${HEADER}")
|
||||
set_property(TEST ${TEST_NAME_ARCH}_x86_64 APPEND PROPERTY DEPENDS "${HEADER}")
|
||||
set_property(TEST ${TEST_NAME_ARCH}_aarch64 APPEND PROPERTY DEPENDS "${HEADER}")
|
||||
endforeach()
|
||||
|
||||
execute_process(COMMAND "nproc" OUTPUT_VARIABLE CORES)
|
||||
string(STRIP ${CORES} CORES)
|
||||
|
||||
add_custom_target(
|
||||
struct_verifier
|
||||
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
|
||||
USES_TERMINAL
|
||||
COMMAND "ctest" "--timeout" "302" "-j${CORES}" "-R" "Test_verify*")
|
||||
Reference in new issue
Block a user