summaryrefslogtreecommitdiff
path: root/CC/RULES
AgeCommit message (Collapse)Author
2024-08-14Merge branch 'just-rules' into rulesKlaus Aehlig
2024-08-14Make CC binary and library support providing information for lintingKlaus Aehlig
If the configuration variable "LINT" is set, also provide information on compile actions and header files (with preprocessing as described command, in particular also providing the correct flags) in correct dependency context. In this way, lint rules can request the needed information for performing their checks.
2024-08-07Merge branch 'just-rules' into rulesKlaus Aehlig
2024-08-07Add field to ["CC", "defaults"] to specify arguments for arKlaus Aehlig
... instead of hard-coding ["cqs"].
2024-07-25["CC", "library"] Add concept of componentsKlaus Aehlig
... i.e., dependencies that are to be included into the library itself. In this way, a large library (convenient for a user to have single library to care about) can be defined as a collection of smaller libraries. Technically, components are like public dependencies on libraries transitioned to object libraries with the following differences - the header files (i.e., runfiles) of the components become header files of the resulting libary, and - the objects (i.e., artifacts) of the components become objects of the library rather than link dependencies. To achive the transfer of the object to the requesting library, an object library can be instructed to drop the objects from the link arguments; in order to continue to support tranditional object libraries in the style of, e.g., cmake, this is done by a different configuration variable that is transitioned as well. In particular, the object-library test case (using a configure target) can be left unchanged.
2024-07-25["CC", "library"]: Make object-only a configuration propertyKlaus Aehlig
... instead of a property of the library itself. An object library is not a meaningful concept in itself; it only exists, because a consumer wants to link the library in its entirety. But consumer-specified properties should be propagated through configuration transitions and the definition of the library should not care about how it is consumed; this is also the approach we follow with respect to building a library position independent. As oposed to position-independent building, however, the property of being included unconditionally is not propagated transitively.
2024-06-25Merge commit 'c301e85a61dc6e43b8cc6ce8f44a902c392163a2' into HEADPaul Cristian Sarbu
2024-06-25CC defaults: Provide the debug stage also for implicit depsPaul Cristian Sarbu
This ensures that one can inspect, e.g., generated protobuf source files (.pb.cc) or standard library headers while debugging proto libraries or general C++ libraries and binaries, respectively.
2024-06-03debug rule: Fix staging of headersPaul Cristian Sarbu
For libraries the headers of private dependencies were wrongly skipped from staging. For binaries, no headers were passed at all in the provides map. To fix these issues, an additional field is added in the provides map to ensure we collect, and then properly stage, all needed headers for both libraries and binaries.
2024-06-03debug rule: Add flag field to skip installing extra debug artifactsPaul Cristian Sarbu
This is useful when we want to install targets built in debug mode, but do not want to stage all the additional source and header files if no debugging is being performed, e.g., in tests.
2024-06-03debug rule: Fix staging of headersPaul Cristian Sarbu
For libraries the headers of private dependencies were wrongly skipped from staging. For binaries, no headers were passed at all in the provides map. To fix these issues, an additional field is added in the provides map to ensure we collect, and then properly stage, all needed headers for both libraries and binaries.
2024-06-03debug rule: Add flag field to skip installing extra debug artifactsPaul Cristian Sarbu
This is useful when we want to install targets built in debug mode, but do not want to stage all the additional source and header files if no debugging is being performed, e.g., in tests.
2024-05-13Merge commit '07924d28e81fe36ddb8e020552a7392fcf1227a0' into HEADPaul Cristian Sarbu
2024-05-13rules: Support staging debug artifacts in install-with-deps rulePaul Cristian Sarbu
The existing rule is extended to also stage source files if in debug mode, in order for a debugger to be able to find all needed symbols. Conflicting paths are allowed; in case of conflicts, the file from the closest target in the dependency chain wins.
2024-05-03Implement object_only libraryOliver Reiche
2024-04-29Merge branch 'just-rules' into rulesKlaus Aehlig
2024-04-29["CC", "defaults"] rule: Add "ADD_COMPILE_FLAGS"Klaus Aehlig
The C++ programming language is tightly related to the C programming language. Consequently, the command line interface for C and C++ are also related and share quite a number of compile flags. Honor this tight connection by have in our defaults a field allowing to extend both compile flags, those for C as well as those for C++. In this way, build defaults can be described in a more readable way.
2023-11-20rules: Fix flag inheritanceOliver Reiche
... which should accumulate values from all base targets unless the flag type (CFLAGS, CXXFLAGS, or LDFLAGS) is explicity overwritten by the inheritor.
2023-11-20defaults: Fix flag inheritanceOliver Reiche
... which should accumulate values from all base targets unless the flag type (CFLAGS, CXXFLAGS, or LDFLAGS) is explicity overwritten by the inheritor.
2023-08-21Merge branch 'just-rules' into rulesKlaus Aehlig
2023-08-21rules: Add documentation for the implict dependenciesKlaus Aehlig
2023-08-16Merge branch 'rules/oss' into rules/rules-cc-rulesOliver Reiche
2023-08-16rules: Support BUILD_ARCH for CC defaultsOliver Reiche
2023-08-16rules: Propagate PATH list from defaultsOliver Reiche
... instead of creating an ENV from it and propagating this. The idea is to keep PATH entries separate and only join them with ":" when we need it. In this way, we can accumulate PATHs from multiple defaults later, and perform a deduplication ("nub_left") to shorten the final string length.
2023-08-16rules: Extend toolchains via defaults from baseOliver Reiche
2023-06-16rules: Install pkgconfig files to $PREFIX/lib/pkgconfigOliver Reiche
2023-05-31Change install location of pkg-config files in install-with-deps ruleSascha Roloff
2023-05-30rules-cc: Support for external toolchainsOliver Reiche
2023-05-30rules-cc: Use field_map_provider for default-ENVOliver Reiche
2023-05-30rules-cc: Fix missing LDFLAGS propagationOliver Reiche
2023-05-30rules: Support for external toolchainsOliver Reiche
2023-05-30rules: Use field_map_provider for default-ENVOliver Reiche
2023-04-19["CC", "defaults"] add basic field documentationKlaus Aehlig
2023-04-18Merge commit '0db46fe'Klaus Aehlig
2023-04-18Merge commit '9e061c2'Klaus Aehlig
2023-04-18rules: Support hdrs-only for install-with-deps ruleOliver Reiche
2023-04-18rules: Move install-with-deps to EXPRESSIONSOliver Reiche
2023-04-18rules: Support install-with-deps ruleOliver Reiche
Backport of commits a382b308b9011606e7d07376808812d51631d558 and 5ae5134804b6edaaffec593868f133dd840ef7df from the rules-cc repository.
2023-02-28Merge commit '3b08fc29eff1fa61c3fd317ca5321d47cddd9c69' into HEADKlaus Aehlig
2023-02-28Various typo fixesPaul Cristian Sarbu
Co-authored-by: Sascha Roloff <sascha.roloff@huawei.com>
2023-01-20Support flag-files for existing rules and expressionsOliver Reiche
2023-01-10rules: Add support for pkg-configOliver Reiche
2023-01-10rules: Add rule "install-with-deps"Oliver Reiche
2022-12-16rules: Implement private-proto for librariesOliver Reiche
2022-12-16rules: Implement ldflags for (shared) librariesOliver Reiche
2022-12-16rules: Add support for shared librariesOliver Reiche
2022-12-16rules: Add support for "LDFLAGS" and "ADD_LDFLAGS"Oliver Reiche
2022-12-09rules: cflags have precedence over definesOliver Reiche
2022-12-09rules: Refactoring and minor improvementsOliver Reiche
Compared to the previous commit, the action graphs for just and its unit tests are unchanged. - Git hash of action graph for ["",""]: c6e75f17abd7ffaab6ff9bb725ad67ec0bf6c973 - Git hash of action graph for ["test/buildtool","TESTS"]: 8063dfb3dd7daa9ae01d95c177e14946f785c57e Refactor: - "local cflags" to "private-cflags" - "local defines" to "private-defines" - "link externals" to "private-ldflags" - "deps" to "private-deps" for (test) binaries - "proto" to "private-proto" for binaries Improvements: - consistent variable declaration order: OS, ARCH, HOST_ARCH, TARGET_ARCH, CC, CXX, CFLAGS, CXXFLAGS, ADD_CFLAGS, ADD_CXXFLAGS, AR, ENV, PATH - use fields close to their definition (in RULES) - use common expression for binaries and test binaries - split expression "flags" and "compiler" ... to separate ones for CC and CXX. - rename "transition" to "deps-transition" ... to avoid conflicts with other transitions. - support "defaults-transition" for CC expressions Implement: - "cflags" for libraries - "private-cflags" for (test) binaries - "private-defines" for test binaries - "private-ldflags" for test binaries - (public) "defines" for libraries
2022-12-09rules: Drop the ["CC", "header directory"]Oliver Reiche
... in favor of the "tree" built-in rule.