On Fri, Oct 14, 2016 at 8:19 PM Adam Klein <[email protected]> wrote:
> I take it from your omission that code which isn't accessed anywhere but > within src doesn't need any export macro? > well, within the same compilation unit. If src/d8.cc access something in src/factory.h the latter needs to be exported. (d8.cc goes into d8 while factory.h goes into v8_base). Same holds true for src/ vs src/base. best -jochen > > On Fri, Oct 14, 2016 at 6:47 AM, Jochen Eisinger <[email protected]> > wrote: > > Hey, > > we recently started to support component builds for almost all binaries. > With this, it might happen that debug bots fail to link because they can't > find certain symbols. > > Here is what to do: > > If the symbol is supposed to be visible to embedders, e.g., it's in > include/v8.h, then add the V8_EXPORT macro. > > If the symbol is used by tests only, e.g., it's in src/, add the > V8_EXPORT_PRIVATE (defined in src/globals.h) macro (or if it's in src/base/ > V8_BASE_EXPORT defined in src/base/base-export.h or in src/libplatform > V8_PLATFORM_EXPORT defined in include/libplatform/libplatform-export.h) > > Annotate classes like this: > > class V8_EXPORT Foo { > }; > > or individual methods or functions like this > > V8_EXPORT bool DoStuff(); > > For the public API (V8_EXPORT) we generally export everything. For test > only stuff, we might wish to not export some base classes. In that > situation, you have to annotate the base classes with NON_EXPORTED_BASE > defined in src/base/compiler-specific.h like this: > > class V8_EXPORT_PRIVATE Foo : public NON_EXPORTED_BASE(Bar) { > }; > > If you annotated everything, but e.g. a symbol from src/base is still not > found, it might be that the executable does not depend on v8_libbase (in > this example) - you'll have to add the dependency in the BUILD.gn (and > corresponding gyp file) then - but this should be rare, only if you add new > binaries. > > best > -jochen > > -- > -- > v8-dev mailing list > [email protected] > http://groups.google.com/group/v8-dev > --- > You received this message because you are subscribed to the Google Groups > "v8-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > > > -- > -- > v8-dev mailing list > [email protected] > http://groups.google.com/group/v8-dev > --- > You received this message because you are subscribed to the Google Groups > "v8-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev --- You received this message because you are subscribed to the Google Groups "v8-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
