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

567 Commits

Author SHA1 Message Date
Francisco Molina
d2b9b4ce8c Makefile.include: pass IOTLAB_NODE to docker
By default if IoT-LAB Cli Tools V3 is used then BINFILE is used to
flash on IoT-LAB. But BINFILE is not built by default when RIOT_CI_BUILD
is set as a ci optimization.

But since before IOTLAB_NODE was not passed to docker when building it
did not know that it should BUILD BINFILE as well, which led to failures
if doing:

$ IOTLAB_NODE=iotlab-m3.grenoble.iot-lab.info BOARD=iotlab-m3 \
  RIOT_CI_BUILD=1 BUILD_IN_DOCKER=1 make -C examples/hello-world/ flash

But if IOTLAB_NODE is passed at is checks for IoT-LAB cli Tools also
happen in the docker container which leads to a make error since those
are not present in docker.

Therefore add BINFILE to BUILD_FILES if RIOT_CI_BUILD is set, but unset
IOTLAB_NODE once INSIDE_DOCKER.
2022-01-27 14:56:00 +01:00
chrysn
732c369b7e makefiles: Add mechanism to build modules through Cargo
... and to dissect the static libraries into invidial .o files to link
them the same way we link C.
2021-12-14 13:27:41 +01:00
MrKevinWeiss
cf74b26c55
cpu/mips: deprecate mips cpu
Add deprecate note in the mips cpu.
Add warning in make when any mips based board is being used (6lowpan-clicker, pic32-wifire).
2021-12-09 10:14:52 +01:00
MrKevinWeiss
fb6b929cec
Makefile.include: Hide kconfig warning for CI 2021-11-26 09:26:25 +01:00
Leandro Lanzieri
39ebbfd460
makefile.include: add RIOTKCONFIG 2021-11-22 12:25:30 +01:00
Leandro Lanzieri
c5b29916eb
makefile.dep: require arch_ cpu_core_ features first 2021-11-18 09:00:35 +01:00
Benjamin Valentin
3303b8c16a Makefile.include: rename Makefile.ci target to create-Makefile.ci
If we

    -include Makefile.ci

and `Makefile.ci` does not exist, but we provide `make` with a way
on how to do so, it will try to create `Makefile.ci`.

This is not what we want, but I don't know how to disable this automagic.
So rename the target to `create-Makefile.ci` to avoid the conflict.
2021-11-15 20:20:11 +01:00
benpicco
7c8504186e
Merge pull request #16109 from benpicco/dist/tools/create_makefile.ci.sh
tools/insufficient_memory: add create_makefile.ci.sh and Makefile.ci make target
2021-11-15 18:12:01 +01:00
Benjamin Valentin
0b3e4cd43f tools/insufficient_memory: add create_makefile.ci.sh 2021-11-15 17:41:54 +01:00
Benjamin Valentin
02f7e3541f Makefile.include: remove warning about EXTERNAL_MODULE_DIRS API change
The warning about the API change is scheduled to be removed by 2020.10.
Since the release has been branched off, we can now drop the warning
going forward.
2021-10-13 16:54:48 +02:00
Benjamin Valentin
74a0f8d8b9 build system: add fallback for RIOT_VERSION_CODE
If the repository was checked out without tags, parsing RIOT_VERSION
will fail.

Fall back to creating a fake release version code based on the current
year and month.
2021-09-27 14:32:30 +02:00
Benjamin Valentin
9267d9dd61 build system: add VERBOSE_ASSERT flag
Add a compile-time convenience variable to enable verbose asserts.
2021-09-23 16:14:16 +02:00
Martine Lenders
ea8e632eda
Merge pull request #16765 from benpicco/RIOT_VERSION_CODE
build system: add machine-readable RIOT_VERSION_CODE macro
2021-09-22 12:47:35 +02:00
Benjamin Valentin
7ef2594327 core/include/kernel_defines.h: add RIOT_VERSION_NUM macro 2021-09-21 17:43:29 +02:00
Martine Lenders
13cc189a8a
Revert "Remove which from shell invocations" 2021-09-03 11:27:03 +02:00
chrysn
6b50033766 makefiles: Replace which with command -v
As the POSIX documentation[1] of `command -v` guarantees that on error
there will be no output (and there will be output in the other cases),
the tests in Makefiles were simplified to test for output equality to
the empty string.

