summaryrefslogtreecommitdiff
path: root/Makefile.rules
Commit message (Collapse)AuthorAgeFilesLines
* ec: Don't use grep to get cross compile valueJeremy Bettis2022-06-301-2/+1
| | | | | | | | | | | | | | | | | | | | | | Instead of extracting the host's cross compile value from HOSTCC, just get it from HOST_CROSS_COMPILE, which is where HOSTCC gets it from in the first place. This allows overriding CCACHE to something other than ccache. BRANCH=None BUG=b:214323409 TEST=make clobber ; make -j8 test-coverage TEST=make clobber ; make -j1024 CCACHE=/mnt/host/depot_tools/.cipd_bin/gomacc test-coverage Signed-off-by: Jeremy Bettis <jbettis@google.com> Change-Id: I390d9dd15b5bd070030ecd8396bb8e07d23c9efd Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3739304 Commit-Queue: Jeremy Bettis <jbettis@chromium.org> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Tested-by: Jeremy Bettis <jbettis@chromium.org> Commit-Queue: Jack Rosenthal <jrosenth@chromium.org> Auto-Submit: Jeremy Bettis <jbettis@chromium.org>
* Makefile.rules: Set C++ standard to gnu++17Tom Hughes2022-06-271-1/+1
| | | | | | | | | | | | | | | | "-std=gnu++17" is the C++ standard we currently use for the rest of ChromeOS. cmd_cxx_to_host was already updated to gnu++17 in https://crrev.com/c/2872429, but cmd_cxx_to_o was not. BRANCH=none BUG=b:234181908 TEST=./util/compare_build.sh -b all -j 120 => MATCH Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: Iab8adacaa8673bda7b6427745b85fd3b7550eb4e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3712036 Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org>
* ec: Write memory usage report to fileJeremy Bettis2022-03-161-0/+4
| | | | | | | | | | | | | | | | | | Change the linker command for all board builds to pass the --print-memory-usage flag and save the results to a file. BRANCH=None BUG=b:223846977 TEST=make buildall_only -j16 Signed-off-by: Jeremy Bettis <jbettis@google.com> Change-Id: I63733ce205a5453e7dc16809f7fd033873d67d07 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3530150 Tested-by: Jeremy Bettis <jbettis@chromium.org> Commit-Queue: Jeremy Bettis <jbettis@chromium.org> Auto-Submit: Jeremy Bettis <jbettis@chromium.org> Reviewed-by: Yuval Peress <peress@google.com> Commit-Queue: Yuval Peress <peress@google.com>
* Makefile: set the default C standard to gnu11Jack Rosenthal2022-02-281-1/+1
| | | | | | | | | | | | | | | | | Similar to cmd_cxx_to_o, set the default C standard to gnu11. Right now we are relying on compiler defaults, which uses pre-C99 standards in some cases. Let's be explicit and ask for gnu11. BUG=b:221860687,b:147769405 BRANCH=none TEST=buildall Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Change-Id: I0371a6efaa71c0972394f90fa879f250ae921647 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3495875 Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
* Add CONFIG_INA219 to config_allowedSimon Glass2022-02-111-0/+1
| | | | | | | | | | | | | | | | | | | | This option is defined by Zephyr, but the Zephyr source tree is not always accessible to the script. Add it to the list to avoid any errors. BUG=b:181323955 BRANCH=none TEST=try CQ Build for plankton then check (without a Zephyr tree): ./util/kconfig_check.py -c build/plankton/.config -a util/config_allowed.txt -p PLATFORM_EC_ -s zephyr/ check See that it now succeeds Signed-off-by: Simon Glass <sjg@chromium.org> Change-Id: I473ab291cee6074792124c6db5e44bfdaaa0c973 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3453164 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Commit-Queue: Jack Rosenthal <jrosenth@chromium.org>
* Add PS2 to the config checkerSimon Glass2022-02-091-0/+1
| | | | | | | | | | | | | | | This is defined in Zephyr and is used by a board in Chrome OS too. Add it to the exception list. BUG=b:181323955 BRANCH=none TEST=try CQ Signed-off-by: Simon Glass <sjg@chromium.org> Change-Id: I77ed52e88fd14b3c4b3b891e191b52629196c041 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3449668 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Commit-Queue: Jack Rosenthal <jrosenth@chromium.org>
* Makefile: Switch to the Python script for CONFIG checkingSimon Glass2022-02-091-1/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the second attempt, fixing the problem with CONFIG_DAC and other options. These must be left in config_allowed but ignored if they show up as present in Kconfig. Leave the following in config_allowed since they are defined both as CONFIG options in ECOS and Kconfig options in Zephyr: AUDIO_CODEC DAC DMA EEPROM I2C_BITBANG PECI SPI UART_CONSOLE BUG=b:181323955 BRANCH=none TEST=./util/kconfig_check.py -c build/blipper/.config -a util/config_allowed.txt -p PLATFORM_EC_ -s zephyr/ -I ~/cosarm/src/third_party/zephyr/main -i DAC check See that this does not cause an error now Signed-off-by: Simon Glass <sjg@chromium.org> Change-Id: I1fc7ac9cde106c61dd28b30673830407aa8c1a29 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3425452 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
* Revert "Makefile: Switch to the Python script for CONFIG checking"David Stevens2022-01-301-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 5b4c6473a341ebbd88463c908b39bb2820e5c43b. Reason for revert: b:216919905 - breaks chromeos CQ Original change's description: > Makefile: Switch to the Python script for CONFIG checking > > Now that the Python script seems to do what we need, switch over to > use that for checking for allowed ad-hoc CONFIGs. > > Sadly we need a work-around for the very old Python 3 version used in > the chroot. > > The new script is better at finding Kconfig options, so this allows some > reductions in the config_allowed.txt file. > > Delete the now-unused shell scripts. > > BUG=b:181323955 > BRANCH=none > TEST=python3 util/test_kconfig_check.py > > Signed-off-by: Simon Glass <sjg@chromium.org> > Change-Id: I2dafc9dfe9d9020638f4e49b5c5ee0fc0b10000b > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2923233 > Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Bug: b:181323955 Change-Id: I9b5514f9d2df43033cfd95555612e2e89e6ce724 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3426237 Reviewed-by: Simon Glass <sjg@chromium.org> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Commit-Queue: Nicolas Norvez <norvez@chromium.org> Tested-by: Nicolas Norvez <norvez@chromium.org>
* Makefile: Switch to the Python script for CONFIG checkingSimon Glass2022-01-281-1/+3
| | | | | | | | | | | | | | | | | | | | | | Now that the Python script seems to do what we need, switch over to use that for checking for allowed ad-hoc CONFIGs. Sadly we need a work-around for the very old Python 3 version used in the chroot. The new script is better at finding Kconfig options, so this allows some reductions in the config_allowed.txt file. Delete the now-unused shell scripts. BUG=b:181323955 BRANCH=none TEST=python3 util/test_kconfig_check.py Signed-off-by: Simon Glass <sjg@chromium.org> Change-Id: I2dafc9dfe9d9020638f4e49b5c5ee0fc0b10000b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2923233 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
* Revert "Reland "make: disable kconfig option check""Simon Glass2022-01-261-4/+1
| | | | | | | | | | | | | | | | The root cause of this has been fixed. This reverts commit dfd949d5bb781f23c1160ec9ca412d6be4cea1bd. BUG=b:216217781 BRANCH=none TEST=cq since I'm not sure how to test it otherwise, since cros_workon must be disabled Change-Id: I38de1617687db73ead4eb91c2c67459600a523a2 Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3415373 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
* Reland "make: disable kconfig option check"caveh jalali2022-01-251-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 71efe4989c253562b555c00b92cbe37487a8dacc. Reason for revert: b/216217781 Original change's description: > Revert "make: disable kconfig option check" > > Unfortunately this was disabled but never restarted. We have a number > of CONFIG options that are missing Kconfigs: > > For volteer the list is: > > CONFIG_BATTERY_LOW_VOLTAGE_TIMEOUT > CONFIG_HOSTCMD_DEBUG_MODE > CONFIG_LED_PWM_COUNT > CONFIG_POWER_S4_RESIDENCY > CONFIG_STEINHART_HART_3V3_30K9_47K_4050B > CONFIG_USB_PD_FLAGS > > This cannot be applied until the above are fixed. Possibly this is not a > big problem anymore, since we are likely not adding much new > functionality to ECOS. > > This reverts commit b3f5db5be78e15290dc7d80eaeecbb0f1b754a2c > > BUG=b:195718112 > BRANCH=none > TEST=make buildall -j32 > > Change-Id: I4b148caa04509721db83d001eb65dc061b2f21a6 > Signed-off-by: Simon Glass <sjg@chromium.org> > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3388360 > Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Bug: b:195718112 Change-Id: I67f07b9136168554f3459bab5b2fcc879230b774 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3414570 Auto-Submit: caveh jalali <caveh@chromium.org> Tested-by: caveh jalali <caveh@chromium.org> Reviewed-by: Nick Vaccaro <nvaccaro@google.com> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Commit-Queue: Jack Rosenthal <jrosenth@chromium.org>
* Revert "make: disable kconfig option check"Simon Glass2022-01-211-4/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Unfortunately this was disabled but never restarted. We have a number of CONFIG options that are missing Kconfigs: For volteer the list is: CONFIG_BATTERY_LOW_VOLTAGE_TIMEOUT CONFIG_HOSTCMD_DEBUG_MODE CONFIG_LED_PWM_COUNT CONFIG_POWER_S4_RESIDENCY CONFIG_STEINHART_HART_3V3_30K9_47K_4050B CONFIG_USB_PD_FLAGS This cannot be applied until the above are fixed. Possibly this is not a big problem anymore, since we are likely not adding much new functionality to ECOS. This reverts commit b3f5db5be78e15290dc7d80eaeecbb0f1b754a2c BUG=b:195718112 BRANCH=none TEST=make buildall -j32 Change-Id: I4b148caa04509721db83d001eb65dc061b2f21a6 Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3388360 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
* gitlab: Generate html reports with branch coverageJeremy Bettis2022-01-191-1/+1
| | | | | | | | | | | | | | | | | Lcov was already being run with branch coverage, but include that in the html reports also. BRANCH=None BUG=None TEST=Ran commands locally Signed-off-by: Jeremy Bettis <jbettis@google.com> Change-Id: Ia64d120ec13ef7e741ba78bc6d05621f1b045215 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3399900 Tested-by: Jeremy Bettis <jbettis@chromium.org> Auto-Submit: Jeremy Bettis <jbettis@chromium.org> Reviewed-by: Yuval Peress <peress@google.com> Commit-Queue: Jeremy Bettis <jbettis@chromium.org>
* zephyr: Add branch coverage to all lcov cmdsJeremy Bettis2022-01-141-3/+4
| | | | | | | | | | | | | | | | | | | If you don't include --rc lcov_branch_coverage=1 on every lcov command, lcov will drop the branch information at that stage of processing. Add --rc lcov_branch_coverage=1 to all lcov commands. BRANCH=None BUG=None TEST=None Change-Id: I3fd2a036f9f2fcfaeec60bdc55cfcba28e6c8228 Signed-off-by: Jeremy Bettis <jbettis@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3381536 Tested-by: Jeremy Bettis <jbettis@chromium.org> Auto-Submit: Jeremy Bettis <jbettis@chromium.org> Reviewed-by: Aaron Massey <aaronmassey@google.com> Commit-Queue: Aaron Massey <aaronmassey@google.com>
* chip/npcx: Fix monitor compilation with clangTom Hughes2021-11-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Disable LTO when compiling the monitor header since clang will generate an LLVM IR bitcode file instead of an ARM object file. objcopy then fails since it doesn't recognize the file type. This shouldn't result in any loss of optimization since these are single .c files that are not being linked. Also add a DISCARD section in the linker script to fix the clang (lld) warning: ld.lld: error: no memory region specified for section '.ARM.exidx' This should be safe since there is no ".ARM.exidx" section in npcx_monitor.elf generated by gcc before this change as shown by arm-none-eabi-objdump -h build/brya/chip/npcx/spiflashfw/npcx_monitor.elf Go ahead and discard any other ".ARM.*" sections as well since we do that in our other EC linker scripts. Details on these sections can be found in https://developer.arm.com/documentation/ihi0044/h/?lang=en#sections under the "Sections" section. BRANCH=none BUG=b:172020503 TEST=./util/compare_build.sh -b all -j 120 => MATCH Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: I784d7a9e69989b330f58f89ae3a901d459e7cd21 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3243010 Reviewed-by: Edward Hill <ecgh@chromium.org>
* Add support for building dartmonkey firmware with clangTom Hughes2021-10-251-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | By default all builds will use gcc. To build with clang, set the environment variable CC=clang. At this point only dartmonkey has been tested with clang. BRANCH=none BUG=b:172020503 TEST=Using icetower, Segger J-Trace, and servo micro: make BOARD=dartmonkey -j ./flash_jlink.py -b dartmonkey -i ./build/dartmonkey/ec.bin --remote 127.0.0.1:2551 => console on icetower works TEST=CC=clang make BOARD=dartmonkey -j ./flash_jlink.py -b dartmonkey -i ./build/dartmonkey/ec.bin --remote 127.0.0.1:2551 => console on icetower works TEST=make buildall -j TEST=CC=clang make BOARD=dartmonkey tests -j TEST=make BOARD=dartmonkey tests -j TEST=./util/compare_build.sh -b all -j 120 => MATCH Change-Id: Ib7c067d0ebe0561becfd70373216adb445501f94 Signed-off-by: Tom Hughes <tomhughes@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1474577 Reviewed-by: Eric Yilun Lin <yllin@google.com>
* core: Fix flash size calculation when linking with lld (clang)Tom Hughes2021-10-111-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The map file generated by lld has a different format than the gnu linker (ld). (We save this map file into build/<board>/<image>/ec.<image>.map during the build.) Instead of trying to parse the different formats in the .map file, use the .smap file (the output of "nm"), which has the values of the symbols and has the same format whether using lld or ld. We need to add a new "__flash_size" symbol so that we can use that symbol to get the size from the .smap. This add flash sizes to a few boards that previously didn't have it: asurada_scp, cherry_scp, and kukui_scp, since the previous logic was always looking for FLASH and these use IROM. BRANCH=none BUG=b:172020503 TEST=make buildall -j TEST=make CC=arm-none-eabi-clang BOARD=elemi TEST=bcompare build_before_change build_after_change => only difference between space_free_flash.txt and space_free_ram.txt files in the two builds is that this change adds the space_free_flash.txt files for asurada_scp, cherry_scp, and kukui_scp. Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: I7c64b6ba9bceeeb4044559188c1c1bebbf60471d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3179314 Reviewed-by: Keith Short <keithshort@chromium.org>
* gitlab: Disable interrupt test in coverage buildJeremy Bettis2021-10-061-1/+1
| | | | | | | | | | | | | | | | | | | | The interrupt seems to be very sensitive to cpu load and when running for coverage in gitlab, it often times out. Change to skip this test in coverage builds, since it is unlikely to add any coverage for zephyr used code anyway. BRANCH=None BUG=None TEST=None Change-Id: Iefe0da6b925cc820f764c1ad5a79187b8f09885f Signed-off-by: Jeremy Bettis <jbettis@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3208910 Commit-Queue: Jeremy Bettis <jbettis@chromium.org> Commit-Queue: Abe Levkoy <alevkoy@chromium.org> Tested-by: Jeremy Bettis <jbettis@chromium.org> Auto-Submit: Jeremy Bettis <jbettis@chromium.org> Reviewed-by: Abe Levkoy <alevkoy@chromium.org>
* gitlab: Many changes to get coverage build workingJeremy Bettis2021-09-291-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Switch to updated docker container. Make shallow git clones for speed. Don't install anytree or pyelftools, since they are in the docker container now. Set explicit `needs` attributes on each job. Split coverage build into ec_coverage, zephyr_coverage, and merged_coverage. Run make -j8 instead of make -j. Run make test-coverage instead of make coverage. For this situation we don't need the base board coverage, nor the report. Stop using flock to prevent parallel calls to lcov. I don't know if it was ever unsafe, but it seems safe today. BUG=None BRANCH=None TEST=Pushed to gitlab coverage branch: https://gitlab.com/zephyr-ec/ec/-/pipelines/379672379 Change-Id: I90ed7bb947d96062042959aee957bc6728c22ea7 Signed-off-by: Jeremy Bettis <jbettis@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3194977 Tested-by: Jeremy Bettis <jbettis@chromium.org> Auto-Submit: Jeremy Bettis <jbettis@chromium.org> Commit-Queue: Fabio Baltieri <fabiobaltieri@google.com> Reviewed-by: Fabio Baltieri <fabiobaltieri@google.com>
* ec: Set GCOV tool for cross compileJeremy Bettis2021-09-271-2/+2
| | | | | | | | | | | | | | | | | | | | | | Use the right gcov tool for cross compile and host builds. The llvm-cov tool is sort of magical and can handle both llvm and gcc output, but that is only in the chroot, and so on gitlab we need to pick the right gcov for each platform. BRANCH=None BUG=None TEST=in docker: make -j CRYPTOC_DIR="${MODULES_DIR}/cryptoc" \ FTDIVERSION=1 HOSTGCOV='gcov' \ CROSS_COMPILE_arm=/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi- \ coverage Change-Id: Ie95032a4c0706b2bd49574df03e93dcbec7c3eed Signed-off-by: Jeremy Bettis <jbettis@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3171942 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Commit-Queue: Jeremy Bettis <jbettis@chromium.org> Tested-by: Jeremy Bettis <jbettis@chromium.org> Auto-Submit: Jeremy Bettis <jbettis@chromium.org>
* make: disable kconfig option checkJack Rosenthal2021-08-061-1/+4
| | | | | | | | | | | | | | This check is currently suspected to be causing widespread commit queue failures. Disable for now. BUG=b:195718112 BRANCH=none TEST=make buildall -j32 Signed-off-by: Jack Rosenthal <jrosenth@chromium.org> Change-Id: I58ff77eb4ff8a8fae4f856c116cb592aede634ee Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3078400 Reviewed-by: Abhishek Pandit-Subedi <abhishekpandit@chromium.org>
* Revert "make: Compile host tests in 32-bit mode"Evan Green2021-08-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 1821e9423af84c7a126a4a15303c6492dd44e94b. Reason for revert: This change broke the build. BUG=b:195332627 TEST=None BRANCH=None Original change's description: > make: Compile host tests in 32-bit mode > > Compile the host tests in 32-bit mode instead of 64-bit mode as it's > more likely to match the actual environments our ECs run on. For > instance, in 32-bit mode the tests might actually have a prayer of > finding a torn read or write bug, whereas in 64-bit mode 64-bit integers > are always operated on atomically. > > BUG=b:179062230 > BRANCH=none > TEST=make -j runhosttests BOARD=host on x86_64 and i686 > > Signed-off-by: Evan Green <evgreen@chromium.org> > Change-Id: I02517066337ec08c311c1f7daae5d3de84b1f4c2 > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3059231 > Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Bug: b:179062230 Change-Id: I35bcac77deeb1d031a31b32d911781f5fed4ab13 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3067826 Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com> Reviewed-by: Allen Webb <allenwebb@google.com> Tested-by: Evan Green <evgreen@chromium.org>
* make: Compile host tests in 32-bit modeEvan Green2021-08-021-1/+1
| | | | | | | | | | | | | | | | | Compile the host tests in 32-bit mode instead of 64-bit mode as it's more likely to match the actual environments our ECs run on. For instance, in 32-bit mode the tests might actually have a prayer of finding a torn read or write bug, whereas in 64-bit mode 64-bit integers are always operated on atomically. BUG=b:179062230 BRANCH=none TEST=make -j runhosttests BOARD=host on x86_64 and i686 Signed-off-by: Evan Green <evgreen@chromium.org> Change-Id: I02517066337ec08c311c1f7daae5d3de84b1f4c2 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3059231 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
* build system: Link with LTO partitioning strategy "one"Patrick Georgi2021-06-171-1/+1
| | | | | | | | | | | | | | | | | | | | | | By putting all object files in a single LTO partition there's less room to optimize the build time using multi-threading. On the upside, the build becomes more reproducible and the build result tends to be smaller thanks to better optimization opportunities. This is needed on gcc 11 for now build kodama: without it, the code grows beyond the bounds it needs to fit in (that gcc 8 manages to hold, so a regression). BUG=none BRANCH=none TEST=one class of error less with gcc 11 Signed-off-by: Patrick Georgi <pgeorgi@google.com> Change-Id: I86b2c70cb5a2e85024630e7217cf8bd24d349910 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2959922 Reviewed-by: Eric Yilun Lin <yllin@google.com> Commit-Queue: Patrick Georgi <pgeorgi@chromium.org> Tested-by: Patrick Georgi <pgeorgi@chromium.org>
* Makefile.rules: make LCOV paths relative to repoPaul Fagerburg2021-06-101-0/+3
| | | | | | | | | | | | | | | | | | The code coverage plugin requires that the paths are relative to the repo, so we need to strip off the path above the repo's top level. BRANCH=None BUG=b:156895937 TEST=`make coverage ; grep SF: build/coverage/lcov.info` and observe that the source paths are now relative to the repo, instead of starting with /mnt/source Signed-off-by: Paul Fagerburg <pfagerburg@google.com> Change-Id: Iba86badeefd7359b72cb7e04cf97b0e51eed6789 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2950569 Tested-by: Paul Fagerburg <pfagerburg@chromium.org> Reviewed-by: Aseda Aboagye <aaboagye@chromium.org> Commit-Queue: Paul Fagerburg <pfagerburg@chromium.org>
* Makefile: Update C++ compile commandTom Hughes2021-05-051-2/+3
| | | | | | | | | | | | | | | | | | Update cmd_cxx_to_host to match current cmd_c_to_host. Switch HOSTCXX to clang++ to match "CXX" in Makefile.toolchain (and the toolchain that we use in the rest of Chrome OS). Add "-std=gnu++17" to match the C++ standard that we use in the rest of Chrome OS. Followup commits will make use of these changes. BRANCH=none BUG=b:144959033 TEST=make buildall Signed-off-by: Tom Hughes <tomhughes@chromium.org> Change-Id: I5878ae64dc5ac76db22b3c331915b191a00f4257 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2872429 Reviewed-by: Eric Yilun Lin <yllin@google.com>
* Makefile.rules: Make check_allowed invocation less obscureCaveh Jalali2021-04-141-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Originally, the util/check_allowed.sh was completely hidden which made it hard to track, specially since it often flags a change that needs further analysis. With this change, make reports the util/check_allowed.sh invocation as "CHECK_ALLOWED". Also, when building with V=1, the actual command invocation is reported: (brya-shared-image) [brya] $ make -j ... CHECK_ALLOWED build/brya/.config ... OR: (brya-shared-image) [brya] $ make V=1 -j ... ./util/check_allowed.sh build/brya/.config util/config_allowed.txt . ... BRANCH=none BUG=b:181253613 TEST=verified check_allowed is reporte as "CHECK_ALLOWED" during a normal build and as a full command invocation with V=1. Change-Id: Ie1132221ee9b8d5d381adb5413b96ae2a2f71db9 Signed-off-by: Caveh Jalali <caveh@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2803974 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Commit-Queue: Jack Rosenthal <jrosenth@chromium.org>
* Makefile.rules: add quiet_cmd...Caveh Jalali2021-04-141-1/+4
| | | | | | | | | | | | | | | | | | | This enhances the quiet function to optionally print a command specific terse representation of the make command being invoked. If no custom command string is specified, the original behavior is preserved: the terse command string is printed followed by the computed target name. Now, if quiet_cmd_<CMD> has a non-empty value, its value is printed instead. BRANCH=none BUG=b:181253613 TEST=buildall passes Change-Id: I8ff13678307a3fe4f2ecd1a4cf89ed550e5702bb Signed-off-by: Caveh Jalali <caveh@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2803973 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
* ec: Improve coverage report.Jeremy Bettis2021-04-081-2/+13
| | | | | | | | | | | | | | | | | | | | | | Exclude the test directories from ec coverage report. Include the test name into the coverage data. Show the test name details in the coverage report. Build several boards with coverage enabled, and use that to make sure all used files are in the coverage report. This lowers the coverage to 38.4% which seems much more realistic than the old value. BRANCH=none BUG=b:156895937 TEST=make -j coverage Signed-off-by: Jeremy Bettis <jbettis@google.com> Change-Id: I91fc5bc7ce676943d34e91e16662e680628d1b7e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2811939 Commit-Queue: Jeremy Bettis <jbettis@chromium.org> Tested-by: Jeremy Bettis <jbettis@chromium.org> Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org>
* genvif: Use VIF overrides by defaultAbe Levkoy2021-03-301-2/+3
| | | | | | | | | | | | | | Use board-specific override files when generating VIFs for boards. BUG=b:172276715 TEST=make buildall BRANCH=none Signed-off-by: Abe Levkoy <alevkoy@chromium.org> Change-Id: I197365018ceb8197c22d631cebf4cbce1c0119f7 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2785506 Reviewed-by: Denis Brockus <dbrockus@chromium.org> Commit-Queue: Denis Brockus <dbrockus@chromium.org>
* firmware_builder: bundle code coverage informationPaul Fagerburg2021-03-181-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a rule to the makefile to merge code coverage into a single LCOV file, which firmware_builder.py will bundle as a build artifact. BUG=b:156895937 BRANCH=None TEST=Verify code coverage builds: ``` make clobber make coverage ls build/coverage/lcov.info ``` Verify firmware_builder tests (generate code coverage) and bundles the code coverage information with the correct metadata: ``` make clobber firmware_builder.py --code-coverage --metrics metrics.json test firmware_builder.py --code-coverage --metrics metrics.json bundle ls /tmp/artifact_bundles/coverage.tbz2 cat /tmp/artifact_bundle_metadata ``` Cq-Depend: chromium:2770601 Signed-off-by: Paul Fagerburg <pfagerburg@chromium.org> Change-Id: I355ea76cc774f566bf552741c1a1bdc94cd21bda Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2749421 Reviewed-by: LaMont Jones <lamontjones@chromium.org>
* zephyr: Require new CONFIG options to be in Kconfig tooSimon Glass2021-03-051-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a script to help deal with new ad-hoc CONFIG options being added to ECOS. This works by maintaining a list of allowed ad-hoc CONFIG options and refusing to allow a build to succeed if it adds new ones. This is easier to implement than a pre-submit and more useful, since we can check the actual CONFIG file produced by a board. For example, adding a new CONFIG to board/volteer/board.h will cause the volteer build to break, but not kukui. That seems important to avoid frustration. Add the base list of allowed ad-hoc CONFIGs, which should never grow. As new Kconfig options are added for existing CONFIG options, or obsolete CONFIG options are removed, the list should eventually shrink to zero. BUG=b:181253613 BRANCH=none TEST=manually test that adding a new '#define CONFIG' causes an error to be generated, and adding a new Kconfig option with the same name causes the error to go away. Also check that the script suggests updating the list when a Kconfig is added for an existing CONFIG option. Finally, manually check that ALLOW_CONFIG=1 does as intended. (that's quite a few manual tests; possibly it is worth automating them) Change-Id: Id11b8d859fd07c2db73324cbb9e425182710ab3d Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2718533 Reviewed-by: Jack Rosenthal <jrosenth@chromium.org> Reviewed-by: Yuval Peress <peress@chromium.org> Reviewed-by: Keith Short <keithshort@chromium.org>
* 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>