Kaydet (Commit) fc27a685 authored tarafından Matúš Kukan's avatar Matúš Kukan

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
üst bee9ea58
......@@ -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()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment