Build armips in libretro builds (requirement for some lua functionality)

This commit is contained in:
Henrik Rydgård 2025-10-06 15:43:58 -06:00
parent 6efbdfc10d
commit b304fbe0c9
11 changed files with 70 additions and 48 deletions

View File

@ -193,7 +193,6 @@ option(USE_LIBNX "Set to ON to build for Switch(libnx)" OFF)
option(USE_FFMPEG "Build with FFMPEG support" ON)
option(USE_DISCORD "Build with Discord support" ON)
option(USE_MINIUPNPC "Build with miniUPnPc support" ON)
option(USE_ARMIPS "Build with armips support in API/debuggerdebugger" ON)
option(USE_SYSTEM_SNAPPY "Dynamically link against system snappy" ${USE_SYSTEM_SNAPPY})
option(USE_SYSTEM_FFMPEG "Dynamically link against system FFMPEG" ${USE_SYSTEM_FFMPEG})
option(USE_SYSTEM_LIBZIP "Dynamically link against system libzip" ${USE_SYSTEM_LIBZIP})
@ -2147,7 +2146,7 @@ add_library(${CoreLibName} ${CoreLinkType}
Core/Dialog/SavedataParam.h
Core/ELF/ElfReader.cpp
Core/ELF/ElfReader.h
Core/ELF/ElfTypes.h
Core/ELF/PSPElfTypes.h
Core/ELF/PBPReader.cpp
Core/ELF/PBPReader.h
Core/ELF/PrxDecrypter.cpp
@ -2475,11 +2474,7 @@ if(ANDROID)
endif()
endif()
if(USE_ARMIPS)
set(CoreExtraLibs ${CoreExtraLibs} armips)
else()
add_compile_definitions(NO_ARMIPS=1)
endif()
set(CoreExtraLibs ${CoreExtraLibs} armips)
# needed for VK_USE_PLATFORM_XCB_KHR only
#if(VULKAN AND NOT WIN32)

View File

@ -1096,7 +1096,7 @@
<ClInclude Include="Dialog\PSPScreenshotDialog.h" />
<ClInclude Include="Dialog\SavedataParam.h" />
<ClInclude Include="ELF\ElfReader.h" />
<ClInclude Include="ELF\ElfTypes.h" />
<ClInclude Include="ELF\PSPElfTypes.h" />
<ClInclude Include="ELF\ParamSFO.h" />
<ClInclude Include="ELF\PBPReader.h" />
<ClInclude Include="ELF\PrxDecrypter.h" />
@ -1348,4 +1348,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@ -1398,7 +1398,7 @@
<ClInclude Include="ELF\ElfReader.h">
<Filter>ELF</Filter>
</ClInclude>
<ClInclude Include="ELF\ElfTypes.h">
<ClInclude Include="ELF\PSPElfTypes.h">
<Filter>ELF</Filter>
</ClInclude>
<ClInclude Include="MIPS\MIPSDebugInterface.h">

View File

@ -31,9 +31,7 @@
#include <algorithm>
#include <memory>
#ifndef NO_ARMIPS
#include <string_view>
#endif
#include <unordered_map>
#include "zlib.h"
@ -46,20 +44,7 @@
#include "Core/MemMap.h"
#include "Core/Config.h"
#include "Core/Debugger/SymbolMap.h"
#ifndef NO_ARMIPS
#include "ext/armips/Core/Assembler.h"
#else
struct Identifier {
explicit Identifier() {}
explicit Identifier(const std::string &s) {}
};
struct LabelDefinition {
Identifier name;
int64_t value;
};
#endif
SymbolMap *g_symbolMap;

View File

@ -19,7 +19,7 @@
#include <vector>
#include "Common/CommonTypes.h"
#include "Core/ELF/ElfTypes.h"
#include "Core/ELF/PSPElfTypes.h"
enum {
R_MIPS_NONE,

View File

@ -1,17 +1,12 @@
#include <cstdarg>
#include <cstring>
#include <memory>
#ifndef NO_ARMIPS
#include <string_view>
#endif
#include <vector>
#include "Common/CommonTypes.h"
#ifndef NO_ARMIPS
#include "ext/armips/Core/Assembler.h"
#include "ext/armips/Core/FileManager.h"
#endif
#include "Core/Debugger/SymbolMap.h"
#include "Core/MemMapHelpers.h"
#include "Core/MIPS/MIPSAsm.h"
@ -25,7 +20,6 @@ std::string GetAssembleError()
return errorText;
}
#ifndef NO_ARMIPS
class PspAssemblerFile: public AssemblerFile
{
public:
@ -96,11 +90,5 @@ bool MipsAssembleOpcode(const char *line, DebugInterface *cpu, u32 address) {
return true;
}
#else
bool MipsAssembleOpcode(const char *line, DebugInterface *cpu, u32 address) {
errorText = "Built without armips, cannot assemble";
return false;
}
#endif
} // namespace

View File

@ -131,7 +131,7 @@
<ClInclude Include="..\..\Core\Dialog\PSPScreenshotDialog.h" />
<ClInclude Include="..\..\Core\Dialog\SavedataParam.h" />
<ClInclude Include="..\..\Core\ELF\ElfReader.h" />
<ClInclude Include="..\..\Core\ELF\ElfTypes.h" />
<ClInclude Include="..\..\Core\ELF\PSPElfTypes.h" />
<ClInclude Include="..\..\Core\ELF\ParamSFO.h" />
<ClInclude Include="..\..\Core\ELF\PBPReader.h" />
<ClInclude Include="..\..\Core\ELF\PrxDecrypter.h" />
@ -1032,4 +1032,4 @@
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
</Project>

View File

@ -458,7 +458,7 @@
<ClInclude Include="..\..\Core\Dialog\PSPScreenshotDialog.h" />
<ClInclude Include="..\..\Core\Dialog\SavedataParam.h" />
<ClInclude Include="..\..\Core\ELF\ElfReader.h" />
<ClInclude Include="..\..\Core\ELF\ElfTypes.h" />
<ClInclude Include="..\..\Core\ELF\PSPElfTypes.h" />
<ClInclude Include="..\..\Core\ELF\ParamSFO.h" />
<ClInclude Include="..\..\Core\ELF\PBPReader.h" />
<ClInclude Include="..\..\Core\ELF\PrxDecrypter.h" />

View File

@ -4,9 +4,8 @@ if(WIN32)
set(ARMIPS_USE_STD_FILESYSTEM ON CACHE BOOL "" FORCE)
endif()
if(USE_ARMIPS)
add_subdirectory(armips)
endif()
add_subdirectory(armips)
if(NOT USING_GLES2)
add_subdirectory(glew)
endif()
@ -44,7 +43,7 @@ set(FT_REQUIRE_PNG OFF CACHE BOOL "" FORCE)
set(FT_REQUIRE_HARFBUZZ OFF CACHE BOOL "" FORCE)
set(FT_REQUIRE_BROTLI OFF CACHE BOOL "" FORCE)
if(NOT LIBRETRO)
add_subdirectory(freetype)
add_subdirectory(freetype)
endif()
if(NOT LIBRETRO)

View File

@ -306,6 +306,64 @@ SOURCES_CXX += \
${EXTDIR}/at3_standalone/fft.cpp \
${EXTDIR}/at3_standalone/mem.cpp
COREFLAGS += -DARMIPS_USE_STD_FILESYSTEM
SOURCES_CXX += \
$(EXTDIR)/armips/Util/ByteArray.cpp \
$(EXTDIR)/armips/Util/CRC.cpp \
$(EXTDIR)/armips/Util/EncodingTable.cpp \
$(EXTDIR)/armips/Util/FileClasses.cpp \
$(EXTDIR)/armips/Util/Util.cpp \
$(EXTDIR)/armips/Core/ELF/ElfRelocator.cpp \
$(EXTDIR)/armips/Core/ELF/ElfFile.cpp \
$(EXTDIR)/armips/Core/Assembler.cpp \
$(EXTDIR)/armips/Core/Allocations.cpp \
$(EXTDIR)/armips/Core/Common.cpp \
$(EXTDIR)/armips/Core/Expression.cpp \
$(EXTDIR)/armips/Core/ExpressionFunctions.cpp \
$(EXTDIR)/armips/Core/ExpressionFunctionHandler.cpp \
$(EXTDIR)/armips/Core/FileManager.cpp \
$(EXTDIR)/armips/Core/Misc.cpp \
$(EXTDIR)/armips/Core/SymbolData.cpp \
$(EXTDIR)/armips/Core/SymbolTable.cpp \
$(EXTDIR)/armips/Core/Types.cpp \
$(EXTDIR)/armips/Commands/CAssemblerCommand.cpp \
$(EXTDIR)/armips/Commands/CAssemblerLabel.cpp \
$(EXTDIR)/armips/Commands/CDirectiveArea.cpp \
$(EXTDIR)/armips/Commands/CDirectiveConditional.cpp \
$(EXTDIR)/armips/Commands/CDirectiveData.cpp \
$(EXTDIR)/armips/Commands/CDirectiveFile.cpp \
$(EXTDIR)/armips/Commands/CDirectiveMessage.cpp \
$(EXTDIR)/armips/Commands/CommandSequence.cpp \
$(EXTDIR)/armips/Archs/Architecture.cpp \
$(EXTDIR)/armips/Archs/ARM/Arm.cpp \
$(EXTDIR)/armips/Archs/ARM/ArmOpcodes.cpp \
$(EXTDIR)/armips/Archs/ARM/ArmParser.cpp \
$(EXTDIR)/armips/Archs/ARM/ArmElfRelocator.cpp \
$(EXTDIR)/armips/Archs/ARM/ArmExpressionFunctions.cpp \
$(EXTDIR)/armips/Archs/ARM/CArmInstruction.cpp \
$(EXTDIR)/armips/Archs/ARM/CThumbInstruction.cpp \
$(EXTDIR)/armips/Archs/ARM/Pool.cpp \
$(EXTDIR)/armips/Archs/ARM/ThumbOpcodes.cpp \
$(EXTDIR)/armips/Archs/MIPS/CMipsInstruction.cpp \
$(EXTDIR)/armips/Archs/MIPS/Mips.cpp \
$(EXTDIR)/armips/Archs/MIPS/MipsElfFile.cpp \
$(EXTDIR)/armips/Archs/MIPS/MipsElfRelocator.cpp \
$(EXTDIR)/armips/Archs/MIPS/MipsExpressionFunctions.cpp \
$(EXTDIR)/armips/Archs/MIPS/MipsMacros.cpp \
$(EXTDIR)/armips/Archs/MIPS/MipsOpcodes.cpp \
$(EXTDIR)/armips/Archs/MIPS/MipsParser.cpp \
$(EXTDIR)/armips/Archs/MIPS/PsxRelocator.cpp \
$(EXTDIR)/armips/Archs/SuperH/CShInstruction.cpp \
$(EXTDIR)/armips/Archs/SuperH/ShElfRelocator.cpp \
$(EXTDIR)/armips/Archs/SuperH/ShExpressionFunctions.cpp \
$(EXTDIR)/armips/Archs/SuperH/ShOpcodes.cpp \
$(EXTDIR)/armips/Archs/SuperH/ShParser.cpp \
$(EXTDIR)/armips/Archs/SuperH/SuperH.cpp \
$(EXTDIR)/armips/Parser/DirectivesParser.cpp \
$(EXTDIR)/armips/Parser/ExpressionParser.cpp \
$(EXTDIR)/armips/Parser/Parser.cpp \
$(EXTDIR)/armips/Parser/Tokenizer.cpp
ifeq ($(PLATFORM_EXT), android)
COREFLAGS += -DHAVE_DLFCN_H
else ifneq ($(PLATFORM_EXT), win32)
@ -369,9 +427,6 @@ SOURCES_CXX += \
$(EXTDIR)/imgui/imgui_tables.cpp \
$(EXTDIR)/imgui/imgui_widgets.cpp
SOURCES_CXX += \
$(EXTDIR)/armips/Core/Types.cpp
SOURCES_CXX += \
$(COMMONDIR)/Crypto/md5.cpp \
$(COMMONDIR)/Crypto/sha1.cpp \