Redirects swallowing error outputs were removed, as the command produces
no error output there (as recommended at [2]).

Existing uses of `command` are simplified as well.

[1]: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/command.html
[2]: https://salsa.debian.org/debian/debianutils/-/blob/master/debian/NEWS
2021-09-02 16:30:46 +02:00
Martine Lenders
ab6f24fb70
Merge pull request #16784 from fjmolinas/pr_curl_wget_unzip_7z_no_error
Makefile.include: only warn if not curl, wget, unzip, 7z
2021-09-02 14:26:51 +02:00
Marian Buschsieweke
a3f880c858
Merge pull request #16509 from fjmolinas/pr_clang_tidy_target
makefiles/clang-tidy: initial support
2021-08-31 15:26:33 +02:00
Francisco Molina
fee3169ba9 Makefile.include: warning not error if not curl, wget, unzip, 7z
The following tools are not needed for every build, its only needed
for a couple of packages like c25519, since most are fetched with git.
2021-08-28 11:55:53 +02:00
chrysn
648e014184 makefiles: Sort >/dev/null and 2>&1
Redirecting `2>&1 >/dev/null` moves stderr to stdout first and then
stdout to /dev/null; when checking for command existence or otherwise
silencing output, this is usually not desired (but only starts producing
errors when the actual command fails, which is often not tested).
2021-08-24 14:41:54 +02:00
MrKevinWeiss
652e4f41c1
cpp: Use modules for cpp and libstdcpp
Also add better error message when kconfig or make includes a .cpp without cpp module.
2021-07-02 15:11:10 +02:00
Martine Lenders
5d7477fa5f
Merge pull request #16513 from miri64/make/enh/isolate-MORE_QUIET
make: introduce QUIETER
2021-06-03 16:48:33 +02:00
Martine Lenders
04ba724763
make: introduce QUIETER
Makes the functionality of being more quiet on build (setting `QQ` to
`@`) independently configurable from `RIOT_CI_BUILD`.
2021-06-03 13:26:20 +02:00
ebbe2c2aa1
tools/testbed-iotlab: better handle unsupported archis 2021-06-01 17:37:50 +02:00
Francisco Molina
2c18d0d3d6
makefiles/clang-tidy: initial support 2021-05-28 11:57:20 +02:00
Francisco
8cb8bba4e7
Merge pull request #16104 from maribu/external_modules
build system: Rework EXTERNAL_MODULE_DIRS
2021-05-07 23:27:17 +02:00
Marian Buschsieweke
6ac8aba955
build system: rework EXTERNAL_MODULE_DIRS
Previously, external modules had to be individually added to both
EXTERNAL_MODULE_DIRS and USEMODULE. If those where not in sync, this
resulted in build errors.

With this commit, search folders for external modules are added to
EXTERNAL_MODULE_DIRS instead. So lets say the file system structure is
like this

```
└── /path/to/external/modules
    ├── mod_a
    │   ├── Makefile
    │   ├── Makefile.dep
    │   ├── Makefile.include
    │   ├── foo.c
    │   └── include
    │       └── external_module.h
    └── mod_b
        ├── Makefile
        └── bar.c

```

One now adds `/path/to/external/modules` to EXTERNAL_MODULES and only
with `USEMODULE += mod_a` the corresponding module, dependencies and
include settings are actually used. Hence, it is possible to configure
`EXTERNAL_MODULE_DIRS` from `~/.profile` or `~/.bashrc` once and never
needs to worry about them again.
2021-05-07 21:29:05 +02:00
Juan Carrano
1036115f2d
makefiles/utils/ansi: Refactor ansi codes into their own file.
The escape codes and special chars now live in their own module. The
color module is only concerned with detecting whether to use colors or
not.

Additional variables are defined with hard a coded ESC char, a tab and a
newline. This removes the need for echo or printf.
2021-05-04 10:52:50 +02:00
chrysn
c99bb55e68
Merge pull request #16129 from maribu/compile_commands_json
build system: add compile-commands target to generate compile_commands.json
2021-04-14 18:10:28 +02:00
Marian Buschsieweke
a07dac9ad1
build system: add new compile-commands make target
By running make compile-commands a `compile_commands.json` in the RIOT base
directory. With the environment variable `COMPILE_COMMANDS` the path of
this file can be changed to a custom location.

