Re: Issue 90078 in chromium: Implement components build for mac

5 views
Skip to first unread message

chro...@googlecode.com

unread,
Jul 26, 2011, 7:09:40 PM7/26/11
to chromi...@chromium.org

Comment #7 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c7

The following revision refers to this bug:
http://src.chromium.org/viewvc/chrome?view=rev&revision=94187

------------------------------------------------------------------------
r94187 | tha...@chromium.org | Tue Jul 26 15:28:59 PDT 2011

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/DEPS?r1=94187&r2=94186&pathrev=94187

Roll gyp 971:978

The roll adds support for DEAD_CODE_STRIPPING to the mac make build.

BUG=90078
TEST=none
TBR=evan

Review URL: http://codereview.chromium.org/7470027
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Jul 28, 2011, 10:49:33 PM7/28/11
to chromi...@chromium.org

Comment #8 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c8

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=94621

------------------------------------------------------------------------
r94621 | tha...@chromium.org | Thu Jul 28 19:17:25 PDT 2011

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/crypto/mac_security_services_lock.h?r1=94621&r2=94620&pathrev=94621
M
http://src.chromium.org/viewvc/chrome/trunk/src/crypto/cssm_init.h?r1=94621&r2=94620&pathrev=94621

mac: Components build for crypto

BUG=90078
TEST=none

Review URL: http://codereview.chromium.org/7532023
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Jul 29, 2011, 12:26:12 AM7/29/11
to chromi...@chromium.org

Comment #9 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c9

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=94629

------------------------------------------------------------------------
r94629 | tha...@chromium.org | Thu Jul 28 20:08:36 PDT 2011

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/net/proxy/proxy_resolver_mac.h?r1=94629&r2=94628&pathrev=94629

mac: Components build for net

BUG=90078
TEST=none


Review URL: http://codereview.chromium.org/7529017
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Jul 29, 2011, 1:54:43 AM7/29/11
to chromi...@chromium.org

Comment #10 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c10

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=94636

------------------------------------------------------------------------
r94636 | tha...@chromium.org | Thu Jul 28 21:43:14 PDT 2011

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/sys_string_conversions.h?r1=94636&r2=94635&pathrev=94636
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/process_util.h?r1=94636&r2=94635&pathrev=94636
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/mac/mac_util.h?r1=94636&r2=94635&pathrev=94636
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/mac/objc_property_releaser.h?r1=94636&r2=94635&pathrev=94636
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/mac/scoped_nsautorelease_pool.h?r1=94636&r2=94635&pathrev=94636
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/file_version_info.h?r1=94636&r2=94635&pathrev=94636
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/mach_ipc_mac.h?r1=94636&r2=94635&pathrev=94636
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/mac/scoped_nsexception_enabler.h?r1=94636&r2=94635&pathrev=94636
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/mac/os_crash_dumps.h?r1=94636&r2=94635&pathrev=94636
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/mac/foundation_util.h?r1=94636&r2=94635&pathrev=94636

mac: Components build for base, easy part

BUG=90078
TEST=none


Review URL: http://codereview.chromium.org/7474010
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Aug 2, 2011, 4:38:21 AM8/2/11
to chromi...@chromium.org

Comment #12 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c12

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=95051

------------------------------------------------------------------------
r95051 | tha...@chromium.org | Mon Aug 01 22:24:37 PDT 2011

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/skia/ext/platform_device_mac.h?r1=95051&r2=95050&pathrev=95051
M
http://src.chromium.org/viewvc/chrome/trunk/src/skia/ext/skia_utils_mac.h?r1=95051&r2=95050&pathrev=95051

mac: Components build for skia, easy part

BUG=90078
TEST=none


Review URL: http://codereview.chromium.org/7523046
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Nov 17, 2011, 10:51:57 AM11/17/11
to chromi...@chromium.org

Comment #13 on issue 90078 by kush...@gmail.com: Implement components build
for mac
http://code.google.com/p/chromium/issues/detail?id=90078

What's the status of this? Is there a TODO list of things? How can I help?

chro...@googlecode.com

unread,
Nov 17, 2011, 11:39:48 AM11/17/11
to chromi...@chromium.org

Comment #14 on issue 90078 by tha...@chromium.org: Implement components

