Chromium Code Reviews| Index: extensions/shell/app_shell.gyp |
| diff --git a/extensions/shell/app_shell.gyp b/extensions/shell/app_shell.gyp |
| index c673175bc0023c761ac18bd3cee2e1bb2d9c6b1f..cf4c8a0b8c347e4348ed5d414ef01a52647f7723 100644 |
| --- a/extensions/shell/app_shell.gyp |
| +++ b/extensions/shell/app_shell.gyp |
| @@ -4,6 +4,11 @@ |
| { |
| 'variables': { |
| + # Product name is used for Mac bundle. |
| + 'app_shell_product_name': 'App Shell', |
| + # The version is high enough to be supported by Omaha (at least 31) |
| + # but fake enough to be obviously not a Chrome release. |
| + 'app_shell_version': '38.1234.5678.9', |
| 'chromium_code': 1, |
| }, |
| 'targets': [ |
| @@ -46,6 +51,8 @@ |
| '<(SHARED_INTERMEDIATE_DIR)/extensions/shell', |
| ], |
| 'sources': [ |
| + 'app/paths_mac.h', |
| + 'app/paths_mac.mm', |
| 'app/shell_main_delegate.cc', |
| 'app/shell_main_delegate.h', |
| 'browser/api/identity/identity_api.cc', |
| @@ -62,6 +69,7 @@ |
| 'browser/shell_app_delegate.h', |
| 'browser/shell_app_window_client.cc', |
| 'browser/shell_app_window_client.h', |
| + 'browser/shell_app_window_client_mac.mm', |
| 'browser/shell_audio_controller_chromeos.cc', |
| 'browser/shell_audio_controller_chromeos.h', |
| 'browser/shell_browser_context.cc', |
| @@ -69,8 +77,11 @@ |
| 'browser/shell_browser_main_delegate.h', |
| 'browser/shell_browser_main_parts.cc', |
| 'browser/shell_browser_main_parts.h', |
| + 'browser/shell_browser_main_parts_mac.mm', |
| 'browser/shell_content_browser_client.cc', |
| 'browser/shell_content_browser_client.h', |
| + 'browser/shell_desktop_controller_mac.h', |
| + 'browser/shell_desktop_controller_mac.mm', |
| 'browser/shell_device_client.cc', |
| 'browser/shell_device_client.h', |
| 'browser/shell_display_info_provider.cc', |
| @@ -87,6 +98,8 @@ |
| 'browser/shell_extensions_browser_client.h', |
| 'browser/shell_native_app_window.cc', |
| 'browser/shell_native_app_window.h', |
| + 'browser/shell_native_app_window_mac.h', |
| + 'browser/shell_native_app_window_mac.mm', |
| 'browser/shell_network_controller_chromeos.cc', |
| 'browser/shell_network_controller_chromeos.h', |
| 'browser/shell_network_delegate.cc', |
| @@ -99,8 +112,6 @@ |
| 'browser/shell_prefs.h', |
| 'browser/shell_runtime_api_delegate.cc', |
| 'browser/shell_runtime_api_delegate.h', |
| - 'browser/shell_screen.cc', |
| - 'browser/shell_screen.h', |
| 'browser/shell_special_storage_policy.cc', |
| 'browser/shell_special_storage_policy.h', |
| 'browser/shell_speech_recognition_manager_delegate.cc', |
| @@ -132,6 +143,8 @@ |
| 'browser/shell_desktop_controller_aura.h', |
| 'browser/shell_native_app_window_aura.cc', |
| 'browser/shell_native_app_window_aura.h', |
| + 'browser/shell_screen.cc', |
| + 'browser/shell_screen.h', |
| ], |
| }], |
| ['chromeos==1', { |
| @@ -169,6 +182,8 @@ |
| { |
| 'target_name': 'app_shell', |
| 'type': 'executable', |
| + 'mac_bundle': 1, |
| + 'defines!': ['CONTENT_IMPLEMENTATION'], |
|
James Cook
2014/12/10 21:05:01
Why do we need this?
|
| 'dependencies': [ |
| 'app_shell_lib', |
| '<(DEPTH)/extensions/extensions.gyp:extensions_shell_and_test_pak', |
| @@ -195,8 +210,78 @@ |
| '<(DEPTH)/base/allocator/allocator.gyp:allocator', |
| ], |
| }], |
| + ['OS=="mac"', { |
| + 'product_name': '<(app_shell_product_name)', |
| + 'dependencies!': [ |
| + 'app_shell_lib', |
| + ], |
| + 'dependencies': [ |
| + 'app_shell_framework', |
| + 'app_shell_helper', |
| + ], |
| + 'mac_bundle_resources': [ |
| + 'app/app-Info.plist', |
| + ], |
| + # TODO(mark): Come up with a fancier way to do this. It should only |
| + # be necessary to list app-Info.plist once, not the three times it is |
| + # listed here. |
| + 'mac_bundle_resources!': [ |
| + 'app/app-Info.plist', |
| + ], |
| + 'xcode_settings': { |
| + 'INFOPLIST_FILE': 'app/app-Info.plist', |
| + }, |
| + 'copies': [{ |
| + 'destination': '<(PRODUCT_DIR)/<(app_shell_product_name).app/Contents/Frameworks', |
| + 'files': [ |
| + '<(PRODUCT_DIR)/<(app_shell_product_name) Helper.app', |
| + ], |
| + }], |
| + 'postbuilds': [ |
| + { |
| + 'postbuild_name': 'Copy <(app_shell_product_name) Framework.framework', |
| + 'action': [ |
| + '../../build/mac/copy_framework_unversioned.sh', |
| + '${BUILT_PRODUCTS_DIR}/<(app_shell_product_name) Framework.framework', |
| + '${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Frameworks', |
| + ], |
| + }, |
| + { |
| + # Modify the Info.plist as needed. |
| + 'postbuild_name': 'Tweak Info.plist', |
| + 'action': ['../../build/mac/tweak_info_plist.py', |
| + '--scm=1', |
| + '--version=<(app_shell_version)'], |
| + }, |
| + { |
| + # This postbuild step is responsible for creating the following |
| + # helpers: |
| + # |
| + # App Shell Helper EH.app and App Shell Helper NP.app are |
| + # created from App Shell Helper.app. |
| + # |
| + # The EH helper is marked for an executable heap. The NP helper |
| + # is marked for no PIE (ASLR). |
| + 'postbuild_name': 'Make More Helpers', |
| + 'action': [ |
| + '../../build/mac/make_more_helpers.sh', |
| + 'Frameworks', |
| + '<(app_shell_product_name)', |
| + ], |
| + }, |
| + { |
| + # Make sure there isn't any Objective-C in the shell's |
| + # executable. |
| + 'postbuild_name': 'Verify No Objective-C', |
| + 'action': [ |
| + '../../build/mac/verify_no_objc.sh', |
| + ], |
| + }, |
| + ], |
| + }], |
| ], |
| }, |
| + |
| { |
| 'target_name': 'app_shell_browsertests', |
| 'type': '<(gtest_target_type)', |
| @@ -252,6 +337,11 @@ |
| '<(DEPTH)/base/allocator/allocator.gyp:allocator', |
| ], |
| }], |
| + ['OS=="mac"', { |
| + 'dependencies': [ |
| + 'app_shell', # Needed for App Shell.app's Helper. |
| + ], |
| + }], |
| ], |
| }, |
| { |
| @@ -266,16 +356,12 @@ |
| '<(DEPTH)/extensions/extensions.gyp:extensions_shell_and_test_pak', |
| '<(DEPTH)/extensions/extensions.gyp:extensions_test_support', |
| '<(DEPTH)/testing/gtest.gyp:gtest', |
| - '<(DEPTH)/ui/aura/aura.gyp:aura_test_support', |
| ], |
| 'sources': [ |
| '../test/extensions_unittests_main.cc', |
| 'browser/api/identity/identity_api_unittest.cc', |
| - 'browser/shell_audio_controller_chromeos_unittest.cc', |
| - 'browser/shell_native_app_window_aura_unittest.cc', |
| 'browser/shell_oauth2_token_service_unittest.cc', |
| 'browser/shell_prefs_unittest.cc', |
| - 'browser/shell_screen_unittest.cc', |
| 'common/shell_content_client_unittest.cc' |
| ], |
| 'conditions': [ |
| @@ -287,6 +373,11 @@ |
| ['use_aura==1', { |
| 'sources': [ |
| 'browser/shell_desktop_controller_aura_unittest.cc', |
| + 'browser/shell_native_app_window_aura_unittest.cc', |
| + 'browser/shell_screen_unittest.cc', |
| + ], |
| + 'dependencies': [ |
| + '<(DEPTH)/ui/aura/aura.gyp:aura_test_support', |
| ], |
| }], |
| ['chromeos==1', { |
| @@ -295,6 +386,7 @@ |
| ], |
| 'sources': [ |
| 'browser/api/shell_gcd/shell_gcd_api_unittest.cc', |
| + 'browser/shell_audio_controller_chromeos_unittest.cc', |
| ], |
| }], |
| ['OS=="win" and win_use_allocator_shim==1', { |
| @@ -342,4 +434,146 @@ |
| ], |
| }, |
| ], # targets |
| + |
| + 'conditions': [ |
| + ['OS=="mac"', { |
| + 'targets': [ |
| + { |
| + 'target_name': 'app_shell_framework', |
| + 'type': 'shared_library', |
| + 'product_name': '<(app_shell_product_name) Framework', |
| + 'mac_bundle': 1, |
| + 'mac_bundle_resources': [ |
| + # 'app/English.lproj/HttpAuth.xib', |
|
James Cook
2014/12/10 21:05:01
Are these left in intentionally?
Yoyo Zhou
2014/12/11 02:40:50
Nope, removed.
|
| + # 'app/English.lproj/MainMenu.xib', |
| + '<(PRODUCT_DIR)/extensions_shell_and_test.pak', |
| + 'app/framework-Info.plist', |
| + ], |
| + 'mac_bundle_resources!': [ |
| + 'app/framework-Info.plist', |
|
James Cook
2014/12/10 21:05:01
So this is both included and excluded?
Yoyo Zhou
2014/12/11 02:40:50
See the TODO(mark) above. I don't understand this
|
| + ], |
| + 'xcode_settings': { |
| + # The framework is placed within the .app's Framework |
| + # directory. DYLIB_INSTALL_NAME_BASE and |
| + # LD_DYLIB_INSTALL_NAME affect -install_name. |
| + 'DYLIB_INSTALL_NAME_BASE': |
| + '@executable_path/../Frameworks', |
| + # See /build/mac/copy_framework_unversioned.sh for |
| + # information on LD_DYLIB_INSTALL_NAME. |
| + 'LD_DYLIB_INSTALL_NAME': |
| + '$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(WRAPPER_NAME)/$(PRODUCT_NAME)', |
| + |
| + 'INFOPLIST_FILE': 'app/framework-Info.plist', |
| + }, |
| + 'dependencies': [ |
| + 'app_shell_lib', |
| + ], |
| + 'include_dirs': [ |
| + '../..', |
| + ], |
| + 'sources': [ |
| + 'app/shell_main_mac.h', |
| + 'app/shell_main_mac.cc', |
| + ], |
| + 'postbuilds': [ |
| + { |
| + # Modify the Info.plist as needed. The script explains why |
| + # this is needed. This is also done in the chrome target. |
| + # The framework needs the Breakpad keys if this feature is |
| + # enabled. It does not need the Keystone keys; these always |
| + # come from the outer application bundle. The framework |
| + # doesn't currently use the SCM keys for anything, |
| + # but this seems like a really good place to store them. |
| + 'postbuild_name': 'Tweak Info.plist', |
| + 'action': ['../../build/mac/tweak_info_plist.py', |
| + '--breakpad=1', |
| + '--keystone=0', |
| + '--scm=1', |
| + '--version=<(app_shell_version)', |
| + '--branding=<(app_shell_product_name)'], |
| + }, |
| + ], |
| + 'conditions': [ |
| + ['icu_use_data_file_flag==1', { |
| + 'mac_bundle_resources': [ |
| + '<(PRODUCT_DIR)/icudtl.dat', |
| + ], |
| + }], |
| + ['v8_use_external_startup_data==1', { |
| + 'mac_bundle_resources': [ |
| + '<(PRODUCT_DIR)/natives_blob.bin', |
| + '<(PRODUCT_DIR)/snapshot_blob.bin', |
| + ], |
| + }], |
| + ], |
| + }, # target app_shell_framework |
| + { |
| + 'target_name': 'app_shell_helper', |
| + 'type': 'executable', |
| + 'variables': { 'enable_wexit_time_destructors': 1, }, |
| + 'product_name': '<(app_shell_product_name) Helper', |
| + 'mac_bundle': 1, |
| + 'dependencies': [ |
| + 'app_shell_framework', |
| + ], |
| + 'sources': [ |
| + 'app/shell_main.cc', |
| + 'app/helper-Info.plist', |
| + ], |
| + # TODO(mark): Come up with a fancier way to do this. It should only |
| + # be necessary to list helper-Info.plist once, not the three times it |
| + # is listed here. |
| + 'mac_bundle_resources!': [ |
| + 'app/helper-Info.plist', |
| + ], |
| + # TODO(mark): For now, don't put any resources into this app. Its |
| + # resources directory will be a symbolic link to the browser app's |
| + # resources directory. |
| + 'mac_bundle_resources/': [ |
| + ['exclude', '.*'], |
| + ], |
| + 'xcode_settings': { |
| + 'INFOPLIST_FILE': 'app/helper-Info.plist', |
| + }, |
| + 'postbuilds': [ |
| + { |
| + # The framework defines its load-time path |
| + # (DYLIB_INSTALL_NAME_BASE) relative to the main executable |
| + # (chrome). A different relative path needs to be used in |
| + # helper_app. |
| + 'postbuild_name': 'Fix Framework Link', |
| + 'action': [ |
| + 'install_name_tool', |
| + '-change', |
| + '@executable_path/../Frameworks/<(app_shell_product_name) Framework.framework/<(app_shell_product_name) Framework', |
| + '@executable_path/../../../<(app_shell_product_name) Framework.framework/<(app_shell_product_name) Framework', |
| + '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}' |
| + ], |
| + }, |
| + { |
| + # Modify the Info.plist as needed. The script explains why this |
| + # is needed. This is also done in the chrome and chrome_dll |
| + # targets. In this case, --breakpad=0, --keystone=0, and --scm=0 |
| + # are used because Breakpad, Keystone, and SCM keys are |
| + # never placed into the helper. |
| + 'postbuild_name': 'Tweak Info.plist', |
| + 'action': ['../../build/mac/tweak_info_plist.py', |
| + '--breakpad=0', |
| + '--keystone=0', |
| + '--scm=0', |
| + '--version=<(app_shell_version)'], |
| + }, |
| + { |
| + # Make sure there isn't any Objective-C in the helper app's |
| + # executable. |
| + 'postbuild_name': 'Verify No Objective-C', |
| + 'action': [ |
| + '../../build/mac/verify_no_objc.sh', |
| + ], |
| + }, |
| + ], |
| + }, # target app_shell_helper |
| + ], |
| + }], # OS=="mac" |
| + ], |
|
James Cook
2014/12/10 21:05:01
Mark, I need to defer to you on this GYP setup. I'
|
| } |