The `compile_commands.json` will contain the exact compile command, but
as additional flag `-I/usr/$(TARGET)/include` is added to work around
`clangd` not being able to locate the newlib system headers. The
additional includes can be overwritten using the environment variable
`COMPILE_COMMANDS_EXTRA_INCLUDES`.
2021-04-14 14:51:46 +02:00
Francisco Molina
19ae0d746a
Makefile: enable SECONDEXPANSION globally for modules and applications 2021-03-16 11:21:07 +01:00
c181ba2fe4
Makefile.include: use programmer wrapper to silent output 2021-02-25 12:59:39 +01:00
Francisco
2e06957e3b
Merge pull request #15983 from aabadie/pr/make/supported_programmers
boards: make: introduce mechanism to define supported programmers
2021-02-24 16:47:19 +01:00
f74cde5172
Makefile.include: add mechanism to check supported programmers 2021-02-24 13:27:04 +01:00
Benjamin Valentin
d95f21fd67 make: add cosy as a build target
`cosy` is a graphical memory usage analyzer.
It is a great tool, but pretty hidden.
Add it as a build target so it can be easiely summoned for any application and board.
2021-02-24 12:11:00 +01:00
ac549abbb9 xfa: remove common -Txfa.ld include 2021-02-18 10:46:08 +01:00
66092f5506 core: Introduce cross file arrays (XFA)
Co-Authored-By: Joakim Nohlgård <joakim.nohlgard@eistec.se>
2021-02-16 14:21:32 +01:00
Francisco Molina
d1deb6f3ef
Makefile.include: move default TOOLCHAIN before global goals 2021-01-27 11:11:43 +01:00
ad20733f01
Merge pull request #15771 from aabadie/review_test_manual
tests: add test-with-config and test-as-root targets
2021-01-26 09:33:14 +01:00
Gaëtan Harter
4412b9a4ab
tests/tests.inc.mk: move tests targets and variables
Create a file for setting tests targets and variables.
It is a refactoring before adding new commands.
2021-01-25 21:10:06 +01:00
Leandro Lanzieri
735c47ef65
makefile.include: avoid recursive expansion of USEMODULE 2021-01-25 09:16:11 +01:00
c293400154
Makefile.include: include serial.inc.mk before emulator 2021-01-11 21:31:48 +01:00
08108f85b4
make: replace emulate% targets with EMULATE variable 2021-01-11 21:31:48 +01:00
c8ce41c9de
dist/tools/emulator: allow use of term with emulators 2021-01-11 21:31:48 +01:00
d709ec78f6
Makefile.include: include serial.inc.mk in one place 2020-12-02 09:19:28 +01:00
02ee3a7d4d
Makefile.include: renode: add emulate-only target 2020-11-27 13:39:23 +01:00
11db3db714
Makefile.include: silent emulate when debug% targets are used 2020-11-27 13:39:22 +01:00
4b149fa3c3
Makefile.include: add emulate-debug-server target 2020-11-27 13:39:22 +01:00
Francisco
47ed64fcfd
Merge pull request #15466 from leandrolanzieri/pr/kconfig_drivers_bc
drivers/{b,c}*: model modules in Kconfig
2020-11-26 10:44:28 +01:00
ae4d505154
Makefile.include: include programmer logic in common place 2020-11-25 21:04:37 +01:00
Leandro Lanzieri
e031051e0a
Makefile.include: allow to select packages from Kconfig 2020-11-25 12:00:13 +01:00
19590a9f74
Makefile.include: include emulator logic when emulate target is used 2020-11-20 14:24:05 +01:00
Leandro Lanzieri
f22927645d
Makefile.include: discover object files in subpaths while linking 2020-11-03 17:25:33 +01:00
Leandro Lanzieri
34d84ad8c6
makefile: add check for ERROR_ Kconfig symbols
This adds a check in the build process to verify that no ERROR_ Kconfig
symbols are set. These symbols indicate invalid conditions in the
Kconfig configuration.
2020-10-09 18:01:33 +02:00
Francisco Molina
90a4d77879
Makefile.include: intial features check before dependency resolution 2020-09-14 18:56:33 +02:00
6c2459057f
Merge pull request #14910 from OTAkeys/pr/thread_names
thread: Add THREAD_NAMES make flag
2020-09-11 10:54:10 +02:00
Jim O'Brien
bd149e7db9 thread: Add THREAD_NAMES make flag
Separate thread names from DEVELHELP so thread names can be
enabled in non-development/debug builds when required/desired.
THREAD_NAMES will be enabled by default then DEVELHELP is set to 1.
2020-09-10 10:08:27 +02:00
Leandro Lanzieri
e80bb4b3dc
makefile: add a check for real modules 2020-09-04 15:01:16 +02:00
Leandro Lanzieri
81cb769cad
makefiles: avoid building archives when compiling 2020-09-04 15:01:10 +02:00
Leandro Lanzieri
2e79e00ca7
treewide: change Kconfig prefix for module symbols
This changes the prefix used for the symbols that reprensent modules
(not the ones generated from USEMODULE).

