From cd93e42deb79f8849cbf214875ba9fd6c11a9092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20H=C3=BC=C3=9Fler?= Date: Mon, 8 Nov 2021 12:43:20 +0100 Subject: [PATCH] tests/external_module_dirs: add auto-init function --- tests/external_module_dirs/README.md | 3 +-- .../external_module/external_module.c | 11 +++++++++++ .../external_module/include/external_module.h | 13 +++++++++++++ tests/external_module_dirs/main.c | 6 +++++- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/tests/external_module_dirs/README.md b/tests/external_module_dirs/README.md index e19e6b36b8..88fc0b97ad 100644 --- a/tests/external_module_dirs/README.md +++ b/tests/external_module_dirs/README.md @@ -8,5 +8,4 @@ It demonstrates: * Adding a module with source code * Setting a header include directory * Adding dependencies, which are evaluated before other modules dependencies - -If the application compiles, everything is ok. + * Registering a module for auto-initialization diff --git a/tests/external_module_dirs/external_modules/external_module/external_module.c b/tests/external_module_dirs/external_modules/external_module/external_module.c index 31b679f8aa..9ef6c86fb9 100644 --- a/tests/external_module_dirs/external_modules/external_module/external_module.c +++ b/tests/external_module_dirs/external_modules/external_module/external_module.c @@ -20,5 +20,16 @@ */ #include "external_module.h" +#include "auto_init_utils.h" +#define PRIO 1111 + +AUTO_INIT(auto_init_external_module, PRIO); + +bool external_module_initialized = false; char *external_module_message = "Linking worked"; + +void auto_init_external_module(void) +{ + external_module_initialized = true; +} diff --git a/tests/external_module_dirs/external_modules/external_module/include/external_module.h b/tests/external_module_dirs/external_modules/external_module/include/external_module.h index f358ef4786..e15bbaff97 100644 --- a/tests/external_module_dirs/external_modules/external_module/include/external_module.h +++ b/tests/external_module_dirs/external_modules/external_module/include/external_module.h @@ -20,15 +20,28 @@ #ifndef EXTERNAL_MODULE_H #define EXTERNAL_MODULE_H +#include + #ifdef __cplusplus extern "C" { #endif +/** + * @brief true: this module hase been initialized + * false: this module has not been initialized + */ +extern bool external_module_initialized; + /** * @brief A simple string message */ extern char *external_module_message; +/** + * @brief Auto-init function of this module to be called on system start up + */ +void auto_init_external_module(void); + #ifdef __cplusplus } #endif diff --git a/tests/external_module_dirs/main.c b/tests/external_module_dirs/main.c index 9695fb6826..59520aff22 100644 --- a/tests/external_module_dirs/main.c +++ b/tests/external_module_dirs/main.c @@ -32,7 +32,11 @@ int main(void) { - puts("If it compiles, it works!"); printf("Message: %s\n", external_module_message); + if (!external_module_initialized) { + puts("External module has not been initialized."); + return 1; + } + puts("Initialization worked!"); return 0; }