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:
parent
6b534a935f
commit
4157a07152
@ -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
|
||||
|
10
tests/external_module_dirs/Makefile
Normal file
10
tests/external_module_dirs/Makefile
Normal 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
|
12
tests/external_module_dirs/README.md
Normal file
12
tests/external_module_dirs/README.md
Normal 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.
|
1
tests/external_module_dirs/external_module/Makefile
Normal file
1
tests/external_module_dirs/external_module/Makefile
Normal file
@ -0,0 +1 @@
|
||||
include $(RIOTBASE)/Makefile.base
|
3
tests/external_module_dirs/external_module/Makefile.dep
Normal file
3
tests/external_module_dirs/external_module/Makefile.dep
Normal file
@ -0,0 +1,3 @@
|
||||
USEMODULE += random
|
||||
# Set a different prng than the default prng_tinymt32
|
||||
USEMODULE += prng_xorshift
|
@ -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)
|
24
tests/external_module_dirs/external_module/external_module.c
Normal file
24
tests/external_module_dirs/external_module/external_module.c
Normal 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";
|
@ -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 */
|
38
tests/external_module_dirs/main.c
Normal file
38
tests/external_module_dirs/main.c
Normal 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user