MOD_ => MODULE_
2020-08-31 09:57:28 +02:00
b93b972074
Merge pull request #14753 from fjmolinas/pr_info_boards_supported_conflicts
makefiles/info-global.inc.mk: include FEATURES_CONFLICTS
2020-08-18 10:37:20 +02:00
Francisco Molina
8ab8d04e9b
makefiles/info-global.inc.mk: include FEATURES_CONFLICTS
If there are FEATURES_CONFLICTING consider the application not
supported for the BOARD.
2020-08-13 09:29:34 +02:00
Leandro Lanzieri
180ee6efc9
makefiles: introduce KCONFIG_ADD_CONFIG variable
This holds a list of .config files to be merged. For more details see
kconfig.mk.
2020-08-12 12:22:42 +02:00
Leandro Lanzieri
01454188e8
Makefile.include: introduce TEST_KCONFIG switch
This switch allows to test the module dependency modelling during the
Kconfig migration. When set, it will use the symbols prefixed with
CONFIG_MOD_ defined by Kconfig as the list of modules to compile.
2020-08-12 12:22:41 +02:00
Martine Lenders
b9a4a5ead7
Merge pull request #14664 from miri64/make/feat/termlog
Makefile.include: add capability to log `make term` to file
2020-08-05 17:45:07 +02:00
Martine S. Lenders
6532459010
Makefile.include: add capability to log make term to file 2020-08-04 14:42:50 +02:00
Leandro Lanzieri
6a5c7744cb
makefiles/kconfig.mk: include KCONFIG_OUT_CONFIG always
This allows to include KCONFIG_OUT_CONFIG file in Makefile
unconditionally, which means that `make clean all` is allowed when using
Kconfig.

For this, the recipe for `clean` is guarded with `MAKE_RESTARTS` so
the BINDIR folder is not removed once Make restarts scanning the files.
2020-07-31 13:55:33 +02:00
Martine S. Lenders
44cf4a9f8d
make: only build MacOS-specific tool on MacOS
The comment says as much, the tool in question even has `macosx` in its
name [1], and it does not build for other non-Linux-POSIX systems such
as FreeBSD.

[1]: https://github.com/tzvetkoff/setsid-macosx
2020-07-29 13:58:04 +02:00
Marian Buschsieweke
267c8e1620
Makefile.include: Link with $(CXX) for C++ code
When mixing C and C++ code, $(CXX) has to be used for linking. Prior to this
commit, the build system automatically uses $(CXX) if the application contains
C++ source code. However, if C++ is used in an module only, $(CC) is still
used. This has not let to problems, as internal modules must be written in C.
For external modules this restriction does not apply.

