mirror of
https://github.com/apache/nuttx.git
synced 2026-08-15 01:13:29 +00:00
The goal is to only execute recipes when there is an actual change in the prerequisites. There are several issues which cause the nuttx binary target to be re-made every time the top level make is run. 1. Previously the target nuttx$(EXEEXT), was used, but make resolved this in the relative directory make -C $(ARCH_SRC), and couldn’t find it (need an absolute path: `$(TOPDIR)/..). 2. The .tmp prerequisite for nuttx was always deleted 3. libboard's recipe had a sub-make which may or may not update that target. This was a phony target, and was therefore always considered out of date. These issues were causing the nuttx recipe to be run every make, which was hiding some missing prerequisites: 1. the .config is a prerequisite for the .tmp target 2. libapps.a (and other linklibs) are pre-requisites for nuttx Changes: The changes are only in the build system, and only for arm. Track nuttx$(EXEEXT) via vpath so Make knows when it's already up to date without an explicit path. Add $(TOPDIR)/.config as a dependency to the linker script preprocessing so config changes trigger re-preprocessing. Keep the .tmp linker script on disk (clean already removes it) so timestamp-based dependency checking works across builds. These .tmp files need to be added to the gitignore or the CI will complain. Use FORCE pattern for board/libboard to ensure it's always checked but use the actual library file as the link dependency so nuttx is only re-linked when library content changes. Add staging libs as dependency to nuttx link rule so changed app libs trigger re-link. Signed-off-by: Liam Hickey <williamhickey@geotab.com> |
||
|---|---|---|
| .. | ||
| CMakeLists.txt | ||
| Kconfig | ||
| lib_backtrace.c | ||
| lib_bitmap.c | ||
| lib_circbuf.c | ||
| lib_crc8.c | ||
| lib_crc8ccitt.c | ||
| lib_crc8h1d.c | ||
| lib_crc8h2f.c | ||
| lib_crc8rohc.c | ||
| lib_crc8table.c | ||
| lib_crc16.c | ||
| lib_crc16ccitt.c | ||
| lib_crc16h1021.c | ||
| lib_crc16h8005.c | ||
| lib_crc16ibm.c | ||
| lib_crc16xmodem.c | ||
| lib_crc32.c | ||
| lib_crc32h04c11db7.c | ||
| lib_crc32hf4acfb13.c | ||
| lib_crc64.c | ||
| lib_crc64emac.c | ||
| lib_creat.c | ||
| lib_cxx_initialize.c | ||
| lib_debug.c | ||
| lib_dumpbuffer.c | ||
| lib_dumpvbuffer.c | ||
| lib_envpath.c | ||
| lib_err.c | ||
| lib_fchmodat.c | ||
| lib_fdcheck.c | ||
| lib_fdsan.c | ||
| lib_fnmatch.c | ||
| lib_fstatat.c | ||
| lib_ftok.c | ||
| lib_getfullpath.c | ||
| lib_getnprocs.c | ||
| lib_getrandom.c | ||
| lib_glob.c | ||
| lib_idr.c | ||
| lib_impure.c | ||
| lib_instrument.c | ||
| lib_kbddecode.c | ||
| lib_kbdencode.c | ||
| lib_mallopt.c | ||
| lib_memfd.c | ||
| lib_mkdirat.c | ||
| lib_mkfifo.c | ||
| lib_mknod.c | ||
| lib_mutex.c | ||
| lib_ncompress.c | ||
| lib_note.c | ||
| lib_openat.c | ||
| lib_slcddecode.c | ||
| lib_slcdencode.c | ||
| lib_tea_decrypt.c | ||
| lib_tea_encrypt.c | ||
| lib_tempbuffer.c | ||
| lib_uadd32x64.c | ||
| lib_uadd64.c | ||
| lib_umask.c | ||
| lib_umul32.c | ||
| lib_umul32x64.c | ||
| lib_umul64.c | ||
| lib_usub64.c | ||
| lib_usub64x32.c | ||
| lib_utimensat.c | ||
| lib_utsname.c | ||
| lib_xorshift128.c | ||
| Make.defs | ||