lib/hardwaremain.c: Hide preprocessor guards in header

The `location` member of `struct boot_state_callback` is conditionally
guarded depending on `CONFIG(DEBUG_BOOT_STATE)` using preprocessor. It
is probably intended to save some space when the `location` strings do
not get printed. However, directly using the `location` member without
any guards will cause a compile-time error. Plus, preprocessor-guarded
code gets nasty really quickly.

In order to minimise preprocessor usage, introduce the `bscb_location`
inline helper function, which transforms the compile-time error into a
link-time error. It is then possible to substitute preprocessor guards
with an ordinary C `if` statement.

Change-Id: I40b7f29f96ea96a5977b55760f0fcebf3a0df733
Signed-off-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/55386
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Reviewed-by: Raul Rangel <rrangel@chromium.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
diff --git a/src/lib/hardwaremain.c b/src/lib/hardwaremain.c
index cd4a57e..7ab2ade 100644
--- a/src/lib/hardwaremain.c
+++ b/src/lib/hardwaremain.c
@@ -274,10 +274,10 @@
 			phase->callbacks = bscb->next;
 			bscb->next = NULL;
 
-#if CONFIG(DEBUG_BOOT_STATE)
-			printk(BIOS_DEBUG, "BS: callback (%p) @ %s.\n",
-				bscb, bscb->location);
-#endif
+			if (CONFIG(DEBUG_BOOT_STATE)) {
+				printk(BIOS_DEBUG, "BS: callback (%p) @ %s.\n",
+					bscb, bscb_location(bscb));
+			}
 			bscb->callback(bscb->arg);
 			continue;
 		}