This commit checks if the cpp feature is used. In that case, $(CXX) is used
for linking over $(CC). This way external modules may use C++ code.
2020-07-23 20:18:32 +02:00
0d9aeba804
Makefile.include: don't include drivers/Makefile.include anymore 2020-07-15 20:36:27 +02:00
38f32be24f
Makefile.include: include per driver Makefile.include if available 2020-07-15 20:34:00 +02:00
9d0253bed3
Makefile.include: remove remaining references to wsn430 2020-07-10 16:49:08 +02:00
Cenk Gündoğan
7aa499d5f1 make: use $(MAKE) instead of direct make call 2020-07-03 12:03:06 +02:00
d98ddfad9a
Merge pull request #13824 from fjmolinas/pr_openwsn
pkg/openwsn: re-integrate the network stack as a package
2020-06-30 14:08:10 +02:00
Francisco Molina
d01476a661
dist/tools/openvisualizer: inital support 2020-06-30 13:10:56 +02:00
chrysn
a181c0dbcd usb: Use separate Makefile for configuration and checks 2020-06-30 10:51:40 +02:00
chrysn
a1725b0b4b usb: Check against explicit use of 1209/7D00 VID/PID pair
That pair is reserved for cases when it can be set implicitly by the
build system.

The check could just as well be done in sys/include/usb.h, but this
gives prettier output.
2020-06-30 10:51:38 +02:00
chrysn
346093c290 usb: Move Kconfig/Makefile merging into main Makefile.include
This allows the check for test IDs to run independently of the
configuration source, and provides a canonical point for the
configurable (and tested) Makefile variable to enter CFLAGS.
2020-06-30 10:51:37 +02:00
chrysn
250f6fdfa3 usb: Warn on test-ID usage in a unified location
This

