Module: xenomai-forge
Branch: next
Commit: e447abe3107cb3eed5aaa197c11a2622d7057034
URL:    
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=e447abe3107cb3eed5aaa197c11a2622d7057034

Author: Philippe Gerum <r...@xenomai.org>
Date:   Mon Apr 14 12:35:34 2014 +0200

boilerplate: snapshot configuration settings

We need a way to retrieve the configuration settings used for building
the user-space stack.

To this end, those settings are snapshot during the build process and
stored in a NULL-terminated array of pointer to strings, so that any
client code linking against libboilerplate can retrieve them.

---

 configure                         |    2 +-
 configure.ac                      |    2 +-
 include/boilerplate/ancillaries.h |    2 ++
 lib/boilerplate/Makefile.am       |   13 +++++++++++++
 lib/boilerplate/Makefile.in       |   32 ++++++++++++++++++++++++++------
 lib/boilerplate/ancillaries.c     |    5 +++++
 6 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/configure b/configure
index 3d22f1a..9605e6e 100755
--- a/configure
+++ b/configure
@@ -14325,7 +14325,7 @@ if test x"$want_fortify" != xno; then
    ac_fn_c_check_func "$LINENO" "__vfprintf_chk" "ac_cv_func___vfprintf_chk"
 if test "x$ac_cv_func___vfprintf_chk" = xyes; then :
 
-$as_echo "#define CONFIG_XENO_FORTIFY 1 " >>confdefs.h
+$as_echo "#define CONFIG_XENO_FORTIFY 1" >>confdefs.h
 
 else
   if test x"$want_fortify" = "xyes"; then
diff --git a/configure.ac b/configure.ac
index 2e7dc90..a2dbc05 100644
--- a/configure.ac
+++ b/configure.ac
@@ -758,7 +758,7 @@ AC_ARG_ENABLE([fortify],
 AC_MSG_RESULT(${want_fortify:-autodetect})
 if test x"$want_fortify" != xno; then
    AC_CHECK_FUNC(__vfprintf_chk,
-             [AC_DEFINE(CONFIG_XENO_FORTIFY, 1 ,[config])],
+             [AC_DEFINE(CONFIG_XENO_FORTIFY, 1,[config])],
              [if test x"$want_fortify" = "xyes"; then
              AC_MSG_ERROR([Fortify support enabled but not available in *libc])
               fi])
diff --git a/include/boilerplate/ancillaries.h 
b/include/boilerplate/ancillaries.h
index da1e827..b2c5b44 100644
--- a/include/boilerplate/ancillaries.h
+++ b/include/boilerplate/ancillaries.h
@@ -79,4 +79,6 @@ void boilerplate_init(void);
 }
 #endif
 
+extern const char *config_strings[];
+
 #endif /* _BOILERPLATE_ANCILLARIES_H */
diff --git a/lib/boilerplate/Makefile.am b/lib/boilerplate/Makefile.am
index 3e47fb2..2940df9 100644
--- a/lib/boilerplate/Makefile.am
+++ b/lib/boilerplate/Makefile.am
@@ -13,6 +13,19 @@ if XENO_DEBUG
 libboilerplate_la_SOURCES += debug.c
 endif
 
+nodist_libboilerplate_la_SOURCES = config-dump.h
+BUILT_SOURCES = config-dump.h
+CLEANFILES = config-dump.h
+
+config-dump.h: Makefile $(CONFIG_HEADER)
+       ( sed -e '/^#define CONFIG_/!d' \
+       -e 's/^#[\t ]*define \(CONFIG_[^ ]*\) \(.*\)/\1=\2/' \
+       -e 's,\",\\&,g' \
+       -e 's/^.*$$/\"&\",/' $(CONFIG_HEADER); echo '"---",'; \
+       sed -e '/#undef CONFIG_/!d' \
+       -e 's/.*\(CONFIG_[^ ]*\).*/\1/' \
+       -e 's/^.*$$/\"& is OFF\",/' $(CONFIG_HEADER) ) > $@
+
 libboilerplate_la_CPPFLAGS =                           \
        @XENO_USER_CFLAGS@                              \
        -I$(top_srcdir)                                 \
diff --git a/lib/boilerplate/Makefile.in b/lib/boilerplate/Makefile.in
index b1c3333..a4829d4 100644
--- a/lib/boilerplate/Makefile.in
+++ b/lib/boilerplate/Makefile.in
@@ -107,7 +107,9 @@ am__libboilerplate_la_SOURCES_DIST = ancillaries.c hash.c 
obstack.c \
 am_libboilerplate_la_OBJECTS = libboilerplate_la-ancillaries.lo \
        libboilerplate_la-hash.lo libboilerplate_la-obstack.lo \
        libboilerplate_la-time.lo $(am__objects_1)
