Skip to content

Commit f74c894

Browse files
committed
Revert "Workaround mingw-gcc LTO ICE by re-adding some dead code..."
This reverts commit e12a424. This is no longer needed after 5d99f46.
1 parent 5d99f46 commit f74c894

File tree

2 files changed

+0
-239
lines changed

2 files changed

+0
-239
lines changed

platform/ios/export/export_plugin.cpp

-237
Original file line numberDiff line numberDiff line change
@@ -1278,167 +1278,6 @@ struct ExportLibsData {
12781278
String dest_dir;
12791279
};
12801280

1281-
bool EditorExportPlatformIOS::_archive_has_arm64(const String &p_path, uint32_t *r_cputype, uint32_t *r_cpusubtype) const {
1282-
bool has_arm64_image = false;
1283-
if (FileAccess::exists(p_path)) {
1284-
if (LipO::is_lipo(p_path)) {
1285-
// LipO.
1286-
Ref<LipO> lipo;
1287-
lipo.instantiate();
1288-
if (lipo->open_file(p_path)) {
1289-
for (int i = 0; i < lipo->get_arch_count(); i++) {
1290-
if (lipo->get_arch_cputype(i) == 0x100000c && lipo->get_arch_cpusubtype(i) == 0) {
1291-
has_arm64_image = true;
1292-
break;
1293-
}
1294-
}
1295-
}
1296-
lipo->close();
1297-
} else {
1298-
// Single architecture archive.
1299-
Ref<FileAccess> sim_f = FileAccess::open(p_path, FileAccess::READ);
1300-
if (sim_f.is_valid()) {
1301-
char magic[9] = {};
1302-
sim_f->get_buffer((uint8_t *)&magic[0], 8);
1303-
if (String(magic) == String("!<arch>\n")) {
1304-
while (!sim_f->eof_reached()) {
1305-
// Read file metadata.
1306-
char name_short[17] = {};
1307-
char size_short[11] = {};
1308-
sim_f->get_buffer((uint8_t *)&name_short[0], 16);
1309-
sim_f->seek(sim_f->get_position() + 12 + 6 + 6 + 8); // Skip modification time, owner ID, group ID, file mode.
1310-
sim_f->get_buffer((uint8_t *)&size_short[0], 10);
1311-
sim_f->seek(sim_f->get_position() + 2); // Skip end marker.
1312-
1313-
int64_t file_size = String(size_short).to_int();
1314-
int64_t next_off = sim_f->get_position() + file_size;
1315-
1316-
String name = String(name_short); // Skip extended name.
1317-
if (name.is_empty() || file_size == 0) {
1318-
break;
1319-
}
1320-
if (name.begins_with("#1/")) {
1321-
int64_t name_len = String(name_short).replace("#1/", "").to_int();
1322-
sim_f->seek(sim_f->get_position() + name_len);
1323-
}
1324-
1325-
// Read file content.
1326-
uint32_t obj_magic = sim_f->get_32();
1327-
1328-
bool swap = (obj_magic == 0xcffaedfe || obj_magic == 0xcefaedfe);
1329-
if (obj_magic == 0xcefaedfe || obj_magic == 0xfeedface || obj_magic == 0xcffaedfe || obj_magic == 0xfeedfacf) {
1330-
uint32_t cputype = sim_f->get_32();
1331-
uint32_t cpusubtype = sim_f->get_32();
1332-
if (swap) {
1333-
cputype = BSWAP32(cputype);
1334-
cpusubtype = BSWAP32(cpusubtype);
1335-
}
1336-
if (r_cputype) {
1337-
*r_cputype = cputype;
1338-
}
1339-
if (r_cpusubtype) {
1340-
*r_cpusubtype = cpusubtype;
1341-
}
1342-
if (cputype == 0x100000c && cpusubtype == 0) {
1343-
has_arm64_image = true;
1344-
}
1345-
break;
1346-
}
1347-
sim_f->seek(next_off);
1348-
}
1349-
}
1350-
sim_f->close();
1351-
}
1352-
}
1353-
}
1354-
return has_arm64_image;
1355-
}
1356-
1357-
int EditorExportPlatformIOS::_archive_convert_to_simulator(const String &p_path) const {
1358-
int commands_patched = 0;
1359-
Ref<FileAccess> sim_f = FileAccess::open(p_path, FileAccess::READ_WRITE);
1360-
if (sim_f.is_valid()) {
1361-
char magic[9] = {};
1362-
sim_f->get_buffer((uint8_t *)&magic[0], 8);
1363-
if (String(magic) == String("!<arch>\n")) {
1364-
while (!sim_f->eof_reached()) {
1365-
// Read file metadata.
1366-
char name_short[17] = {};
1367-
char size_short[11] = {};
1368-
sim_f->get_buffer((uint8_t *)&name_short[0], 16);
1369-
sim_f->seek(sim_f->get_position() + 12 + 6 + 6 + 8); // Skip modification time, owner ID, group ID, file mode.
1370-
sim_f->get_buffer((uint8_t *)&size_short[0], 10);
1371-
sim_f->seek(sim_f->get_position() + 2); // Skip end marker.
1372-
1373-
int64_t file_size = String(size_short).to_int();
1374-
int64_t next_off = sim_f->get_position() + file_size;
1375-
1376-
String name = String(name_short); // Skip extended name.
1377-
if (name.is_empty() || file_size == 0) {
1378-
break;
1379-
}
1380-
if (name.begins_with("#1/")) {
1381-
int64_t name_len = String(name_short).replace("#1/", "").to_int();
1382-
sim_f->seek(sim_f->get_position() + name_len);
1383-
}
1384-
1385-
// Read file content.
1386-
uint32_t obj_magic = sim_f->get_32();
1387-
1388-
bool swap = (obj_magic == 0xcffaedfe || obj_magic == 0xcefaedfe);
1389-
if (obj_magic == 0xcefaedfe || obj_magic == 0xfeedface || obj_magic == 0xcffaedfe || obj_magic == 0xfeedfacf) {
1390-
uint32_t cputype = sim_f->get_32();
1391-
uint32_t cpusubtype = sim_f->get_32();
1392-
uint32_t filetype = sim_f->get_32();
1393-
uint32_t ncmds = sim_f->get_32();
1394-
sim_f->get_32(); // Commands total size.
1395-
sim_f->get_32(); // Commands flags.
1396-
if (obj_magic == 0xcffaedfe || obj_magic == 0xfeedfacf) {
1397-
sim_f->get_32(); // Reserved, 64-bit only.
1398-
}
1399-
if (swap) {
1400-
ncmds = BSWAP32(ncmds);
1401-
cputype = BSWAP32(cputype);
1402-
cpusubtype = BSWAP32(cpusubtype);
1403-
filetype = BSWAP32(filetype);
1404-
}
1405-
if (cputype == 0x100000C && cpusubtype == 0 && filetype == 1) {
1406-
// ARM64, object file.
1407-
for (uint32_t i = 0; i < ncmds; i++) {
1408-
int64_t cmdofs = sim_f->get_position();
1409-
uint32_t cmdid = sim_f->get_32();
1410-
uint32_t cmdsize = sim_f->get_32();
1411-
if (swap) {
1412-
cmdid = BSWAP32(cmdid);
1413-
cmdsize = BSWAP32(cmdsize);
1414-
}
1415-
if (cmdid == MachO::LoadCommandID::LC_BUILD_VERSION) {
1416-
int64_t platform = sim_f->get_32();
1417-
if (swap) {
1418-
platform = BSWAP32(platform);
1419-
}
1420-
if (platform == MachO::PlatformID::PLATFORM_IOS) {
1421-
sim_f->seek(cmdofs + 4 + 4);
1422-
uint32_t new_id = MachO::PlatformID::PLATFORM_IOSSIMULATOR;
1423-
if (swap) {
1424-
new_id = BSWAP32(new_id);
1425-
}
1426-
sim_f->store_32(new_id);
1427-
commands_patched++;
1428-
}
1429-
}
1430-
sim_f->seek(cmdofs + cmdsize);
1431-
}
1432-
}
1433-
}
1434-
sim_f->seek(next_off);
1435-
}
1436-
}
1437-
sim_f->close();
1438-
}
1439-
return commands_patched;
1440-
}
1441-
14421281
void EditorExportPlatformIOS::_check_xcframework_content(const String &p_path, int &r_total_libs, int &r_static_libs, int &r_dylibs, int &r_frameworks) const {
14431282
Ref<PList> plist;
14441283
plist.instantiate();
@@ -2443,82 +2282,6 @@ Error EditorExportPlatformIOS::_export_project_helper(const Ref<EditorExportPres
24432282
return ERR_FILE_NOT_FOUND;
24442283
}
24452284

2446-
// HACK: We don't want to run the simulator library generation code anymore after GH-102179, but removing it
2447-
// triggers an internal compiler error with latest mingw-gcc... For now we bring it back as a workaround
2448-
// with a condition that should never be true (that project setting doesn't exist).
2449-
2450-
// Check and generate missing ARM64 simulator library.
2451-
if (ProjectSettings::get_singleton()->has_setting("__dummy_setting_blame_akien_if_you_define_this_somehow")) {
2452-
String sim_lib_path = dest_dir + String(binary_name + ".xcframework").path_join("ios-arm64_x86_64-simulator").path_join("libgodot.a");
2453-
String dev_lib_path = dest_dir + String(binary_name + ".xcframework").path_join("ios-arm64").path_join("libgodot.a");
2454-
String tmp_lib_path = EditorPaths::get_singleton()->get_temp_dir().path_join(binary_name + "_lipo_");
2455-
uint32_t cputype = 0;
2456-
uint32_t cpusubtype = 0;
2457-
if (!_archive_has_arm64(sim_lib_path, &cputype, &cpusubtype) && _archive_has_arm64(dev_lib_path) && FileAccess::exists(dev_lib_path)) {
2458-
add_message(EXPORT_MESSAGE_INFO, TTR("Export"), TTR("ARM64 simulator library, generating from device library."));
2459-
2460-
Vector<String> tmp_lib_files;
2461-
Vector<Vector2i> tmp_lib_cputypes;
2462-
// Extract/copy simulator lib.
2463-
if (FileAccess::exists(sim_lib_path)) {
2464-
if (LipO::is_lipo(sim_lib_path)) {
2465-
Ref<LipO> lipo;
2466-
lipo.instantiate();
2467-
if (lipo->open_file(sim_lib_path)) {
2468-
for (int i = 0; i < lipo->get_arch_count(); i++) {
2469-
const String &f_name = tmp_lib_path + itos(tmp_lib_files.size());
2470-
lipo->extract_arch(i, f_name);
2471-
tmp_lib_files.push_back(f_name);
2472-
tmp_lib_cputypes.push_back(Vector2i(lipo->get_arch_cputype(i), lipo->get_arch_cpusubtype(i)));
2473-
}
2474-
}
2475-
} else {
2476-
const String &f_name = tmp_lib_path + itos(tmp_lib_files.size());
2477-
tmp_app_path->copy(sim_lib_path, f_name);
2478-
tmp_lib_files.push_back(f_name);
2479-
tmp_lib_cputypes.push_back(Vector2i(cputype, cpusubtype));
2480-
}
2481-
}
2482-
// Copy device lib.
2483-
if (LipO::is_lipo(dev_lib_path)) {
2484-
Ref<LipO> lipo;
2485-
lipo.instantiate();
2486-
if (lipo->open_file(dev_lib_path)) {
2487-
for (int i = 0; i < lipo->get_arch_count(); i++) {
2488-
if (lipo->get_arch_cputype(i) == 0x100000c && lipo->get_arch_cpusubtype(i) == 0) {
2489-
const String &f_name = tmp_lib_path + itos(tmp_lib_files.size());
2490-
lipo->extract_arch(i, f_name);
2491-
tmp_lib_files.push_back(f_name);
2492-
tmp_lib_cputypes.push_back(Vector2i(0x100000c, 0)); // ARM64.
2493-
break;
2494-
}
2495-
}
2496-
}
2497-
} else {
2498-
const String &f_name = tmp_lib_path + itos(tmp_lib_files.size());
2499-
tmp_app_path->copy(dev_lib_path, f_name);
2500-
tmp_lib_files.push_back(f_name);
2501-
tmp_lib_cputypes.push_back(Vector2i(0x100000c, 0)); // ARM64.
2502-
}
2503-
2504-
// Patch device lib.
2505-
int patch_count = _archive_convert_to_simulator(tmp_lib_path + itos(tmp_lib_files.size() - 1));
2506-
if (patch_count == 0) {
2507-
add_message(EXPORT_MESSAGE_WARNING, TTR("Export"), TTR("Unable to generate ARM64 simulator library."));
2508-
} else {
2509-
// Repack.
2510-
Ref<LipO> lipo;
2511-
lipo.instantiate();
2512-
lipo->create_file(sim_lib_path, tmp_lib_files, tmp_lib_cputypes);
2513-
}
2514-
2515-
// Cleanup.
2516-
for (const String &E : tmp_lib_files) {
2517-
tmp_app_path->remove(E);
2518-
}
2519-
}
2520-
}
2521-
25222285
// Generate translations files.
25232286

25242287
Dictionary appnames = GLOBAL_GET("application/config/name_localized");

platform/ios/export/export_plugin.h

-2
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,6 @@ class EditorExportPlatformIOS : public EditorExportPlatform {
136136
Vector<ExportArchitecture> _get_supported_architectures() const;
137137
Vector<String> _get_preset_architectures(const Ref<EditorExportPreset> &p_preset) const;
138138

139-
bool _archive_has_arm64(const String &p_path, uint32_t *r_cputype = nullptr, uint32_t *r_cpusubtype = nullptr) const;
140-
int _archive_convert_to_simulator(const String &p_path) const;
141139
void _check_xcframework_content(const String &p_path, int &r_total_libs, int &r_static_libs, int &r_dylibs, int &r_frameworks) const;
142140
Error _convert_to_framework(const String &p_source, const String &p_destination, const String &p_id) const;
143141

0 commit comments

Comments
 (0)