CHANGES
=======

* Added codacy badge and fixed formatting issues in readme
* Improved documentation of defaults
* Removed some unused imports and added circular dependency detection
* Updated Readme.rst. Tried to modify it according to new project setup. Updated and simplified config file examples. Moved defaults "documentation" to docs/Defaults.md
* Added skip\_cleanup to travis.yml
* Fixed another typo in travis.yml
* Fixed syntax error in travis.yml
* Added coverage support
* Tried to fix the appveyor test
* Added python 3.6 requirement to setup
* Changed target types and removed non-working test. The target types now have spaces, i.e. "shared library" etc. One can now also specify "executable" and "header only", where the latter will warn the user if sources are found
* Removed Python2 from travis
* Added tqdm and colorama to requirements.txt
* Removed pathlib2 and enum34 from requirements. Replaced usage of pathlib2 with pathlib
* Fixed compile flag ordering and static library settings. Default compile flags are no longer forwarded to the parent targets. Added .h and .c files to source search. Added logging of compile commands
* Fixed progressbar and output collision issue
* add rst for pypi index
* Silenced git clone command
* Bugfix: added missing dialect flag in Target. Also made some paths absolute to prevent potential bugs
* Added progressbar. Disable does not work, yet
* Bugfix: updated multi-target test toml
* Bugfix: added missing \`import stat\` in test.py
* Improved handling of target directories, fixed tests. Renamed a few variables to hopefully make them clearer. Fixed rmtree call which is not able to remove downloaded git repositories
* Fixed test paths
* Fixed external project, HeaderOnly and SharedLibrary
* Fixed logging in target.py, added external scripts and external target. External target is not yet ready, as include-directories are not set appropriately, yet. Otherwise minor adjustments to variable names and log messages
* More cleanup of clang\_build
* Fixed binaries appearing in the root folder
* Removed more unused imports
* Removed unused imports
* Fixed pbr version to <4 to avoid pbr bug #1761134
* Another shot a fixing multiprocessing on Windows
* Hopefully fixed the windows multiprocessing issue
* Fixed dependency parsing being broken for the last line
* Fixed bug with multiprocessing on windows
* Added default values to argparse help
* Added another test
* Made dependency file parsing safer
* Fixed tests to run on Windows, too
* Removed unused imports
* Added missing networx dependency
* Added missing pathlib2 dependency
* Changed CI scripts to use the new tests
* Added tests and error reporting. Also simplified some bits
* Added more tests
* Added more tests and made clang-build easier to integrate
* Updated project to a more OO approach
* Updated gitignore to ignore all output from setup.py
* Cleaned up parsing of targets, added support for external scripts. Added \`[targetname.scripts]\` with sub-elements \`before\_compile\`, \`before\_link\`, \`after\_build\`. Added new \`Environment\` class to contain all the information such as build type, calling directory etc
* Improved generation of flags. The flags are now currently propagated up the dependency chain, as each target will include the flags of its dependencies. Also fixed the fact that a target was not including it's own (non-default) release and debug flags
* Fixed execution paths in CIs to fit new build folder structure
* Improved build directory paths and usage of build type
* Fixed usage of subprocess.call using lists instead of single strings
* Removed shell=True from subprocess calls
* Fixed search for supported dialects by padding with zeros. Also added verbose output stating supported dialects
* Created a basic pip setup configuration
* Fixed bug in generation of flags in Target. The default flags were not correctly prepended to the list of target flags when not using a build config file
* Updated Readme for new GitHub repo location
* Added License file
* Fixed bugs with processpool and default flags
* Added multiprocess build, added Buildable class to try and simplify. multiprocessing.Pool is now used to trace dependencies and compile in parallel. The Buildable class now contains all information related to a single source file. This is useful  for parallelisation. At some point either the target should contain a minimal amount of information, or the Buildable should contain a reference to the Target it belongs to (probably the latter), in order to avoid unnecessary data duplication
* Only build objects which need to be updated. Now, the object and source modification dates are checked to determine if it needs rebuilding. This is also done for everything listed in an automatically generated depfile
* Updated Readme
* Bugfix for "linking" of header-only libraries. Also improved platform-specific flags. Added -Xclang -flto-visibility-public-std to the platform\_extra\_flags\_... for Windows, which should suppress a warning and prevent possible problems. The platform-specific flags are now more granular (exe, shared, static)
* Improved compilation step by adding build folder structure and fixing shared library build. Also added .h and .c files to default file endings
* Added detection of clang++ and llvm-ar, warning if not found
* Added flags for position independent code on linux shared library
* CI: added OSX and more tests to Travis, added tests to AppVeyor. Also removed Linux build using Python3 from Travis, as it won't work properly
* Improved default options for different build types. Also added [target.flags] section to toml parsing, where compile, compileRelease etc. flags can be set. Also removed unneeded -DCOMPILING\_DLL from shared library  flags and fixed dependency link command
* Improved build process: now using dependency graph. The compile and link processes are each started at the leafs of the dependency graph, which is then traversed up to the roots. Target.compiled and Target.linked can later be used to check if a dependency has been built and the current target can continue when the target has multiple dependencies. This is especially useful for doing parallel builds. Added export declarations to test/lib-and-exe/mylib so that everything should now work also on Windows. Note: the dll needs to be placed next to the exe in order for the exe to run
* Started adding capabilities to build shared and static libraries and link them into other targets. Note: this feature is not yet functioning properly, as the link commands are not yet entirely correct
* Added some basic external project capabilities with git clone from url. Currently, only header-only libraries are dealt with properly in this contex. The include-paths are generated correctly and added to the build command of the
* Added first toml parsing of basic build script. Note that no securities are implemented, so it may crash if the file contents is different than in the added MWE
* Separated compilation and linking steps. Also improved verbose info output
* Fixed wrong paths in travis.yml
* Added detection of supported C++ dialects and default usage of newest dialect. Currently, a temporary file is created, containing a simple main function, which is compiled with a full range of -std=... flags to check which standards are available
* Fix Travis CI clang installation
* Added ability to set build type from command line
* Fixed clang call to clang++
* Added verbosity setting to Target. Calling with --verbose now prints the compile command per target
* Added CI test badges to Readme
*  Added AppVeyor CI build
* Added Travis CI build and fixed path creation for Python2
* Added test mini-project, added default include directories to target
* Added hello world test. Can be built with e.g. \`clang-build -d"test/hello"\`
* INIT: add .gitignore, README.md and first version of clang-build.py
