aboutsummaryrefslogtreecommitdiff
path: root/SConstruct
AgeCommit message (Collapse)Author
2020-11-10Revert^2 "Merge remote-tracking branch 'aosp/upstream-master' into..."Artem Serov
This reverts commit 0a75ba66aa15ea1cdb3f57d0efd4ce7e7c14d45f. Test: mma test-art-host-vixl Test: test.py --host --optimizing --jit --gtest Test: test.py --target --optimizing --jit Test: run-gtests.sh Change-Id: I052ab4d3243b0b9bee4c52d00ba4ef1d93a8d32c
2020-10-28Revert "Merge remote-tracking branch 'aosp/upstream-master' into..."Ulyana Trafimovich
Revert "ART: Fix breaking changes from recent VIXL update." Revert submission 1331125-VIXL_UPDATE_SVE Reason for revert: broken build git_master-art-host/art-gtest-heap-poisoning @ 6936943 Reverted Changes: Ic10af84a0:Merge remote-tracking branch 'aosp/upstream-master... I752a0b0ba:ART: Fix breaking changes from recent VIXL update.... Bug: 171879890 Change-Id: I6f0f5d1e176e2069301685eeb95a3c76364226ff
2020-06-24Merge branch 'master' into sveJacob Bramley
Change-Id: If2ce450e490dd1ad4fcaba78985af84cc847986f
2020-06-19Ensure stable build directory name under Python 3Matthew Bentham
Change-Id: Iab1d669cb0cadb1628ef28fa01b1c18370e2d3d0
2020-06-08Merge branch 'master' into sveJacob Bramley
Change-Id: I169f90b718900760d823116b581f6d11a1e00500
2020-06-02Compatibility fixes for scons using Python 3Matthew Bentham
Use print style compatible with Python 2/3. Set text mode in popen so that textual regexps work. Change-Id: I079587afd0cf6c896ff5adb5dda3f2bc1fdeff4a
2020-02-03Move to a C++14 baseline.Jacob Bramley
All of our known users already use C++14 or later, and C++14 offers some features that have potential to be very useful to VIXL. This change updates the build scripts, and adds a #error guard to catch unsupported '-std' overrides. It does not introduce any C++14 code. Change-Id: If72806ff9d9e9695cce8d677d301318f09312de3
2019-07-10Add some more substantial benchmarks.Jacob Bramley
Add MacroAssembler, Disassembler and Simulator benchmarks. These are superficially representative of real VIXL uses, but not based on real workloads. Change-Id: Ieda7d9f44cab1eb1f23ea5e8caa509982fa6740b
2019-03-18Silence -Wmissing-noreturn.Jacob Bramley
This warning generates a lot of false positives because we often create stubs and compile-time configurations with things like VIXL_UNIMPLEMENTED(). Properly satisfying -Wmissing-noreturn requires that we annotate functions at their _declarations_, which means we need to add #ifdefs to the header files. Conditional compilation in headers can result in incorrect behaviour when libvixl.so is built with different flags than the code using it. Disabling this warning allows us to simplify the headers, and should make VIXL more robust. Change-Id: I9bb727be1cf1e2e003491701be25c7b27bd4e2a7
2019-03-15Add support for compiler cachesAnthony Barbier
- Add support for compiler wrappers in SCons (Disabled by default). - In tools/test.py: enable ccache if it is available. - Set the environment variable CCACHE_CPP2 to 'yes' to fix warnings on ubuntu 16.04. Change-Id: If8d1b094143a5c1a9c58fd7c204655f8889d34fd
2019-03-15Refactoring of tools/test.pyAnthony Barbier
- Removed '--fast' (As requested by Jacob / Martyn). - Removed '--simulator' (Unused). - Changed default targets to [ 'a64', 't32', 'a64,a32,t32'] as requested by Jacob. - Fixed negative_testing handling (Still disabled by default). - tools/test.py refactoring / simplification: - Removed TestOption classed and used a custom argparse.Action instead. - Keep environment_options and build_options as dictionaries instead of strings. - Simplified CanRunAarch64 / CanRunAarch32. - Simplified ListCombinations - Explicitely pass variables around instead of relying on global variables. - Created a ReturnCode class. - Cap the maximum number of threads to 32. Takes about 31min to run on x86 (Using cccache but not regrouping the tests at the end of the run). Change-Id: I381b80e866974d82d7caeb2e6b7e5483f395aab2
2019-03-14Disable -O3 to compile the tests in release mode.Anthony Barbier
Remove the -O3 flag to compile aarch32 and aarch64 tests in release mode: it significantly speeds up the compilation time and doesn't affect the execution time of the tests. Change-Id: Icecc64e4324476dd3016e7bc45d9190454664a49
2018-08-30Fix and re-enable test-examples.Jacob Bramley
These tests have been disabled for a long time, apparently by accident. This patch restores them, and applies fixes necessary to get them working. Notably: - Fix the simulated-runtime-calls example, and correct an ifdef to ensure that it builds. - Enable --trace-* options for test-examples, to match the behaviour of other tests. Change-Id: Iab0034f19ce935ba7237f8546f9c43f8cec13312
2018-07-20Check CPU features in the Assembler.Jacob Bramley
Now, when the Assembler is asked to assemble an instruction, it asserts (in debug mode) that the necessary features are available. This also updates the tests to use no features by default, so that they must be explicitly requested in the test itself. This provides some assurance that the Assembler contains reasonable checks. This patch uses variadic macros, which are a C99/C++11 feature, and I had to silence a warning in the build system for C++98 builds. However, its use is restricted to the tests, and we already rely on some other C99 features. Change-Id: Ifb9846504f98c6d0912f60ff25f219ce2b780755
2018-04-13Add ubsan option for compilation and fix ubsan errors.Vincent Belliard
Change-Id: I80e40b804cc1d4389f098de834e13ce6a042fc06
2017-05-08Silence warnings about throwing from destructors when compiling with ↵Pierre Langlois
negative testing GCC 6 now warns if one throws from a destructor. However, we need to do it when negative testing is enabled so let's silence warnings for these cases. Change-Id: Ib6e621ed52edd3478bb0113147f46dc92c9e3805
2017-01-10Allow conditional inclusion of A32, T32 and A64.Rodolph Perfetta
The 'target_arch' option has been replace by 'target' which can be any combination of aarch32, aarch64, a32, t32, a64. Change-Id: Id5cd052276747cd718551f562b74f79443b91869
2016-12-19Allow configuration of the CodeBuffer allocator.Jacob Bramley
Ideally, we'd like to template this somehow to avoid the use of the preprocessor, but this will work for now. Change-Id: Iba88b04a97f516ddb13a83035b078d8cf599da6c
2016-12-15Convert markdown to html with `scons doc`Pierre Langlois
Add a new `doc` target to scons that runs `markdown` on the documentation. The generated html files are kept in the source tree. Change-Id: I09c9b275a6cfdd7c68c5fb6a14f551dd7bd1b084
2016-12-15Introduce option validator in SConsPierre Langlois
This patch introduces another pass when running scons that makes sure the options given are sane. If not, an error is given. For example, one cannot have a 64-bit simulator and omit the AArch64 target: ``` $ scons target_arch=aarch32 simulator=aarch64 scons: Reading SConscript files ... scons: *** Building an AArch64 simulator implies that VIXL targets AArch64. Set `target_arch` to `aarch64` or `both`. File "/work/vixl/vixl/SConstruct", line 183, in simulator_validator ``` And finally, we do not yet support building the AArch64 VIXL in 32-bit. The simulator needs to ported to 32-bit. ``` $ CXXFLAGS="-m32" LINKFLAGS="-m32" scons target_arch=aarch64 scons: Reading SConscript files ... scons: *** Building VIXL for AArch64 in 32-bit is not supported. Set `target_arch` to `aarch32` File "/work/vixl/vixl/SConstruct", line 177, in target_arch_validator ``` Change-Id: I6d27af06a1df5b68ff43d0fdcf794571e3182f58
2016-11-17[tests] Add support for negative MacroAssembler tests.Georgia Kouveli
This adds the 'negative_testing' scons flag, which defaults to 'off'. When the flag is 'on', VIXL_ABORT, VIXL_ABORT_WITH_MSG and VIXL_CHECK are modified so that they throw an exception instead of aborting. Negative tests can then catch these exceptions. One new build configuration is added to tools/test.py: mode=debug std=c++11 negative_testing=on Change-Id: I97f529318ba633650954ad32fed8acedae2a6d8b
2016-11-09Fix application of -Wunreachable-code.Jacob Bramley
This fixes a clean-up in f737e0a. The code now matches the comment. Change-Id: I488fd98efa0fd4b87a1d0f48656259ac6f6907a7
2016-11-03Improve compiler version detectionPierre Langlois
This patch adds a matcher for compiler versions in tool/util.py, to be used in SConstruct. We now have a new `utils.CompilerInformation` class, that can be created from the path of the compiler. It can then be compared with a string describing the requirements: compiler = util.CompilerInformat("/path/to/c++") # Check the compiler is clang. if compiler == 'clang': # Check its version. if compiler == 'clang-3.8': # Valid only using clang version 3.8 exactly if compiler >= 'clang-3.6': # Add options that weren't supported in clang before 3.6 # Check the compiler is at least gcc 5: if compiler >= 'gcc-5' # Add new options if compiler == 'gcc-4.8': # Workaround gcc 4.8 Finally, this patch uses this to make sure warnings about the `override` keyword are supported. Change-Id: I5c779ba88d6b476b12b66a86b966efe280ae2f8d
2016-10-31Mark methods as `override` when compiling with C++11Pierre Langlois
This patch introduces a VIXL_OVERRIDE macro. When building with gcc -std=c++11, we now enable the `-Wsuggest-override` warning so that we do not forget to add them in the future. Change-Id: I0f402599019ba9de1a7a654e9499f00a07f00201
2016-10-31Fix the definition of the 'target' macro for aarch32 in `SConstruct`.Alexandre Rames
Change-Id: Ic31de085f4e02f449bc3c3806f605ad6eb0b143a
2016-10-25Fix `scons` options for `target_arch`.Alexandre Rames
Change-Id: I0be46b180653b657ad78665a90323e36fe2aaef9
2016-10-25Correctly abort the build if unknown `scons` options are passed.Alexandre Rames
Change-Id: I342d3190b5da34809159b16cb667534bb6205e0a
2016-10-24Fix compilation of the tests for scopes when targetting aarch32 only.Alexandre Rames
Change-Id: Ia62f3529e62aae31452087df734ba051ed86dace
2016-09-29Remove implicit 64 to 32 bit narrowingPierre Langlois
This patch fixes cases of implicit 64 to 32 bit narrowing. The issue is that `CodeBuffer` represents code offsets with `ptrdiff_t`, which will be 64 bit on a 64 bit system. However, we want to support generating 32 bit code from a 64 bit program, therefore the 32 bit part of VIXL works with `int32_t` for code offsets. We had implicit conversions happening due to this. We solve this by explicitely casting to `int32_t` in the AArch32 assembler when calling `GetCursorOffset`. If you are working with the `CodeBuffer` directly, you are dealing with a code buffer on the host and so will work with offsets as `ptrdiff_t`. But, when working with the AArch32 assembler itself you will get offsets as `int32_t`. The assembler is in charge of checking that the offsets it gets from the code buffer fit into `int32_t`. Additionally, we had narrowing cases when generally wrapping host pointers into an Operand. This can only work if the pointer fits into 32 bits. This patch introduces a Operand::From() factory method that can be used for converting any integral or pointer type to an immediate operand. Change-Id: Icc15711b34c2477ed997eef238e25496d86ea9aa
2016-09-05Add benchmarks for AArch32Vincent Belliard
This commits adds benchmarks similar to what we have for AArch64: - bench-branch-link: Emit a lot of branches to force veneers being emitted. - bench-branch: Exercise label binding and relative address patching. - bench-dataop: Assemble "add r0, r1, r2" many times in a buffer. This is a reland of those benchmarks. There were build issues with the previous commit because the "vixl" namespace was not included. The benchmarks were also using an API for setting the ISA was was removed. Change-Id: I5f41f8ca2302264dd5595626f99d200d64108120
2016-09-05Allow long long immediates when compiling with c++98Pierre Langlois
This patch disables the `long-long` warning when compiling with `std=c++98`. This is needed to build natively for AArch32. We used to disable the `c++11-long-long` warning especially for OSX. However, this warning is LLVM specific and also equivalent go `long-long`. We should use the latter to be compiler agnostic. Change-Id: I1a1a9da8bc94b66ef1741875bbe9b6e3358a1677
2016-09-05Support specifying which architecture to targetPierre Langlois
This patch adds the `target_arch` configuration variable to scons. It allows the user to build vixl for either AArch32, AArch64 or both. The default configuration are changed slightly with this patch: - On architectures other than AArch32 (x86_64), we build VIXL for both AArch32 and AArch64. If the architecture is not AArch64, this will include the simulator. - On AArch32, including cross-compiling, we build VIXL for AArch32 only. The reason for this is VIXL's AArch64 target does not build on a 32 bit platform yet. Of course, the user can override this by setting `target_arch`. Finally, we have dropped the use of `platform.machine()` from `SConstruct` as it doesn't cope with cross-compilation. Instead, we directly query the compiler using the `-dumpmachine` option which print the target triplet. This will set the `host_arch` variable which will then influence `target_arch`. Change-Id: I5f9fbc1343e0957475a2a8309bca00c4d35a7724
2016-09-05Revert "add benchmarks for AArch32"Alexandre Rames
This reverts commit 11f20220862044cb2685f3b6b8abbef2ba1c53d4. Change-Id: I52d927bc8f6c7fc770ab6e18348acf3365b24faa
2016-09-02add benchmarks for AArch32Vincent Belliard
Change-Id: Id59d7f853d7a85a9a326ec63d38d00def89e3c7c
2016-08-15Introduce architecture specific guards for the simulatorPierre Langlois
This patch makes the VIXL_INCLUDE_SIMULATOR and VIXL_GENERATE_SIMULATOR_CODE header guards specific to either AArch64 or AArch32. Even though the simulator only support AArch64. The build system was updated accordingly, the "simulator" variable now takes "aarch64" or "none" as possible values instead of "on" and "off". This fixes issues we have when we want to build VIXL natively on AArch64 without a simulator, but still include the AArch32 macro-assembler. The later would check for VIXL_GENERATE_SIMULATOR_CODE and then generate calls to native code, which breaks. Change-Id: I2850782558d4cc37f37c1644f0efbd70a3123057
2016-08-09Do not include data members conditionally on `VIXL_DEBUG` in headers.Alexandre Rames
Objects visible via headers should have the same data-layout in release and debug modes. Change-Id: I7ce5014ab8406968cdd8e9818a7f840cb443b6c1
2016-07-29Remove unnecessary compilation flags.Alexandre Rames
Tests pass on Linux and OSX. These compilation flags were added during the AArch32 backend development, but are now apparently unnecessary. Change-Id: I016b9d1ccd0d4c0450ee1f8f0f61ce9e784fafa9
2016-07-28The `-Wno-maybe-uninitialized` option breaks compilation on OSX.Alexandre Rames
Tested with OSX 10.9.5. Change-Id: I0073134eeb9146739b333e87b47511e36ca5dc82
2016-07-28Remove `-Wl,--gc-sections` and related build options.Alexandre Rames
It breaks compilation on OSX (tested with OSX 10.9.5). Change-Id: Ie8012829d9d5d4faa5f67451a44ffd8a5daeba46
2016-07-04Update naming to `aarch32` and `aarch64`.Alexandre Rames
Change-Id: I40a929b1095ee3e1b2ca5ef879c7006d8b59acc9
2016-07-04Add an `AUTHORS` file and update copyright notices.Alexandre Rames
Change-Id: Ifb505e5664996c1af41e38376e58ba49864213a3
2016-06-08Correctly remove `obj/latest` when it is a directory.Alexandre Rames
Change-Id: I435bf61633433a80647b58eeeb22d7de6de44227
2016-06-03Add assembler, macro-assembler and disassembler support for AArch32Pierre Langlois
Add support for the A32 and T32 instruction set architectures in seperate a32 directories. Note that this commit introduces aarch32 and aarch64 namespaces so existing client code will need to be adjusted. Refer to doc/getting-started-a32.md for an introduction. Change-Id: Iaf3e5f496ec4e19d77d304128e6920daa4549e78
2016-05-23Move source files from `src/vixl/` to `src/`.Alexandre Rames
This commit only moves files and updates the `#include` paths appropriately. Change-Id: I9d430bd34af617c943a6c6570c9a3c27169eaf1b
2016-05-13VIXL Release 1.13armvixl
Refer to the README.md and LICENCE files for details. Change-Id: I922914f4e7da7cb939a8054cded11feb9ea51a86
2015-12-08VIXL Release 1.12armvixl
Refer to the README.md and LICENCE files for details.
2015-10-23VIXL Release 1.11armvixl
Refer to the README.md and LICENCE files for details.
2015-07-21VIXL Release 1.10armvixl
Refer to the README.md and LICENCE files for details.
2015-03-31VIXL Release 1.9armvixl
Refer to the README.md and LICENCE files for details.
2015-03-02VIXL Release 1.8armvixl
Refer to the README.md and LICENCE files for details.