* renames DEFAULT_xID to USB_xID_TESTING as it is not really a default
  (if anyting, the 7D00 is, and it's not that)
* moves the check into Makefile
* generalizes the check to all test PID/VID pairs
  * in doing so, fixes the "or" (which would have ruled out warning-free
    use of an allocated pid.codes number), and compares to the actual
    testing PID rather than the RIOT-peripheral PID
* removes all occurrences of duplicated checks in examples or tests,
  leaving definitions only where they are needed
* moves the Kconfig defaults of the usbus_minimal example into the main
  Kconfig, as these are good defaults for all cases when USB is enabled
  manually

Closes: https://github.com/RIOT-OS/RIOT/issues/12273
2020-06-30 10:51:36 +02:00
c0925294d8
Merge pull request #14289 from aabadie/pr/pkg/global_pkg_dir
pkg: store packages sources in a global package directory
2020-06-26 11:06:02 +02:00
82b68a113b
Makefile.include: fetch packages sources in a global directory 2020-06-26 09:25:43 +02:00
Francisco Molina
4383599220
Makefile.include: resolve dependencies before Makefile.include 2020-06-25 09:24:05 +02:00
df58141e15
Makefile.include: don't define GITCACHE and GIT_CACHE_DIR globally 2020-06-23 14:54:25 +02:00
Benjamin Valentin
a74c41061b Makefile.include: allow prefix for $(PREFLASHER)
Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
2020-06-11 11:56:35 +02:00
Francisco Molina
47a5805434
Makefile: add BINFILE to default BUILD_FILES 2020-05-28 10:40:48 +02:00
Francisco Molina
1bd74ee81f
Makefile.include: remove useless assignment of none to BOARD 2020-05-26 10:20:36 +02:00
Francisco Molina
f1079cbe9f
Makefile.include: don't warn about BOARDSDIR usage in sub-make 2020-05-26 10:19:52 +02:00
Francisco Molina
8eee779c50
makefiles/info-global.inc.mk: add info-boards-features-blacklisted 2020-05-25 09:48:36 +02:00
Francisco
919249f361
Merge pull request #13862 from maribu/extra_boards
Makefile*: Allow multiple external board dirs
2020-04-29 20:12:06 +02:00
Marian Buschsieweke
ba7815163c
Makefile*: Allow multiple external board dirs
- Add the new EXTERNAL_BOARD_DIRS variable that can contain a space separated
  list of folders containing external boards
- Introduce $(BOARDDIR) as shortcut for $(BOARDSDIR)/$(BOARD)
- Map the existing BOARDSDIR to the new approach
    - If BOARDSDIR is provided by the user, it will be added to
      EXTERNAL_BOARD_DIRS for backward compatibility. (And a warning is issued
      to encourage users migrating to EXTRA_BOARDS.)
    - BOARDSDIR is updated after the board is found to "$(BOARDDIR)/..".
        - Useful for `include $(BOARDSDIR)/common/external_common/Makefile.dep`
        - Provides backward compatibility
2020-04-29 18:32:39 +02:00
Benjamin Valentin
d5dce87e1b Makefile.include: rename MAKEFILEDIR to LAST_MAKEFILEDIR
Rename the variable to make it clearer that it refers to the last Makefile
included.
Usually this is the current file, but when another Makefile is included this
changes.
2020-04-28 15:45:27 +02:00
Benjamin Valentin
6887e2f40e Makefile.include: update the documentation of $(MAKEFILEDIR) 2020-04-25 19:10:00 +02:00
Francisco
3d8f71768c
Merge pull request #13846 from benpicco/Makefile-THISDIR
Makefile.include: add $(MAKEFILEDIR) helper and use it
2020-04-21 11:00:52 +02:00
Sören Tempel
24468bead6 fuzzing: Initialize
This adds a new subdirectory called `fuzzing/` which will contain
applications for fuzzing various RIOT network modules in the future.
This subdirectory is heavily inspired by the `examples/` subdirectory.

The fuzzing applications use AFL as a fuzzer. Each application contains
Makefiles, source code, and an input corpus used by AFL to generate
input for fuzzing.
2020-04-17 17:11:15 +02:00
Benjamin Valentin
4db6ce3424 Makefile.include: add $(MAKEFILEDIR) helper and use it
$(MAKEFILEDIR) will always evaluate to the directory of the Makefile
where it's being called (evaluated).

This construct is used elsewhere in RIOT, make it more accessable
by defining a special variable with it.
2020-04-15 11:51:05 +02:00
Marian Buschsieweke
7bc15acee2
build system: Restructure dependency resolution
Goals:
- Untangle dependency resolution and feature checking for better maintainability
- Improve performance of "make info-boards-supported"

Changes:
- Makefile.dep
    - Dropped handling of default modules and recursion
    - Now only dependencies of the current set of used modules and pkgs are
      added
  ==> External recursion is needed to catch transient dependencies
- Changed Makefile.features:
    - Dropped checking of provided features
    - Dropped populating FEATURES_USED with provided features that are required
      or optional
    - Dropped populating FEATURES_MISSING with required but not provided
      features
    - Dropped adding modules implementing used features to USE_MODULE
  ==> This now only populates FEATURES_PROVIDED, nothing more
- Added makefiles/features_check.inc.mk:
    - This performs the population of FEATURES_USED and FEATURES_MISSING now
- Added makefiles/features_modules.inc.mk:
    - This performs now the addition of modules implementing used features
- Added makefiles/dependency_resolution.inc.mk:
    - This now performs the recursion required to catch transient dependencies
    - Also the feature check is performed recursively to handle also required
      and optional features of the transient dependencies
    - DEFAULT_MODULES are added repeatedly to allow it to be extended based on
      used features and modules
      ==> This allows modules to have optional dependencies, as these
          dependencies can be blacklisted
- Use simply expanded variables instead of recursively expended variables
  (`foo := $(bar)` instead `foo = $(bar)`) for internal variables during feature
  resolution. This improves performance significantly for
  `make info-boards-supported`.
- Reduce dependency resolution steps in `make info-boards-supported`
    - Globally resolve dependencies without any features (including arch)
      provided
      ==> This results in the common subset of feature requirements and modules
          used
        - But for individual boards additional modules might be used on top due
          to architecture specific dependencies or optional features
    - Boards not supporting this subset of commonly required features are not
      supported, so no additional dependency resolution is needed for them
    - For each board supporting the common set of requirements a complete
      dependency resolution is still needed to also catch architecture specific
      hacks
         - But this resolution is seeded with the common set of dependencies to
           speed this up
2020-04-02 09:55:07 +02:00
Jose Alamos
e451570219 gnrc_netif: remove GNRC_NETIF_NUMOF macro 2020-03-26 11:12:23 +01:00
Francisco Molina
d4e2bede93
Makefile.include: guard suit.base.inc.mk inclusion 2020-03-23 10:22:03 +01:00
7d0c475113
Merge pull request #13486 from bergzand/pr/suit/ietf_v3
SUIT: Update to draft-ietf-v3
2020-03-20 14:44:29 +01:00
413b91326f
tests/suit_v3_manifest: Add draft-ietf-v3 manifest parser test
Co-authored-by: Kaspar Schleiser <kaspar@schleiser.de>
2020-03-19 22:56:01 +01:00