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

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Apr 4 07:23:43 UTC 2018


On 04/04/18 04:23, Chris Johns wrote:
> 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?

Yes, see patch 6. I would like to add the libchip stuff as well and 
later more sources, e.g. bootcard.c.

>
> 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

I would like to simplify the BSP build area to use only one Makefile.am 
(c/src/lib/libbsp/@RTEMS_CPU@/@RTEMS_BSP_FAMILY@/Makefile.am and no 
libraries wrapup, etc. I would like to reduce also the copy and paste in 
these Makefile.am. What about:

include $(srcdir)/../../../../../../bsps/shared/shared-sources.am

In general *-sources.am for files which contain

libbsp_a_SOURCES += ...

stuff.

>
> 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.

I am not sure if we should touch the Automake version at the moment. I 
would rather try to simplify the build system with the current Automake 
version first. I think we need only three Makefile.am and two configure.ac:

configure.ac
Makefile.am (builds also cpukit, uses AM_CONDITIONAL for cpukit/score/cpu/*)
testsuites/Makefile.am (uses AM_CONDITIONAL for each test)
bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILY@/configure.ac
bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILY@/Makefile.am

>
> 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
>>

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.




More information about the devel mailing list