The work in progress in comment 1 was functional at one point. I did some
benchmarking and decided that the component build adds a ton of complexity
for moderate gain, and I've looked at other ways to make incremental builds
faster. The pure ld time of an incremental build is 12s (Debug) / 4s
(Release), while a full incremental build takes ~60s. Incremental build
times can be dramatically improved without this.

chro...@googlecode.com

unread,
Nov 17, 2011, 12:56:28 PM11/17/11
to chromi...@chromium.org

Comment #15 on issue 90078 by kush...@gmail.com: Implement components build
for mac
http://code.google.com/p/chromium/issues/detail?id=90078

> I did some benchmarking and decided that the component build adds a ton


> of complexity for moderate gain, and I've looked at other ways to make
> incremental builds faster.

Great! Is there any way that I can help in these other ways?

chro...@googlecode.com

unread,
Feb 9, 2012, 1:13:49 AM2/9/12
to chromi...@chromium.org

Comment #16 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c16

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=121185

------------------------------------------------------------------------
r121185 | tha...@chromium.org | Wed Feb 08 20:02:33 PST 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/crypto/cssm_init.h?r1=121185&r2=121184&pathrev=121185

mac: Add _EXPORT macros, crypto/.

BUG=90078
TEST=none

Review URL: https://chromiumcodereview.appspot.com/9369020
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Feb 9, 2012, 3:42:48 AM2/9/12
to chromi...@chromium.org

chro...@googlecode.com

unread,
Feb 13, 2012, 5:28:10 AM2/13/12
to chromi...@chromium.org
Updates:
Blockedon: 113934

Comment #20 on issue 90078 by tha...@chromium.org: Implement components

(No comment was entered for this change.)

chro...@googlecode.com

unread,
Feb 18, 2012, 3:34:07 AM2/18/12
to chromi...@chromium.org

Comment #22 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c22

The following revision refers to this bug:
http://src.chromium.org/viewvc/chrome?view=rev&revision=122689

------------------------------------------------------------------------
r122689 | tha...@chromium.org | Sat Feb 18 00:20:28 PST 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/ipc/ipc_message_macros.h?r1=122689&r2=122688&pathrev=122689

Make IPC_MESSAGE_EXPORT more robust.

Currently, files that want to export ipc messages currently do

#undef IPC_MESSAGE_EXPORT
#define IPC_MESSAGE_EXPORT CONTENT_EXPORT

at the top, and files that don't want to export ipc messages just do
nothing. This is problematic if a cc file does

#include "exported_messages.h"
#include "not_exported_messages.h"

because the second header file picks up the #define from the first file and
declares all its messages as exported. In other translation units, where
not_exported_messages.h is #included without another header above it, the
messages will get default visibility – so the same class ends up with
different visibilities in different translation units.

Instead, let ipc_message_macros.h #undef IPC_MESSAGE_EXPORT outside of the
include guard, so that all files that don't set the define see it as
defined to nothing. (Idea from jam@)

BUG=90078
TEST=No linker errors about IPC messages when doing components build on
mac. (Other linker errors remain for now.)
TBR=brettw

Review URL: http://codereview.chromium.org/9425006
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Feb 18, 2012, 6:47:16 PM2/18/12
to chromi...@chromium.org

Comment #23 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c23

The following revision refers to this bug:
http://src.chromium.org/viewvc/chrome?view=rev&revision=122698

------------------------------------------------------------------------
r122698 | jhaw...@chromium.org | Sat Feb 18 15:40:33 PST 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/ipc/ipc_message_macros.h?r1=122698&r2=122697&pathrev=122698

Reverting in an attempt to fix Win Builder 2010 (dbg).


Revert 122689 - Make IPC_MESSAGE_EXPORT more robust.

Currently, files that want to export ipc messages currently do

#undef IPC_MESSAGE_EXPORT
#define IPC_MESSAGE_EXPORT CONTENT_EXPORT

at the top, and files that don't want to export ipc messages just do
nothing. This is problematic if a cc file does

#include "exported_messages.h"
#include "not_exported_messages.h"

because the second header file picks up the #define from the first file and
declares all its messages as exported. In other translation units, where
not_exported_messages.h is #included without another header above it, the
messages will get default visibility – so the same class ends up with
different visibilities in different translation units.

