8 Change Log

v2.0.1

Fixes

  • #112 - Install builder cannot replace a currently executing binary on Linux

v2.0.0

v1.17.0

New Features

  • allow construction variable expansion on true and false values.
  • remove makefile target name check when parsing dependencies

v1.16.0

New Features

  • Add Rscons.glob
  • Support command-line variables
  • improve debuggability of cache.up_to_date?
  • allow passing a VarSet into cache methods

Fixes

  • generate dependencies for D builds

v1.15.0

  • allow json 1.x or 2.x

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