1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00

tests/external_module_dir: test for EXTERNAL_MODULE_DIRS

It demonstrates:

 * Adding a module with source code
 * Setting a header include directory
 * Adding dependences, which are evaluated before other modules dependencies

If the application compiles, everything is ok.
This commit is contained in:
Gaëtan Harter 2018-04-19 17:10:51 +02:00
parent 6b534a935f
commit 4157a07152
No known key found for this signature in database
GPG Key ID: 76DF6BCF1B1F883B
9 changed files with 131 additions and 0 deletions

View File

@ -74,6 +74,9 @@ The external module can optionally define the following files:
API headers include paths to the `USEMODULE_INCLUDES` variable.
* `Makefile.dep` file to set module dependencies
An example can be found in
[`tests/external_module_dirs`](https://github.com/RIOT-OS/RIOT/tree/master/tests/external_module_dirs)
Pseudomodules {#pseudomodules}
=============
Pseudomodules are modules that do not have any code. Their main use cases are

View File

@ -0,0 +1,10 @@
APPLICATION = external_module_dirs
BOARD ?= native
RIOTBASE ?= $(CURDIR)/../..
USEMODULE += random
USEMODULE += external_module
EXTERNAL_MODULE_DIRS += $(CURDIR)/external_module
include $(RIOTBASE)/Makefile.include

View File

@ -0,0 +1,12 @@
Test of `EXTERNAL_MODULE_DIRS` handling
=======================================
This is a test for the `EXTERNAL_MODULE_DIRS` variable.
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.

View File

@ -0,0 +1 @@
include $(RIOTBASE)/Makefile.base

View File

@ -0,0 +1,3 @@
USEMODULE += random
# Set a different prng than the default prng_tinymt32
USEMODULE += prng_xorshift

View File

@ -0,0 +1,3 @@
# Use an immediate variable to evaluate `MAKEFILE_LIST` now
USEMODULE_INCLUDES_external_module := $(abspath $(dir $(lastword $(MAKEFILE_LIST))))/include
USEMODULE_INCLUDES += $(USEMODULE_INCLUDES_external_module)

View File

@ -0,0 +1,24 @@
/*
* Copyright (C) 2018 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup tests
* @{
*
* @file
* @brief Test the EXTERNAL_MODULE_DIRS feature
* @note Define a shared variable
*
* @author Gaëtan Harter <gaetan.harter@fu-berlin.de>
*
* @}
*/
#include "external_module.h"
char *external_module_message = "Linking worked";

View File

@ -0,0 +1,37 @@
/*
* Copyright (C) 2018 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @defgroup
* @ingroup
* @brief
* @{
*
* @file
* @brief
*
* @author Gaëtan Harter <gaetan.harter@fu-berlin.de>
*/
#ifndef EXTERNAL_MODULE_H
#define EXTERNAL_MODULE_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @brief A simple string message
*/
extern char *external_module_message;
#ifdef __cplusplus
}
#endif
/** @} */
#endif /* EXTERNAL_MODULE_H */

View File

@ -0,0 +1,38 @@
/*
* Copyright (C) 2018 Freie Universität Berlin
*
* This file is subject to the terms and conditions of the GNU Lesser
* General Public License v2.1. See the file LICENSE in the top level
* directory for more details.
*/
/**
* @ingroup tests
* @{
*
* @file
* @brief Test the EXTERNAL_MODULE_DIRS feature
*
* @author Gaëtan Harter <gaetan.harter@fu-berlin.de>
*
* @}
*/
#include <stdio.h>
#include "external_module.h"
#ifdef MODULE_PRNG_TINYMT32
#error "Error: it included the default dependency"
#endif
#ifndef MODULE_PRNG_XORSHIFT
#error "Dependency not included"
#endif
int main(void)
{
puts("If it compiles, it works!");
printf("Message: %s\n", external_module_message);
return 0;
}