Remove EXPAND/STRINGIFY macros.
They are error-prone by putting anything into a string (e.g.
EXPAND(RECOVERY_API_VERSION) would become "RECOVER_API_VERSION" if we
forgot to pass -DRECOVERY_API_VERSION=3).
RECOVERY_API_VERSION is the only user (in bootable/recovery) that gets
stringified. Assign it to a typed var and sanity check the value.
Don't see other reference to the macros from device-specific recovery
directories (they can still define that locally if really needed).
Test: recovery_component_test
Test: Sideload an OTA on angler and marlin respectively.
Change-Id: I358bbdf8f0a99db5ce4c7bc2fdcafe8013501b64
diff --git a/common.h b/common.h
index 62fb132..87b8477 100644
--- a/common.h
+++ b/common.h
@@ -22,8 +22,8 @@
#include <string>
-#define STRINGIFY(x) #x
-#define EXPAND(x) STRINGIFY(x)
+static constexpr int kRecoveryApiVersion = RECOVERY_API_VERSION; // Defined in Android.mk.
+static_assert(kRecoveryApiVersion >= 3, "Invalid recovery API version.");
class RecoveryUI;
diff --git a/install.cpp b/install.cpp
index 689f4a0..2cc0660 100644
--- a/install.cpp
+++ b/install.cpp
@@ -287,7 +287,7 @@
*cmd = {
binary,
- EXPAND(RECOVERY_API_VERSION), // defined in Android.mk
+ std::to_string(kRecoveryApiVersion),
std::to_string(status_fd),
path,
};
diff --git a/recovery.cpp b/recovery.cpp
index 944c240..6dd9858 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -1501,7 +1501,7 @@
property_list(print_property, NULL);
printf("\n");
- ui->Print("Supported API: %d\n", RECOVERY_API_VERSION);
+ ui->Print("Supported API: %d\n", kRecoveryApiVersion);
int status = INSTALL_SUCCESS;