NEW IN WAF 1.9.11 ----------------- * Detect Visual Studio 2017 Build Tools using vswhere.exe #1945 * Improve preprocessor performance on system paths in verbose mode #1950 * Better installation defaults for windows import libraries #1860 * cpplint enhancements: --cpplint-root #1953 #1956 * eclipse project generator enhancements #1957 #1958 NEW IN WAF 1.9.10 ----------------- * Detect -pie and -rdynamic in parse_flags #1936 * Fix Fortran module naming case * Improve Visual Studio 2017 compilers detection (no vswhere/tools yet) #1925 * Prevent unnecessary Vala rebuilds due to vapi file installation * Process .vapi files as input source files * Reflect the current build group in bld.current_group * Obtain NO_LOCK_IN_TOP/RUN/OUT from os.environ too * Xcode9 generator fixes and example update #1939 #1943 NEW IN WAF 1.9.9 ---------------- * Fix QT5 detection on macOS 1912 * Fix Clang compilation database when no c compiler is found #1914 * Fix python 3 compatibility with cppcheck #1921 * Fix the thread index in parallel_debug * Fix install task for mac_files #1911 * Fix msvc version detection #1907 * Add VS2017 support #1927 * Add newer fortran flag detection #1916 * Add unity builds settings per task generator * Add run_build_cls parameter to conf.run_build/conf.check * Add a warning for missing cflags/cxxflags in gccdeps NEW IN WAF 1.9.8 ---------------- * Keep winres flags in subsequent detections #1908 * New -qopenmp option #1900 * Enable Java compat attribute as numbers #1899 * Qt5 library detection enhancements * Save compiler optimization flags from foo-config #1887 * Emscripten enhancements #1885 * Fix chmod with tuple rules #1884 * Include all vars in tuple rules #1883 * Compile glib2 schemas per directory #1881 * Boost libraries detection enhancements * Work around an annoying Python 3.6 regression #1889 NEW IN WAF 1.9.7 ---------------- * Conceal Python 2.6 subprocess errors on Unix-like systems * Read variables from self.vars #1873 * Revert archive permissions to be world-readable #1875 NEW IN WAF 1.9.6 ---------------- * Display @argfile contents in msvcdeps #1831 * Enable configurable preprocessor cache sizes #1833 * Allocate lru cache entries lazily * Let unity builds use relative paths for msys #1834 * Added --dump-test-scripts to the unit test module #1852 * Added a warning on ant_glob '.' uses #1853 * LaTeX configuration tests output results to config.log * Accept functools.partial() as task rules #1865 NEW IN WAF 1.9.5 ---------------- * Fix the command-line option for the python executable (--python -> --pythondir) #1812 * Add support for older PyQt4 bindings #1813 * Expand properly `--xyz=${VAR}` when `shell=False` #1814 * Add qt5 5.7.x new libraries to qt5 tool #1815 * Add install_user and install_group to bld.install/bld.install_as/bld.symlink_as * Reduce unnecesary build outputs verbosity #1819 #1828 * Prevent broken console encoding settings from causing additional failures #1823 * Let "waf --zones=argfile" display @argfile contents NEW IN WAF 1.9.4 ---------------- * Enable 'waf dist' in arbitrary paths #1806 * Handle subprocess timeouts in Python 3.3 #1807 * Set the configuration test build class on conf.run_build_cls * Provide execution order constraints in parallel configuration tests * Accept Task.cwd as str type NEW IN WAF 1.9.3 ---------------- * Improve the behaviour of parallel configuration tests (conf.multicheck) #1793 * Fix the Fortran Nag compiler detection #1797 * Detect Qt 5.7 (-std=c++11 flag) #1800 * Detect Boost python on Gentoo #1802 * Update the strip and netcache examples NEW IN WAF 1.9.2 ---------------- * Fix a Python 3 encoding error when displaying the file hash in 'waf dist' #1769 * Force qt5 static library detection with 'QT5_XCOMPILE=1 QT5_FORCE_STATIC=1 waf configure' #1588 * Force the parent os.environ value as default in pre-forked processes #1791 * Support flexflags as arguments #1782 * Update a few extensions: xcode, pytest, msvcdeps, cppcheck, win32_opts, codelite * Store Task.last_cmd selectively, so that extensions can use them (clang_compilation_database) * Set TaskBase.keep_last_cmd to keep the last command executed * New pyqt5 extension #1790 * Remove all non-BSD code from the Waf archive file NEW IN WAF 1.9.1 ---------------- * Execute proceses with run_regular_process when arguments are not serializable #1764 * Do not de-duplicate configuration flags assigned through uselib_store (conf.check tests) * Enable SVG pictures in the documentation NEW IN WAF 1.9.0 ---------------- * General enhancements: - Detect Clang first on many platforms, in particular on FreeBSD #1528 - Remove Node.cache_sig and Node.sig so that dependencies involve file contents by default #1580 - Change cflags in the beginning / cppflags at the end #1505 - Merge ${FOO}${BAR} flags in commands executed without a shell (no spaces inserted) - Interpret empty command-line defines as integer values for dependency calculation #1704 - Waf tools are not cached on "waf configure" by default anymore; pass conf.load(.., cache=True) - Enable a consistent progress bar output #1641 - Add ${VAR?X} constructs in script expressions to enable simple conditional outputs - Enable 'waf dist' to package arbitrary symlinks in tarballs #1719 - Enable regexp objects in @extension besides strings for file extensions - Match extensions in the order of last definition - Task generators are now processed group-by-group, so the next task generators are processed when all tasks in a previous group are complete; bld.post_mode=POST_LAZY becomes thus the default (playground/dynamic_build/ examples) - Process Qt5 files in the way suggested by the Qt documentation - Installation methods install_files/install_as/symlink_as create regular task generators and regular tasks so that installation outputs can be re-used easily - Subclass waflib.Build.ConfiguredContext to enable configuration-dependent user commands - Enable @argfile procesing in Task.exec_command when argument limits are exceeded - Apply optional tsk.env.PATH values in Task.exec_command - Enable ut_str to process scriptlet expressions for C/C++ unit tests - Minimize the amount of paths added to unit test environment variable - Restore configuration values with Configure.autoconfig='clobber' #1758 - Rebuilds are applied on file contents so that update_outputs is no longer needed * Performance highlights: - Reduce the key size in bld.task_sigs by adding bld.node_sigs and bld.imp_sigs - Remove __hash__ and __eq__ from Context, Node and Task #1629 - Detect visual studio versions lazily by default - Remove the uses of run_once that can consume a lot of memory; add a proper LRU cache - Enable pre-forked builds by default to achieve faster builds, up to 2x speedup on short-lived processes - Enable faster consumers in Runner.py - Add the tool 'nobuild.py' to help with performance troubleshooting - Enable profiling with the --profile command-line option * API changes: - The minimum Python version required is Python 2.5 - Add Task.get_cwd() - Remove the command called 'update' - Remove unused variables and functions: - TaskBase.attr() - Build.POST_BOTH - Options.platform - Options.cmds - Task.dep_vars (define Task.vars on instances if necessary) - Utils.nogc - Configure.err_handler - All duplicate split() functions from Utils - Remove the unused attribute 'mac_resources', use 'mac_files' instead (see demos/mac_app) - Remove qt4 and kde4 from the default modules - Refactor msvc.py - Task.sig_vars, Task.sig_explit_deps and Task.sig_implicit_deps return None - Use relative paths in apply_incpaths by default (and absolute ones when paths cross drives) - Modify Utils.run_once so that it accepts a list of *args - Better consistency between check_cfg and check_cc variables - task_gen.mapping and task_gen.prec are not defined by default on instances anymore, but instances can still define their own mappings to override the defaults, but in that case all mappings/precedences must be present. These features were not used in Waf 1.8. - Do not truncate _task suffixes from Task class names if present