Ian, I'm guessing that getting rid of the circular build dependencies would probably get rid of most if not all of these issues so I'm all for this.
Cheers, Wayne On 8/28/19 5:33 AM, Ian McInerney wrote: > Correction, dxf2idf didn't need gal, it needed opengl as a dependency > (which also wans't specified in the CMakeLists.txt file...). But now I > will still run into the circular dependency problem that John posted in > that bug report, so I still want to refactor the common library into > smaller chunks. > > -Ian > > On Wed, Aug 28, 2019 at 10:47 AM Ian McInerney <ian.s.mciner...@ieee.org > <mailto:ian.s.mciner...@ieee.org>> wrote: > > Thanks for the pointers. After digging into this some more, I think > what is happening is that including the sanitizers changes the > behavior of the linker. It seems that it really doesn't like > undefined symbols when linking executables, even if there is no > visible dependency path that leads to them. I have resolved the > issues on the main executables by resurrecting the singletop library > and linking the main executables off of that. So far that seems to > have fixed the issues with the main programs. > > Now though I am being bitten by this for some of the utility > programs, such as dxf2idf. In this case, it seems it requies gal and > the trigo.cpp file, and these look to be valid dependencies (there > are calls made from vrml_layer.cpp to them). I am somewhat > surprised, since these were not given as link targets originally. > The problem is that including gal requires common currently > (https://bugs.launchpad.net/kicad/+bug/1832229), so it ends up with > similar undefined references to Pgm() and Kiface(), which makes > sense since these tools don't need them. > > I think that the only way to really fix this is to split common up > into some smaller units, to try to separate some of these > dependencies (and in the process resolve that circular dependency). > My thoughts are to at least create the following new libraries: > edacommon (contains the base frame, library management, tool > framework, plotters, etc.) > utilities (contains the simple files that provide helper functions, > such as utf8, exceptions, base_units, dlist, etc.) > kimath (contains the geometry folder + some other related math > functions) > ui (contains the dialogs, widgets, and custom UI classes) > > My hope here is that this will make it so it is easier to link these > smaller utilities into only what they need (such as the > kimath/utilities) without bringing in the entire EDA frame stack > (since that seems to be the root cause of these reference issues). > > Thoughts? > -Ian > > > On Tue, Aug 27, 2019 at 1:43 PM Simon Richter > <simon.rich...@hogyros.de <mailto:simon.rich...@hogyros.de>> wrote: > > Hi, > > On Tue, Aug 27, 2019 at 02:56:37AM +0200, Ian McInerney wrote: > > > I was trying to do a fresh build of master with the address > sanitizer > > enabled in Clang, and I am receiving a strange linker error, > and was > > curious if anyone else had any thoughts on it. > > I fixed a similar error on MSVC once. MSVC encodes the return > type in the > mangled symbol, while gcc does not, and the build fell over on > MSVC because > we had two different declarations for Pgm(), one returning a > reference to > PGM_BASE, the other returning a reference to a compatible type > (so this > wasn't a runtime problem). > > My suspicion is that something similar is going on here. This > could be > something stupid even like a mismatch in compiler flags (which > are a mix of > CMAKE_CXX_FLAGS, CMAKE_SHARED_LINKER_FLAGS, > CMAKE_MODULE_LINKER_FLAGS and > CMAKE_EXE_LINKER_FLAGS). > > Compiling with -flto on gcc gives a few warnings[1] about > different types > being used in the 3D viewer, usually related to GLM vector types (so > presumably different translation units use different > preprocessor macros > when including GLM), but nothing Kiface related (this wouldn't > catch any > mismatch in modules that are not linked together though). > > Simon > > [1] > > https://jenkins.simonrichter.eu/job/linux-kicad-head-lto/lastStableBuild/gcc/ > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > <mailto:kicad-developers@lists.launchpad.net> > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp > > > _______________________________________________ > Mailing list: https://launchpad.net/~kicad-developers > Post to : kicad-developers@lists.launchpad.net > Unsubscribe : https://launchpad.net/~kicad-developers > More help : https://help.launchpad.net/ListHelp > _______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : kicad-developers@lists.launchpad.net Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp