[PATCH 4/6] bsps: Move version.c and use bspopts.h

Chris Johns chrisj at rtems.org
Wed Apr 4 02:23:13 UTC 2018


Hi Sebastian,

I do like the use of shared.am to add sources to a BSP. It hides what is being
built and at this point in time I actually feel a clear view in one place is
better than another level of indirection.

Do you have more sources you wish to add this way?

I sense a number of the shared BSP automake decls could be moving.

As stated before I have a dislike of the includes in the build system because
they are chaotic and abused. This is not our fault, it is what we inherited.
They are hiding too many things and it makes it hard to figure out what is
happening. I am currently struggling to understand what is being done by
automake and what we do in a number of places and that is not great and this is
largely due to all the includes and overloaded use of file names with different
functionality, ie local.am.

Upon review of the above and my other comments I wonder if the name 'shared.am'
and the location in the BSP Makefile.am file makes it look like a build
infrastructure file and this is what I am struggling with rather than the
purpose of the change. When I saw another file next to local.am I had a little cry.

What if the include is positioned before the build infrastructure related
includes (with some white space) and files given a specific name, for example:

 include $(srcdir)/../../../../../../bsps/shared/source-version.am

If you plan to add others it does require updating the related BSP Makefile.am
files but I doubt this is a big issue other than during these refactoring tasks.

Also can we please decide on which automake we are going to use and sort that
out before we push any more major changes? It would save needing to retest and
maybe fix issues exposed with an update. That would be a wasted effort. I
currently doubt the cpukit and BSP tree will have a problem as it stands with
some changes and my testing seems to confirm this but the testsuite needs work.
If you wish to move the BSP source and maybe change the number of configure's
run I feel having a clear direction set is important.

Repeating my comments here ...

I feel we need to update automake to mitigate the dependency risk older versions
of automake have or may have with other dependent host programs, for example perl.

An example of a breakage with the latest automake is:

diff --git a/c/src/configure.ac b/c/src/configure.ac
index ff7c7752ed..705fd4af54 100644
--- a/c/src/configure.ac
+++ b/c/src/configure.ac
@@ -125,8 +125,11 @@ RTEMS_BSP_CONFIG_SUBDIR(
   [test x"$multilib" = xno])

 ## Note: the order of the directories below is essential
-AC_CONFIG_SUBDIRS([make])
-BSP_SUBDIRS="$BSP_SUBDIRS make"
+## Note note: this whole implementation is a bad hack and is broken
+## in the latest automake as would be expected, the order of post commands
+## has changed so as a result we need to use the "hack" and not the documented
+## standard way.
+RTEMS_BSP_CONFIG_SUBDIR([make],[make],[],[true])

 # Is there code where there should be for this BSP?
 RTEMS_CPU_SUBDIRS([lib/libbsp])

This is fragile stuff. Just check the comment in the file containing
RTEMS_BSP_CONFIG_SUBDIR.

Chris

On 03/04/2018 23:27, Sebastian Huber wrote:
> This patch is a part of the BSP source reorganization.
> 
> Update #3285.
> Update #3375.
> ---
>  c/src/support/version.c => bsps/shared/rtems-version.c |  5 ++++-
>  bsps/shared/shared.am                                  |  1 +
>  c/src/configure.ac                                     |  2 --
>  c/src/support/Makefile.am                              | 10 ----------
>  c/src/wrapup/Makefile.am                               |  2 --
>  5 files changed, 5 insertions(+), 15 deletions(-)
>  rename c/src/support/version.c => bsps/shared/rtems-version.c (83%)
>  delete mode 100644 c/src/support/Makefile.am
> 
> diff --git a/c/src/support/version.c b/bsps/shared/rtems-version.c
> similarity index 83%
> rename from c/src/support/version.c
> rename to bsps/shared/rtems-version.c
> index 4caf0bd3f7..16f74070bc 100644
> --- a/c/src/support/version.c
> +++ b/bsps/shared/rtems-version.c
> @@ -9,6 +9,8 @@
>  
>  #include <rtems/system.h>
>  
> +#include <bspopts.h>
> +
>  #ifndef RTEMS_VERSION
>  #error "Missing RTEMS_VERSION"
>  #endif
> @@ -23,4 +25,5 @@
>  #endif
>  
>  const char _RTEMS_version[] =
> -  "rtems-" RTEMS_VERSION " (" CPU_NAME "/" CPU_MODEL_NAME "/" RTEMS_BSP ")";
> +  "rtems-" RTEMS_VERSION " (" CPU_NAME "/" CPU_MODEL_NAME "/"
> +  RTEMS_XSTRING( RTEMS_BSP ) ")";
> diff --git a/bsps/shared/shared.am b/bsps/shared/shared.am
> index e69de29bb2..854710d804 100644
> --- a/bsps/shared/shared.am
> +++ b/bsps/shared/shared.am
> @@ -0,0 +1 @@
> +libbsp_a_SOURCES += ../../../../../../bsps/shared/rtems-version.c
> diff --git a/c/src/configure.ac b/c/src/configure.ac
> index ff7c7752ed..508f20f18e 100644
> --- a/c/src/configure.ac
> +++ b/c/src/configure.ac
> @@ -134,7 +134,6 @@ AC_SUBST(libbsp_cpu_subdir,$RTEMS_CPU)
>  
>  BSP_SUBDIRS="$BSP_SUBDIRS lib/libbsp"
>  BSP_SUBDIRS="$BSP_SUBDIRS libchip"
> -BSP_SUBDIRS="$BSP_SUBDIRS support"
>  BSP_SUBDIRS="$BSP_SUBDIRS wrapup"
>  
>  # Build testsuites
> @@ -168,7 +167,6 @@ AC_CONFIG_FILES([Makefile],
>   MAKE=${MAKE}])
>  
>  AC_CONFIG_FILES([
> -support/Makefile
>  libchip/Makefile
>  lib/libbsp/Makefile
>  wrapup/Makefile
> diff --git a/c/src/support/Makefile.am b/c/src/support/Makefile.am
> deleted file mode 100644
> index 66c81546c2..0000000000
> --- a/c/src/support/Makefile.am
> +++ /dev/null
> @@ -1,10 +0,0 @@
> -include $(top_srcdir)/automake/compile.am
> -
> -AM_CPPFLAGS += -DRTEMS_BSP=\"@RTEMS_BSP@\"
> -
> -noinst_LIBRARIES = libsupport.a
> -
> -libsupport_a_SOURCES = version.c
> -libsupport_a_CPPFLAGS = $(AM_CPPFLAGS)
> -
> -include $(top_srcdir)/automake/local.am
> diff --git a/c/src/wrapup/Makefile.am b/c/src/wrapup/Makefile.am
> index a52b90df6f..42d283ab6a 100644
> --- a/c/src/wrapup/Makefile.am
> +++ b/c/src/wrapup/Makefile.am
> @@ -13,8 +13,6 @@ TMPINSTALL_FILES = $(PROJECT_LIB)/librtemsbsp.a
>  
>  CLEANFILES = o-optimize/librtemsbsp.a
>  
> -SRCS = ../support/libsupport.a
> -
>  SRCS += ../lib/libbsp/@RTEMS_CPU@/@RTEMS_BSP_FAMILY@/libbsp.a
>  
>  SRCS += ../libchip/libflash.a
> 



More information about the devel mailing list