In trying to start using libswoc I ran in to some build issues. I put this 
partially in to an earlier PR updating libswoc but was requested to make it a 
separate PR.

This PR does two things. The major one is to move "lib/records" out of "lib" 
and in to "src" and "include", splitting the headers from the implementation 
code, to be more consistent with other base libraries such as tscore. The move 
is needed for two reasons.

  *   Consistency - "lib" has transitioned from internal libraries to third 
party libraries. "records" is the anomaly here, as it is the only one in "lib" 
that is internal. That should be changed.
  *   Relatedly the presence of a non-third party library in "lib" creates 
build ordering issue where it is necessary to build "lib" first to because of 
the third party support for other base libraries, but also to not build it 
early because "records" depends on other internal libraries such as tscore.

In my view the best approach is to go all the way on making "lib" third party 
only and build it first because at that point, by definition, "lib" cannot have 
any dependencies on our code base.

This doesn't fully solve the problem, because "src" contains a mix of code, 
some of which is depended on by other top level directories (e.g. iocore 
depending on tscore) and final build objects such as traffic_server. Currently 
this is dealt with by a make in the top level "Makefile.am" to specifically 
build those dependencies first, but it would be better if there was a 
non-cyclic dependency graph on the top level directories. However, baby steps - 
this is clearly better and I am trying to minimize PR size.

Reply via email to