You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
o3de/cmake
SJ 1f542838bb
[Mac] Generate O3DE SDK app bundle that can be notarized and distributed (#4150)
* [Mac] Initial support for building with hardened runtime enabled and code signing the binaries and bundles generated by the CMake install process.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Move call to ly_post_install_step
2. Entitlements should only be added for executables
3. Change use of CMake exec_program to newer execute_process
4. Remove broken symlinks from embedded Python frameworks
5. Run post install code signing only if hardened runtime is enabled

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove unnecessary flag

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove unnecessary additional call to condesign python inside a bundle

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Move commonly used install functions for codesigning, copying files, and fixing frameworks to a utility script
2. Remove unnecessary wait in the Editor/AP launchers I added earlier.
3. Codesign 3rd party libraries for distribution.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Codesigning on 3rd party libs should only happen when hardened runtime is enabled.
2. Change the order of the if blocks in Editor's main_dummy.cpp. This was causing strange notarization issues because it wass too similar to AP's main executable.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Add new line to end of file

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Move architecture specification to PAL_mac cmake file. 2. Codesign failure should be fatal.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Address some PR feedback

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove unnecessary comment. Change if to use IN_LIST.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* HOME may not always be defined. Adding alternate POSIX way of determining HOME.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Checking in partial work to get O3DE SDK built as an app bundle. Has a bunch of debug code that needs to be cleaned up.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove this and add it back later with fixed casing.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Adding file back with fixed case

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Add entitlements sparingly(only when necessary)
2. Convert entitlements to plist files which we can directly pass to codesign
3. Install python site-packages in the o3de_sdk launcher and then launch the project manger.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Move hardened runtime check to codesigning functions only. This way, non-hardened runtime install is identical to the former except for codesign. Makes it easy for QA to test internally.
2. Move cmake min version for install to the pre-install steps.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Remove the dummy launchers for AssetProcessor and Editor
2. Add loader_path to the rpaths of binaries outside an app bundle so that the dynamic loader can load their dependencies if any.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove file named main_dummy.cpp

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Add O3DE SDK launcher

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Add missing runtime dependencies to gems

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Update the path to binaries when codesigning to the correct one.
2. Remove some debug messages.
3. Move installed binary path setreg generation to the target install function. This way, we get the correct path to the bundle accounting for different configs and subdirectories.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Add explanatory comments.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. ly_install_add_install_path_setreg cannot be called during install target because the runtime dependencies are already processed by then.
2. The SDK launcher now uses the ProjectManager's bundle setreg to find the path to the installed binaries

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Update path to install relative binaries after merge from dev

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Only one config of the SDK launcher needs to be installed. Preinstall steps should not be run per config, but only once.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Install python dependencies using the get_python.sh script.
2. Replace any reference to hard-coded package name/version numbers with variables.
3. Add one more missing runtime dependency.
4. Misc. PR feedback.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Remove the need for setreg files in all tool bundle. Project binary path can be used instead.
2. Move O3DE_SDK_Launcher to Code/Tools/BundleLauncher
3. Add ly_install_run_script() function for install(SCRIPT) functionality.
4. Address some other PR feedback.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Add source permission when installing O3DE_SDK executable.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Rename setreg file to add specialization tag.

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Remove LY_BUILD_PERMUTATION that's not needed

Signed-off-by: amzn-sj <srikkant@amazon.com>

* 1. Add BinariesInstallPath.setreg to all our bundles like before. This is now only added during the install process though.
2. Fix path in Install_common.cmake

Signed-off-by: amzn-sj <srikkant@amazon.com>

* Fix comment

Signed-off-by: amzn-sj <srikkant@amazon.com>
4 years ago
..
3rdParty ATOM-16029 Add direct support for Astc compression (#4157) 4 years ago
Platform [Mac] Generate O3DE SDK app bundle that can be notarized and distributed (#4150) 4 years ago
TestImpactFramework Erase existing artifacts before generation. 4 years ago
Tools Fix android gradle scripts to prevent cmake_dependencies.<game>.<game>_gamelauncher from being wiped out of the APK 4 years ago
install Adds support for creating an SDK layout from a Monolithic build (#4097) 4 years ago
3rdParty.cmake Improvement suggestion from another PR 4 years ago
3rdPartyPackages.cmake Make locations for LY_PACKAGE_DOWNLOAD_CACHE_LOCATION and LY_PACKAGE_UNPACK_LOCATION relative to LY_3RDPARTY_PATH across configurations (#2360) 4 years ago
AzAutoGen.py Fix AzAutoGen output to use a proper output using path.commonpath instead of path.commonprefix, which unlike commonprefix always return a valid path. For example, commonprefix [usr/hello.txt, usr/helium.cpp] would return usr/he 4 years ago
CMakeFiles.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
CommandExecution.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
ConfigurationTypes.cmake Limits configuration types a project sees when using an engine SDK (#4033) 4 years ago
Configurations.cmake Limits configuration types a project sees when using an engine SDK (#4033) 4 years ago
Dependencies.cmake Set enable gem variants feature (#3631) 4 years ago
Deployment.cmake Some var cleanup so it shows better-organized in cmake-gui. Some vars… (#2361) 4 years ago
FileUtil.cmake Some var cleanup so it shows better-organized in cmake-gui. Some vars… (#2361) 4 years ago
Findo3de.cmake Fix an issue with project-centric ninja builds [Linux] (#3429) 4 years ago
Gems.cmake Set enable gem variants feature (#3631) 4 years ago
GeneralSettings.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
Install.cmake [Mac] Generate O3DE SDK app bundle that can be notarized and distributed (#4150) 4 years ago
LYPackage_S3Downloader.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
LYPython.cmake [Mac] Generate O3DE SDK app bundle that can be notarized and distributed (#4150) 4 years ago
LYTestWrappers.cmake Merge branch 'development' into cmake/warn_virtual 4 years ago
LYWrappers.cmake Fixes Ninja non-multi config generator and potentially other non-multi config generators (#3867) 4 years ago
LyAutoGen.cmake Improves runtime dependencies input dependency (#3665) 4 years ago
LySet.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
Monolithic.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
O3DEJson.cmake Some var cleanup so it shows better-organized in cmake-gui. Some vars… (#2361) 4 years ago
OutputDirectory.cmake Detects that binary dir and install prefix are not the same (#4091) 4 years ago
PAL.cmake Fix PAL.cmake logic, thanks to lumberyard-employee-dm! (#3516) 4 years ago
PALTools.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
Packaging.cmake Resolved conflicts in merge from stabilization/2106 -> development. 4 years ago
PackagingConfig.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
Projects.cmake Fixed creation of the Engine.pak file (#4188) 4 years ago
RuntimeDependencies.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
SettingsRegistry.cmake PR comments/suggestions 4 years ago
UnitTest.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
Version.cmake Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
__init__.py Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
cmake_files.cmake Removed unused EngineJson.cmake file (#4107) 4 years ago
createplatformfiles.py Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
gemcmake.py Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
mocfix.py Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
projectcmake.py Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
reroot.py Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
waffiles2cmake.py Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago
warn_fix.py Shorten copyright headers by splitting into 2 lines (#2213) 4 years ago