diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..701d900 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,186 @@ +## ChangeLog + +### v1.14.0 + +#### New Features + +- #45 - Add Rscons::VarSet#values_at + +#### Fixes + +- #44 - Environment#print_builder_run_message should support string commands + +### v1.13.0 + +#### New Features + +- #43 - Add ability to record side-effect file production + +### v1.12.0 + +#### New Features + +- #40 - env.depends should imply env.build_after +- #41 - be more colorful + +#### Fixes + +- #39 - wait for in-progress subcommands to complete on build failure +- #42 - cloned Environments should inherit n_threads + +### v1.11.1 + +#### Fixes + +- fix the circular build dependency detection logic + +### v1.11.0 + +#### New Features + +- Change default Environment :clone option to :all to clone all attributes +- #38 - raise error when circular dependencies are found +- #34 - Allow overriding n_threads on a per-Environment level + +#### Fixes + +- #35 - env.build_after should expand paths +- #36 - SHCFLAGS and SHCXXFLAGS should inherit non-SH flags by default +- #37 - Fix non-blocking thread-wait if Rscons.n_threads is set to 0 + +### v1.10.0 + +#### New Features + +- #23 - add parallelization - builds are now parallelized by default +- #31 - add LEXSUFFIX, YACCSUFFIX construction variables +- #30 - place object files for absolute source paths under build_root +- #28 - support redirecting standard output using the Command builder +- Always use a build root and default it to "build" +- Add builder features +- #8 - add SharedObject and SharedLibrary builders + +#### Fixes + +- expand target and source paths before calling Builder#create_build_target +- #29 - fix PROGSUFFIX handling +- #32 - Pre-build hooks do not respect modified key values + +### v1.9.3 + +- Environment#parse_flags should put -std=XXX flags in CCFLAGS, not CFLAGS + +### v1.9.2 + +- allow phony targets in conjunction with build roots + +### v1.9.1 + +- change *SUFFIX defaults to arrays +- add various C++ file suffixes +- use ${INCPREFIX} instead of hard-coded "-I" in Preprocess builder + +### v1.9.0 + +#### New Features + +- #6 - add Install and Copy builders +- #22 - allow overriding Command builder short description with CMD_DESC variable +- #24 - add "rscons" executable +- #25 - add support for phony targets given as Symbols instead of Strings +- #26 - support registering multiple build targets with the same target name +- #27 - add Directory builder + +#### Fixes + +- #20 - fix variable references that expand to arrays in build target sources +- #21 - rework Preprocess builder to consider deep dependencies +- fix Rscons.set_suffix to append the given suffix if the filename has none +- remove ${CFLAGS} from default CPP_CMD + +### v1.8.1 + +- fix Environment#dump when construction variables are symbols + +### v1.8.0 + +- new Command builder to execute arbitrary user commands +- new SimpleBuilder class + - create new builders quickly by passing a block to Environment#add_builder +- improved YARD documentation +- add Environment#dump to debug Environment construction variables + +### v1.7.0 + +- allow build hooks to register new build targets +- add post-build hooks (register with Environment#add_post_build_hook) +- clear all build targets after processing an Environment +- allow trailing slashes in arguments to Environment#build_dir + +### v1.6.1 + +- add DEPFILESUFFIX construction variable to override dependency file suffix +- fix Environment#depends to expand its arguments for construction variables + +### v1.6.0 + +- support lambdas as construction variable values + +### v1.5.0 + +- add "json" as a runtime dependency +- update construction variables to match SCons more closely + - add CPPDEFPREFIX, INCPREFIX, CPPDEFINES, CCFLAGS, LIBDIRPREFIX, and LIBLINKPREFIX +- add Environment#shell +- add Environment#parse_flags, #parse_flags!, #merge_flags +- unbuffer $stdout by default +- add PROGSUFFIX construction variable (defaults to .exe on MinGW/Cygwin) +- add Rscons::BuildTarget and Builder#create_build_target +- update specs to RSpec 3.x and fix to run on MinGW/Cygwin/Linux +- add YARD documentation to get to 100% coverage + +### v1.4.3 + +- fix builders properly using construction variable overrides +- expand nil construction variables to empty strings + +### v1.4.2 + +- add Environment#expand_path +- expand construction variable references in builder targets and sources before invoking builder + +### v1.4.1 + +- fix invoking a builder with no sources while a build root defined + +### v1.4.0 + +- add CFile builder +- add Disassemble builder +- add Preprocess builder +- pass the Environment object to build hooks in the :env key of the build_op parameter +- expand target/source paths beginning with "^/" to be relative to the Environment's build root +- many performance improvements, including: + - use JSON instead of YAML for the cache to improve loading speed (Issue #7) + - store a hash of the build command instead of the full command contents in the cache + - implement copy-on-write semantics for construction variables when cloning Environments + - only load the cache once instead of on each Environment#process + - only write the cache when something has changed +- fix Cache#mkdir_p to handle relative paths (Issue #5) +- flush the cache to disk if a builder raises an exception (Issue #4) + +### v1.3.0 + +- change Environment#execute() options parameter to accept the following options keys: + - :env to pass an environment Hash to Kernel#system + - :options to pass an options Hash to Kernel#system + +### v1.2.0 + +- add :clone option to Environment#clone to control exactly which Environment attributes are cloned +- allow nil to be passed in to Environment#build_root= + +### v1.1.0 + +- Change Cache#up_to_date?() and #register_build() to accept a single target + file or an array of target file names diff --git a/README.md b/README.md index efb6ebe..41d67e5 100644 --- a/README.md +++ b/README.md @@ -562,193 +562,6 @@ env.depends("my_app", "config/link.ld", "README.txt", *Dir.glob("assets/**/*")) Documentation for the complete Rscons API can be found at http://www.rubydoc.info/github/holtrop/rscons/master. -## Release Notes - -### v1.14.0 - -#### New Features - -- #45 - Add Rscons::VarSet#values_at - -#### Fixes - -- #44 - Environment#print_builder_run_message should support string commands - -### v1.13.0 - -#### New Features - -- #43 - Add ability to record side-effect file production - -### v1.12.0 - -#### New Features - -- #40 - env.depends should imply env.build_after -- #41 - be more colorful - -#### Fixes - -- #39 - wait for in-progress subcommands to complete on build failure -- #42 - cloned Environments should inherit n_threads - -### v1.11.1 - -#### Fixes - -- fix the circular build dependency detection logic - -### v1.11.0 - -#### New Features - -- Change default Environment :clone option to :all to clone all attributes -- #38 - raise error when circular dependencies are found -- #34 - Allow overriding n_threads on a per-Environment level - -#### Fixes - -- #35 - env.build_after should expand paths -- #36 - SHCFLAGS and SHCXXFLAGS should inherit non-SH flags by default -- #37 - Fix non-blocking thread-wait if Rscons.n_threads is set to 0 - -### v1.10.0 - -#### New Features - -- #23 - add parallelization - builds are now parallelized by default -- #31 - add LEXSUFFIX, YACCSUFFIX construction variables -- #30 - place object files for absolute source paths under build_root -- #28 - support redirecting standard output using the Command builder -- Always use a build root and default it to "build" -- Add builder features -- #8 - add SharedObject and SharedLibrary builders - -#### Fixes - -- expand target and source paths before calling Builder#create_build_target -- #29 - fix PROGSUFFIX handling -- #32 - Pre-build hooks do not respect modified key values - -### v1.9.3 - -- Environment#parse_flags should put -std=XXX flags in CCFLAGS, not CFLAGS - -### v1.9.2 - -- allow phony targets in conjunction with build roots - -### v1.9.1 - -- change *SUFFIX defaults to arrays -- add various C++ file suffixes -- use ${INCPREFIX} instead of hard-coded "-I" in Preprocess builder - -### v1.9.0 - -#### New Features - -- #6 - add Install and Copy builders -- #22 - allow overriding Command builder short description with CMD_DESC variable -- #24 - add "rscons" executable -- #25 - add support for phony targets given as Symbols instead of Strings -- #26 - support registering multiple build targets with the same target name -- #27 - add Directory builder - -#### Fixes - -- #20 - fix variable references that expand to arrays in build target sources -- #21 - rework Preprocess builder to consider deep dependencies -- fix Rscons.set_suffix to append the given suffix if the filename has none -- remove ${CFLAGS} from default CPP_CMD - -### v1.8.1 - -- fix Environment#dump when construction variables are symbols - -### v1.8.0 - -- new Command builder to execute arbitrary user commands -- new SimpleBuilder class - - create new builders quickly by passing a block to Environment#add_builder -- improved YARD documentation -- add Environment#dump to debug Environment construction variables - -### v1.7.0 - -- allow build hooks to register new build targets -- add post-build hooks (register with Environment#add_post_build_hook) -- clear all build targets after processing an Environment -- allow trailing slashes in arguments to Environment#build_dir - -### v1.6.1 - -- add DEPFILESUFFIX construction variable to override dependency file suffix -- fix Environment#depends to expand its arguments for construction variables - -### v1.6.0 - -- support lambdas as construction variable values - -### v1.5.0 - -- add "json" as a runtime dependency -- update construction variables to match SCons more closely - - add CPPDEFPREFIX, INCPREFIX, CPPDEFINES, CCFLAGS, LIBDIRPREFIX, and LIBLINKPREFIX -- add Environment#shell -- add Environment#parse_flags, #parse_flags!, #merge_flags -- unbuffer $stdout by default -- add PROGSUFFIX construction variable (defaults to .exe on MinGW/Cygwin) -- add Rscons::BuildTarget and Builder#create_build_target -- update specs to RSpec 3.x and fix to run on MinGW/Cygwin/Linux -- add YARD documentation to get to 100% coverage - -### v1.4.3 - -- fix builders properly using construction variable overrides -- expand nil construction variables to empty strings - -### v1.4.2 - -- add Environment#expand_path -- expand construction variable references in builder targets and sources before invoking builder - -### v1.4.1 - -- fix invoking a builder with no sources while a build root defined - -### v1.4.0 - -- add CFile builder -- add Disassemble builder -- add Preprocess builder -- pass the Environment object to build hooks in the :env key of the build_op parameter -- expand target/source paths beginning with "^/" to be relative to the Environment's build root -- many performance improvements, including: - - use JSON instead of YAML for the cache to improve loading speed (Issue #7) - - store a hash of the build command instead of the full command contents in the cache - - implement copy-on-write semantics for construction variables when cloning Environments - - only load the cache once instead of on each Environment#process - - only write the cache when something has changed -- fix Cache#mkdir_p to handle relative paths (Issue #5) -- flush the cache to disk if a builder raises an exception (Issue #4) - -### v1.3.0 - -- change Environment#execute() options parameter to accept the following options keys: - - :env to pass an environment Hash to Kernel#system - - :options to pass an options Hash to Kernel#system - -### v1.2.0 - -- add :clone option to Environment#clone to control exactly which Environment attributes are cloned -- allow nil to be passed in to Environment#build_root= - -### v1.1.0 - -- Change Cache#up_to_date?() and #register_build() to accept a single target - file or an array of target file names - ## Contributing 1. Fork it