Instead, let ipc_message_macros.h #undef IPC_MESSAGE_EXPORT outside of the
include guard, so that all files that don't set the define see it as
defined to nothing. (Idea from jam@)

BUG=90078
TEST=No linker errors about IPC messages when doing components build on
mac. (Other linker errors remain for now.)
TBR=brettw

Review URL: http://codereview.chromium.org/9425006

TBR=tha...@chromium.org
Review URL: https://chromiumcodereview.appspot.com/9355029
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Mar 8, 2012, 5:18:54 PM3/8/12
to chromi...@chromium.org

Comment #29 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c29

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=125691

------------------------------------------------------------------------
r125691 | tha...@chromium.org | Thu Mar 08 13:47:48 PST 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/gpu/gpu_common.gypi?r1=125691&r2=125690&pathrev=125691

Make gles2_c_lib depend on command_buffer_client

gles2_c_lib is missing a dependency on command_buffer_client, since
GLES2AttachShader and friends use
gpu::CommandBufferHelper::GetSpace(unsigned
int). This breaks the work-in-progress components build on mac.
(Triggered by https://chromiumcodereview.appspot.com/9581018/)

BUG=90078
TEST=none

Review URL: http://codereview.chromium.org/9630019
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Mar 12, 2012, 5:24:27 AM3/12/12
to chromi...@chromium.org

Comment #33 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c33

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=126103

------------------------------------------------------------------------
r126103 | tha...@chromium.org | Sun Mar 11 23:50:58 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/content/content.gyp?r1=126103&r2=126102&pathrev=126103

mac: Make content depend on mach_override in shared builds

mach_override is used by both content and chrome. Since it's small, it's
easier
to just statically link it into both targets.

BUG=90078
TEST=none

Review URL: http://codereview.chromium.org/9690001
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Mar 13, 2012, 5:33:31 AM3/13/12
to chromi...@chromium.org

Comment #37 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c37

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=126332

------------------------------------------------------------------------
r126332 | tha...@chromium.org | Mon Mar 12 21:47:18 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/bookmarks/bookmark_pasteboard_helper_mac.mm?r1=126332&r2=126331&pathrev=126332
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/url_drop_target.mm?r1=126332&r2=126331&pathrev=126332

mac: Don't use kWebURLsWithTitlesPboardType from third_party/mozilla

It's a hidden symbol in content when doing a components build. Since the
string
needs to match what Safari uses anyway, it's unlikely to change: Just
hardcode
it in url_drop_target.mm.

While here, fix a possible ODR violation in
bookmark_pasteboard_helper_mac.mm

BUG=90078
TEST=none
TBR=sky

Review URL: http://codereview.chromium.org/9692020
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Mar 15, 2012, 11:45:50 PM3/15/12
to chromi...@chromium.org

Comment #46 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c46

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=127068

------------------------------------------------------------------------
r127068 | tha...@chromium.org | Thu Mar 15 18:33:16 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/skia/ext/bitmap_platform_device_mac.h?r1=127068&r2=127067&pathrev=127068

skia/ext: Add SK_API to a function used from a test

BUG=90078
TEST=none

Review URL: http://codereview.chromium.org/9699078
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Mar 16, 2012, 1:30:42 AM3/16/12
to chromi...@chromium.org

Comment #47 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c47

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=127082

------------------------------------------------------------------------
r127082 | tha...@chromium.org | Thu Mar 15 19:00:22 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/tools/test_shell/mac/test_webview_delegate.mm?r1=127082&r2=127081&pathrev=127082
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/glue/webmenurunner_mac.h?r1=127082&r2=127081&pathrev=127082
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/glue/webmenurunner_mac.mm?r1=127082&r2=127081&pathrev=127082

mac: Move EventWithMenuAction() to the only file where it's called.

This way, it doesn't cross module boundaries.

BUG=90078
TEST=none
NOTRY=true

Review URL: http://codereview.chromium.org/9703067
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Mar 17, 2012, 7:00:27 PM3/17/12
to chromi...@chromium.org

Comment #50 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c50

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=127382

------------------------------------------------------------------------
r127382 | tha...@chromium.org | Sat Mar 17 15:43:01 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/cocoa/one_click_signin_dialog_mac.mm?r1=127382&r2=127381&pathrev=127382

mac: Update signature of ShowOneClickSigninDialog() to match declaration.

The declaration was changed in http://codereview.chromium.org/9592015,
but the mac implementation wasn't updated.

BUG=117015,90078
TEST=Add -all_load to the linker flags.
__Z24ShowOneClickSigninDialogP7ProfileRKSsS2_S2_ doesn't show up in the
missing symbols list.
TBR=rogerta

Review URL: http://codereview.chromium.org/9716018
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Mar 17, 2012, 10:25:01 PM3/17/12
to chromi...@chromium.org

Comment #51 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c51

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=127389

------------------------------------------------------------------------
r127389 | tha...@chromium.org | Sat Mar 17 18:55:02 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/ui/media_stream_infobar_delegate.cc?r1=127389&r2=127388&pathrev=127389

It's OS_MACOSX, not OS_MAC.

Introduced here: http://codereview.chromium.org/9570012/
I codesearched for "\bOS_MAC\b" to make sure this is the only place
where we get this wrong.

BUG=90078
TEST=Add "-all_load" to linker command lines.


__Z24ShowOneClickSigninDialogP7ProfileRKSsS2_S2_ doesn't show up in the

list of undefined symbols.
TBR=pkasting

Review URL: http://codereview.chromium.org/9716017
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Mar 19, 2012, 3:10:56 AM3/19/12
to chromi...@chromium.org

chro...@googlecode.com

unread,
Mar 28, 2012, 2:07:56 AM3/28/12
to chromi...@chromium.org

Comment #54 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c54

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=129368

------------------------------------------------------------------------
r129368 | tha...@chromium.org | Tue Mar 27 21:10:05 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/crypto/keychain_mac.h?r1=129368&r2=129367&pathrev=129368
M
http://src.chromium.org/viewvc/chrome/trunk/src/crypto/mock_keychain_mac.h?r1=129368&r2=129367&pathrev=129368

New CRYPTO_EXPORT macros.

BUG=90078
TEST=none

Review URL: https://chromiumcodereview.appspot.com/9873017
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Apr 7, 2012, 1:55:26 PM4/7/12
to chromi...@chromium.org

Comment #57 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c57

The following revision refers to this bug:

http://src.chromium.org/viewvc/chrome?view=rev&revision=131284

------------------------------------------------------------------------
r131284 | tha...@chromium.org | Sat Apr 07 10:47:50 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_tests.gypi?r1=131284&r2=131283&pathrev=131284

mac: Remove explicit dependency from chrome_app_unittests on webcore.

I removed that dependency from all test targets in
http://codereview.chromium.org/9700055, but
http://codereview.chromium.org/9432033/ added the new test target
chrome_app_unittests with the bad dependency.

BUG=43791, 90078
TEST=things still build, the macshared bot on the fyi waterfall goes green
again
TBR=mad

Review URL: https://chromiumcodereview.appspot.com/10021014
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Apr 7, 2012, 4:27:09 PM4/7/12
to chromi...@chromium.org

Comment #58 on issue 90078 by tha...@chromium.org: Implement components

Status:

* There's a bot on the FYI bot that builds all targets in release:
http://build.chromium.org/p/chromium.fyi/builders/Chromium%20Mac%2010.6%20Shared/
It's even green every now and then. It has a few local changes though.

* Running gyp with the xcode generator with component=shared_library makes
the generator crash. That needs to be fixed. (make and ninja work.)

* For the shared build to work, ld needs to be told to load all members of
libfoo.a files. Linux uses --whole-archive and --no-whole-archive around
the .a files. OS X's ld64 doesn't have a flag pair like that. It does have
-all_load, which causes all members of _all_ .a files to be added, but that
includes implicitly added archives like libgcc.a, which makes gyp tests
fail. However, -all_load almost works (it requires also using -dead_strip
to then again strip archive members that aren't actually used and refer to
broken symbols, like in libWebKitSystemInterface.a). This needs some real
fix (maybe --force-load some .a files, but that might be hard in the
generators. Maybe a linker wrapper script could emulate linux's flags, or
this can be combined with fake thin archives which implicitly all_loads
everything). The bots has a local gyp patch to add -all_load for now.

* DYLD_LIBRARY_PATH currently needs to be set to the product dir (and the
host product dir for make). It would be nice if install_name was set
automatically when doing shared builds so that that's not needed. (The bot
has a local change to set DYLD_LIBRARY_PATH during compilation for now)

