aboutsummaryrefslogtreecommitdiff
path: root/build2/utility.cxx
AgeCommit message (Collapse)AuthorFilesLines
2019-04-09Add dry-run support to test rulesBoris Kolpackov1-0/+9
2019-01-16Update copyright yearKaren Arutyunov1-1/+1
2018-11-05Only search for external tools (compilers, linkers, etc) in PATHBoris Kolpackov1-3/+4
Specifically, omit the current executable's directory on Windows since there is no reason for them to be found there automagically and this can lead to surprising behavior (for example, our MinGW GCC being used instead of the user's even though the user's is in PATH before ours).
2018-08-21Unset CL and _CL_ environment variables when detecting MSVCBoris Kolpackov1-3/+12
2018-07-30Make project variable to be of project_name typeKaren Arutyunov1-7/+9
2018-06-20Add $process.run() and $process.run_regex() functionsBoris Kolpackov1-2/+6
$process.run(<prog>[ <args>...]) Return trimmed stdout. $process.run_regex(<prog>[ <args>...], <pat> [, <fmt>]) Return stdout lines matched and optionally processed with regex. Each line of stdout (including the customary trailing blank) is matched (as a whole) against <pat> and, if successful, returned, optionally processed with <fmt>, as an element of a list.
2018-06-01Remove redundant header includeKaren Arutyunov1-1/+0
2018-05-19Update copyright yearKaren Arutyunov1-1/+1
2018-04-28Move trim(), next_word() to libbutlBoris Kolpackov1-37/+0
2018-04-26Implement run buildfile directiveBoris Kolpackov1-10/+18
Now we can do: run echo 'foo = bar' print $foo
2018-01-08Implement compiler_info cachingBoris Kolpackov1-1/+6
2018-01-08Complete runtime/stdlib detectionBoris Kolpackov1-1/+2
2018-01-05Extend find_option_prefix() to return optionBoris Kolpackov1-20/+20
2017-12-17Trace non-zero process exit codeBoris Kolpackov1-3/+9
Also convert to using operator<<(ostream,process_exit).
2017-12-16Improve process execution diagnostics by reusing run_*() APIBoris Kolpackov1-19/+30
2017-12-16Split stream verbosity into components (path, extension)Boris Kolpackov1-1/+1
Use to make sure structured result output always contains absolute target path.
2017-12-09Fix git commit id calculationBoris Kolpackov1-1/+1
2017-12-04Recognize empty cc.patternBoris Kolpackov1-1/+1
2017-08-06Filter out warning as error options during preprocessingBoris Kolpackov1-8/+14
2017-08-06Print progress to terminal by defaultKaren Arutyunov1-0/+1
2017-06-16Clean up module-related diagnosticsBoris Kolpackov1-0/+9
2017-06-12Add workaround for Clang module import during preprocessingBoris Kolpackov1-13/+13
2017-05-13Fix VC15 warnings (/W3)Karen Arutyunov1-1/+5
2017-05-01Add hxx extension for headersKaren Arutyunov1-5/+5
2017-04-28Align build.version.* variables with standard version/version moduleBoris Kolpackov1-1/+1
2017-04-28Use standard_version for module versioning checksBoris Kolpackov1-81/+11
2017-04-28Implement support for pre-processing version headers (or other files)Boris Kolpackov1-0/+2
Also implement the build system version check.
2017-04-10Adapt to process_error changeKaren Arutyunov1-1/+1
2017-03-10Implement support for wildcard patternsBoris Kolpackov1-1/+9
2017-03-02Implement parallel matchBoris Kolpackov1-0/+10
2017-01-09Make use of operator<<(ostream, exception)Karen Arutyunov1-5/+5
2017-01-05Update copyright yearBoris Kolpackov1-1/+1
2016-12-07Make use of butl::path::current(), butl::path::parent()Karen Arutyunov1-2/+2
2016-11-22Use diagnostics facility from libbutlBoris Kolpackov1-18/+18
2016-11-07Make build.driver path absoluteBoris Kolpackov1-2/+4
2016-11-04Add --no-line, --no-column optionsBoris Kolpackov1-0/+1
2016-11-04Add build.driver variable with build system driver path (argv[0])Boris Kolpackov1-1/+4
2016-11-04Rework test runnerBoris Kolpackov1-0/+3
2016-11-04Factor global initialization into init() analogous to reset()Boris Kolpackov1-0/+19
2016-11-04Minor dependency cleanupBoris Kolpackov1-1/+54
2016-09-17Audit all print_process()/process ctor for path_search()Karen Arutyunov1-1/+1
2016-08-29Implement initial support for library versioningBoris Kolpackov1-1/+1
Currently we only support platform-independent versions that get appended to the library name. The magic incantation is this: lib{foo}: bin.lib.version = @-1.2 This will produce libfoo-1.2.so, libfoo-1.2.dll, etc. In the future we will support things like this: lib{foo}: bin.lib.version = linux@1.2.3 freebsd@1.2 windows@1.2
2016-08-26Add pkg-config support for import installedBoris Kolpackov1-3/+8
Redesign library importing/exporting while at it.
2016-08-24Handle *.export.libs, distinguish interface and implementation dependenciesBoris Kolpackov1-0/+19
A library dependency on another libraries is either "interface" or "implementation". If it is interface, then everyone who links to this library should also link to the interface dependency, explicitly. A good example of an interface dependency is a library API that is called in inline functions. Interface dependencies of a library should be explicitly listed in the *.export.libs (where we can also list target names). So the typical usage will be along these lines: import int_libs = libfoo%lib{foo} import int_libs += ... import imp_libs = libbar%lib{bar} import imp_libs += ... lib{baz}: ... $int_libs $imp_libs lib{baz}: cxx.export.libs = $int_libs
2016-08-22Cache process_path, use fallback search directory for binutilsBoris Kolpackov1-5/+42
2016-08-21Adjust to new butl::process interfaceBoris Kolpackov1-2/+2
2016-08-12Implement c/cxx toolchain cross-hintingBoris Kolpackov1-0/+15
2016-08-10Add ignore case support for find_option()Karen Arutyunov1-32/+22
2016-07-29Make /EHsc and /MD default for VC compilerBoris Kolpackov1-10/+113
2016-07-28Adjust to new path implementation, use to support reversibilityBoris Kolpackov1-19/+3