include/config_distro_bootcmd.h:65 defines BOOTENV_DEV_MMC when CONFIG_CMD_MMC is defined. Otherwise, line 69 does. In the former case, BOOTENV_DEV_MMC is defined to BOOTENV_DEV_BLKDEV which is a macro that takes 3 arguments. In the latter case, BOOTENV_DEV_MMC is defined to BOOT_TARGET_DEVICES_references_MMC_without_CONFIG_CMD_MMC which is not defined at all. Since there isn't a macro of that name and it takes arguments, the compiler assumes it must be a function. Depending on compiler, flags, etc, that will either compile (assuming int return type, etc) or not. If it does compile, it will fail to link as that symbol is never defined.
On Mon, Feb 6, 2017 at 4:06 AM, Robert P. J. Day <rpj...@crashcourse.ca> wrote: > > i'm sure i'm missing something obvious, but i'm perusing > "include/config_distro_bootcmd.h" for the first time, and i can > understand the *principle* behind: > > /* > * A note on error handling: It is possible for BOOT_TARGET_DEVICES to > * reference a device that is not enabled in the U-Boot configuration, e.g. > * it may include MMC in the list without CONFIG_CMD_MMC being enabled. > Given > * that BOOT_TARGET_DEVICES is a macro that's expanded by the C > pre-processor > * at compile time, it's not possible to detect and report such problems > via > * a simple #ifdef/#error combination. Still, the code needs to report > errors. > * The best way I've found to do this is to make BOOT_TARGET_DEVICES > expand to > * reference a non-existent symbol, and have the name of that symbol encode > * the error message. Consequently, this file contains references to e.g. > * BOOT_TARGET_DEVICES_references_MMC_without_CONFIG_CMD_MMC. Given the > * prevalence of capitals here, this looks like a pre-processor macro and > * hence seems like it should be all capitals, but it's really an error > * message that includes some other pre-processor symbols in the text. > */ > > but, still, how is that name resolved to the corresponding error > message? what am i missing here? > > rday > > -- > > ======================================================================== > Robert P. J. Day Ottawa, Ontario, CANADA > http://crashcourse.ca > > Twitter: http://twitter.com/rpjday > LinkedIn: http://ca.linkedin.com/in/rpjday > ======================================================================== > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot > _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot