Age | Commit message (Collapse) | Author | Files | Lines | |
---|---|---|---|---|---|
2023-06-28 | Minor tweaks and cleanups | Boris Kolpackov | 1 | -0/+3 | |
2023-04-18 | Add support for Assembler with C Preprocessor (.S) compilation | Boris Kolpackov | 1 | -6/+12 | |
Specifically, the c module now provides the c.as-cpp submodules which can be loaded in order to register the S{} target type and enable Assembler with C Preprocessor compilation in the c compile rule. For details, refer to "Assembler with C Preprocessor Compilation" in the manual. | |||||
2023-04-10 | Fix inconsistent /usr/local/{include,lib} search | Boris Kolpackov | 1 | -10/+9 | |
In particular, we were adding -L/usr/local/lib which means it is considered before built-in directories (/usr/lib, etc) but in our own library search code we were considering it after (because we were storing it at the end of sys_lib_dirs). Now in both sys_{hdr,lib}_dirs we store /usr/local/{include,lib} after mode and before built-in directories. Note that as part of this fix we now pass -isystem /usr/local/include instead of -idirafter (which is consistent with the -L behavior and also the customarily expected semantics). | |||||
2023-04-05 | Allow creating context with bare minimum of initializations | Boris Kolpackov | 1 | -2/+2 | |
This is used by bpkg to detect forwarded configurations without incurring the full context creation overhead. | |||||
2023-03-22 | Initial work on relocatable install: config.install.relocatable and rpath | Boris Kolpackov | 1 | -2/+66 | |
2022-12-09 | Enable diagnostics color in GCC and Clang | Boris Kolpackov | 1 | -0/+2 | |
2022-11-30 | Diagnose absence of import library after link.exe invocation (GH issue #231) | Boris Kolpackov | 1 | -7/+22 | |
If a library does not export any symbols then link.exe skips creating the import library. | |||||
2022-11-29 | Fix backlink logic for target groups | Boris Kolpackov | 1 | -5/+24 | |
We used to backlink ad hoc group members both via the group and as individual members. And for explicit groups it was done only via individual members, which means it only works correctly if every member is individually updated. Now both types of groups are backlinked from the group target. | |||||
2022-11-23 | Rework diag_buffer interface to facilitate correct destruction order | Boris Kolpackov | 1 | -11/+13 | |
2022-11-22 | Add support for Objective-C/C++ compilation in cc module | Boris Kolpackov | 1 | -33/+46 | |
2022-11-16 | Initial low verbosity diagnostics rework | Boris Kolpackov | 1 | -1/+1 | |
2022-11-08 | Make process exit diagnostics consistent | Boris Kolpackov | 1 | -3/+6 | |
In particular, we now always print error message on non-0 exit except in cases where such exit is ignored. | |||||
2022-11-08 | Tighten args const-ness in the run*() function family | Boris Kolpackov | 1 | -4/+0 | |
2022-11-08 | More work on child process diagnostics buffering | Boris Kolpackov | 1 | -16/+3 | |
2022-10-27 | Initial work on child process diagnostics buffering | Boris Kolpackov | 1 | -38/+68 | |
Currently this is implemented for C/C++ compile and link rules. | |||||
2022-10-21 | Add clarifying comment | Boris Kolpackov | 1 | -0/+4 | |
2022-10-10 | Preparatory work for public/private variable distinction | Boris Kolpackov | 1 | -1/+7 | |
We still always use the public var_pool from context but where required, all access now goes through scope::var_pool(). | |||||
2022-09-28 | Omit -l for binless libraries, metadata from common .pc file | Boris Kolpackov | 1 | -1/+0 | |
Having -l options for binless (header-only) libraries makes it unusable from other build systems. But omitting them could make the metadata incomplete (for example, importable headers), so we omit that as well. | |||||
2022-08-16 | Improve MSVC /DEBUG option handling | Boris Kolpackov | 1 | -19/+26 | |
Specifically, handle the /DEBUG:<value> form in addition to /DEBUG and recognize /DEBUG:NONE. | |||||
2022-07-26 | Disable risky sanity check | Boris Kolpackov | 1 | -1/+3 | |
2022-07-21 | Fix bug in common .pc file generation logic (GitHub issue #198) | Boris Kolpackov | 1 | -1/+1 | |
2022-06-29 | Work around MSVC 14.3 issues | Boris Kolpackov | 1 | -2/+2 | |
2022-06-29 | Make sure we generate common pkg-config file for only liba{}/libs{} | Boris Kolpackov | 1 | -2/+19 | |
2022-06-28 | Complete support for saving/loading library metadata to/from pkg-config files | Boris Kolpackov | 1 | -5/+21 | |
2022-06-24 | Allow ad hoc rules not to list targets that are updated during match | Boris Kolpackov | 1 | -7/+11 | |
For example, this allows a Qt moc rule not to list generated headers from libQtCore since they are pre-generated by the library. | |||||
2022-06-24 | Add ability to get common interface options via $x.lib_poptions() | Boris Kolpackov | 1 | -3/+12 | |
Specifically, the output target type may now be omitted for utility libraries (libul{} and libu[eas]{}). In this case, only "common interface" options will be returned for lib{} dependencies. This is primarily useful for obtaining poptions to be passed to tools other than C/C++ compilers (for example, Qt moc). | |||||
2022-06-24 | Match libraries before update for install prerequisites in cc::link_rule | Boris Kolpackov | 1 | -4/+11 | |
2022-05-23 | Detect cross-linking and pass -rpath-link in addition to -rpath | Boris Kolpackov | 1 | -7/+69 | |
According to the GNU ld documentation (and painful practical experience), -rpath does not always imply -rpath-link for cross-linkers. | |||||
2022-05-05 | Recognize -pthread as king of -l in *.libs | Boris Kolpackov | 1 | -2/+12 | |
2022-05-05 | Allow linking libraries without any sources/headers with hint | Boris Kolpackov | 1 | -3/+8 | |
This can be useful for creating "metadata libraries". | |||||
2022-04-20 | Fix bug in recursively-binless detection logic | Boris Kolpackov | 1 | -1/+5 | |
2022-04-20 | Get rid of unnecessary move() call | Boris Kolpackov | 1 | -1/+1 | |
2022-04-19 | Use target recipe for auxiliary data storage during match-apply | Boris Kolpackov | 1 | -16/+13 | |
In particular, we now have separate auxiliary data storage for inner and outer operations. | |||||
2022-04-19 | Switch to using std::function for target::data_pad | Boris Kolpackov | 1 | -3/+2 | |
2022-04-13 | Fix bug in previous commit | Boris Kolpackov | 1 | -1/+1 | |
2022-04-13 | Prune library graph traversal for recursively-binless libraries | Boris Kolpackov | 1 | -22/+150 | |
2022-04-07 | Rename {match,execute}() to *_sync(), add *_complete() | Boris Kolpackov | 1 | -1/+1 | |
In particular, the match() rename makes sure it doesn't clash with rule::match() which, after removal of the hint argument in simple_rule, has exactly the same signature, thus making it error-prone to calling recursively. | |||||
2022-04-06 | Add support for rule hints | Boris Kolpackov | 1 | -3/+3 | |
A rule hint is a target attribute, for example: [rule_hint=cxx] exe{hello}: c{hello} Rule hints can be used to resolve ambiguity when multiple rules match the same target as well as to override an unambiguous match. | |||||
2022-03-25 | Store bin.whole flag in pkg-config files | Boris Kolpackov | 1 | -1/+1 | |
2022-03-15 | Don't consider mtime of failed to unmatch prerequisite in ad hoc recipe | Boris Kolpackov | 1 | -1/+2 | |
2022-03-10 | Add reverse_execute_prerequisites() variant | Boris Kolpackov | 1 | -5/+24 | |
2022-03-10 | Remove update variable from source of synthesized dependency | Boris Kolpackov | 1 | -1/+14 | |
2022-03-09 | Parallel implementation of update_during_match_prerequisites() | Boris Kolpackov | 1 | -2/+3 | |
2022-03-08 | Improve performance of update during match for multiple targets | Boris Kolpackov | 1 | -9/+5 | |
2022-03-08 | Update C/C++ headers and ad hoc sources during match by default | Boris Kolpackov | 1 | -19/+50 | |
Essentially, all headers as well as ad hoc headers and sources are now treated by the cc::link_rule as if they had update=match unless explicit update=execute is specified. | |||||
2022-03-08 | Add update=execute special value for cases where it's not default | Boris Kolpackov | 1 | -1/+1 | |
2022-03-07 | Add support for update=unmatch|match to ad hoc recipes | Boris Kolpackov | 1 | -4/+6 | |
2022-03-02 | Add update operation-specific variable with unmatch|match additional values | Boris Kolpackov | 1 | -10/+94 | |
Note that the unmatch (match but do not update) and match (update during match) values are only supported by certain rules (and potentially only for certain prerequisite types). Additionally: - All operation-specific variables are now checked for false as an override for the prerequisite-specific include value. In particular, this can now be used to disable a prerequisite for update, for example: ./: exe{test}: update = false - The cc::link_rule now supports the update=match value for headers and ad hoc prerequisites. In particular, this can be used to make sure all the library headers are updated before matching any of its (or dependent's) object files. | |||||
2022-02-16 | Get rid of stray variable | Boris Kolpackov | 1 | -2/+0 | |
2022-02-15 | Fix stray logic where libue{} was still considered member of libul{} | Boris Kolpackov | 1 | -10/+27 | |
Fixes GitHub issue #179. |