Skip to content

Commit 6ccff9b

Browse files
committed
Merge pull request #98126 from TCROC/macos-codesign-additional-entitlements
Additional macOS codesign entitlements and print verbose
2 parents c032acb + 5777a3f commit 6ccff9b

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

platform/macos/doc_classes/EditorExportPlatformMacOS.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,13 @@
7575
<member name="codesign/custom_options" type="PackedStringArray" setter="" getter="">
7676
Array of the additional command line arguments passed to the code signing tool.
7777
</member>
78+
<member name="codesign/entitlements/additional" type="String" setter="" getter="">
79+
Additional data added to the root [code]&lt;dict&gt;[/code] section of the [url=https://developer.apple.com/documentation/bundleresources/entitlements].entitlements[/url] file. The value should be an XML section with pairs of key-value elements, e.g.:
80+
[codeblock lang=text]
81+
&lt;key&gt;key_name&lt;/key&gt;
82+
&lt;string&gt;value&lt;/string&gt;
83+
[/codeblock]
84+
</member>
7885
<member name="codesign/entitlements/address_book" type="bool" setter="" getter="">
7986
Enable to allow access to contacts in the user's address book, if it's enabled you should also provide usage message in the [member privacy/address_book_usage_description] option. See [url=https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_personal-information_addressbook]com.apple.security.personal-information.addressbook[/url].
8087
</member>

platform/macos/export/export_plugin.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ bool EditorExportPlatformMacOS::get_export_option_visibility(const EditorExportP
327327
}
328328

329329
bool advanced_options_enabled = p_preset->are_advanced_options_enabled();
330-
if (p_option.begins_with("privacy")) {
330+
if (p_option.begins_with("privacy") || p_option == "codesign/entitlements/additional") {
331331
return advanced_options_enabled;
332332
}
333333
}
@@ -501,6 +501,7 @@ void EditorExportPlatformMacOS::get_export_options(List<ExportOption> *r_options
501501
r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "codesign/entitlements/app_sandbox/files_movies", PROPERTY_HINT_ENUM, "No,Read-only,Read-write"), 0));
502502
r_options->push_back(ExportOption(PropertyInfo(Variant::INT, "codesign/entitlements/app_sandbox/files_user_selected", PROPERTY_HINT_ENUM, "No,Read-only,Read-write"), 0));
503503
r_options->push_back(ExportOption(PropertyInfo(Variant::ARRAY, "codesign/entitlements/app_sandbox/helper_executables", PROPERTY_HINT_ARRAY_TYPE, itos(Variant::STRING) + "/" + itos(PROPERTY_HINT_GLOBAL_FILE) + ":"), Array()));
504+
r_options->push_back(ExportOption(PropertyInfo(Variant::STRING, "codesign/entitlements/additional", PROPERTY_HINT_MULTILINE_TEXT), ""));
504505
r_options->push_back(ExportOption(PropertyInfo(Variant::PACKED_STRING_ARRAY, "codesign/custom_options"), PackedStringArray()));
505506

506507
#ifdef MACOS_ENABLED
@@ -2126,6 +2127,11 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
21262127
}
21272128
}
21282129

2130+
const String &additional_entitlements = p_preset->get("codesign/entitlements/additional");
2131+
if (!additional_entitlements.is_empty()) {
2132+
ent_f->store_line(additional_entitlements);
2133+
}
2134+
21292135
ent_f->store_line("</dict>");
21302136
ent_f->store_line("</plist>");
21312137
} else {
@@ -2288,6 +2294,14 @@ Error EditorExportPlatformMacOS::export_project(const Ref<EditorExportPreset> &p
22882294
}
22892295
}
22902296

2297+
if (FileAccess::exists(ent_path)) {
2298+
print_verbose("entitlements:\n" + FileAccess::get_file_as_string(ent_path));
2299+
}
2300+
2301+
if (FileAccess::exists(hlp_ent_path)) {
2302+
print_verbose("helper entitlements:\n" + FileAccess::get_file_as_string(hlp_ent_path));
2303+
}
2304+
22912305
// Clean up temporary entitlements files.
22922306
if (FileAccess::exists(hlp_ent_path)) {
22932307
DirAccess::remove_file_or_error(hlp_ent_path);

0 commit comments

Comments
 (0)