This commit is contained in:
2025-05-29 15:56:11 +08:00
parent 58397127e7
commit 0383ef8f13
5 changed files with 92 additions and 76 deletions

View File

@@ -1,64 +1,71 @@
add_executable(game_re
r3/main.cpp
r3/binders/static_mem.cxx
gh_global.cxx
)
target_compile_features(game_re PUBLIC cxx_std_20)
target_include_directories(game_re PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties(
game_re PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
if(WIN32 AND R3_32BIT)
target_link_libraries(game_re PRIVATE
binkw32
d3d8
dinput8
function(setup_target TARGET)
add_executable(${TARGET}
r3/main.cpp
r3/binders/static_mem.cxx
gh_global.cxx
)
endif()
target_compile_definitions(game_re PRIVATE
R3_GAME_DATA_DIR=\"${GAME_DATA_DIR}\"
)
target_compile_features(${TARGET} PUBLIC cxx_std_20)
target_include_directories(${TARGET} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
get_filename_component(R3_DATA_SEGMENT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/gh_datasegment.bin" ABSOLUTE)
target_compile_definitions(game_re PRIVATE
R3_DATA_SEGMENT_FILE=\"${R3_DATA_SEGMENT_FILE}\"
)
set_target_properties(
${TARGET} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin
)
target_compile_definitions(game_re PRIVATE
_CRT_SECURE_NO_WARNINGS=1
_CRT_NONSTDC_NO_WARNINGS=1)
if(WIN32 AND R3_32BIT)
target_link_libraries(${TARGET} PRIVATE
binkw32
d3d8
dinput8
)
endif()
target_link_libraries(game_re PRIVATE spdlog)
target_compile_definitions(${TARGET} PRIVATE
R3_GAME_DATA_DIR=\"${GAME_DATA_DIR}\"
)
file(GLOB GH_AUTO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gh_auto/*.cxx)
file(GLOB GH_FIX_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gh_fix/*.cxx)
file(GLOB GH_STUB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gh_stub/*.cxx)
get_filename_component(R3_DATA_SEGMENT_FILE "${CMAKE_CURRENT_SOURCE_DIR}/gh_datasegment.bin" ABSOLUTE)
target_compile_definitions(${TARGET} PRIVATE
R3_DATA_SEGMENT_FILE=\"${R3_DATA_SEGMENT_FILE}\"
)
target_sources(game_re PRIVATE
${GH_AUTO_SOURCES}
${GH_FIX_SOURCES}
${GH_STUB_SOURCES}
)
target_compile_definitions(${TARGET} PRIVATE
_CRT_SECURE_NO_WARNINGS=1
_CRT_NONSTDC_NO_WARNINGS=1)
# Ignore -Wformat-security
target_compile_options(game_re PRIVATE -Wno-format-security)
target_link_libraries(${TARGET} PRIVATE spdlog)
# Ignore -Wmicrosoft-cast
target_compile_options(game_re PRIVATE -Wno-microsoft-cast)
file(GLOB GH_AUTO_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gh_auto/*.cxx)
file(GLOB GH_FIX_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gh_fix/*.cxx)
file(GLOB GH_STUB_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/gh_stub/*.cxx)
# Automatically re-run CMake if any gh_*.cxx files change
# due to ghidra script runs
set_property(
DIRECTORY
APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gh_cmake_timestamp
)
target_sources(${TARGET} PRIVATE
${GH_AUTO_SOURCES}
${GH_FIX_SOURCES}
${GH_STUB_SOURCES}
)
target_precompile_headers(game_re PRIVATE
"$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/r3/binders/auto_pch.cxx>"
)
# Ignore -Wformat-security
target_compile_options(${TARGET} PRIVATE -Wno-format-security)
# Ignore -Wmicrosoft-cast
target_compile_options(${TARGET} PRIVATE -Wno-microsoft-cast)
# Automatically re-run CMake if any gh_*.cxx files change
# due to ghidra script runs
set_property(
DIRECTORY
APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/gh_cmake_timestamp
)
target_precompile_headers(${TARGET} PRIVATE
"$<$<COMPILE_LANGUAGE:CXX>:${CMAKE_CURRENT_SOURCE_DIR}/r3/binders/auto_pch.cxx>"
)
endfunction()
setup_target(game_re)
setup_target(game_dbg)
target_compile_definitions(game_dbg PRIVATE RE_DBG_INJECTED=1)

View File

@@ -6,14 +6,21 @@ set -e
pushd $script_dir
file_list=files.txt
rm -f $file_list
for dir in gh_auto gh_stub gh_fix; do
for file in $dir/*.cxx; do
echo $file >>$file_list
done
mkdir -p logs
types=(auto ref fix stub)
for type in "${types[@]}"; do
file_list="logs/files_${type}.txt"
rm -f "$file_list"
if [ -d "gh_${type}" ]; then
for file in "gh_${type}"/*.cxx; do
echo "$file" >>"$file_list"
done
$tool "@$file_list" -v --type=$type --log-file=logs/log-functions-${type}.txt
fi
done
$tool @$file_list
$tool gh_global.h -mglobals -v --log-file=logs/log-globals.txt
$tool -mduplicates -v --log-file=logs/log-duplicates.txt
popd