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 '../pdf/pdf.gyp:pdf', 80 # On Mac, Flash gets put into the framework, so we need this 81 # dependency here. flash_player.gyp will copy the Flash bundle 82 # into PRODUCT_DIR. 83 '../third_party/adobe/flash/flash_player.gyp:flapper_binaries', 84 '../third_party/widevine/cdm/widevine_cdm.gyp:widevinecdmadapter', 85 'chrome_resources.gyp:packed_extra_resources', 86 'chrome_resources.gyp:packed_resources', 87 ], 88 'rules': [ 89 { 90 'rule_name': 'pdfsqueeze', 91 'extension': 'pdf', 92 'inputs': [ 93 '<(PRODUCT_DIR)/pdfsqueeze', 94 ], 95 'outputs': [ 96 '<(INTERMEDIATE_DIR)/pdfsqueeze/<(RULE_INPUT_ROOT).pdf', 97 ], 98 'action': ['<(PRODUCT_DIR)/pdfsqueeze', 99 '<(RULE_INPUT_PATH)', '<@(_outputs)'], 100 'message': 'Running pdfsqueeze on <(RULE_INPUT_PATH)', 101 }, 102 ], 103 'variables': { 104 'conditions': [ 105 ['branding=="Chrome"', { 106 'theme_dir_name': 'google_chrome', 107 }, { # else: 'branding!="Chrome" 108 'theme_dir_name': 'chromium', 109 }], 110 ], 111 'libpeer_target_type%': 'static_library', 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 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Libraries', 143 'files': [ 144 '<(PRODUCT_DIR)/exif.so', 145 '<(PRODUCT_DIR)/ffmpegsumo.so', 146 ], 147 }, 148 { 149 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Internet Plug-Ins', 150 'files': [ 151 '<(PRODUCT_DIR)/PDF.plugin', 152 ], 153 'conditions': [ 154 ['disable_nacl!=1', { 155 'conditions': [ 156 ['target_arch=="x64"', { 157 'files': [ 158 '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe', 159 ], 160 }, { 161 'files': [ 162 '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe', 163 ], 164 }], 165 ], 166 }], 167 ], 168 }, 169 { 170 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Internet Plug-Ins/PepperFlash', 171 'files': [], 172 'conditions': [ 173 ['branding == "Chrome"', { 174 'files': [ 175 '<(PRODUCT_DIR)/PepperFlash/PepperFlashPlayer.plugin', 176 ], 177 }], 178 ], 179 }, 180 { 181 # This file is used by the component installer. 182 # It is not a complete plug-in on its own. 183 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Internet Plug-Ins/', 184 'files': [], 185 'conditions': [ 186 ['branding == "Chrome"', { 187 'files': [ 188 '<(PRODUCT_DIR)/widevinecdmadapter.plugin', 189 ], 190 }], 191 ], 192 }, 193 { 194 # Copy of resources used by tests. 195 'destination': '<(PRODUCT_DIR)', 196 'files': [ 197 '<(SHARED_INTERMEDIATE_DIR)/repack/resources.pak' 198 ], 199 }, 200 { 201 # Copy of resources used by tests. 202 'destination': '<(PRODUCT_DIR)/pseudo_locales', 203 'files': [ 204 '<(SHARED_INTERMEDIATE_DIR)/<(pseudo_locales).pak' 205 ], 206 }, 207 { 208 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Resources', 209 'files': [ 210 # Loader bundle for platform apps. 211 '<(PRODUCT_DIR)/app_mode_loader.app', 212 ], 213 }, 214 ], 215 'conditions': [ 216 ['branding=="Chrome"', { 217 'copies': [ 218 { 219 # This location is for the Mac build. Note that the 220 # copying of these files for Windows and Linux is handled 221 # in chrome.gyp, as Mac needs to be dropped inside the 222 # framework. 223 'destination': 224 '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Default Apps', 225 'files': ['<@(default_apps_list)'], 226 }, 227 ], 228 }], 229 ['mac_breakpad==1', { 230 'variables': { 231 # A real .dSYM is needed for dump_syms to operate on. 232 'mac_real_dsym': 1, 233 }, 234 }], 235 ['mac_breakpad_compiled_in==1', { 236 'dependencies': [ 237 '../breakpad/breakpad.gyp:breakpad', 238 '../components/components.gyp:policy', 239 ], 240 'copies': [ 241 { 242 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Resources', 243 'files': [ 244 '<(PRODUCT_DIR)/crash_inspector', 245 '<(PRODUCT_DIR)/crash_report_sender.app' 246 ], 247 }, 248 ], 249 }], # mac_breakpad_compiled_in 250 ['mac_keystone==1', { 251 'mac_bundle_resources': [ 252 'browser/mac/keystone_promote_preflight.sh', 253 'browser/mac/keystone_promote_postflight.sh', 254 ], 255 'postbuilds': [ 256 { 257 'postbuild_name': 'Copy KeystoneRegistration.framework', 258 'action': [ 259 '../build/mac/copy_framework_unversioned.sh', 260 '-I', 261 '../third_party/googlemac/Releases/Keystone/KeystoneRegistration.framework', 262 '${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Frameworks', 263 ], 264 }, 265 { 266 'postbuild_name': 'Symlink Frameworks', 267 'action': [ 268 'ln', 269 '-fns', 270 'Versions/Current/Frameworks', 271 '${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Frameworks' 272 ], 273 }, 274 ], 275 }], # mac_keystone 276 ['debug_devtools==1', { 277 'postbuilds': [{ 278 'postbuild_name': 'Copy inspector files', 279 'action': [ 280 'ln', 281 '-fs', 282 '${BUILT_PRODUCTS_DIR}/resources/inspector', 283 '${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Resources', 284 ], 285 }], 286 }], 287 ['enable_hidpi==1', { 288 'mac_bundle_resources': [ 289 '<(SHARED_INTERMEDIATE_DIR)/repack/chrome_200_percent.pak', 290 ], 291 }], 292 ['enable_webrtc==1 and libpeer_target_type!="static_library"', { 293 'copies': [{ 294 'destination': '<(PRODUCT_DIR)/$(CONTENTS_FOLDER_PATH)/Libraries', 295 'files': [ 296 '<(PRODUCT_DIR)/libpeerconnection.so', 297 ], 298 }], 299 }], 300 ['icu_use_data_file_flag==1', { 301 'mac_bundle_resources': [ 302 '<(PRODUCT_DIR)/icudtl.dat', 303 ], 304 }], 305 ], # conditions 306 } 307