Adding a note from git, to commit into ACTUAL Turtle Brains history for testing some issues. SOLVED: Moving source/ to source/turtle_brains/ like we did with ICE, no more need for symlink hacks. To support #include in the source code we need to ensure the source exists that directory path. Because many projects already pull directly from turtle_brains/source the easiest solution, for now, was to create a symlink'd directory to source. root/source root/build root/turtle_brains <-- symlink to root/source Eventually we will need to break all the things and I suggest doing that by root/source/turtle_brains This symlink'd trick is also required to allow projects to use turtle_brains/ as an include directory as well, though the long term solution for this issue would be to copy the headers and libraries into a package with includes/ and libraries/ -which will eliminate any implementation headers being public- although I sometimes use these details... even when I shouldn't. SoapboxRacer rebuild with TurtleBrains as regular code: ~1:39.60 This includes slight variation of start, mouse, hotkey to build. SoapboxRacer rebuild with TurtleBrains as static libraries: 0:38.05 This includes slight variation of start, mouse, hotkey to build. Major problem is that specifying the include / library directories are absolute paths and this would be different per user/machine etc. (works for all of Tim's stuff though...) technically with Windows builds this is already fairly "tim only" or at least specifying a particular Windows SDK build and location. Absolute paths make it an absolute pain to do the cross mac builds as it would require changing the path on the linux box and not committing them, or something. These builds are currently broken anyway. SOLVED: Linux link order seems to require turtlebrain library to be linked BEFORE the curl, pthread, etc libraries meaning we can't link in the config area. This would make it more difficult to link debug vs release etc. Actual solution was to use linkoptions { "-Wl,--start-group" } as is to make it not depend on order! Before committing to working with TurtleBrains from a library, complete the following: 1. Test and get SoapboxRacer building on macOS and ensure there are no other surprises. 2. Prepare Internal Combustion Engine to also build into a static library. 3. Figure out the necessary steps to make it all work in a template project, with and without TurtleBrains directly in project. 4. It would be a work-flow adjustment when actually doing heavy work on TurtleBrains Could likely just instruct premake to include the global TurtleBrains project?? For each project (current, or in the nightly build area, or one we begin working on again) If we want to use Turtle Brains as static libraries we need to: 1. Remove "init_externals" for TurtleBrains source and tb_external_libraries. 2. Add includedirs and libdirs for each platform and each project in the premake script. 3. Add linkoptions { "-Wl,--start-group" } to the Linux system 4. Add links { "turtle_brains_debug" } or { "turtle_brains_release" } to each configuration. 5. Profit. Otherwise to keep using Turtle Brains source directly inside the project: 1. Update "init_externals" to point to (what will be) "turtle_brains/source/turtle_brains/" NOTE: Turtle Brains to GIT... Must solve the issue the ALL projects with TurtleBrains included in the project is pointing to and checking out subfolders like just source/ and tb_external_libraries/ This is an impossible thing to do with git. Would need to find some solution to this, potentially including some post commit/push hook that causes SVN to grab latest and commmit that?? Not sure how this would work.