Add PrivacyInfo.xcprivacy file to define accessed API types and tracking settings

This commit is contained in:
moonpower
2025-11-22 13:58:31 +03:00
parent 74f5aaac82
commit c2c688fa39
22 changed files with 30375 additions and 19803 deletions
Vendored
BIN
View File
Binary file not shown.
+3 -1
View File
@@ -28,4 +28,6 @@ snap/
psxe.app
.DS_Store
*/.DS_Store
node_modules
node_modules
ios/HostApp/Pods/*
ios/HostApp/build/*
+2 -3
View File
@@ -9,8 +9,7 @@ SDL_STATIC := 0
SDL_CFLAGS := -sUSE_SDL=2
SDL_LIBS_DYNAMIC :=
SDL_LIBS_STATIC :=
WASM_LDFLAGS := -sUSE_SDL=2 -sALLOW_MEMORY_GROWTH=1 -sASSERTIONS=1 -sFORCE_FILESYSTEM=1 -sEXPORTED_RUNTIME_METHODS='["FS","ccall","cwrap"]' -sEXPORTED_FUNCTIONS='["_main","_psxe_run","_external_main"]'
IMGUI_FRONTEND := 0
WASM_LDFLAGS := -sUSE_SDL=2 -sALLOW_MEMORY_GROWTH=1 -sASSERTIONS=1 -sFORCE_FILESYSTEM=1 -sEXPORTED_RUNTIME_METHODS='["FS","ccall","cwrap"]' -sEXPORTED_FUNCTIONS='["_main","_psxe_run","_external_main","_psxe_wasm_on_file"]'
endif
SDL_CONFIG ?= sdl2-config
@@ -52,7 +51,7 @@ ifeq ($(IOS_TARGET),1)
endif
BASE_CFLAGS = -g -DLOG_USE_COLOR -I"." -I"psx" $(SDL_CFLAGS)
BASE_CFLAGS += -Ofast -Wno-overflow -Wall -pedantic -Wno-address-of-packed-member -flto
BASE_CFLAGS += -O3 -ffast-math -Wno-overflow -Wall -pedantic -Wno-address-of-packed-member -flto
BASE_CXXFLAGS = -std=c++17 $(BASE_CFLAGS)
+2 -2
View File
@@ -60,9 +60,9 @@ elif [ "$MODE" = "shared" ]; then
elif [ "$MODE" = "wasm" ]; then
make clean
if command -v emmake >/dev/null 2>&1; then
emmake make wasm
emmake make wasm IMGUI_FRONTEND="${IMGUI_FRONTEND:-1}"
else
make wasm
make wasm IMGUI_FRONTEND="${IMGUI_FRONTEND:-1}"
fi
elif [ "$MODE" = "macosapp" ]; then
+342 -30
View File
File diff suppressed because it is too large Load Diff
+91 -3
View File
@@ -5,6 +5,9 @@
#include <dirent.h>
#include <sys/stat.h>
#include <unistd.h>
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#endif
#include "../third_party/imgui/imgui.h"
#include "../third_party/imgui/backends/imgui_impl_sdl2.h"
@@ -106,7 +109,7 @@ extern "C" PSXE_API void imgui_layer_flush(void) {
ImGui_ImplSDLRenderer2_RenderDrawData(ImGui::GetDrawData(), g_renderer);
}
#if defined(IMGUI_FRONTEND) && !defined(__DLL_BUILD) && !defined(IOS_TARGET) && !defined(__ANDROID__) && !defined(__EMSCRIPTEN__)
#if defined(IMGUI_FRONTEND) && !defined(__DLL_BUILD) && !defined(IOS_TARGET) && !defined(__ANDROID__)
extern "C" {
#include "config.h"
PSXE_API int psxe_run_configured(psxe_config_t* cfg, void* external_window, void* external_renderer);
@@ -187,6 +190,46 @@ static std::string upscale_label_from_height(int height) {
}
}
#ifdef __EMSCRIPTEN__
static std::string g_wasm_pending_bios;
static std::string g_wasm_pending_cd;
extern "C" void psxe_wasm_on_file(const char* path, int is_bios) {
if (!path)
return;
if (is_bios) {
g_wasm_pending_bios = path;
} else {
g_wasm_pending_cd = path;
}
}
extern "C" void psxe_wasm_pick_file(int is_bios) {
EM_ASM({
const isBios = $0 === 1;
const accept = isBios ? '.bin' : '.cue,.bin,.iso,.img';
const input = document.createElement('input');
input.type = 'file';
input.accept = accept;
input.style.display = 'none';
document.body.appendChild(input);
input.addEventListener('change', async function() {
const file = input.files[0];
if (!file) {
document.body.removeChild(input);
return;
}
const data = new Uint8Array(await file.arrayBuffer());
const mountPath = isBios ? '/bios.bin' : '/cdrom.bin';
FS.writeFile(mountPath, data);
Module.ccall('psxe_wasm_on_file', null, ['string','number'], [mountPath, isBios ? 1 : 0]);
document.body.removeChild(input);
});
input.click();
}, is_bios);
}
#endif
static bool write_settings_file(
const std::string& path,
const std::string& bios_search,
@@ -497,6 +540,9 @@ extern "C" PSXE_API int imgui_frontend_main(int argc, const char* argv[]) {
if (ImGui::BeginMenu("File")) {
if (ImGui::MenuItem("Load BIOS")) {
#ifdef __EMSCRIPTEN__
psxe_wasm_pick_file(1);
#else
bios_picker.open = true;
bios_picker.selection.clear();
bios_picker.cwd.clear();
@@ -504,8 +550,12 @@ extern "C" PSXE_API int imgui_frontend_main(int argc, const char* argv[]) {
show_cd_popup = false;
show_settings = false;
show_about = false;
#endif
}
if (ImGui::MenuItem("Load CDROM")) {
#ifdef __EMSCRIPTEN__
psxe_wasm_pick_file(0);
#else
cd_picker.open = true;
cd_picker.selection.clear();
cd_picker.cwd.clear();
@@ -513,6 +563,7 @@ extern "C" PSXE_API int imgui_frontend_main(int argc, const char* argv[]) {
show_bios_popup = false;
show_settings = false;
show_about = false;
#endif
}
ImGui::Separator();
if (ImGui::MenuItem("Quit")) {
@@ -539,7 +590,11 @@ extern "C" PSXE_API int imgui_frontend_main(int argc, const char* argv[]) {
}
ImGui::End();
if (show_bios_popup || bios_picker.open) {
if (show_bios_popup || bios_picker.open
#ifdef __EMSCRIPTEN__
|| !g_wasm_pending_bios.empty()
#endif
) {
if (show_bios_popup)
ImGui::OpenPopup("Load BIOS");
@@ -548,9 +603,15 @@ extern "C" PSXE_API int imgui_frontend_main(int argc, const char* argv[]) {
if (ImGui::InputText("Path", bios_buf.data(), bios_buf.size())) {
bios_path = bios_buf.data();
}
#ifndef __EMSCRIPTEN__
if (ImGui::Button("Browse...")) {
bios_picker.open = true;
}
#else
if (ImGui::Button("Browse...")) {
psxe_wasm_pick_file(1);
}
#endif
ImGui::SameLine();
if (ImGui::Button("Use BIOS")) {
bios_path = bios_buf.data();
@@ -574,9 +635,22 @@ extern "C" PSXE_API int imgui_frontend_main(int argc, const char* argv[]) {
show_bios_popup = false;
settings_dirty = true;
}
#ifdef __EMSCRIPTEN__
if (!g_wasm_pending_bios.empty()) {
bios_path = g_wasm_pending_bios;
sync_buffer(bios_buf, bios_path);
show_bios_popup = false;
settings_dirty = true;
g_wasm_pending_bios.clear();
}
#endif
}
if (show_cd_popup || cd_picker.open) {
if (show_cd_popup || cd_picker.open
#ifdef __EMSCRIPTEN__
|| !g_wasm_pending_cd.empty()
#endif
) {
if (show_cd_popup)
ImGui::OpenPopup("Load CDROM");
@@ -585,9 +659,15 @@ extern "C" PSXE_API int imgui_frontend_main(int argc, const char* argv[]) {
if (ImGui::InputText("Path", cdrom_buf.data(), cdrom_buf.size())) {
cdrom_path = cdrom_buf.data();
}
#ifndef __EMSCRIPTEN__
if (ImGui::Button("Browse...")) {
cd_picker.open = true;
}
#else
if (ImGui::Button("Browse...")) {
psxe_wasm_pick_file(0);
}
#endif
ImGui::SameLine();
if (ImGui::Button("Use CDROM")) {
cdrom_path = cdrom_buf.data();
@@ -609,6 +689,14 @@ extern "C" PSXE_API int imgui_frontend_main(int argc, const char* argv[]) {
sync_buffer(cdrom_buf, cdrom_path);
show_cd_popup = false;
}
#ifdef __EMSCRIPTEN__
if (!g_wasm_pending_cd.empty()) {
cdrom_path = g_wasm_pending_cd;
sync_buffer(cdrom_buf, cdrom_path);
show_cd_popup = false;
g_wasm_pending_cd.clear();
}
#endif
}
if (show_settings) {
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
export NODE_BINARY=$(command -v node)
+2
View File
@@ -0,0 +1,2 @@
export NODE_BINARY=/Users/mohammed/.nvm/versions/node/v22.10.0/bin/node
+167 -20
View File
@@ -7,12 +7,16 @@
objects = {
/* Begin PBXBuildFile section */
1085901F2ED1CE5200D77FB1 /* bios.bin in Resources */ = {isa = PBXBuildFile; fileRef = 1085901E2ED1CE5200D77FB1 /* bios.bin */; };
3464725A44F4A69FBE2AB974 /* libarmsx.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 653A133BDB61BD1059CFAF23 /* libarmsx.dylib */; };
3A83F5253BCB4AD47A6742B1 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = F686B87C80EB4D3204CDEEC0 /* main.m */; };
48352C131E8B0327373C61EC /* SDL2.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 518B2258235B15B15373B04A /* SDL2.xcframework */; };
5480B78F3661F4CB9446657C /* libarmsx.dylib in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 653A133BDB61BD1059CFAF23 /* libarmsx.dylib */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
7435C97274E9B2668E6C9C86 /* SDL2.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 518B2258235B15B15373B04A /* SDL2.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
8BC157B9E48AA3D81793AA6A /* ARMSXModule.m in Sources */ = {isa = PBXBuildFile; fileRef = B35E8D4127C001F1E6F6F2AF /* ARMSXModule.m */; };
B16F42A290ECFF7DF154F24F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9484FEBF96C002F04D73B70C /* AppDelegate.mm */; };
CB535A71335895F3B1AFB7E3 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = EB192CCB1425D7B15B24E93A /* PrivacyInfo.xcprivacy */; };
EFAA42EF186BC1A6B4315DDF /* libPods-ARMSX.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B15244F288D2AB7C06E0752A /* libPods-ARMSX.a */; };
/* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
@@ -32,12 +36,21 @@
/* Begin PBXFileReference section */
019479875FC7433ACB65A02E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
1085901E2ED1CE5200D77FB1 /* bios.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; name = bios.bin; path = ../../bios.bin; sourceTree = "<group>"; };
1760EE6722F9E2BEDFDCCC6D /* armsx_bridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = armsx_bridge.h; sourceTree = "<group>"; };
518B2258235B15B15373B04A /* SDL2.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = SDL2.xcframework; path = ../Frameworks/SDL2.xcframework; sourceTree = "<group>"; };
64E02E161FEB892FC40F8BE1 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
653A133BDB61BD1059CFAF23 /* libarmsx.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libarmsx.dylib; path = ../Frameworks/libarmsx.dylib; sourceTree = "<group>"; };
67F12B2E9A249BA431A15C7C /* Pods-ARMSX.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ARMSX.debug.xcconfig"; path = "Target Support Files/Pods-ARMSX/Pods-ARMSX.debug.xcconfig"; sourceTree = "<group>"; };
6E26D0ECD2CD966E5EA1C326 /* Pods-ARMSX.release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Pods-ARMSX.release.xcconfig"; sourceTree = "<group>"; };
87BA3EE4597141AA97A5557D /* ARMSX.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ARMSX.app; sourceTree = BUILT_PRODUCTS_DIR; };
9484FEBF96C002F04D73B70C /* AppDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = "<group>"; };
996CB57F5DD4B88A0931BB95 /* ARMSXModule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARMSXModule.h; sourceTree = "<group>"; };
B15244F288D2AB7C06E0752A /* libPods-ARMSX.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-ARMSX.a"; sourceTree = BUILT_PRODUCTS_DIR; };
B35E8D4127C001F1E6F6F2AF /* ARMSXModule.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ARMSXModule.m; sourceTree = "<group>"; };
E3FAF87D7E4A2345FC43CA68 /* Pods-ARMSX.debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Pods-ARMSX.debug.xcconfig"; sourceTree = "<group>"; };
EB192CCB1425D7B15B24E93A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = "<group>"; };
F150862C7055ADDBB5B57CF1 /* Pods-ARMSX.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ARMSX.release.xcconfig"; path = "Target Support Files/Pods-ARMSX/Pods-ARMSX.release.xcconfig"; sourceTree = "<group>"; };
F686B87C80EB4D3204CDEEC0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
@@ -48,6 +61,7 @@
files = (
48352C131E8B0327373C61EC /* SDL2.xcframework in Frameworks */,
3464725A44F4A69FBE2AB974 /* libarmsx.dylib in Frameworks */,
EFAA42EF186BC1A6B4315DDF /* libPods-ARMSX.a in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -59,6 +73,7 @@
children = (
653A133BDB61BD1059CFAF23 /* libarmsx.dylib */,
518B2258235B15B15373B04A /* SDL2.xcframework */,
B15244F288D2AB7C06E0752A /* libPods-ARMSX.a */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -66,9 +81,13 @@
48D57A41DAF59CF0D443A086 = {
isa = PBXGroup;
children = (
1085901E2ED1CE5200D77FB1 /* bios.bin */,
B6E3FD0B464E641CA58C9EA3 /* Pods-ARMSX */,
D0581165A1AB8CE875BD92E0 /* Sources */,
473DBC863A1B097C0DD3710F /* Frameworks */,
9B7D6BDFE7232B2E5D8A379F /* Products */,
EB192CCB1425D7B15B24E93A /* PrivacyInfo.xcprivacy */,
A221D24E0608A650E479FF55 /* Pods */,
);
sourceTree = "<group>";
};
@@ -80,12 +99,33 @@
name = Products;
sourceTree = "<group>";
};
A221D24E0608A650E479FF55 /* Pods */ = {
isa = PBXGroup;
children = (
67F12B2E9A249BA431A15C7C /* Pods-ARMSX.debug.xcconfig */,
F150862C7055ADDBB5B57CF1 /* Pods-ARMSX.release.xcconfig */,
);
path = Pods;
sourceTree = "<group>";
};
B6E3FD0B464E641CA58C9EA3 /* Pods-ARMSX */ = {
isa = PBXGroup;
children = (
E3FAF87D7E4A2345FC43CA68 /* Pods-ARMSX.debug.xcconfig */,
6E26D0ECD2CD966E5EA1C326 /* Pods-ARMSX.release.xcconfig */,
);
name = "Pods-ARMSX";
path = "Pods/Target Support Files/Pods-ARMSX";
sourceTree = "<group>";
};
D0581165A1AB8CE875BD92E0 /* Sources */ = {
isa = PBXGroup;
children = (
64E02E161FEB892FC40F8BE1 /* AppDelegate.h */,
9484FEBF96C002F04D73B70C /* AppDelegate.mm */,
1760EE6722F9E2BEDFDCCC6D /* armsx_bridge.h */,
996CB57F5DD4B88A0931BB95 /* ARMSXModule.h */,
B35E8D4127C001F1E6F6F2AF /* ARMSXModule.m */,
019479875FC7433ACB65A02E /* Info.plist */,
F686B87C80EB4D3204CDEEC0 /* main.m */,
);
@@ -99,17 +139,19 @@
isa = PBXNativeTarget;
buildConfigurationList = 1A8EEE030E970E82EC7B77F8 /* Build configuration list for PBXNativeTarget "ARMSX" */;
buildPhases = (
EFC8122B20E4CF7480A3496D /* [CP] Check Pods Manifest.lock */,
21709ABD74D1031F0389C4EC /* Sources */,
D6910F21954EF81975654CFA /* Frameworks */,
8F7F79E31569D7CF1ACBC707 /* Embed Frameworks */,
469D63DB0DB7A815B1CF8164 /* Resources */,
DBCAE27636921EA4F4D6F40B /* [CP] Embed Pods Frameworks */,
15CF2083A041D419876ECE72 /* [CP] Copy Pods Resources */,
);
buildRules = (
);
dependencies = (
);
name = ARMSX;
packageProductDependencies = (
);
productName = ARMSX;
productReference = 87BA3EE4597141AA97A5557D /* ARMSX.app */;
productType = "com.apple.product-type.application";
@@ -121,7 +163,7 @@
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = YES;
LastUpgradeCheck = 2600;
LastUpgradeCheck = 1430;
};
buildConfigurationList = FBD22F5C337AFF8855769BCD /* Build configuration list for PBXProject "ARMSX" */;
compatibilityVersion = "Xcode 14.0";
@@ -133,6 +175,7 @@
);
mainGroup = 48D57A41DAF59CF0D443A086;
minimizedProjectReferenceProxies = 1;
productRefGroup = 9B7D6BDFE7232B2E5D8A379F /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
@@ -141,11 +184,91 @@
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
469D63DB0DB7A815B1CF8164 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1085901F2ED1CE5200D77FB1 /* bios.bin in Resources */,
CB535A71335895F3B1AFB7E3 /* PrivacyInfo.xcprivacy in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
15CF2083A041D419876ECE72 /* [CP] Copy Pods Resources */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-ARMSX/Pods-ARMSX-resources-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Copy Pods Resources";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-ARMSX/Pods-ARMSX-resources-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ARMSX/Pods-ARMSX-resources.sh\"\n";
showEnvVarsInLog = 0;
};
DBCAE27636921EA4F4D6F40B /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-ARMSX/Pods-ARMSX-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
inputPaths = (
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-ARMSX/Pods-ARMSX-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ARMSX/Pods-ARMSX-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
EFC8122B20E4CF7480A3496D /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-ARMSX-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
21709ABD74D1031F0389C4EC /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
8BC157B9E48AA3D81793AA6A /* ARMSXModule.m in Sources */,
B16F42A290ECFF7DF154F24F /* AppDelegate.mm in Sources */,
3A83F5253BCB4AD47A6742B1 /* main.m in Sources */,
);
@@ -156,24 +279,35 @@
/* Begin XCBuildConfiguration section */
6C84D25B5BF8B28E170A1AC3 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 67F12B2E9A249BA431A15C7C /* Pods-ARMSX.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = L296QD7JFU;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/../Frameworks",
"\"../Frameworks\"",
);
INFOPLIST_FILE = Sources/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../Frameworks";
OTHER_LDFLAGS = "-ObjC";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(SDKROOT)/usr/lib/swift",
"$(PROJECT_DIR)/../Frameworks",
);
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
);
PRODUCT_BUNDLE_IDENTIFIER = com.nanodata.armsx;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
USE_HERMES = YES;
};
name = Debug;
};
@@ -183,7 +317,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -212,10 +346,9 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = L296QD7JFU;
DEVELOPMENT_TEAM = "";
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
@@ -230,16 +363,18 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = "$(inherited) ";
PRODUCT_NAME = "$(TARGET_NAME)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../../node_modules/react-native";
SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
USE_HERMES = true;
};
name = Debug;
};
@@ -249,7 +384,7 @@
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LANGUAGE_STANDARD = "c++20";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
@@ -278,10 +413,9 @@
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = L296QD7JFU;
DEVELOPMENT_TEAM = "";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -290,38 +424,51 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
OTHER_LDFLAGS = "$(inherited) ";
PRODUCT_NAME = "$(TARGET_NAME)";
REACT_NATIVE_PATH = "${PODS_ROOT}/../../../node_modules/react-native";
SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
USE_HERMES = true;
};
name = Release;
};
EA79FDBEDBB17F1B501A7D1A /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = F150862C7055ADDBB5B57CF1 /* Pods-ARMSX.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
DEVELOPMENT_TEAM = L296QD7JFU;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)/../Frameworks",
"\"../Frameworks\"",
);
INFOPLIST_FILE = Sources/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
IPHONEOS_DEPLOYMENT_TARGET = 15.1;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
LIBRARY_SEARCH_PATHS = "$(PROJECT_DIR)/../Frameworks";
OTHER_LDFLAGS = "-ObjC";
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"$(SDKROOT)/usr/lib/swift",
"$(PROJECT_DIR)/../Frameworks",
);
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
);
PRODUCT_BUNDLE_IDENTIFIER = com.nanodata.armsx;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
USE_HERMES = YES;
};
name = Release;
};
@@ -7,7 +7,7 @@
<key>ARMSX.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
<integer>70</integer>
</dict>
</dict>
</dict>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:ARMSX.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>
+52 -11
View File
@@ -1,26 +1,43 @@
project_root = File.expand_path('../..', __dir__)
PROJECT_ROOT = File.expand_path('../..', __dir__)
react_native_pods = File.expand_path('../../node_modules/react-native/scripts/react_native_pods.rb', __dir__)
native_modules = File.expand_path('../../node_modules/@react-native-community/cli-platform-ios/native_modules.rb', __dir__)
rn_pod_candidates = [
File.expand_path('../../node_modules/react-native/scripts/react_native_pods.rb', __dir__),
File.expand_path(File.join(PROJECT_ROOT, 'node_modules/react-native/scripts/react_native_pods.rb'))
]
rn_cli_candidates = [
File.expand_path('../../node_modules/@react-native-community/cli/package.json', __dir__),
File.expand_path(File.join(PROJECT_ROOT, 'node_modules/@react-native-community/cli/package.json'))
]
react_native_available = File.exist?(react_native_pods) && File.exist?(native_modules)
react_native_pods = rn_pod_candidates.find { |p| File.exist?(p) }
react_native_cli = rn_cli_candidates.find { |p| File.exist?(p) }
react_native_available = !!react_native_pods
react_native_cli_available = !!react_native_cli
unless react_native_available
Pod::UI.puts "⚠️ React Native dependencies not found. Proceeding without RN pods.".yellow
Pod::UI.puts " Run `npm install` (or `yarn install`) at #{project_root} to enable the overlay."
Pod::UI.puts " Run `npm install` (or `yarn install`) at #{PROJECT_ROOT} to enable the overlay."
Pod::UI.puts " Ensure @react-native-community/cli is installed so autolinking can run."
end
if react_native_available
require_relative react_native_pods
require_relative native_modules
unless react_native_cli_available
Pod::UI.puts "⚠️ @react-native-community/cli not found; skipping autolinking.".yellow
def use_native_modules!(*)
{ reactNativePath: File.join(PROJECT_ROOT, 'node_modules', 'react-native') }
end
end
def armsx_use_react_native!(config)
use_react_native!(
:path => config[:reactNativePath],
:app_path => File.expand_path('..', __dir__),
:app_path => PROJECT_ROOT,
:config_file_dir => PROJECT_ROOT,
:hermes_enabled => true,
:fabric_enabled => true,
:flipper_configuration => FlipperConfiguration.disabled
:fabric_enabled => true
)
end
else
@@ -29,11 +46,12 @@ else
{ reactNativePath: File.join(File.expand_path('../..', __dir__), 'node_modules', 'react-native') }
end
def prepare_react_native_project!(*); end
def armsx_use_react_native!(*); end
def react_native_post_install(*); end
end
platform :ios, '14.0'
platform :ios, '15.1'
prepare_react_native_project!
target 'ARMSX' do
@@ -44,8 +62,31 @@ target 'ARMSX' do
post_install do |installer|
react_native_post_install(
installer,
use_hermes: true,
config[:reactNativePath],
mac_catalyst_enabled: false
) if react_native_available
# Ensure Hermes is enabled for compilation (prevents JSC headers from being pulled) and
# strip bad DerivedData search paths that occasionally sneak in from pods like DoubleConversion.
installer.pods_project.targets.each do |t|
t.build_configurations.each do |config|
config.build_settings['USE_HERMES'] = 'YES'
if config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'].is_a?(Array)
defs = config.build_settings['GCC_PREPROCESSOR_DEFINITIONS']
defs << 'USE_HERMES=1' unless defs.any? { |d| d.include?('USE_HERMES') }
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = defs
else
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = ['$(inherited)', 'USE_HERMES=1']
end
end
end
installer.aggregate_targets.each do |aggregate_target|
aggregate_target.user_project.native_targets.each do |nt|
nt.build_configurations.each do |config|
config.build_settings['USE_HERMES'] = 'YES'
end
end
end
end
end
File diff suppressed because it is too large Load Diff
+27841 -19721
View File
File diff suppressed because it is too large Load Diff
+37
View File
@@ -0,0 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>C617.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>35F9.1</string>
</array>
</dict>
</array>
<key>NSPrivacyCollectedDataTypes</key>
<array/>
<key>NSPrivacyTracking</key>
<false/>
</dict>
</plist>
+11 -2
View File
@@ -1,7 +1,14 @@
#import "AppDelegate.h"
#import <SDL2/SDL.h>
#ifndef USE_HERMES
#define USE_HERMES 1
#endif
#if __has_include(<React-RCTAppDelegate/RCTAppSetupUtils.h>)
#import <React-RCTAppDelegate/RCTAppSetupUtils.h>
#else
#import <React/RCTAppSetupUtils.h>
#endif
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
@@ -19,7 +26,9 @@
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
RCTAppSetupPrepareApp(application);
// We deliberately keep the old architecture/turbo-modules off here to avoid missing dev modules
// (e.g. NativeRedBox) that were spamming the logs and blank-screening the overlay.
RCTAppSetupPrepareApp(application, NO);
self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
self.window.backgroundColor = [UIColor blackColor];
@@ -182,7 +191,7 @@
- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge {
#if DEBUG
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index"];
#else
return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
#endif
+9 -4
View File
@@ -1,7 +1,7 @@
name: ARMSX
options:
deploymentTarget:
iOS: "13.0"
iOS: "15.1"
settings:
DEVELOPMENT_TEAM: ""
CLANG_ENABLE_OBJC_ARC: YES
@@ -9,7 +9,7 @@ targets:
ARMSX:
type: application
platform: iOS
deploymentTarget: "13.0"
deploymentTarget: "15.1"
sources:
- path: Sources
resources:
@@ -24,8 +24,13 @@ targets:
PRODUCT_BUNDLE_IDENTIFIER: com.nanodata.armsx
LD_RUNPATH_SEARCH_PATHS: "$(inherited) @executable_path/Frameworks"
OTHER_LDFLAGS: "$(inherited) -ObjC"
LIBRARY_SEARCH_PATHS: "$(inherited) $(PROJECT_DIR)/../Frameworks"
FRAMEWORK_SEARCH_PATHS: "$(inherited) $(PROJECT_DIR)/../Frameworks"
LIBRARY_SEARCH_PATHS:
- "$(inherited)"
- "$(SDKROOT)/usr/lib/swift"
- "$(PROJECT_DIR)/../Frameworks"
FRAMEWORK_SEARCH_PATHS:
- "$(inherited)"
- "$(PROJECT_DIR)/../Frameworks"
ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon
configFiles:
Debug: Pods/Target Support Files/Pods-ARMSX/Pods-ARMSX.debug.xcconfig

Some files were not shown because too many files have changed in this diff Show More