The source code of the libraries depends on openssl being built, as it will setup the headers.
Since we don't know exactly which source depends on openssl (we could start flagging it in build.json, but that'd be painful), we just flag all the source for every ssl-enabled library to depend on openssl being built.
By default don't re-run tests that have already run successfully, to
reduce latency between making a change and seeing if it fixed the last
thing that you were trying to fix.
This was working so far because of GNU make's magic that automatically finds the sources depending on its output, and not on its input.
This also explains why running "make" would always rebuild the plugins: because GNU make think some dependencies are phony and aren't there.
If we don't have a .o, we don't need dependencies, so skip the setup
step of building them. Instead, when building the .o, we generate the
.dep and output it (to objs/ to make the rules a little easier). The
next run of make will include the dep file and any dependencies will be
picked up.
This change also disables the disabling of dependency checking if we
have zlib or openssl being compiled from third_party. Additionally it
inverts the logic for including dependencies from ONLY if we are doing a
clean to ONLY if we are NOT doing a clean.
-) Adding a new command line flag to be able to see which tests are passing.
-) Adding more status when the tool is idle in forever mode.
-) Adding a last status when the tool is finished so to avoid leaving the console in a weird state.
-) Adding a status message in the forever mode if the previous run failed.
-) Swapped the message and its explanation, so you don't have to scroll up to see which test failed.
-) Fixed a race condition in the watch_dir.py code if a file is deleted during the loop.