How would you handle KSDK in a product as far as version control is concerned?

Discussion created by dave408 on Apr 3, 2015
Latest reply on Feb 10, 2016 by dave408

My intention all along has been to keep KSDK in a separate folder in my SVN repository.  The idea is to build the libraries needed (K64F, K22F, etc) once, and then link to the already compiled binaries in each of my firmware projects.


In my current mode of operation, I am actually creating test projects in "standalone" mode, which I believe just means that the KSDK files needed are copied to the local project's folder structure.  The obvious advantages here are that it avoids the chances "folder reference hell" that I was going through for a little while when I was trying to figure out how to work around the bugs in KDS when trying to start by importing existing projects and copying them into my development workspace.  I don't have to worry about finding all of the folder locations for each header file and manually adding each to my C/C++ toolchain's Includes section.  It also means that I can maintain different KSDK settings for each project, if desired.  Changes are obviously tracked by SVN.


One disadvantage is that certain changes might trigger a lengthy rebuild, which isn't such a big deal.  Another, possibly bigger problem is that since the KSDK source files are local to the project, it enables / encourages others to tinker with the KSDK itself, which I'd rather leave as unmodified as possible.  And the biggest problem has to do with scalability and the KSDK releases themselves.  What I like about keeping KSDK in a separate, buildable working set is that when the KSDK is updated (for example, the upcoming update to 1.2 in Q2), I just have to update the folder, rebuild the libraries, and then all of my other projects will automatically receive the bug fixes.  In the "standalone" case, I believe I'd be forced to manually copy the required files over, which doesn't scale well as the number of firmware projects increases.


So what are everyone's thoughts here?  I don't think there's a right answer, and it probably depends on everyone's own situation, but I'd love to hear how you plan to handle KSDK versioning in your projects.