#3818 accepted enhancement

New build system

Reported by: Sebastian Huber Owned by: Sebastian Huber
Priority: normal Milestone: 5.1
Component: build Version: 5
Severity: normal Keywords:
Cc: Blocked By:
Blocking:

Description (last modified by Sebastian Huber)

Replace the existing Autoconf and Automake based build system with something new. Goals:

  • Easier configuration of BSPs (BSP options)
  • Easier to maintain (nobody understands the details of the existing build system)
  • Faster builds (especially on Windows)
  • Reusable build specifications (e.g. generate documentation for BSP options for the user manual)
  • Validation of built artefacts (e.g. ensure that the objects are built as specified using the DWARF debug information)
  • Support building of BSPs external to the project
  • Customization of the build (e.g. build only a subset of the RTEMS functions)
  • Support alternative compilers such as clang instead of GCC

Proposed solution:

  • Use waf for the build system
  • Specify the build through build specification items maintained by Doorstop

Change History (41)

comment:1 Changed on Nov 7, 2019 at 8:30:03 AM by Sebastian Huber

Description: modified (diff)

comment:2 Changed on Nov 7, 2019 at 8:30:40 AM by Sebastian Huber

Status: assignedaccepted

comment:3 Changed on Nov 12, 2019 at 9:07:11 AM by Sebastian Huber <sebastian.huber@…>

In 9f3c558/rtems:

tests: Remove superfluous SMPTESTS define

Update #3818.

comment:4 Changed on Nov 12, 2019 at 9:07:15 AM by Sebastian Huber <sebastian.huber@…>

In f32e119/rtems:

psxtests: Avoid build system defined defines

Update #3818.

comment:5 Changed on Nov 12, 2019 at 9:07:18 AM by Sebastian Huber <sebastian.huber@…>

In 150fbaf9/rtems:

psxtmtests: Avoid build system defined defines

Update #3818.

comment:6 Changed on Nov 12, 2019 at 9:07:22 AM by Sebastian Huber <sebastian.huber@…>

In a467f59/rtems:

sptests: Avoid build system defined defines

Update #3818.

comment:7 Changed on Nov 12, 2019 at 9:07:28 AM by Sebastian Huber <sebastian.huber@…>

In 51765553/rtems:

sptests: Remove obsolete semaphore consume driver

This driver is no longer used by a test program.

Update #3818.

comment:8 Changed on Nov 12, 2019 at 9:07:31 AM by Sebastian Huber <sebastian.huber@…>

In 5ba4f383/rtems:

libtests: Avoid build system defined defines

Update #3818.

comment:9 Changed on Nov 12, 2019 at 9:07:34 AM by Sebastian Huber <sebastian.huber@…>

In c89a5dc8/rtems:

samples: Avoid build system defined defines

Update #3818.

comment:10 Changed on Nov 12, 2019 at 9:07:40 AM by Sebastian Huber <sebastian.huber@…>

In 34cbac1/rtems:

tmtests: Avoid build system defined defines

Update #3818.

comment:11 Changed on Nov 12, 2019 at 9:07:43 AM by Sebastian Huber <sebastian.huber@…>

In eae263c/rtems:

mptests/mp14: Make MAX_LONG_TEST_DURATION constant

If there is a real need, it can be made a configuration option again.

Update #3818.

comment:12 Changed on Nov 12, 2019 at 9:07:46 AM by Sebastian Huber <sebastian.huber@…>

In 786ae3f/rtems:

ada/samples: Avoid build system defined defines

Update #3818.

comment:13 Changed on Nov 12, 2019 at 9:07:50 AM by Sebastian Huber <sebastian.huber@…>

In 0b520cb/rtems:

mptests: Avoid build system defined defines

Update #3818.

comment:14 Changed on Nov 12, 2019 at 9:07:53 AM by Sebastian Huber <sebastian.huber@…>

In b88c7583/rtems:

fstests: Use tmacros.h instead of pmacros.h

This avoids an extra include path.

Update #3818.

comment:15 Changed on Nov 12, 2019 at 9:07:56 AM by Sebastian Huber <sebastian.huber@…>

In 37d509b/rtems:

libtests: Remove superfluous include path

Update #3818.

comment:16 Changed on Nov 12, 2019 at 9:07:59 AM by Sebastian Huber <sebastian.huber@…>

In 6da85f49/rtems:

block08: Use local include

Update #3818.

comment:17 Changed on Nov 12, 2019 at 9:08:03 AM by Sebastian Huber <sebastian.huber@…>

In 1e343825/rtems:

tests: Simplify fatal error test support

Move system.h to shared init.c.

Update #3818.

comment:18 Changed on Nov 12, 2019 at 9:08:06 AM by Sebastian Huber <sebastian.huber@…>

In 1a48cbf/rtems:

sptests: Avoid include path magic

Update #3818.

comment:19 Changed on Nov 12, 2019 at 9:08:09 AM by Sebastian Huber <sebastian.huber@…>

In f515948/rtems:

ada/mptests: Make them compile clean

Fix all warnings.

Update #3818.

comment:20 Changed on Nov 14, 2019 at 10:49:27 AM by Sebastian Huber <sebastian.huber@…>

In 984d7443/rtems:

bsp/gumstix: Remove ON_SKYEYE Automake conditional

It is fine to build the drivers always.

Update #3818.

comment:21 Changed on Nov 14, 2019 at 2:10:37 PM by Sebastian Huber <sebastian.huber@…>

In bc28b65/rtems:

bsp/beagle: Rename linker command file

This BSP family uses only one linker command file. Use the standard
name.

Update #3818.

comment:22 Changed on Nov 14, 2019 at 2:10:40 PM by Sebastian Huber <sebastian.huber@…>

In 41ab50e4/rtems:

bsp/t32mppc: Rename linker command file

This BSP family uses only one linker command file. Use the standard
name.

Update #3818.

comment:23 Changed on Nov 15, 2019 at 6:46:01 AM by Sebastian Huber <sebastian.huber@…>

In 9c601b00/rtems:

bsp/i386: Remove unused BSP_HAS_SMP

Update #3818.

comment:24 Changed on Nov 15, 2019 at 6:46:04 AM by Sebastian Huber <sebastian.huber@…>

In b882b07/rtems:

Remove BSP_SMALL_MEMORY BSP option

Use the test state configuration instead.

Update #3818.

comment:25 Changed on Nov 15, 2019 at 6:46:07 AM by Sebastian Huber <sebastian.huber@…>

In 75d9e79f/rtems:

bsp/lpc32xx: Remove unused TESTS_USE_PRINTK

Update #3818.

comment:26 Changed on Nov 21, 2019 at 7:06:00 AM by Sebastian Huber <sebastian.huber@…>

In af321aa/rtems:

bsp/altcycv_devkit: Rename linker command file

This BSP family uses only one linker command file. Use the standard
name.

Update #3818.

comment:27 Changed on Nov 21, 2019 at 7:06:04 AM by Sebastian Huber <sebastian.huber@…>

In a52d6174/rtems:

bsp/imx7: Rename linker command file

This BSP family uses only one linker command file. Use the standard
name.

Update #3818.

comment:28 Changed on Nov 21, 2019 at 7:06:11 AM by Sebastian Huber <sebastian.huber@…>

In 38207a31/rtems:

Move feature macro before "config.h" include

This allows to use header includes in "config.h" to reduce the build
configuration checks.

Update #3818.

comment:29 Changed on Nov 21, 2019 at 7:06:14 AM by Sebastian Huber <sebastian.huber@…>

In f377998/rtems:

imfs: Add IMFS_make_linfile()

Update #3818.

comment:30 Changed on Nov 25, 2019 at 10:45:38 AM by Sebastian Huber <sebastian.huber@…>

In 3e9f5a55/rtems:

bsp/gen83xx: Remove obsolete linker command file

Update #3818.

comment:31 Changed on Nov 25, 2019 at 10:45:42 AM by Sebastian Huber <sebastian.huber@…>

In 05a32e15/rtems:

bsp/mpc55xxevb: Remove obsolete linker cmd file

Update #3818.

comment:32 Changed on Nov 25, 2019 at 10:45:45 AM by Sebastian Huber <sebastian.huber@…>

In a0304e8d/rtems:

libtest: Output basename of source files

Output only the basename of source files to be independent of the build
system source paths.

In the future it may be better to use the GCC -fmacro-prefix-map option.
This option is available in GCC 8 and later. It is not yet available in
clang.

Update #3818.

comment:33 Changed on Nov 25, 2019 at 10:45:55 AM by Sebastian Huber <sebastian.huber@…>

In 273e8b7/rtems:

libtests/tar0[12]:: Use static archive content

This simplifies the build process. Do not generate the archive content
through the build system. Let the version control system deal with
symbolic links.

Update #3818.

comment:34 Changed on Nov 25, 2019 at 10:45:59 AM by Sebastian Huber <sebastian.huber@…>

In 8f021bd/rtems:

libtests/dl*: Do not generate files via "echo"

Add the static files to the repository. This simplifies the build.

Update #3818.

comment:35 Changed on Nov 25, 2019 at 12:02:10 PM by Sebastian Huber <sebastian.huber@…>

In 5c2e7104/rtems:

libtests: Use '-' for TAR file names

Use uniform pattern for all TAR file names. Use the dl* tests as a
template.

Update #3818.

comment:36 Changed on Nov 26, 2019 at 7:35:02 AM by Sebastian Huber <sebastian.huber@…>

In 4a05652/rtems:

libtests/dl*: Rename source files

Rename source files to use a %.c -> %.o and %.cc -> %.o pattern. Use
*.cc for C++ source files instead of *.cpp to be in line with other C++
source files.

Update #3818.

comment:37 Changed on Nov 27, 2019 at 11:03:45 AM by Sebastian Huber <sebastian.huber@…>

In 1fca1665/rtems:

testsuites/ada: Introduce init.c files

Provide an init.c for each Ada test instead of the #include <config.h>
magic which works only due to hand crafted include paths.

Update #3818.

comment:38 Changed on Nov 29, 2019 at 6:13:05 PM by Sebastian Huber <sebastian.huber@…>

In ae716da/rtems:

ada/sp19: Add m4 generated sptest.adb

Update #3818.

comment:39 Changed on Dec 2, 2019 at 6:47:45 AM by Sebastian Huber <sebastian.huber@…>

In 8f6b7abd/rtems:

Move feature macro before "config.h" include

This allows to use header includes in "config.h" to reduce the build
configuration checks.

Update #3818.

comment:40 Changed on Dec 4, 2019 at 6:43:57 AM by Sebastian Huber <sebastian.huber@…>

In a6879a4/rtems:

testsuites: Remove rtems_test_pause*()

The rtems_test_pause() and rtems_test_pause_and_screen_number() macros
had different implementations depending on the RTEMS_TEST_NO_PAUSE
define. This define was defined to 1 by default. The user was able to
change this via the undocumented --disable-test-no-pause configure
command line option.

Pausing tests and waiting for user input contradicts the goal of having
automated test runs. Remove this feature.

Update #3818.

comment:41 Changed on Dec 5, 2019 at 6:52:52 AM by Sebastian Huber <sebastian.huber@…>

In 1380c822/rtems:

bsp/xen: Use BSP options for all linkcmds vars

Update #3818.

Note: See TracTickets for help on using tickets.