* I believe all our _export.h files are wrong, which causes things not to
work for shared debug builds on mac. I need to think about this a bit more
though. (See
http://codereview.chromium.org/7484017/diff/107001/content/common/content_export.h
for a possible change.) I did successfully link chrome in debug with a few
local changes like that locally. (but no bot for that yet)

* When that's all done, someone needs to measure how much time the
component build saves compared to normal builds in various scenarios.

chro...@googlecode.com

unread,
Apr 8, 2012, 6:06:24 PM4/8/12
to chromi...@chromium.org

Comment #59 on issue 90078 by tha...@chromium.org: Implement components

Uncommenting the line


'<(chromium_src_dir)/third_party/icu/icu.gyp:*',

from third_party/WebKit/Source/WebKit/chromium/WebKit.gyp makes the xcode
generator exception go away.

chro...@googlecode.com

unread,
Apr 8, 2012, 6:18:26 PM4/8/12
to chromi...@chromium.org

Comment #60 on issue 90078 by tha...@chromium.org: Implement components

Small repro: Put this in test.gyp in the source root:


{
'targets': [
{
'target_name': 'webkit',
'type': 'static_library',
'dependencies': [
'third_party/icu/icu.gyp:icuuc',
],
'conditions': [
['1==1', {
'type': '<(component)',

'dependencies': [
'third_party/icu/icu.gyp:*',
],
}],
],
},
],
}