-libboilerplate_la_OBJECTS = $(am_libboilerplate_la_OBJECTS)
+nodist_libboilerplate_la_OBJECTS =
+libboilerplate_la_OBJECTS = $(am_libboilerplate_la_OBJECTS) \
+       $(nodist_libboilerplate_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
 am__v_lt_0 = --silent
@@ -154,7 +156,8 @@ AM_V_CCLD = $(am__v_CCLD_@AM_V@)
 am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
 am__v_CCLD_0 = @echo "  CCLD    " $@;
 am__v_CCLD_1 = 
-SOURCES = $(libboilerplate_la_SOURCES) $(libtlsf_la_SOURCES)
+SOURCES = $(libboilerplate_la_SOURCES) \
+       $(nodist_libboilerplate_la_SOURCES) $(libtlsf_la_SOURCES)
 DIST_SOURCES = $(am__libboilerplate_la_SOURCES_DIST) \
        $(libtlsf_la_SOURCES)
 am__can_run_installinfo = \
@@ -357,6 +360,9 @@ noinst_LTLIBRARIES = libboilerplate.la $(am__append_2)
 libboilerplate_la_LDFLAGS = @XENO_LIB_LDFLAGS@ -version-info 0:0:0
 libboilerplate_la_SOURCES = ancillaries.c hash.c obstack.c time.c \
        $(am__append_1)
+nodist_libboilerplate_la_SOURCES = config-dump.h
+BUILT_SOURCES = config-dump.h
+CLEANFILES = config-dump.h
 libboilerplate_la_CPPFLAGS = \
        @XENO_USER_CFLAGS@                              \
        -I$(top_srcdir)                                 \
@@ -378,7 +384,8 @@ libtlsf_la_CPPFLAGS = \
 
 EXTRA_DIST = tlsf/README
 SPARSE = sparse
-all: all-am
+all: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
@@ -595,10 +602,12 @@ distdir: $(DISTFILES)
          fi; \
        done
 check-am: all-am
-check: check-am
+check: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) check-am
 all-am: Makefile $(LTLIBRARIES)
 installdirs:
-install: install-am
+install: $(BUILT_SOURCES)
+       $(MAKE) $(AM_MAKEFLAGS) install-am
 install-exec: install-exec-am
 install-data: install-data-am
 uninstall: uninstall-am
@@ -620,6 +629,7 @@ install-strip:
 mostlyclean-generic:
 
 clean-generic:
+       -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
        -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
@@ -628,6 +638,7 @@ distclean-generic:
 maintainer-clean-generic:
        @echo "This command is intended for maintainers to use"
        @echo "it deletes files that may require special tools to rebuild."
+       -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
 clean: clean-am
 
 clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
@@ -699,7 +710,7 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: install-am install-strip
+.MAKE: all check install install-am install-strip
 
 .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
        clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
@@ -716,6 +727,15 @@ uninstall-am:
        tags tags-am uninstall uninstall-am
 
 
+config-dump.h: Makefile $(CONFIG_HEADER)
+       ( sed -e '/^#define CONFIG_/!d' \
+       -e 's/^#[\t ]*define \(CONFIG_[^ ]*\) \(.*\)/\1=\2/' \
+       -e 's,\",\\&,g' \
+       -e 's/^.*$$/\"&\",/' $(CONFIG_HEADER); echo '"---",'; \
+       sed -e '/#undef CONFIG_/!d' \
+       -e 's/.*\(CONFIG_[^ ]*\).*/\1/' \
+       -e 's/^.*$$/\"& is OFF\",/' $(CONFIG_HEADER) ) > $@
+
 sparse:
        @for i in $(libboilerplate_la_SOURCES) $(libtlsf_la_SOURCES); do \
                $(SPARSE) $(CHECKFLAGS) $(srcdir)/$$i; \
diff --git a/lib/boilerplate/ancillaries.c b/lib/boilerplate/ancillaries.c
index 35bd401..f613a8e 100644
--- a/lib/boilerplate/ancillaries.c
+++ b/lib/boilerplate/ancillaries.c
@@ -235,3 +235,8 @@ void boilerplate_init(void)
        static pthread_once_t once = PTHREAD_ONCE_INIT;
        pthread_once(&once, __boilerplate_init);
 }
+
+const char *config_strings[] = {
+#include "config-dump.h"
+       NULL,
+};


_______________________________________________
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://www.xenomai.org/mailman/listinfo/xenomai-git

Reply via email to