summaryrefslogtreecommitdiff
path: root/Makefile.rules
Commit message (Collapse)AuthorAgeFilesLines
* make/util: Modularize util make var buildingCraig Hesling2021-02-031-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The key objectives are to * allow util targets to be added from outside of util/build.mk (for adding tools per board, like ectool_servo) * allow for easier conditioning of tool inclusion (for auto adding tools based on characteristic, like CHIP_NPCX) * reduce the number of tools being built (we can remove irrelevant tools for some boards, like removing stm32mon for npcx boards or iteflash for stm32 boards) We have tons of boards in EC now. This takes a significant amount of time to build, so we should be a bit more careful when adding utils for all boards. This and subsequent changes sets the precedent for selectivity. This shifts the initialization/control to the board and baseboard's build.mk and allows the util/build.mk to add items to these variables. Ideally, we would use multiple variables to aggregate the utils selection from the three sources (baseboard/build.mk, board/build.mk, and util/build.mk), but I don't think the addition complexity is currently warranted. BRANCH=none BUG=b:176500425 TEST=# Check all output artifacts from before and after this CL. make clobber make buildall STATIC_VERSION=1 -j mv build build-orig # Apply the change make clobber make buildall STATIC_VERSION=1 -j diff <(find build-orig | sed 's/build-orig//' | sort) <(find build | sed 's/build//' | sort) # Nothing should be different Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: I23153850eda10fc1c88d386b9f3cd8296df9c6f1 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2606511 Commit-Queue: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
* makefile: fix flash image size reportingKeith Short2021-01-271-1/+1
| | | | | | | | | | | | | | | | | | | | | The Makefile uses awk to find a section named FLASH in the output map file and parses the size of the section to determine the free space remaining. NPCX RO images include sections named FLASH and FLASH_HDR. Modify the awk command so the FLASH_HDR section isn't used by mistake. BUG=none BRANCH=none TEST=make buildall Signed-off-by: Keith Short <keithshort@chromium.org> Change-Id: I3e420fbb45fdebc4f1e2578f819bbbce4994d2a8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2640873 Commit-Queue: caveh jalali <caveh@chromium.org> Reviewed-by: Abe Levkoy <alevkoy@chromium.org> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-by: caveh jalali <caveh@chromium.org>
* make: Add HOST_CROSS_COMPILE to make helpCraig Hesling2020-12-301-0/+4
| | | | | | | | | | | BRANCH=none BUG=b:176500425 TEST=make help Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: I34bbf0fd11677d6cdbc557b722035a822623b57f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2606466 Reviewed-by: Ting Shen <phoenixshen@chromium.org>
* make: Add STATIC_VERSION=1 to make helpCraig Hesling2020-12-301-0/+1
| | | | | | | | | | | | BRANCH=none BUG=none TEST=make help Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: I4a1187443c49abcf9a3518e3f6ff612e1c3989ef Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2606519 Commit-Queue: Ting Shen <phoenixshen@chromium.org> Reviewed-by: Ting Shen <phoenixshen@chromium.org>
* make: Add analyzestack to make helpCraig Hesling2020-12-301-0/+1
| | | | | | | | | | | | | | See crrev.com/c/576411 for the original addition of analyzestack. BRANCH=none BUG=none TEST=make help Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: I85f0a1269bf1cf016ef4709d7a6b3ba5d27025ce Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2606509 Commit-Queue: Ting Shen <phoenixshen@chromium.org> Reviewed-by: Ting Shen <phoenixshen@chromium.org>
* make: Add dis and hex to help messageCraig Hesling2020-12-301-0/+2
| | | | | | | | | | | | | | | | Note that the dis target might not be the best way to actually debug a specific part of C code. You should probably use have gcc itself generate the annotated assembly for a single source file. BRANCH=none BUG=none TEST=make help Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: Ieb535c8c4298525163f9e94167e30de10f090c4a Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2606505 Commit-Queue: Ting Shen <phoenixshen@chromium.org> Reviewed-by: Ting Shen <phoenixshen@chromium.org>
* make: Cleanup help msgCraig Hesling2020-12-281-10/+16
| | | | | | | | | | | BRANCH=none BUG=none TEST=make help Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: I2baf7ac7c533047368e2246ab6e69cf84363b97e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2602662 Reviewed-by: Eric Yilun Lin <yllin@chromium.org>
* make: Move libcryptoc rules to third_party/rules.mkCraig Hesling2020-12-241-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | This moves the libcryptoc hooks from common/build.mk to third_party/rules.mk. Recall that Makefile.rules actually contains all of the "rules"/recipes for making objects. It alone contains all of the build output beautification commands and control. Makefile.rules is included as the last step in the master Makefile. This brings no firmware change, as verified with compare_build.sh. BRANCH=none BUG=none TEST=./util/compare_build.sh -b fp TEST=./util/compare_build.sh -b fp -p # This fails due to the differing position of # -lcryptoc, -lfpsensor, -lfpalgorithm, and/or -lfpbep. Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: I8d8493536a0e56ac6a5a1a32827b99ae97723727 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2092163 Reviewed-by: Yicheng Li <yichengli@chromium.org>
* make: Make V= flag parsing more clearCraig Hesling2020-12-211-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | No functional change. The "else ifeq(x,y)" syntax is documented on the following page: www.gnu.org/software/make/manual/html_node/Conditional-Syntax.html The original change that brought in V=0: crrev.com/c/427363 BRANCH=none BUG=none TEST=# Run before and after change to confirm output is the same make hosttests V=0 make hosttests V= make hosttests V=1 make hosttests V=kabob Change-Id: I22021a794cc2e8dede845c0276a2cee67fa32550 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2597809 Tested-by: Craig Hesling <hesling@chromium.org> Commit-Queue: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Denis Brockus <dbrockus@chromium.org> Auto-Submit: Craig Hesling <hesling@chromium.org>
* genvif: add unit test for genvif and genvif overrideDenis Brockus2020-11-171-1/+1
| | | | | | | | | | | | | | | | | | | | | Any of the following will run the test from platform/ec make buildall make runtests make run-genvif_test The following will run the test from platform/ec/test/genvif make clean test BUG=b:173219559 BRANCH=none TEST=make buildall Signed-off-by: Denis Brockus <dbrockus@google.com> Change-Id: Ic5594ae96d040adc332c2afc8fa8a8eb8b373882 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2542745 Tested-by: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Commit-Queue: Denis Brockus <dbrockus@chromium.org>
* genvif: Output to .xml pathAbe Levkoy2020-11-031-1/+1
| | | | | | | | | | | | | | | The currently generated format is XML. The GRL C2 software requires the the filename end in .xml to successfully use it. Output to a file with this name. BUG=b:170646602 TEST=make buildall BRANCH=none Change-Id: I54dbfaef1bc76be58a0007039da659562f97e372 Signed-off-by: Abe Levkoy <alevkoy@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2514902 Reviewed-by: Denis Brockus <dbrockus@chromium.org>
* build: add firmware_builder.py entry pointJett Rink2020-10-011-2/+5
| | | | | | | | | | | | | | | | | | | | | New ToT firmware builder will call firmware_builder.py to start the build process for FW. For EC, we need to call into out existing build system. To break up the build and test phases, we need to break out all of the build only steps out into a separate build target (buildall_only). BRANCH=none BUG=b:169178847 TEST=run `firmware_builder.py build` locally and see that it builds all EC images and also redirects stdout and stderror from sub command. TEST=chromite/api/contrib/call_scripts/firmware__build_all_tot_firmware run this script correctly. End-to-End tests. Signed-off-by: Jett Rink <jettrink@chromium.org> Change-Id: Idd039e686697ee88419e0e44aa3dc96d554b997d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2424895 Commit-Queue: Jack Rosenthal <jrosenth@chromium.org> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
* linker: change symbol used to track available flashKeith Short2020-08-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | Change the linker symbol used to track available flash from __image_size to __flash_used. __image_size is now only used on the struct image_data header. BUG=b:160330682 BRANCH=none TEST=make buildall TEST=Run compare_build.sh against the following boards: cortex-m: volteer (npcx chipset) cortex-m0: honeybuns (stm32f0 chipset) minute-ia: not changed nds32: waddledee (it83xx) riscv-rv32i: asurada (i8xxx2) Signed-off-by: Keith Short <keithshort@chromium.org> Change-Id: I94f5b4827cc0da1055520685cfeb1fafc0119e1c Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2334389 Reviewed-by: Abe Levkoy <alevkoy@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org>
* board: clear out disabled boards left for building utilsJack Rosenthal2020-07-291-1/+1
| | | | | | | | | | | | | | | | | | | These boards were removed from buildall as they ran out of flash space, but we kept the board directory around so that we could continue to build the ec-utils ebuild, which used to require the board directory to build tools like ectool (this was fixed in CL:2283999). Since we've detangled the host utils ebuilds, these directories can now be removed. BUG=chromium:1035536 BRANCH=none TEST=buildall Change-Id: I736b323f9e977d74ca31788ed320befa2289a9dc Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2326304 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
* makefile: use separate directory for code coveragePaul Fagerburg2020-06-121-4/+18
| | | | | | | | | | | | | | | | | | | | | | | When building host-based unit tests for code coverage, put the build outputs in a different directory. Because the code coverage build has calls into gcov library functions, a partial rebuild without code coverage will result in undefined linker errors. The previous solution was an inefficient cycle of `make clobber` and full rebuild when switching between building with and without code coverage. BUG=b:157091606 BRANCH=None TEST=`make buildall -j ; make coverage -j` Verify that build/host and build/coverage both exist, and that code coverage data (*.gcno, *.gcda, *.info) is only in build/coverage. Signed-off-by: Paul Fagerburg <pfagerburg@google.com> Change-Id: Iac0b18068082d34546aa15b174f86efb6a7f41a7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2242351 Tested-by: Paul Fagerburg <pfagerburg@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Commit-Queue: Paul Fagerburg <pfagerburg@chromium.org>
* ec: fix `make coverage` code coverage reportingPaul Fagerburg2020-05-111-1/+3
| | | | | | | | | | | | | | | | | | | | | | | Fixed problems that were preventing us from building the unit tests with code coverage testing via `make coverage`. * Changed test_util so that programs will cleanly exit on SIGTERM. * Changed run_host_test to wait for the child process to exit, and only proc.kill() if it times out, so the child process will generate code coverage output files on exit. * Changed Makefile.toolchain to use the --coverage flag for both compile and link. * Changed build.mk and Makefile.rules to exclude certain tests from code coverage because they were causing failures either during the individual stage of code coverage, or generating the overall report. BUG=b:143065231 BRANCH=none TEST=`make coverage` produces results Signed-off-by: Paul Fagerburg <pfagerburg@chromium.org> Change-Id: I8575013551ce1dba3fd249cd933a3cf6d110db8d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2186853 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
* make: Force --no-print-directoriesCraig Hesling2020-04-041-5/+7
| | | | | | | | | | | | | | | | | | | | | | | | | Before this fix, some sub-make invocations did not use the --no-print-directories and some did. So, you would still see the build output contaminated by make's "Entering directory .../ec" and "Leaving directory .../ec" messages. They are pretty much useless, since they all mention the same ec directory. This fix * once and for all, kills all of those messages. * simplifies the make file by removing the need to specify the flag * cleans up the build output by removing the specified flag BRANCH=none BUG=none TEST=make buildall -j # Ensure that no "Entering dir ..." or "Leaving dir ..." # messages were emitted. Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: I5cd7ac8fd2fcf1cde3b03485c17f5fd6969ee7aa Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2132615 Reviewed-by: Jett Rink <jettrink@chromium.org>
* Makefile: recompile cros_ec_commands.sh on script changeGwendal Grignou2020-03-091-2/+5
| | | | | | | | | | | | | | Add the script that generates cros_ec_commands.sh to the rule. BUG=none BRANCH=none TEST=Check cros_ec_commands.h is re-generated by 'make build_cros_ec_commands' when make_linux_ec_commands_h.sh changes. Signed-off-by: Gwendal Grignou <gwendal@chromium.org> Change-Id: Ieb0fbc0a7340e618d2c75df674d33365c36c944f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2092494 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* remove cr50 related filesNamyoon Woo2020-03-091-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | BUG=b:149350081 BRANCH=none TEST=build all, and emerged ec related packages for host and octopus. $ make buildall -j $ cros_workon --host list chromeos-base/chromeos-cr50-dev chromeos-base/chromeos-ec chromeos-base/chromeos-ec-headers chromeos-base/ec-devutils chromeos-base/ec-utils chromeos-base/ec-utils-test dev-util/hdctools $ sudo emerge chromeos-cr50-dev -j $ sudo emerge chromeos-ec -j $ sudo emerge chromeos-ec-headers -j $ sudo emerge ec-devutils -j $ sudo emerge ec-utils -j $ sudo emerge ec-utils-test -j $ sudo emerge hdctools -j $ cros_workon-octopus list chromeos-base/chromeos-ec chromeos-base/chromeos-ec-headers chromeos-base/ec-devutils chromeos-base/ec-utils chromeos-base/ec-utils-test dev-util/hdctools $ sudo emerge-octopus chromeos-ec -j $ sudo emerge-octopus chromeos-ec-headers -j $ sudo emerge-octopus ec-devutils -j $ sudo emerge-octopus ec-utils -j $ sudo emerge-octopus ec-utils-test -j $ sudo emerge-octopus hdctools -j Signed-off-by: Namyoon Woo <namyoon@chromium.org> Change-Id: If751b26b0635b0021c077338e96eaa8e8dcf17a5 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2080631 Reviewed-by: Edward Hill <ecgh@chromium.org> Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
* skip cr50 from buildallNamyoon Woo2020-02-211-1/+1
| | | | | | | | | | | | | | | | | This patch adds cr50 to skip-board in Makefile.rules. The intention is to keep platform/ec independent from TPM2 library change. Cr50 development has been shifted to cr50-stab branch. Cr50 is maintained in that branch, but not in master(platform/ec) branch. This is a band-aid fix to prevent chromeos-ec package emake error, until we can remove board/cr50 completely from the master branch. BUG=b:149350081 BRANCH=none TEST=ran 'make buildall -j' and 'emerge-eve chromeos-ec' Change-Id: I078ec4616158fefb3bfc0bea5c670632a7b97163 Signed-off-by: Namyoon Woo <namyoon@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2067157
* make: Add print-defines and print-includesCraig Hesling2020-02-141-3/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows for automated IDE toolchain setup. Note, print-defines simply assumes you want to work on the RW section, thus it sets BLD=RW. If you want the defines for RO, simply set BLD=RO. Unfortunately, I needed to use CFLAGS, since some people abuse other compilation flags to add -D and -I flags. This should be cleaned up. 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 BOARD=nocturne_fp print-defines TEST=make BOARD=nocturne_fp print-includes TEST=make BOARD=nocturne print-defines TEST=make BOARD=nocturne BLD=RO print-defines TEST=make BOARD=nocturne print-includes TEST=make BOARD=nocturne print-defines | cat TEST=make BOARD=nocturne print-includes | cat TEST=make buildall -j Change-Id: I8ca729781201bad241f978407bfef54cad79ae80 Signed-off-by: Craig Hesling <hesling@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2051450 Reviewed-by: Jett Rink <jettrink@chromium.org>
* libcryptoc: Cleanup build messagesCraig Hesling2020-02-121-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch cleans up all of the nonformatted make output generated from calling out to libcryptoc's make script. This makes no functional change. # WITHOUT this fix, we see the following when libcryptoc.a is dirty: > VERSION ec_version.h > make obj=/mnt/host/source/src/platform/ec/build/hatch_fp/cryptoc SUPPORT_UNALIGNED=1 \ > CONFIG_UPTO_SHA512= -C /mnt/host/source/src/third_party/cryptoc > MKDIR /mnt/host/source/src/platform/ec/build/hatch_fp/cryptoc > CC util.c # WITHOUT this fix, we see the following when libcryptoc.a is clean: > CC RW/common/version.o > make obj=/mnt/host/source/src/platform/ec/build/hatch_fp/cryptoc SUPPORT_UNALIGNED=1 \ > CONFIG_UPTO_SHA512= -C /mnt/host/source/src/third_party/cryptoc > make[2]: '/mnt/host/source/src/platform/ec/build/hatch_fp/cryptoc/libcryptoc.a' is up to date. > LD RW/ec.RW.elf # WITH this fix, we see the following when libcryptoc.a is dirty: > MAKE cryptoc/libcryptoc.a > MKDIR /mnt/host/source/src/platform/ec/build/hatch_fp/cryptoc > CC util.c > ... > AR libcryptoc.a # WITH this fix, we see the following when libcryptoc.a is clean: > CC RW/common/version.o > MAKE cryptoc/libcryptoc.a > LD RW/ec.RW.elf This also fixes the following error: warning: jobserver unavailable: using -j1. Add '+' to parent make rule. BRANCH=none BUG=none TEST=rm -rf build/ make proj-cr50 proj-nocturne_fp proj-hatch_fp # We should see a "MAKE cryptoc/libcryptoc.a" followed by the # MKDIR, CC, and AR lines for each libcryptoc object. # No spurious make output relacted to libcryptoc should be generated. make proj-cr50 proj-nocturne_fp proj-hatch_fp # We should see a "MAKE ... libcryptoc" followed by no # additional libcrypto specific make steps. # Unfortunately, with libcryptoc being a PHONY target, we can't avoid # rebuilding other downstream objects. This should be fixed. touch ../../third_party/cryptoc/*.c make proj-cr50 proj-nocturne_fp proj-hatch_fp # We should see a "MAKE cryptoc/libcryptoc.a" followed by the # CC and AR lines for each libcryptoc object. # No spurious make output relacted to libcryptoc should be generated. # We should see a "MAKE ... libcryptoc" followed by no # additional libcrypto specific make steps TEST=rm -rf build/ make BOARD=hatch_fp V=1 build/hatch_fp/cryptoc/libcryptoc.a # Ensure that verbose mode is passed to sub-make TEST=rm -rf build/ make BOARD=hatch_fp build/hatch_fp/cryptoc/libcryptoc.a # Ensure that verbose is disabled TEST=make proj-grunt # No mention of libcryptoc Change-Id: I8afde8b5981861647b3eee0044fd3fd3e8fafaec Signed-off-by: Craig Hesling <hesling@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2042784 Reviewed-by: Jett Rink <jettrink@chromium.org>
* cleanup: add comments for MT flag useJett Rink2020-02-111-0/+7
| | | | | | | | | | | | | Document why we need the MT flag as a compiler option BRANCH=none BUG=none TEST=builds Change-Id: Id6bceacc3b0af110f79d9f727ded595950fa2afb Signed-off-by: Jett Rink <jettrink@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2044358 Reviewed-by: Vadim Bendebury <vbendeb@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>
* get_version.sh: add an option for non-changing version fileJack Rosenthal2020-01-131-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | I've made a hack similar to this a few times when I needed to test that applying commit(s) did not change a certain ec.bin file. get_version.sh already had a REPRODUCIBLE_BUILD option, which is useful for testing that compiling under a different user/host would not change the build, but did not allow testing compiling under a different commit. This adds another option, STATIC_VERSION, which allows different user, host, and commit/repository state. Usage: make BOARD=foo STATIC_VERSION=1 BUG=none BRANCH=none TEST=compile at different commits, observe ec.bin file does not change. Change-Id: I5fc277791cb272317fac2471f763b40290118e1d Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1997735 Reviewed-by: Jett Rink <jettrink@chromium.org>
* Makefile: Add print-make-vars ruleJack Rosenthal2020-01-091-0/+12
| | | | | | | | | | | | | | | | | | | | | The Bash-based flash_ec script uses print-baseboard to identify if a board has a baseboard. The newer Python version I'm working on not only uses that information, but reduces the number of board-specific quirks we have encoded in the script by using the CHIP, CHIP_FAMILY, CHIP_VARIANT, and CORE variables to discover quirks. Introduce a print-make-vars rule to be used by the new flash_ec script which is extensible to many variables. BUG=b:145292630 BRANCH=none TEST=make BOARD=... print-make-vars for a few different boards Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Change-Id: Ib91123d2b0b36c584db563e192f72a3ac001f330 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1992791 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
* kukui: include a dummy bootblock if BOOTBLOCK variable not setTing Shen2019-12-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a dummy bootblock to make sure size check is accurate during `make buildall`. The default size is picked from build 12769.0: $ ls -al */coreboot/bootblock.bin -rw-r--r-- 1 21504 Dec 19 02:20 kodama/coreboot/bootblock.bin -rw-r--r-- 1 21504 Dec 19 02:20 krane/coreboot/bootblock.bin -rw-r--r-- 1 21504 Dec 19 02:20 kukui/coreboot/bootblock.bin -rw-r--r-- 1 21504 Dec 19 02:33 damu/coreboot/bootblock.bin -rw-r--r-- 1 21504 Dec 19 02:33 jacuzzi/coreboot/bootblock.bin -rw-r--r-- 1 21504 Dec 19 02:33 juniper/coreboot/bootblock.bin -rw-r--r-- 1 21504 Dec 19 02:33 kappa/coreboot/bootblock.bin -rw-r--r-- 1 21504 Dec 19 02:21 flapjack/coreboot/bootblock.bin BUG=chromium:1034518 TEST=1) make buildall # use dummy bootblock 2) make BOARD=kukui # same as above, ~1.7k bytes left 3) make BOARD=kukui BOOTBLOCK=/dev/null # empty bootblock, 23k bytes left 4) make BOARD=kukui BOOTBLOCK=a-large-file # fail early before linking BRANCH=kukui Change-Id: I65c18f567dce0cb315e0cdc4f30ada5e83275d72 Signed-off-by: Ting Shen <phoenixshen@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1973550 Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Commit-Queue: Jack Rosenthal <jrosenth@chromium.org> Tested-by: Jack Rosenthal <jrosenth@chromium.org>
* glados/chell: Stop building these boardsAseda Aboagye2019-12-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | GLaDOS and chell are out of space, so stop building these boards now. Deleting the boards is problematic since the ec-utils ebuild still expects the board directory to exist, but only builds the utils-host target. In order to prevent that, the 'cros_ec' USE flag needs to be removed from their bsp as well. BUG=None BRANCH=None TEST=`make -j buildall` TEST=`cros_workon --board chell start ec-utils && emerge-chell ec-utils` Cq-Depend: chrome-internal:2296525, chrome-internal:2295865 Change-Id: I249bb2b3957d2f237a63207c91f0bd2e973d5dca Signed-off-by: Aseda Aboagye <aaboagye@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1959962 Tested-by: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
* make: Add check for flash supportCraig Hesling2019-12-061-1/+4
| | | | | | | | | | | | | | | | | BRANCH=none BUG=none TEST=make buildall -j TEST=make BOARD=hatch flash # Should emit error that board isn't supported TEST=make BOARD=nucleo-f072rb flash # Should start openocd or error that command not found Signed-off-by: Craig Hesling <hesling@chromium.org> Change-Id: Id13847d51392cc098ff7b289d120978202019aaf Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1952198 Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
* make: Add help messages for flash variantsCraig Hesling2019-12-061-0/+4
| | | | | | | | | | | | BRANCH=none BUG=none TEST=make help Change-Id: Ic32777ec1c92fd79b803f8d20591ce47685af784 Signed-off-by: Craig Hesling <hesling@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1952197 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> Reviewed-by: Jett Rink <jettrink@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>