Running `time build/gyp_chromium -Dcomponent=shared_library test.gyp` will
repro. If the 'type' key is moved out of the conditional, the xcode
generator assert goes away.

chro...@googlecode.com

unread,
Apr 8, 2012, 6:30:29 PM4/8/12
to chromi...@chromium.org

Comment #61 on issue 90078 by tha...@chromium.org: Implement components

Smaller:

test.gyp:

{
'targets': [
{
'target_name': 'webkit',
'type': 'static_library',
'dependencies': [

'testicu.gyp:icuuc',


],
'conditions': [
['1==1', {
'type': '<(component)',

'dependencies': [
'testicu.gyp:*',


],
}],
],
},
],
}


testicu.gyp:

{
'targets': [
{
'target_name': 'icuuc',
'type': 'none',
},
],
}

chro...@googlecode.com

unread,
Apr 8, 2012, 6:46:33 PM4/8/12
to chromi...@chromium.org
Updates:
Blockedon: 122588

Comment #62 on issue 90078 by tha...@chromium.org: Implement components

Moved the xcode generator issue to issue 122588

chro...@googlecode.com

unread,
May 9, 2012, 7:19:02 PM5/9/12
to chromi...@chromium.org
Updates:
Blockedon: 127465

Comment #64 on issue 90078 by tha...@chromium.org: Implement components

chro...@googlecode.com

unread,
May 11, 2012, 9:26:56 PM5/11/12
to chromi...@chromium.org

Comment #65 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c65

The following revision refers to this bug:
http://src.chromium.org/viewvc/chrome?view=rev&revision=136733

------------------------------------------------------------------------
r136733 | tha...@chromium.org | Fri May 11 18:12:09 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/ppapi/ppapi_shared.gypi?r1=136733&r2=136732&pathrev=136733

Make ppapi_shared depend on gles2_utils.

Without this, linking libppapi_shared.dylib on mac in a debug build
fails with

"__ZN3gpu5gles29GLES2Util25GetStringProgramParameterEj", referenced from:
__ZN3gpu5gles219GLES2Implementation12GetProgramivEjjPi in
ppapi_shared.ppb_opengles2_shared.o
"__ZN3gpu5gles29GLES2Util16GetStringGLStateEj", referenced from:
__ZN3gpu5gles219GLES2Implementation11GetIntegervEjPi in
ppapi_shared.ppb_opengles2_shared.o
__ZN3gpu5gles219GLES2Implementation9GetFloatvEjPf in
ppapi_shared.ppb_opengles2_shared.o
__ZN3gpu5gles219GLES2Implementation11GetBooleanvEjPh in
ppapi_shared.ppb_opengles2_shared.o
"__ZN3gpu5gles29GLES2Util19GetStringShaderTypeEj", referenced from:
__ZN3gpu5gles219GLES2Implementation12CreateShaderEj in
ppapi_shared.ppb_opengles2_shared.o

