Make not using dependencies.

Michael Stahl mst at
Tue Apr 24 20:42:18 UTC 2018

On 12/04/18 11:14, Jan Iversen wrote:
> Hi
> I have over time had a problem with make (iOS build). When I update my master repo and simply call “make” it works like a charm for osx, but I often get unresolved dependencies for iOS:
> [build LNK] iOS dylib
> Undefined symbols for architecture arm64:
>    "ScNoteUtil::CreateNoteFromObjectData(ScDocument&, ScAddress const&, SfxItemSet*, OutlinerParaObject*, tools::Rectangle const&, bool, bool)", referenced from:
>        XclImpNoteObj::DoPreProcessSdrObj(XclImpDffConverter&, SdrObject&) const in libscfiltlo.a(xiescher.o)
>    "ScColumn::SetEditText(int, EditTextObject*)", referenced from:
>        (anonymous namespace)::setSuffixCell(ScColumn&, int, int, unsigned short, rtl::OUString const&, CellType, bool) in libsclo.a(table4.o)
>    "ScDocumentImport::setEditCell(ScAddress const&, EditTextObject*)", referenced from:
>        oox::xls::WorksheetGlobals::insertHyperlink(ScAddress const&, rtl::OUString const&) in libscfiltlo.a(worksheethelper.o)
>        oox::xls::WorksheetHelper::putRichString(ScAddress const&, oox::xls::RichString const&, oox::xls::Font const*) in libscfiltlo.a(worksheethelper.o)
>        (anonymous namespace)::lclInsertUrl(XclImpRoot&, rtl::OUString const&, short, int, short) in libscfiltlo.a(xicontent.o)
>    "svtools::executeRestartDialog(com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, vcl::Window*, svtools::RestartReason)", referenced from:
>        (anonymous namespace)::lcl_tryLoadBibliography() in libsfxlo.a(appserv.o)
>    "ScDocument::SetEditText(ScAddress const&, EditTextObject*)", referenced from:
>        ScDocFunc::SetEditCell(ScAddress const&, EditTextObject const&, bool) in libsclo.a(docfunc.o)
>        ScDocument::TransliterateText(ScMarkData const&, TransliterationFlags) in libsclo.a(documen8.o)
>        ScCellRangesBase::SetOnePropertyValue(SfxItemPropertySimpleEntry const*, com::sun::star::uno::Any const&) in libsclo.a(cellsuno.o)
>        ScTransferObj::StripRefs(ScDocument*, short, int, short, int, ScDocument*) in libsclo.a(transobj.o)
>        ScUndoReplace::Undo() in libsclo.a(undoblk3.o)
>    "ScUndoEnterData::ScUndoEnterData(ScDocShell*, ScAddress const&, std::__1::vector<ScUndoEnterData::Value, std::__1::allocator<ScUndoEnterData::Value> >&, rtl::OUString const&, EditTextObject*)", referenced from:
>        ScDocFunc::SetNormalString(bool&, ScAddress const&, rtl::OUString const&, bool) in libsclo.a(docfunc.o)
> This is from master today. When I do (in this case) “cd sc; make” it tells me there are nothing to build, but if I do “cd sc; make clean; make; cd ..; make” it links correctly, so it is as if the iOS build has somehow “shortcutted” the dependencies.
> I have tried to find the relevant part in Solenv/gbuild but without success, so any idea/pointer are most welcome.

these should be rebuilt via the generated header dependencies; for a lot 
of your examples the relevant file is

this should contain e.g. a dependency from sc/.../xiescher.o to whatever 
header declares class ScNoteUtil.

there are 2 ways to generate these .d files, one is in 
gb_LinkTarget__command_impl (shortcut as a side effect of linking) and 
the other is gb_LinkTarget__command_dep which will be invoked if the 
linking step didn't happen on the next invocation of make.

oh, there is one configure option that disables this whole thing, you 
can shoot yourself in the foot with --disable-dependency-tracking.

the examples relating to functions defined in libsc*.a should definitely 
not happen even if you do only a module local build (make sc).

More information about the LibreOffice mailing list