summaryrefslogtreecommitdiff
path: root/rust/binary_test.go
AgeCommit message (Collapse)Author
2021-01-26Rust: abort on panicJeff Vander Stoep
Test: build (test included in build) Bug: 162266455 Change-Id: I7f53956d3a35f923d0282d511d6360051f945a88
2020-10-09Revert "Make lots of tests run in parallel"Colin Cross
This reverts commit 323dc60712491c71ccdc5363c42df61f0a192487. Reason for revert: Possible cause of test instability Bug: 170513220 Test: soong tests Change-Id: Iee168e9fbb4210569e6cffcc23e60d111403abb8
2020-10-06Make lots of tests run in parallelColin Cross
Putting t.Parallel() in each test makes them run in parallel. Additional t.Parallel() could be added to each subtest, although that requires making a local copy of the loop variable for table driven tests. Test: m checkbuild Change-Id: I5d9869ead441093f4d7c5757f2447385333a95a4
2020-10-02rust: Add static binary supportIvan Lozano
Adds the "static_executable" property to rust_binary modules which allows for building fully static executables. This only impacts bionic targets. Bug: 169434439 Test: rust_binary module with static_executable true builds, runs on device. Change-Id: I83c19fddd070859b7e56d248237cfd73e1768519
2020-09-28rust: Add prefer_rlib property for static libstd.Ivan Lozano
Adds the prefer_rlib property to allow linking libstd statically for device rust binaries. This also changes the default behavior of rustlibs to also prefer rlib linkage. This is because dylibs do not provide rlib-libstd variants and always link in libstd dynamically. Thus a binary requesting libstd rlib linkage should not attempt to link against dylibs that link libstd dynamically. Bug: 168729404 Test: New Soong test passes. Change-Id: Idf8dfbbce8fd936f55a3fb323b17a1a7f0ee954e
2020-09-18rust: Add libstd linkage mutator for rlibs.Ivan Lozano
The current state of linkage is that device targets always link libstd dynamically except for rust_ffi_static which requires a static libstd linkage. However this prevents producing rust_ffi_static modules which depend on other Rust libraries as those dependencies will link libstd dynamically and cause a collision. We also want our rust_test modules to statically link in libstd as well. This adds a linkage mutator for rlibs that creates a variant for each libstd linkage. Dependent modules can then select the variant that matches their linkage of libstd. Also fixes an issue where installation paths were being generated for rlibs and static libs even though they weren't being installed. This broke when adding the linkage mutator as Make would complain about multiple targets producing the same output. Bug: 168729404 Test: rust_ffi_static module with other rustlib dependency can be built. Change-Id: I955b484bf5809e8fc5517750c7f8df82d3ca8895
2020-08-28rust: strip libraries and binariesThiƩbaud Weksteen
Reuses the cc.Stripper logic. Abstracts Stripper to avoid the spreading of references to the cc package. rustc requires unstripped libraries (precisely, with the `.rustc` section) when building dependent targets. Contrary to cc, the output of a compiler module will remain unstripped and only an extra build rule will be added. This rule will be referenced at install time (in baseCompiler.install or androidmk). This change drastically reduces the size of the installed libraries: (unstripped, from out/target/product/crosshatch/system) $ find . -name \*.dylib.so -print0 | du -c --files0-from=- 149996 total (stripped, with this change) $ find . -name \*.dylib.so -print0 | du -c --files0-from=- 42380 total Bug: 153430439 Test: cd external/rust; mma Change-Id: I94fd8bbcec97e0610aa325d3db4460be84d01734
2020-08-27Merge "[rust] Pass cc dependencies as linker flags."Ivan Lozano
2020-08-26[rust] Pass cc dependencies as linker flags.Ivan Lozano
In order to support cc dependencies which do not start with the 'lib' prefix, we can't pass them through the -l flag. Instead, we can pass them directly to linker flags. Bug: 166151658 Test: cd external/rust/; mma Test: cd external/crosvm/; mma Test: Test linking to a cc dep that does not begin with 'lib' Change-Id: I5acbf3d3405e66446f3eae600b35683c4eb3d8a5
2020-08-25Link device binaries dynamically by default.Ivan Lozano
Device binaries currently are linked statically by default. Instead we should be linking these dynamic by default. To avoid conflicts when manually specifying rlib dependencies on modules, we always link libstd dynamically for all device modules except static libraries. This removes the "prefer_dynamic" property entirely to avoid confusion. Bug: 165161105 Test: m profcollectd is built dynamically. Test: cd external/rust/; mma Test: cd external/crosvm/; mma Change-Id: I25ac897040acbcc2d97c791a33e8e01610632272
2020-08-11HostToolPath should return install pathChih-Hung Hsieh
Bug: 163154468 Test: make; find dependencies of 'Module: sqlite3_bindgen_x86_64' Change-Id: Id9fc4f1937983bdf7eb1732ed6a8afd5aa3eb24c
2019-10-29Add rust_test and rust_test_host.Chih-Hung Hsieh
* Rust tests are like binary files compiled with --test. New test.go follows binary.go code patterns and reuses some code in binary.go. * Generate one test per source file as testPerSrc in cc/test.go. The "all tests" variation feature of cc/test.go is not copied yet. Fix some Stem and SubName settings to make testPerSrc work. * Move cc.CheckDuplicate to android.CheckDuplicate, which is now shared by cc and rust. * Refactor tests in binary_test.go and add new test_test.go. Bug: 140938178 Test: mm in rust projects, added rust_test and rust_test_host Change-Id: Ia6fec8b4cf2572fd352ab1938a1f3c7b5cca2212
2019-08-28Add Rust support to Soong.Ivan Lozano
Adds support to Soong for building rust modules. This currently only supports x86_64 device and x86 linux host targets. The functionality is sufficient to build crosvm. Bug: 136189233 Test: Test module builds. Test: crosvm builds. Change-Id: I6ea04615834a6d673578ab10ea1a2eb04259fe09