BUG=90078
TEST=none


Review URL: https://chromiumcodereview.appspot.com/10332125
------------------------------------------------------------------------

chro...@googlecode.com

unread,
May 11, 2012, 10:01:56 PM5/11/12
to chromi...@chromium.org

Comment #66 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c66

The following revision refers to this bug:
http://src.chromium.org/viewvc/chrome?view=rev&revision=136743

------------------------------------------------------------------------
r136743 | tha...@chromium.org | Fri May 11 18:59:38 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/gfx/gl/gl_surface_cgl.h?r1=136743&r2=136742&pathrev=136743

mac: s/UI_EXPORT/GL_EXPORT/ for GLSurfaceCGL

The class got moved a while ago but the export macro wasn't updated.

BUG=90078
TEST=none
TBR=kbr


Review URL: https://chromiumcodereview.appspot.com/10356140
------------------------------------------------------------------------

chro...@googlecode.com

unread,
May 15, 2012, 11:08:37 AM5/15/12
to chromi...@chromium.org
Updates:
Blockedon: -113934 -122588 -127465 chromium:113934 chromium:122588
chromium:127465

Comment #67 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c67

The following revision refers to this bug:
http://src.chromium.org/viewvc/chrome?view=rev&revision=137130

------------------------------------------------------------------------
r137130 | tha...@chromium.org | Tue May 15 08:04:32 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ui_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/plugins/webkit_plugins_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/forms/webkit_forms_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/gl/gl_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/aura/aura_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ppapi/shared_impl/ppapi_shared_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/compositor/compositor_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/gpu/command_buffer/client/gles2_c_lib_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ash/ash_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/views/views_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/net/base/net_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/media/base/media_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/surface/surface_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/i18n/base_i18n_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/chromeos/chromeos.gyp?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/gpu/command_buffer/client/gles2_impl_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/content/common/content_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ppapi/thunk/ppapi_thunk_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ppapi/proxy/ppapi_proxy_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/oak/oak_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/base/base_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/printing/printing_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/chromeos/chromeos_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/crypto/crypto_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/sql/sql_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/blob/blob_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/appcache/appcache_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/ipc/ipc_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/gpu/gpu_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/webkit/glue/webkit_glue_export.h?r1=137130&r2=137129&pathrev=137130
M
http://src.chromium.org/viewvc/chrome/trunk/src/gpu/command_buffer/common/gles2_utils_export.h?r1=137130&r2=137129&pathrev=137130

Change the way _EXPORT macros look.

With the current setup, if you have a header file my_class.h

class BASE_EXPORT MyClass {
public:
void MyInlineMethod() { /* do stuff, inline */ }
};

then every cc file that includes my_class.h will have a public symbol
for MyInlineMethod (because inline methods need to be emitted to
every translation unit, and the linker sorts them out). With the
components build, the linker can't decide to drop these inline methods,
so every .so that uses this header file will have the same public symbol.

With this proposed change, the symbol will only be visible in the target
the header file belongs to, and it will be hidden in all other components.
That's cleaner, and it also prevents accident hidden dependencies (say
target A depends on B, and B depends on C. A accidentally uses an inline
function from a class in C. With this change, that would result in a linker
error, and an explicit dependency from A on C would have to be added).

Also add a missing CHROMEOS_IMPLEMENTATION define which went
unnoticed until now.

BUG=90078
TEST=Things still build.
TBR=ben, tony, viettrungluu, thestig, agl, willchan

Review URL: https://chromiumcodereview.appspot.com/10386108
------------------------------------------------------------------------

chro...@googlecode.com

unread,
May 16, 2012, 6:31:21 PM5/16/12
to chromi...@chromium.org
Updates:
Blockedon: 128437

Comment #69 on issue 90078 by tha...@chromium.org: Implement components
Status:

* Once http://codereview.chromium.org/10399036/ is landed and rolled into
chromium, debug shared builds work (I'll switch the fyi bot to debug once
that has happened)

