Avoid duplicate symbols in libmerged for Windows too.
Export these symbols from sfx library. For cases when we link together more libraries, there are more symbols, so I've kept __attribute__((__weak__)) hack there. Change-Id: I8b7f6fc9bea479dca5062344c04b74c1f3eb36b2
This commit is contained in:
@@ -12424,11 +12424,11 @@ if test -n "$enable_mergelibs" -a "$enable_mergelibs" != "no"; then
|
||||
if test "$enable_mergelibs" = "all"; then
|
||||
MERGELIBS="ALL"
|
||||
URELIBS="TRUE"
|
||||
AC_DEFINE(STATIC_LINKING)
|
||||
else
|
||||
MERGELIBS="CORE"
|
||||
fi
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE(STATIC_LINKING)
|
||||
else
|
||||
AC_MSG_RESULT([no])
|
||||
fi
|
||||
|
@@ -81,6 +81,8 @@ protected:
|
||||
aIFaceName = OString();
|
||||
}
|
||||
public:
|
||||
OUString sSlotMapFile;
|
||||
|
||||
explicit SvIdlDataBase( const SvCommand& rCmd );
|
||||
~SvIdlDataBase();
|
||||
static sal_Bool IsBinaryFormat( SvStream & rInStm );
|
||||
|
@@ -1398,7 +1398,7 @@ sal_uLong SvMetaType::MakeSfx( OStringBuffer& rAttrArray )
|
||||
}
|
||||
|
||||
void SvMetaType::WriteSfxItem(
|
||||
const OString& rItemName, SvIdlDataBase &, SvStream & rOutStm )
|
||||
const OString& rItemName, SvIdlDataBase& rBase, SvStream& rOutStm )
|
||||
{
|
||||
WriteStars( rOutStm );
|
||||
OStringBuffer aVarName(" a");
|
||||
@@ -1411,14 +1411,35 @@ void SvMetaType::WriteSfxItem(
|
||||
OString::number(nAttrCount));
|
||||
aTypeName.append(aAttrCount);
|
||||
|
||||
rOutStm.WriteCharPtr( "extern " ).WriteCharPtr( aTypeName.getStr() )
|
||||
bool bExport = false, bReturn = false;
|
||||
// these are exported from sfx library
|
||||
if (rItemName == "SfxBoolItem" ||
|
||||
rItemName == "SfxStringItem" ||
|
||||
rItemName == "SfxUInt16Item" ||
|
||||
rItemName == "SfxUInt32Item" ||
|
||||
rItemName == "SfxVoidItem")
|
||||
{
|
||||
if (rBase.sSlotMapFile.endsWith("sfxslots.hxx"))
|
||||
bExport = true;
|
||||
else
|
||||
bReturn = true;
|
||||
}
|
||||
|
||||
rOutStm.WriteCharPtr( "extern " );
|
||||
if (bExport)
|
||||
rOutStm.WriteCharPtr( "SFX2_DLLPUBLIC " );
|
||||
rOutStm.WriteCharPtr( aTypeName.getStr() )
|
||||
.WriteCharPtr( aVarName.getStr() ).WriteChar( ';' ) << endl;
|
||||
if (bReturn)
|
||||
return;
|
||||
|
||||
// write the implementation part
|
||||
rOutStm.WriteCharPtr( "#ifdef SFX_TYPEMAP" ) << endl;
|
||||
rOutStm.WriteCharPtr( "#if !defined(_WIN32) && ((defined(DISABLE_DYNLOADING) && (defined(ANDROID) || defined(IOS))) || STATIC_LINKING)" ) << endl;
|
||||
rOutStm.WriteCharPtr( "__attribute__((__weak__))" ) << endl;
|
||||
rOutStm.WriteCharPtr( "#endif" ) << endl;
|
||||
if (bExport)
|
||||
rOutStm.WriteCharPtr( "SFX2_DLLPUBLIC " );
|
||||
rOutStm.WriteCharPtr( aTypeName.getStr() ).WriteCharPtr( aVarName.getStr() )
|
||||
.WriteCharPtr( " = " ) << endl;
|
||||
rOutStm.WriteChar( '{' ) << endl;
|
||||
|
@@ -34,6 +34,7 @@ SvIdlDataBase::SvIdlDataBase( const SvCommand& rCmd )
|
||||
, aPersStream( *IDLAPP->pClassMgr, NULL )
|
||||
, pIdTable( NULL )
|
||||
{
|
||||
sSlotMapFile = rCmd.aSlotMapFile;
|
||||
}
|
||||
|
||||
SvIdlDataBase::~SvIdlDataBase()
|
||||
|
Reference in New Issue
Block a user