summaryrefslogtreecommitdiff
path: root/Makefile.rules
Commit message (Collapse)AuthorAgeFilesLines
* fix ChromiumOS authors and whitespace warningsMary Ruthven2022-09-131-1/+1
| | | | | | | | | | | BUG=none TEST=none Change-Id: I61b0b0106a43f723ec3bc805eb190aef00bbd05b Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3894391 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Commit-Queue: Vadim Bendebury <vbendeb@chromium.org>
* add CR50_DEV and CRYPTO_TEST builds to make buildallMary Ruthven2022-06-011-1/+7
| | | | | | | | | | | | | | | Build CR50_DEV, CRYPTO_TEST, and CRYPTO_TEST red board images in make buildall, so make buildall will find failures in all cr50 images we use. BUG=none TEST=make buildall ; ls build/cr50* shows all of the new cr50 directories. The ec images in those directories have 'DBG' and 'CT' strings in their versions. Change-Id: I19cee37a6c9fe255d44700e3bb8d616f8b8fc875 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3628193 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* Revert "mt_scp: Add support to store some code in DRAM"Mary Ruthven2021-11-181-7/+1
| | | | | | | | | | | | This reverts commit d7579bd4589d08eeabf7c01f055b925acb7aed67. BUG=b:200823466 TEST=make buildall -j Change-Id: I442a932753e8a4745ac5002c165cf9309cb770ff Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3273369 Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org>
* Revert "core: Allow .bss and .data sections in DRAM"Mary Ruthven2021-11-181-2/+2
| | | | | | | | | | | | This reverts commit 0528c46598c8c89f04b7129722de50e178b62aa2. BUG=b:200823466 TEST=make buildall -j Change-Id: I7777cf51e2fee18975ae8267df9af4d2ac266de8 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3273368 Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org>
* cr50: add CQ build scriptstabilize-14285.B-cr50_stabVadim Sukhomlinov2021-10-151-0/+4
| | | | | | | | | | | | | | | | | | | CQ for cr50 doesn't cover all targets of interest. Borrow script from /platform/ec and adjust it a bit to cr50 targets. BUG=b:202192433 TEST=./firmware_builder.py --metrics m.pb build ./firmware_builder.py --metrics m.pb test ./firmware_builder.py --metrics m.pb bundle Signed-off-by: Vadim Sukhomlinov <sukhomlinov@google.com> Change-Id: I77ab1134fb2b7df1e16314068dac05ba8ef49094 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3224365 Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org> Tested-by: Vadim Sukhomlinov <sukhomlinov@chromium.org> Commit-Queue: Vadim Sukhomlinov <sukhomlinov@chromium.org>
* fips: silence fips section fillerVadim Bendebury2021-10-111-1/+2
| | | | | | | | | | | | | | | | | | | | | | Script inserting FIPS checksum into the image uses the dd utility which generates stderr output even when there is no errors. This patch adds code which captures the dd stderr output and prints it out only if there is an actual error. stdout output of the script is suppressed unless make was invoked with V=1. Also made a few modifications as requested by shellcheck. BUG=none TEST=make output does not have extra lines. built and ran a Cr50 image, it reports successful FIPS integrity self check. Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Change-Id: I9121bc5a9a40633b9a3d18ea5766bc1ed274a9c2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3210946 Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org>
* cr50: make CONFIG_FW_INCLUDE_RO work properlyVadim Sukhomlinov2021-09-301-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | CONFIG_FW_INCLUDE_RO option controls wherever RO is built. This option didn't work properly and RO was always built. Fix this behavior. However, when RO is not built RW image should include some 16KB stub. This is not added yet, so for Cr50 we still set CONFIG_FW_INCLUDE_RO. Also, corrected behavior of CONFIG_CUSTOMIZED_RO which earlier was not properly taken into account and behavior depended on custom-ro_objs variable state which always added some common files so actual result was that CONFIG_CUSTOMIZED_RO is effectively on for chip/g. BUG=none TEST=make buildall -j; make BOARD=cr50 & flash Signed-off-by: Vadim Sukhomlinov <sukhomlinov@google.com> Change-Id: I31599170050b360fad5c61dd1f81844bb315e1d6 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3195319 Reviewed-by: Vadim Sukhomlinov <sukhomlinov@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Tested-by: Vadim Sukhomlinov <sukhomlinov@chromium.org> Commit-Queue: Vadim Sukhomlinov <sukhomlinov@chromium.org>
* add script to inject the fips fingerprintMary Ruthven2021-09-071-2/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Inject the fips fingerprint into the cr50 image, so it can verify the fips module before starting to execute it. This change adds a script to calculate the checksum and inject it into a elf file before signing. If CONFIG_FIPS_CHECKSUM is defined, generate an elf file with the fips checksum and use that to create signed images and hex files. The build process doesn't change for RO artifacts. Nothing changes if CONFIG_FIPS_CHECKSUM isn't defined. The new chain for RW is ec.RW.elf -> ec.RW.elf.fips -> ec.RW.flat ec.RW.elf.fips is generated with util/inject_fips_fingerprint.sh. util/inject_fips_fingerprint.sh calculates the fips module fingerprint, copies ec.RW.elf to ec.RW.elf.fips, and then injects the fingerprint into ec.RW.elf.fips. util/signer/bs will be modified to use ec.RW.elf.fips if it exists in a followup CL. BUG=none TEST=manual # Verify cr50 is the only board that creates the fips artifacts make buildall -j objdump the text.fips_checksum section of ec.RW.elf and ec.RW_B.elf. Make sure they match ec.RW.fips.checksum and ec.RW_B.fips.checksum # Verify cr50 can update to image signed with devid and that # image shows Stored hash that matches the computed one. H1_DEVIDS="${DEVID}" make -j BOARD=cr50 CR50_DEV=1 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Change-Id: Iab857ec1b7e3ae0d23681a25467e26286bd68210 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3078053 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* remove CR50_SQAMary Ruthven2020-06-021-2/+1
| | | | | | | | | | | | | | | | | | | | | | | SQA images won't be built anymore. This change removes the SQA support. It deletes all SQA ifdefs and replaces CR50_RELAXED with CR50_DEV. BUG=b:158011401 TEST=manual build regular image and check eraselfashinfo and rollback aren't included. build image with CR50_SQA=1 and check it's no different than the regular image. build DBG image and make sure it still starts open, it has the eraseflashinfo and rollback commands, and it can flash old cr50 images. Change-Id: I5e94c88b1903cfcf0eee0081fc871e55fc8586c7 Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2227149 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-by: Namyoon Woo <namyoon@chromium.org>
* make: add preprocessor stageVadim Bendebury2020-03-311-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | For the upcoming introduction of transitioning Cr50 console communications to packet mode, there is a need to be able to replace all print function invocations in the code with calls to packet sending function. This replacement is easiest to make in C preprocessor outputs, as there all macros are replaced with actual function invocations. This patch adds a configuration option CONFIG_EXTRACT_PRINTF_STRINGS, when enabled, building of the image object files starts happening in three steps instead of one, instead of .c => .o transition, the steps are .c => .E => .Ep => .o, where .E is the C preprocessor output, and .Ep is result of post processing by ./util/util_precompile.py. BUG=b:149964350 TEST=image layout does not change if CONFIG_EXTRACT_PRINTF_STRINGS is not defined. With the rest of the patches applied defining the above config option allows to build a Cr50 image supporting packet console communications mode. Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Change-Id: I20b8ba7c5d13cb54ac6adbdbce856d92023ce997 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2113122 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* Makefile.rules: prevent unnecessary updates of ec_version.hVadim Bendebury2020-03-191-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While working on a different issue it was discovered that $(out)/RW/board/cr50/board.o is rebuilt every time make is ran, even if there has been no changes. Further investigation has shown that the problem is that $(out)/RW/board/cr50/board.o depends on $(out)/ec_version.h, which is not rebuilt unless something changed, but is declared .PHONY in Makefile.rules Turns out the declaration is supposed to be conditional on actual change in ec_version.h, but the condition is always True. This in turn was due to the fact that when checking if there is a change, some relevant make variables (CR50_DEV, CR50_SQA, and CRYPTO_TEST) were not set when invoking ./util/getversion.sh. When the variables are set, ec_version.h is not decalred PHONY, no unnecessary compilation is invoked. BUG=none TEST=repetitive running of make BOARD=cr50 CR50_DEV=1 build/cr50/RW/board/cr50/board.o does not trigger recompilation of board.o any more Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Change-Id: Ibe75bcda9a774e748f973d85841bbde9c29fd104 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2108920 Reviewed-by: Namyoon Woo <namyoon@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* Makefile: enforce target name in generated dependenciesVadim Bendebury2020-02-071-9/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There seems to be some odd interaction between ccache version 3.7.6 and the set of command line options passed to gcc by the EC makefile, as a result the generated dependency files are wrong, the target file name is missing the path. The -MT command line option makes sure that the correct target file name is generated. Had to make similar changes in ../../third_party/{cryptoc,tpm2} Makefiles. No need to change extra/usb_updater/Makefile as it puts .o files in the same directory where .c files are. BRANCH=all BUG=b:148943341 TEST=verified that relevant object files are rebuilt when an .h file is touched. Also, with companion changes in cryptoc and tpm2 trees verified that all generated my 'make buildall' .d files have proper target values (including path), apart froom files in extra/usb_udater, which place .o files in the same directory with .c files. Change-Id: I22dfad94c112582230a2b6b60289e029a382d822 Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2039988 Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> (cherry picked from commit f42be6e2a1eefaee06ed7593373fbe6dedb3dd6c) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2044511 Reviewed-by: Andrey Pronin <apronin@chromium.org>
* drop unnecessary boards, chips and cts testsVadim Bendebury2020-01-071-41/+1
| | | | | | | | | | | | | | | | | | | | The only board which would be built from this branch is Cr50. bds, fizz and host boards are necessary for proper make infrastructure operation and tests. lm4 and npcx are chips used by the bds and fizz boards, so they are also kept around. BRANCH=cr50, cr50-mp BUG=b:145912698 TEST='make buildall -j' succeeds Change-Id: I937b2b8642c1fe91578fc9615438ae22c165b20f Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1986942 Reviewed-by: Namyoon Woo <namyoon@chromium.org> Reviewed-by: Mary Ruthven <mruthven@chromium.org> Reviewed-by: Andrey Pronin <apronin@chromium.org>
* Use actual utilities dependency, not phony targetStefan Reinauer2019-10-311-2/+2
| | | | | | | | | | | | | | | | | | | | | | This prevents the EC binaries unnecessarily being recreated every time you run make on the target. BUG=none TEST= make BOARD=scarlet [..] make BOARD=scarlet *** 11460 bytes in flash and 10252 bytes in RAM still available on scarlet RO **** *** 24140 bytes in flash and 10252 bytes in RAM still available on scarlet RW **** BRANCH=none Change-Id: I6cabb7d1b7512162c8b24c7664bafc7d98c5eda5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1851106 Reviewed-by: Stefan Reinauer <reinauer@google.com> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Patrick Georgi <pgeorgi@chromium.org> Commit-Queue: Jett Rink <jettrink@chromium.org> Tested-by: Stefan Reinauer <reinauer@google.com>
* make: Add utils to help messageCraig Hesling2019-10-291-0/+1
| | | | | | | | | | | BRANCH=none BUG=none TEST=make help Change-Id: I912e54927e3e307180e8d80e78105fdfdd6c9dfb Signed-off-by: Craig Hesling <hesling@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1880322 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
* Fix race condition in spiflashfw.Allen Webb2019-10-151-7/+10
| | | | | | | | | | | | BRANCH=None BUG=chromium:1011870 TEST=make -j buildall Change-Id: Ifa0241cf9ea02ecf989fc7257f37c24efb17c3a7 Signed-off-by: Allen Webb <allenwebb@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1860720 Reviewed-by: LaMont Jones <lamontjones@chromium.org> Reviewed-by: Randall Spangler <rspangler@chromium.org>
* util: add build include for private host toolsHarry Cutts2019-10-111-2/+2
| | | | | | | | | | | | | | | | | | | | | | We have provision for private host commands (see the `EC_PRIVATE_HOST_COMMAND_VALUE` macro), but no way to make a private host-side tool that can share the host command protocol implementation in util/. This CL allows a private directory to be symlinked as util/private and have its build.mk file included in the build. For an (internal-only) example of what you might put in private, see https://crrev.com/i/1914158. BRANCH=none BUG=chromium:1008568 TEST=Patch https://crrev.com/i/1914158 in the private repo (or add a util directory there with a build.mk), then from the ec directory, run `ln -s ../private/util util/private`. Run a build and verify that the private build.mk gets run. Change-Id: Ie1ad00cb454ba9ed57e4e9b24d4f5d397ca0d7a5 Signed-off-by: Harry Cutts <hcutts@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1836757 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* Revert "Temporarily disable jerry due to CQ outages"Jack Rosenthal2019-10-081-4/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 437e7346ab38a1eca1bb8526ae03b120635f03e9. Reason for revert: jerry RO space issue resolved BUG=chromium:1011621 Original change's description: > Temporarily disable jerry due to CQ outages > > jerry is out of RO flash space and causing CQ outages. disable from > buildall until it gets a proper fix. > > BUG=chromium:1011621 > TEST=buildall > > Change-Id: I09c6d2729660d94c0462b0ed5795b977ace90a3a > Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1844145 > Reviewed-by: Jason Clinton <jclinton@chromium.org> > Reviewed-by: Mike Frysinger <vapier@chromium.org> > Commit-Queue: Jason Clinton <jclinton@chromium.org> Bug: chromium:1011621 Change-Id: I52bd1c661684da39192e82ea801e7998bb07bbd0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1847773 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-by: Jason Clinton <jclinton@chromium.org> Tested-by: Jack Rosenthal <jrosenth@chromium.org> Commit-Queue: Jack Rosenthal <jrosenth@chromium.org>
* Temporarily disable jerry due to CQ outagesJack Rosenthal2019-10-061-0/+4
| | | | | | | | | | | | | | | jerry is out of RO flash space and causing CQ outages. disable from buildall until it gets a proper fix. BUG=chromium:1011621 TEST=buildall Change-Id: I09c6d2729660d94c0462b0ed5795b977ace90a3a Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1844145 Reviewed-by: Jason Clinton <jclinton@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org> Commit-Queue: Jason Clinton <jclinton@chromium.org>
* Fix non-tty output of make print-boardsStefan Reinauer2019-10-021-4/+4
| | | | | | | | | | | | | | | | | | dash does not support &> so non-tty output on ubuntu was broken. Signed-off-by: Stefan Reinauer <reinauer@chromium.org> BRANCH=none BUG=none TEST=make print-boards TEST=make print-boards | cat Change-Id: If27c55ecfcaac30b24205aef5e1fd67f8a73aae0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1817947 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Commit-Queue: Stefan Reinauer <reinauer@google.com> Tested-by: Stefan Reinauer <reinauer@google.com>
* Makefile.rules: LDFLAGS comes lastStefan Reinauer2019-10-011-2/+2
| | | | | | | | | | | | | | When compiling host utilities on standard Ubuntu 19.04, linking will fail if LDFLAGS is not specified after the object files. Signed-off-by: Stefan Reinauer <reinauer@chromium.org> BUG=none BRANCH=none TEST=Run make outside of chroot and see it succeed. Change-Id: I3330edf247aa109d5fbaa0e08cb7b4cfefc96a09 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1818149 Reviewed-by: Patrick Georgi <pgeorgi@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* Makefile.rules: use patsubst instead of substCaveh Jalali2019-09-271-1/+1
| | | | | | | | | | | | | | | | | | | | the patsubst function is a better function for removing a path prefix as it is anchored at the beginning of the search space. the original "subst" function can match everywhere in the path which leads to weird transformations. patsubst is anchored at the beginning of the string which better suits the intent here. BRANCH=none BUG=none TEST=make buildall passes, $(out) now only removed at beginning of output paths. Change-Id: Ic5fe7aeb5eb8c87aa8bb49ea0865dc07327cb3e5 Signed-off-by: Caveh Jalali <caveh@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1803178 Commit-Queue: Caveh Jalali <caveh@google.com> Reviewed-by: Caveh Jalali <caveh@google.com> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* Makefile.rules: fix jobserver handlingstabilize-12515.BCaveh Jalali2019-09-141-2/+4
| | | | | | | | | | | | | | | | | | | | | looks like make isn't smart enough to detect a recursive make invocation when the $(MAKE) command is buried inside a $(call ...) function resulting in: make[2]: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. adding a '+' to give make the appropriate hint. BUG=none BRANCH=none TEST=make buildall -j still works, make no longer complains about jobserver Change-Id: Ia923a653e1ebf9cae7dae24a5b16f821b53e70b2 Signed-off-by: Caveh Jalali <caveh@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1803179 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* Makefile.rules: do not ignore compilation errorsCaveh Jalali2019-09-131-8/+8
| | | | | | | | | | | | | | | | | for some reason, Makefile.rules is set up to ignore compilation errors on npcx_monitor. this seems very wrong. BRANCH=none BUG=none TEST=make proj-atlas now fails - an existing compilation now fails the build Cq-Depend: chromium:1799293 Change-Id: I8ba9b8bc05d9b11df6a4f79bbcc2bbf7e48b224d Signed-off-by: Caveh Jalali <caveh@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1799294 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Commit-Queue: Caveh Jalali <caveh@google.com>
* fpsensor: replace memset() with always_memset()Yicheng Li2019-09-041-1/+1
| | | | | | | | | | | | | | In fpsensor code, use always_memset() in place of memset(). BRANCH=nocturne BUG=chromium:968809,chromium:989594,b:130238794 TEST=make -j buildall TEST=tested enrollment, matching and multifinger on nocturne DUT Change-Id: I29e32bd2838c1f240607799e61f29759aaee7600 Signed-off-by: Yicheng Li <yichengli@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1737206 Reviewed-by: Tom Hughes <tomhughes@chromium.org>
* makefile: support PORT for flash_ecYilun Lin2019-08-291-1/+1
| | | | | | | | | | | | | | Add variable PORT to select the flashing port. TEST=make BOARD=kukui flash_ec PORT=9998, and flash success BUG=none BRANCH=none Change-Id: Ic9ba318ffee70ec1f7789f2dcccc6025263e5436 Signed-off-by: Yilun Lin <yllin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1770330 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
* makefile: remove print-chip-variantJack Rosenthal2019-08-071-5/+0
| | | | | | | | | | | | | | | We ended up deciding on a different design for the location of ISH firmware in the filesystem (long ago), and the chip variant is no longer needed in the ebuild. Remove this target. BUG=b:122371717 BRANCH=none TEST=buildall Change-Id: I9d5152537c9f4e86296546b86c98f581534d379f Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1742418 Reviewed-by: Raul E Rangel <rrangel@chromium.org>
* Improve unit test and fuzzer documentation storyCraig Hesling2019-07-201-2/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Update **test** directory description to README.md. * Add ** fuzz** directory description to README.md. * Add unit test and fuzzer make targets to `make help` * Change showboards to print-boards to be more consistent * Change showboards to use auto pretty print * Add print-tests, print-host-tests, and print-host-fuzzers This is necessary to remove the ambiguity about what a special name is for a given unit test. Documentation Story: The idea is to give a brief overview of what the test and fuzz directories are in README.md. README.md also mentions you should see `make help` for more detail. Running `make help` shows you more general test/fuzz commands, including the print-* commands. Running the print-* commands show you exact target names for all possible unit/fuzz test (both the build-only and run target names). BRANCH=none BUG=none TEST=make help TEST=make print-tests TEST=make print-host-tests TEST=make print-host-fuzzers TEST=make print-host-fuzzers | cat TEST=make print-boards TEST=make print-boards | cat TEST=make buildall -j Change-Id: I34b68196ac635ba71a1d45ceb5d35a3b36fd129f Signed-off-by: Craig Hesling <hesling@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1684714 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* ish: fix aon task not auto rebuild issue in increment buildHu, Hebo2019-07-121-16/+1
| | | | | | | | | | | | | | | | | | | | | aon task image build rules are lack of dependent rules of source code, so can't track the source code changes and trigger auto build. Refactor build rules for aon task to make sure always auto rebuild when aon task's source code and dependent header files update BUG=b:136691893 BRANCH=none TEST= ish aon task should always rebuild when it's code and dependent header files update Change-Id: I0d8c7c6a4a2b7e99d724b88b233e09a29b8facea Signed-off-by: Hu, Hebo <hebo.hu@intel.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1688701 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-by: Hebo Hu <hebo.hu@intel.corp-partner.google.com> Tested-by: Hebo Hu <hebo.hu@intel.corp-partner.google.com> Commit-Queue: Jack Rosenthal <jrosenth@chromium.org>
* LICENSE: remove unnecessary (c) after CopyrightTom Hughes2019-06-191-1/+1
| | | | | | | | | | | | | | | | Ran the following command: git grep -l 'Copyright (c)' | \ xargs sed -i 's/Copyright (c)/Copyright/g' BRANCH=none BUG=none TEST=make buildall -j Change-Id: I6cc4a0f7e8b30d5b5f97d53c031c299f3e164ca7 Signed-off-by: Tom Hughes <tomhughes@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1663262 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
* Makefile.rules: Fix silencing of libec.a related warnings.Allen Webb2019-06-131-3/+3
| | | | | | | | | | | | | | | When sanitizers are enabled, the libec.a related steps print a very large amount of warnings that polute the build log and make it hard to troubleshoot. BRANCH=none BUG=chromium:950310 TEST=USE="asan fuzzer" emerge-${BOARD} chromeos-ec Change-Id: Ica06322291c95595b01941cffcfc297f2368ca02 Signed-off-by: Allen Webb <allenwebb@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1566655 Reviewed-by: Andrey Pronin <apronin@chromium.org>
* Makefile.rules: use CFLAGS instead of CPPFLAGSTom Hughes2019-06-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | CPPFLAGS are flags for the preprocessor, not the C compiler. clang warns when linking that we don't have the blx instruction: lld.real: warning: lld uses blx instruction, no object with architecture supporting feature detected but this is because the linker command was not being passed the correct architecture because it was missing the CFLAGS that specified them: Before: "/usr/bin/clang-8" -cc1as -triple armv4t-none-unknown-eabi After: "/usr/bin/clang-8" -cc1as -triple thumbv7em-none-unknown-eabi BRANCH=nocturne,nami BUG=chromium:931797 TEST=make buildall -j TEST=revert change rm -rf build && make buildall -j | grep 'bytes in flash and' | \ | sort > build.before => apply change rm -rf build && make buildall -j | grep 'bytes in flash and' | \ | sort > build.after diff build.before build.after => no difference Change-Id: I6401b60fa3721c441df126f69634a13d6c7c06fe Signed-off-by: Tom Hughes <tomhughes@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1470781 Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* Makefile: create new rules for host and fuzz testsJack Rosenthal2019-06-061-2/+4
| | | | | | | | | | | | | | | | | | | | In order for chromeos-ish ebuild to run tests, it must run the fuzz tests, which are not related to ISH features, and introduce a lot of library dependencies into the ebuild. Provide two new targets: runhosttests and runfuzztests to allow the host tests to be run separately. runtests (and buildall) remain the same. BUG=b:134446400 BRANCH=none TEST=ran new targets, they functioned as intended Change-Id: Idba7fcfe707caeb0e51ce0c38caeac9da87e3baf Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1642887 Reviewed-by: Jett Rink <jettrink@chromium.org> Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
* Makefile: Replace flag -DX with -DX= to be supported by IS_ENABLED().Yilun Lin2019-06-031-9/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | IS_ENABLED works for an empty-string-defined macro. However, -D options default to define the macro to 1. This CL forces those macros, such as BOARD_* CHIP_*, CORE_*, CHIP_VARIANT_* and CHIP_FAMILIY_*, to be defined as an empty string, so that it can be supported by IS_ENABLED macro. TEST=use if(IS_ENABLED(BOARD_KRANE)) and see compilation success. TEST=compares build directory w/ and w/o this CL, and see the .smap are the same: ls build/*/*/ec.*.smap | sed -e 's|build/||' | \ xargs -I{} diff -u -a build/{} build.new/{} BUG=none BRANCH=None Change-Id: I96e2aa1cb5f3369e5e445a674595a9234f26707a Signed-off-by: Yilun Lin <yllin@google.com> Reviewed-on: https://chromium-review.googlesource.com/1627840 Commit-Ready: Yilun Lin <yllin@chromium.org> Tested-by: Yilun Lin <yllin@chromium.org> Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* Revert "Makefiles.rules: Do not attempt to run fuzzing tests"Nicolas Boichat2019-06-011-2/+1
| | | | | | | | | | | | | | | | This reverts commit 5c986c3bbf1c414ada67f785f602418fd29e0132. Presumably the previous CL fixes the flakiness. BRANCH=none BUG=chromium:963768 TEST=make buildall -j Change-Id: I972ce5c20586410773a78afe21a1b0c02d9c5f0b Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1623051 Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org> Reviewed-by: Manoj Gupta <manojgupta@chromium.org>
* Makefiles.rules: Do not attempt to run fuzzing testsNicolas Boichat2019-05-211-1/+2
| | | | | | | | | | | | | | | | There is a currently a frequent race when running fuzzing tests, let's not run them to avoid continuously breaking the CQ. BRANCH=none BUG=chromium:963768 TEST=make buildall -j => no fuzzing tests are run Change-Id: Ic789dc207ecb064d0918ab04fd8644d0b77f7c0f Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1621447 Reviewed-by: John L Chen <zuan@chromium.org> Commit-Queue: John L Chen <zuan@chromium.org> Tested-by: John L Chen <zuan@chromium.org>
* ec: common: Make IS_ENABLED fail on unknown valuesRaul E Rangel2019-05-151-1/+8
| | | | | | | | | | | | | | | | | If IS_ENABLED is called with any unknown values, a compiler error will be thrown. This change requires that the optimizer always be enabled, otherwise errors will be thrown when a value is not defined. BUG=none BRANCH=none TEST=make runtests TEST_LIST_HOST="is_enabled_error is_enabled" Change-Id: I1b166311f81d07e48b3665f4bc0e9502d2ccc4c6 Signed-off-by: Raul E Rangel <rrangel@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1592728 Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* mt_scp: Generate IPI tables with util gen_ipi_table.Yilun Lin2019-04-301-0/+2
| | | | | | | | | | | | | | | | | | | | IPI table is board-specific. This CL removes the original IPI table in chip layer, and uses gen_ipi_table to generate the table for each board to reduce the maintenance effort. TEST=make BOARD=kukui_scp, and see build/kukui_scp/ipi_table_gen.inc exists. Push to Kukui, and see SCP boots. TEST=modify IPI_COUNT in board.h and see it generates a new ipi_table_gen.inc BUG=b:130508869 BRANCH=None Change-Id: I0c05319447d15917e8833aa80d61166c4e396370 Signed-off-by: Yilun Lin <yllin@google.com> Reviewed-on: https://chromium-review.googlesource.com/1568890 Commit-Ready: Yilun Lin <yllin@chromium.org> Tested-by: Yilun Lin <yllin@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
* makefile: fix image stats reporting problemsVadim Bendebury2019-04-261-1/+2
| | | | | | | | | | | | | | | | | | | | | | Recently merged patch (34cc1f91c) introduced printing of free space stats for both RO and RW images, without actually describing which image the message applies to. This change adds this additional description. BRANCH=none BUG=none TEST=built a cr50 image: $ make BOARD=cr50 -j ... *** 8148 bytes in flash ... still available on cr50 RO **** *** 8880 bytes in flash ... still available on cr50 RW **** Change-Id: Ib7d5890c94ea93906d8f6a7a7c95819c47ffab8a Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1582456 Reviewed-by: Mary Ruthven <mruthven@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* util: Add tool to generate cros_ec_commands.hGwendal Grignou2019-04-261-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | Add a rule to generate a new cros_ec_commands.h when ec_commands.h is modified. The rule is checked when buildall is invoked. At Presubmit stage, check a cros_ec_commands.h exists if ec_commands.h is modified. The CL author is responsible to upstream that file. BUG=chromium:945948 BRANCH=none Cq-Depend: chromium:1558853 TEST=Check manually cros_ec_commands.h is generated with make build_cros_ec_commands Check no bread crumbs are left-over when the rule fails. Check checkpatch triggers when it finds an invalid syntax in the output file. Check ../../repohooks/pre-upload.py returns a meaningful error when cros_ec_commands.h file is not present. Change-Id: Ibc8ed7165914d39b5f0bd41643932a8514768925 Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1559380 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Brian Norris <briannorris@chromium.org>
* Makefile: Add 'stats:' targetDaisuke Nojiri2019-04-181-0/+5
| | | | | | | | | | | | | | | | | | | | | Currently, only buildall can print flash space stats. This patch adds 'stats:' target, which prints the smallest flash spaces. This target can print flash stats without running other recipes associated with buildall. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=none BRANCH=none TEST=make stats Change-Id: I30e0cb7cda60c4309212024a7b842f6b37d836ff Reviewed-on: https://chromium-review.googlesource.com/1554842 Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Patrick Georgi <pgeorgi@chromium.org>
* Makefile: Print free spaces in RO flashDaisuke Nojiri2019-04-131-10/+21
| | | | | | | | | | | | | | | | | | | | Currently, buildall prints only free spaces in RW flash. This patch makes it print smallest free spaces in RO flash as well. If the board doesn't have RO (i.e. #undef CONFIG_FW_INCLUDE_RO), it'll be ignored. Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> BUG=b/129746223 BRANCH=none TEST=buildall Change-Id: I953cb6fd998c3868e54be2ea3c2ce0ab51275b64 Reviewed-on: https://chromium-review.googlesource.com/1554841 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* ish/ish5: implement AON low power mode (D0i1-3)Hu, Hebo2019-04-081-1/+3
| | | | | | | | | | | | | | | | | 1: D0i1(TCG) and D0i2(TCG + SRAM retention) implemented 2: D0i3 (TCG + SRAM power off) implemented BUG=b:122364080 BRANCH=none TEST=tested on arcada Change-Id: I851d7c138b056a92d1616622e7cbfdfb94d86e5c Signed-off-by: Hu, Hebo <hebo.hu@intel.com> Reviewed-on: https://chromium-review.googlesource.com/1531772 Commit-Ready: Hebo Hu <hebo.hu@intel.corp-partner.google.com> Tested-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Hebo Hu <hebo.hu@intel.corp-partner.google.com>
* ish/ish5: implement AON low power management frameworkHu, Hebo2019-04-081-0/+14
| | | | | | | | | | | | | | | | | | | | | AON PM framework including: 1: AON task skeleton 2: task switching between main FW and AON task 3: 'idlestats' console command for D0ix statistic information 4: D0ix entrance in idle task BUG=b:122364080 BRANCH=none TEST=tested on arcada Change-Id: Iefa9e067892d5c42d9f0c795275fe88e5a36115b Signed-off-by: Hu, Hebo <hebo.hu@intel.com> Reviewed-on: https://chromium-review.googlesource.com/1510518 Commit-Ready: Rushikesh S Kadam <rushikesh.s.kadam@intel.com> Commit-Ready: Hebo Hu <hebo.hu@intel.corp-partner.google.com> Tested-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Hebo Hu <hebo.hu@intel.corp-partner.google.com>
* Makefile: fix compatibility with Protobuf 3.7.0Allen Webb2019-03-211-0/+2
| | | | | | | | | | | | | | | | This defines PROTOBUF_MIN_PROTOC_VERSION so protobuf headers don't fail with -Wundef and sets -Wno-unreachable-code to allow for maps to be used in protocol buffers. BRANCH=None BUG=chromium:937442 TEST=make -j buildall Change-Id: Id595825c224e34df1034c26d49bb4f6263358470 Signed-off-by: Allen Webb <allenwebb@google.com> Reviewed-on: https://chromium-review.googlesource.com/1531336 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Makefiles.rules: Add rule to create static libraries (.a)factory-atlas-11907.11.BNicolas Boichat2019-03-101-0/+6
| | | | | | | | | | | | | This will be useful for some targets (which will still need to fixup the dependencies themselves). BRANCH=none BUG=b:124804731 TEST=With follow-up TEST CLs, libprivate.a can be created Change-Id: I5a1f4726794b308824275530b08f327e679eb904 Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1475108
* build: Fix print configs when _tsk_cfg_rw is not emptyPi-Hsun Shih2019-03-071-1/+1
| | | | | | | | | | | | | | | | | | | The _tsk_cfg_rw is a series of flags like HAS_TASK_MOTIONSENSE, which doesn't make sense to be used as a command. BRANCH=none BUG=b:126308353 TEST=make BOARD=kukui print-configs works TEST=print-configs on all boards, and check that output is not changed except for boards that RW Config can't be printed due to this bug. Change-Id: I513e88032abb8a418b22179d9e9c92a1dd8fbf3a Signed-off-by: Pi-Hsun Shih <pihsun@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1498954 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Nicolas Boichat <drinkcat@chromium.org>
* Makefiles.rules: Fix free space message on boards with no flashNicolas Boichat2019-03-051-3/+7
| | | | | | | | | | | | | | | | | | | | | | kukui_scp has no flash, so let's just print the leftover space in RAM instead. BRANCH=none BUG=b:123327630 TEST=make buildall -j 2>&1 | grep "still available" | sort > avail before and after this change, only this line changes: *** -29956 bytes in flash and 468976 bytes in RAM still available on kukui_scp **** *** 468976 bytes in RAM still available on kukui_scp **** TEST=kukui_scp does not appear in "Tightest boards' RW flash" summary. TEST=make savesizes/newsizes still reports changes in RAM space on kukui_scp Change-Id: I4e17a142777ae20bb8e8c66b5402edf2838250a3 Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1496685 Reviewed-by: Stefan Reinauer <reinauer@chromium.org> Reviewed-by: Patrick Georgi <pgeorgi@chromium.org>
* ec: Add print-chip-variant targetJack Rosenthal2019-03-011-0/+4
| | | | | | | | | | | | | | | | In order to properly place ISH firmware at the correct path, the chromeos-ish ebuild needs information on the CHIP_VARIANT make variable. This adds a simple target to print the value of that variable. BUG=b:122371717 BRANCH=none TEST=ran Makefile with BOARD set and target, got correct value Change-Id: I882660aea19bf92e74072740d7d30574e81b0cb5 Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1487112 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Jett Rink <jettrink@chromium.org>
* core: Allow .bss and .data sections in DRAMNicolas Boichat2019-02-181-2/+2
| | | | | | | | | | | | | | | | | We manually copy other .data from the original section on boot, and clear DRAM .bss. This way, a single object file (or archive) can be moved fully to DRAM. BRANCH=none BUG=b:122058243 TEST=With next CL, dram_test works Change-Id: I1a434bbd8a4135d16b3f49b0d1b75b96506e3e24 Signed-off-by: Nicolas Boichat <drinkcat@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1445652 Reviewed-by: Jett Rink <jettrink@chromium.org>