1# Copyright (c) 2012 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5# This file contains resources for the main Mac chromium bundle. 6{ 7 # The main browser executable's name is <(mac_product_name). 8 # Certain things will get confused if two modules in the 9 # executable share the same name, so append " Framework" to the 10 # product_name used for the framework. This will result in 11 # a name like "Chromium Framework.framework". 12 'product_name': '<(mac_product_name) Framework', 13 'mac_bundle': 1, 14 'xcode_settings': { 15 'CHROMIUM_BUNDLE_ID': '<(mac_bundle_id)', 16 17 # The dylib versions are of the form a[.b[.c]], where a is a 18 # 16-bit unsigned integer, and b and c are 8-bit unsigned 19 # integers. Any missing component is taken to be 0. The 20 # best mapping from product version numbers into this scheme 21 # is to just use a=BUILD, b=(PATCH/256), c=(PATCH%256). There 22 # is no ambiguity in this scheme because the build and patch 23 # numbers are guaranteed unique even across distinct major 24 # and minor version numbers. These settings correspond to 25 # -compatibility_version and -current_version. 26 'DYLIB_COMPATIBILITY_VERSION': '<(version_mac_dylib)', 27 'DYLIB_CURRENT_VERSION': '<(version_mac_dylib)', 28 29 # The framework is placed within the .app's versioned 30 # directory. DYLIB_INSTALL_NAME_BASE and 31 # LD_DYLIB_INSTALL_NAME affect -install_name. 32 'DYLIB_INSTALL_NAME_BASE': 33 '@executable_path/../Versions/<(version_full)', 34 # See /build/mac/copy_framework_unversioned.sh for 35 # information on LD_DYLIB_INSTALL_NAME. 36 'LD_DYLIB_INSTALL_NAME': 37 '$(DYLIB_INSTALL_NAME_BASE:standardizepath)/$(WRAPPER_NAME)/$(PRODUCT_NAME)', 38 39 'INFOPLIST_FILE': 'app/framework-Info.plist', 40 }, 41 'includes': [ 42 'chrome_nibs.gypi', 43 ], 44 # TODO(mark): Come up with a fancier way to do this. It should 45 # only be necessary to list framework-Info.plist once, not the 46 # three times it is listed here. 47 'mac_bundle_resources': [ 48 # This image is used to badge the lock icon in the 49 # authentication dialogs, such as those used for installation 50 # from disk image and Keystone promotion (if so enabled). It 51 # needs to exist as a file on disk and not just something in a 52 # resource bundle because that's the interface that 53 # Authorization Services uses. Also, Authorization Services 54 # can't deal with .icns files. 55 'app/theme/default_100_percent/<(theme_dir_name)/product_logo_32.png', 56 57 'app/framework-Info.plist', 58 '<@(mac_all_xibs)', 59 'app/theme/find_next_Template.pdf', 60 'app/theme/find_prev_Template.pdf', 61 'app/theme/menu_overflow_down.pdf', 62 'app/theme/menu_overflow_up.pdf', 63 'browser/mac/install.sh', 64 '<(SHARED_INTERMEDIATE_DIR)/repack/chrome_100_percent.pak', 65 '<(SHARED_INTERMEDIATE_DIR)/repack/resources.pak', 66 '<!@pymod_do_main(repack_locales -o -p <(OS) -g <(grit_out_dir) -s <(SHARED_INTERMEDIATE_DIR) -x <(SHARED_INTERMEDIATE_DIR) <(locales))', 67 # Note: pseudo_locales are generated via the packed_resources 68 # dependency but not copied to the final target. See 69 # common.gypi for more info. 70 ], 71 'mac_bundle_resources!': [ 72 'app/framework-Info.plist', 73 ], 74 'dependencies': [ 75 'app_mode_app', 76 # Bring in pdfsqueeze and run it on all pdfs 77 '../build/temp_gyp/pdfsqueeze.gyp:pdfsqueeze', 78 '../crypto/crypto.gyp:crypto', 79 # On Mac, Flash gets put into the framework, so we need this 80 # dependency here. flash_player.gyp will copy the Flash bundle 81 # into PRODUCT_DIR. 82 '../third_party/adobe/flash/flash_player.gyp:flapper_binaries', 83 '../third_party/widevine/cdm/widevine_cdm.gyp:widevinecdmadapter', 84 'chrome_resources.gyp:packed_extra_resources', 85 'chrome_resources.gyp:packed_resources', 86 ], 87 'rules': [ 88 { 89 'rule_name': 'pdfsqueeze', 90 'extension': 'pdf', 91 'inputs': [ 92 '<(PRODUCT_DIR)/pdfsqueeze', 93 ], 94 'outputs': [ 95 '<(INTERMEDIATE_DIR)/pdfsqueeze/<(RULE_INPUT_ROOT).pdf', 96 ], 97 'action': ['<(PRODUCT_DIR)/pdfsqueeze', 98 '<(RULE_INPUT_PATH)', '<@(_outputs)'], 99 'message': 'Running pdfsqueeze on <(RULE_INPUT_PATH)', 100 }, 101 ], 102 'variables': { 103 'conditions': [ 104 ['branding=="Chrome"', { 105 'theme_dir_name': 'google_chrome', 106 }, { # else: 'branding!="Chrome" 107 'theme_dir_name': 'chromium', 108 }], 109 ], 110 'libpeer_target_type%': 'static_library', 111 'repack_path': '../tools/grit/grit/format/repack.py', 112 }, 113 'postbuilds': [ 114 { 115 # Modify the Info.plist as needed. The script explains why 116 # this is needed. This is also done in the chrome target. 117 # The framework needs the Breakpad keys if this feature is 118 # enabled. It does not need the Keystone keys; these always 119 # come from the outer application bundle. The framework 120 # doesn't currently use the SCM keys for anything, 121 # but this seems like a really good place to store them. 122 'postbuild_name': 'Tweak Info.plist', 123 'action': ['<(tweak_info_plist_path)', 124 '--breakpad=<(mac_breakpad_compiled_in)', 125 '--breakpad_uploads=<(mac_breakpad_uploads)', 126 '--keystone=0', 127 '--scm=1', 128 '--branding=<(branding)'], 129 }, 130 { 131 'postbuild_name': 'Symlink Libraries', 132 'action': [ 133 'ln', 134 '-fns', 135 'Versions/Current/Libraries', 136 '${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Libraries' 137 ], 138 }, 139 ], 140 'copies': [ 141 { 142 # Copy FFmpeg binaries for audio/video support. 143 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Libraries', 144 'files': [ 145 '<(PRODUCT_DIR)/ffmpegsumo.so', 146 ], 147 }, 148 { 149 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Internet Plug-Ins', 150 'files': [], 151 'conditions': [ 152 ['internal_pdf', { 153 'files': [ 154 '<(PRODUCT_DIR)/PDF.plugin', 155 ], 156 }], 157 ['disable_nacl!=1', { 158 'files': [ 159 '<(PRODUCT_DIR)/ppGoogleNaClPluginChrome.plugin', 160 ], 161 'conditions': [ 162 ['target_arch=="x64"', { 163 'files': [ 164 '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe', 165 ], 166 }, { 167 'files': [ 168 '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe', 169 ], 170 }], 171 ], 172 }], 173 ], 174 }, 175 { 176 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Internet Plug-Ins/PepperFlash', 177 'files': [], 178 'conditions': [ 179 ['branding == "Chrome"', { 180 'files': [ 181 '<(PRODUCT_DIR)/PepperFlash/PepperFlashPlayer.plugin', 182 ], 183 }], 184 ], 185 }, 186 { 187 # This file is used by the component installer. 188 # It is not a complete plug-in on its own. 189 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Internet Plug-Ins/', 190 'files': [], 191 'conditions': [ 192 ['branding == "Chrome"', { 193 'files': [ 194 '<(PRODUCT_DIR)/widevinecdmadapter.plugin', 195 ], 196 }], 197 ], 198 }, 199 { 200 # Copy of resources used by tests. 201 'destination': '<(PRODUCT_DIR)', 202 'files': [ 203 '<(SHARED_INTERMEDIATE_DIR)/repack/resources.pak' 204 ], 205 }, 206 { 207 # Copy of resources used by tests. 208 'destination': '<(PRODUCT_DIR)/pseudo_locales', 209 'files': [ 210 '<(SHARED_INTERMEDIATE_DIR)/<(pseudo_locales).pak' 211 ], 212 }, 213 { 214 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/resources', 215 'files': [ 216 # Loader bundle for platform apps. 217 '<(PRODUCT_DIR)/app_mode_loader.app', 218 ], 219 }, 220 ], 221 'conditions': [ 222 ['branding=="Chrome"', { 223 'copies': [ 224 { 225 # This location is for the Mac build. Note that the 226 # copying of these files for Windows and Linux is handled 227 # in chrome.gyp, as Mac needs to be dropped inside the 228 # framework. 229 'destination': 230 '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Default Apps', 231 'files': ['<@(default_apps_list)'], 232 }, 233 ], 234 }], 235 ['mac_breakpad==1', { 236 'variables': { 237 # A real .dSYM is needed for dump_syms to operate on. 238 'mac_real_dsym': 1, 239 }, 240 }], 241 ['mac_breakpad_compiled_in==1', { 242 'dependencies': [ 243 '../breakpad/breakpad.gyp:breakpad', 244 '../components/components.gyp:policy', 245 ], 246 'copies': [ 247 { 248 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Resources', 249 'files': [ 250 '<(PRODUCT_DIR)/crash_inspector', 251 '<(PRODUCT_DIR)/crash_report_sender.app' 252 ], 253 }, 254 ], 255 }], # mac_breakpad_compiled_in 256 ['mac_keystone==1', { 257 'mac_bundle_resources': [ 258 'browser/mac/keystone_promote_preflight.sh', 259 'browser/mac/keystone_promote_postflight.sh', 260 ], 261 'postbuilds': [ 262 { 263 'postbuild_name': 'Copy KeystoneRegistration.framework', 264 'action': [ 265 '../build/mac/copy_framework_unversioned.sh', 266 '-I', 267 '../third_party/googlemac/Releases/Keystone/KeystoneRegistration.framework', 268 '${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Frameworks', 269 ], 270 }, 271 { 272 'postbuild_name': 'Symlink Frameworks', 273 'action': [ 274 'ln', 275 '-fns', 276 'Versions/Current/Frameworks', 277 '${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Frameworks' 278 ], 279 }, 280 ], 281 }], # mac_keystone 282 ['internal_pdf', { 283 'dependencies': [ 284 '../pdf/pdf.gyp:pdf', 285 ], 286 }], 287 ['debug_devtools==1', { 288 'postbuilds': [{ 289 'postbuild_name': 'Copy inspector files', 290 'action': [ 291 'ln', 292 '-fs', 293 '${BUILT_PRODUCTS_DIR}/resources/inspector', 294 '${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Resources', 295 ], 296 }], 297 }], 298 ['enable_hidpi==1', { 299 'mac_bundle_resources': [ 300 '<(SHARED_INTERMEDIATE_DIR)/repack/chrome_200_percent.pak', 301 ], 302 }], 303 ['enable_webrtc==1 and libpeer_target_type!="static_library"', { 304 'copies': [{ 305 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Libraries', 306 'files': [ 307 '<(PRODUCT_DIR)/libpeerconnection.so', 308 ], 309 }], 310 }], 311 ], # conditions 312} 313