summaryrefslogtreecommitdiff
path: root/rules/CC
AgeCommit message (Collapse)Author
2022-12-09rules: cflags have precedence over definesOliver Reiche
2022-12-09rules: ldflags have precedence over transitive link argsOliver Reiche
2022-12-09rules: Create library in stage directoryOliver Reiche
2022-12-09rules: Add cross-compile support for testsOliver Reiche
2022-12-09rules: Add argument support for test binariesOliver 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.
2022-12-09rules: Fix missing cflags for linking test binaryOliver Reiche
... which is required for cross-compilation, e.g., clang's `-target` option.
2022-11-21support the concept of private depsKlaus Aehlig
i.e., libraries that are used only in the implementation without use in the public header files. In this way, the set of headers exposed to dependencies can be reduced leading potentially to better incrementality.
2022-11-21rules/CC/EXPRESSIONS: drop unused local defineKlaus Aehlig
2022-11-02proto: honor configured archiverAlberto Sartori
2022-11-02rules: don't always use the default archiverAlberto Sartori
2022-10-31CC/test test_runner.sh: correctly report the reusltKlaus Aehlig
The test runner is supposed to report the reult in a file called 'result' in the top-level action directory. However, before starting the actual test, it changes the working directory to the subdir 'work' where the input of the test action is located. Therefore, when reporting the result, the correct file name is '../result'. Fix this.
2022-10-27rules: Honor ENV for finding catChristian Lütke Stetzkamp
2022-10-26rules: Honor ENV variable for protobuf compilationOliver Reiche
2022-10-12Add copyright and license notice to all source and header filesKlaus Aehlig
Signed-off-by: Goetz Brasche <goetz.brasche@huawei.com>
2022-10-10rules: New rule for config header generationOliver Reiche
2022-10-10rules: Use new 'env' expressionOliver Reiche
2022-10-10rules: Remove CC/configure ruleOliver Reiche
2022-09-14rules: Fix ar binary not taken from defaultsOliver Reiche
2022-09-13Rules: Implement setting ADD_{C,CXX}FLAGS via variablesOliver Reiche
2022-09-13Rules: Implement hierarchical defaultsOliver Reiche
2022-09-13Rules: Extend configure rule by 'compiler_family'Oliver Reiche
2022-08-16rules/CC: fix duplicated staging for libraryAlberto Sartori
2022-07-25CC rules: keep dependencies last in linkingKlaus Aehlig
... as the external link dependency is still associated with this library. In this way, importing preinstalled libraries can happen in a sound way, even though the actual library is just an external link dependency; still dependencies among external libraries are honored.
2022-07-25Rules: Enforce non-empty library and binary namesOliver Reiche
2022-06-30Rules: Split library result and library artifact expressionOliver Reiche
2022-06-02Add rule defaultsOliver Reiche
2022-05-04rules/CC: for compiler invocation, pass on ENVKlaus Aehlig
... as some compiler need access to the environemnt in order to find their utility programs (like cc1).
2022-04-29rules: Perform disjoint map union in field_* expressionsOliver Reiche
... and replace all instances where the field_*_list variant of those expressions is used solely for the purpose of performing the disjoint union manually.
2022-04-28rules: Consistently use new provider expressionsOliver Reiche
2022-04-28rules: Add "link-args-deps" expressionOliver Reiche
... for collecting link-args from dependencies. By consistently using this expression, we fix an issue with C++ binary and test, which both did not collect the linker arguments from their proto-deps.
2022-04-28rules: Honor transition variable in *-deps expressionsOliver Reiche
2022-04-26rules: Add field_artifacts_list and field_runfiles_listOliver Reiche
... which are more efficient if the caller wants to perform the union manually (because disjointness should be enforced or additional maps should be added to the union, etc.). As a positive side effect, code reuse is slightly increased by consistently calling these newly introduced expressions for obtaining the artifacts/runfiles from all targets of a target field.
2022-04-26rules: More flexible compile-deps and link-depsOliver Reiche
... which can now be parameterized which target_fields to query the dependencies from.
2022-04-26Improve documenatation of our internal rulesKlaus Aehlig
In particular, document the result for the most important rules.
2022-04-22rules: move compiler/flags computation into expressionsKlaus Aehlig
On the one hand, this keeps the rules files more readable. On the other hand, we can even deduplicate code, as those expressions are used twice.
2022-04-22rule ["CC", "header directory"]: drop ill-advised "public stage"Klaus Aehlig
The idea, as documented, of a header directory is to have a directory, closed as a tree, owned by the respective library and internally handled in an efficient way (as a single tree). If we open up that directory, we just have staged data, and therefore should treat it as such.
2022-03-31rules ["CC", "libray"]: fix doc stringsKlaus Aehlig
... to have consistent punctuation. Also make clear, that the configuration does not have to specify "CC", etc, as usually they are taken from the default target.
2022-03-23Create IDE rule for CC targetsOliver Reiche
2022-03-18Add documentation for the "proto" fields in the CC rulesKlaus Aehlig
2022-03-16Format: Apply compact JSON formattingOliver Reiche
2022-03-14rule CC/test: Introduce TEST_ENV for test runnersOliver Reiche
2022-03-03CC rules: Disable warnings for protobufOliver Reiche
2022-03-03CC rules: Add support for local cflagsOliver Reiche
2022-03-01CC test: Add optional test launcher `CC_TEST_LAUNCHER`Oliver Reiche
2022-02-25rules: Add CC/proto/IDE headersOliver Reiche
... to manually request the generation of headers for CC proto bindings. This is useful for IDEs and needed as implicitly generating those bindings via the `proto` field of CC libraries does not expose the produced headers.
2022-02-22Initial self-hosting commitKlaus Aehlig
This is the initial version of our tool that is able to build itself. In can be bootstrapped by ./bin/bootstrap.py Co-authored-by: Oliver Reiche <oliver.reiche@huawei.com> Co-authored-by: Victor Moreno <victor.moreno1@huawei.com>