* DYLD_LIBRARY_PATH still needs to be set while building / running. It'd be
nicer if that weren't necessary, issue 127465

* Debug component builds print a few warnings. Probably harmless, but ugly.
Issue 128437.

* Still need to measure build perf impact

chro...@googlecode.com

unread,
May 18, 2012, 10:18:26 PM5/18/12
to chromi...@chromium.org

Comment #70 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c70

The following revision refers to this bug:
http://src.chromium.org/viewvc/chrome?view=rev&revision=138012

------------------------------------------------------------------------
r138012 | tha...@chromium.org | Fri May 18 19:12:02 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/gfx/rect_f.h?r1=138012&r2=138011&pathrev=138012
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/gfx/point_f.h?r1=138012&r2=138011&pathrev=138012
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/gfx/size.h?r1=138012&r2=138011&pathrev=138012
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/gfx/rect.h?r1=138012&r2=138011&pathrev=138012
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/gfx/size_f.h?r1=138012&r2=138011&pathrev=138012
M
http://src.chromium.org/viewvc/chrome/trunk/src/ui/gfx/point.h?r1=138012&r2=138011&pathrev=138012

Add instantiation declarations for PointBase, SizeBase, RectBase

These templates have explicit instantiations in point.cc, point_f.cc,
size.cc,
size_f.cc, rect.cc, rect_f.cc. This suggests that the intent was to have
these
instantiations in a single translation unit. Without an explicit
instantiation
declaration, they would still be weakly emitted to all translation units
that
use point.h (etc). Add an explicit instantiation declaration to stop this
from
happening.

Thanks to Rafael Espindola for help with this patch.

BUG=90078
TEST=do a components debug build on mac. observe fewer linker errors.
Normal builds get a bit faster too.

Review URL: https://chromiumcodereview.appspot.com/10386220
------------------------------------------------------------------------

chro...@googlecode.com

unread,
May 18, 2012, 11:12:14 PM5/18/12
to chromi...@chromium.org

Comment #71 on issue 90078 by tha...@chromium.org: Implement components
durr last commit was for issue 128437

chro...@googlecode.com

unread,
May 30, 2012, 12:33:03 PM5/30/12
to chromi...@chromium.org

Comment #72 on issue 90078 by bugdro...@chromium.org: Implement components
build for mac
http://code.google.com/p/chromium/issues/detail?id=90078#c72

The following revision refers to this bug:
http://src.chromium.org/viewvc/chrome?view=rev&revision=139550

------------------------------------------------------------------------
r139550 | tha...@chromium.org | Wed May 30 09:20:38 PDT 2012

Changed paths:
M
http://src.chromium.org/viewvc/chrome/trunk/src/content/common/sandbox_mac.mm?r1=139550&r2=139549&pathrev=139550
M
http://src.chromium.org/viewvc/chrome/trunk/src/build/common.gypi?r1=139550&r2=139549&pathrev=139550
M
http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome.gyp?r1=139550&r2=139549&pathrev=139550

mac: Don't require DYLD_LIBRARY_PATH to be set when using the shared build.

Set the install name of all dylibs to @rpath.

Set the rpath of all executables to '@loader_path/.' (for normal binaries)
and '@loader_path/../../..' (for bundled binaries).

Also, Chromium Helper.app doesn't end up in out/Release but
somewhere below Chromium.app, so set its rpath to
'@loader_path/../../../../../../..' to get all the way back to
out/Release.

Also add "(allow file-read-metadata)" to the sandbox definition when
running on 10.6 or earlier when using the component build, to work
around a bug in dyld (see http://crbug.com/127465).

BUG=90078,127465
TEST=Do a components build. DYLD_LIBRARY_PATH isn't necessary at
build time, and isn't necessary when running chromium or test binaries.

Review URL: https://chromiumcodereview.appspot.com/10389047
------------------------------------------------------------------------

chro...@googlecode.com

unread,
Jun 7, 2012, 12:42:27 PM6/7/12
to chromi...@chromium.org
Updates:
Status: Fixed

Comment #75 on issue 90078 by tha...@chromium.org: Implement components
\o/

Reply all
Reply to author
Forward
0 new messages