[PATCH 6/6] add stdatomic.h support check when configure

WeiY wei.a.yang at gmail.com
Sun Jul 14 09:07:38 UTC 2013


---
 cpukit/aclocal/check-atomic.m4            |    9 +++++----
 cpukit/configure.ac                       |    7 +++++++
 cpukit/rtems/Makefile.am                  |    2 ++
 cpukit/rtems/preinstall.am                |    2 ++
 cpukit/score/Makefile.am                  |    2 ++
 cpukit/score/preinstall.am                |    3 ++-
 testsuites/sptests/configure.ac           |    4 ++++
 testsuites/sptests/spatomic01/Makefile.am |    4 ++++
 testsuites/sptests/spatomic02/Makefile.am |    4 ++++
 testsuites/sptests/spatomic03/Makefile.am |    4 ++++
 testsuites/sptests/spatomic04/Makefile.am |    4 ++++
 testsuites/sptests/spatomic05/Makefile.am |    4 ++++
 testsuites/sptests/spatomic06/Makefile.am |    4 ++++
 testsuites/sptests/spatomic07/Makefile.am |    4 ++++
 14 files changed, 52 insertions(+), 5 deletions(-)

diff --git a/cpukit/aclocal/check-atomic.m4 b/cpukit/aclocal/check-atomic.m4
index 97943eb..b62ef45 100644
--- a/cpukit/aclocal/check-atomic.m4
+++ b/cpukit/aclocal/check-atomic.m4
@@ -5,9 +5,10 @@ AC_REQUIRE([RTEMS_CANONICAL_TARGET_CPU])dnl
 
 AC_CACHE_CHECK([whether CPU supports atomic operations],
   [rtems_cv_ATOMIC],[
-    AS_IF(
-      [test -f "${srcdir}/score/cpu/$RTEMS_CPU/rtems/score/cpuatomic.h"],
-      [rtems_cv_ATOMIC="yes"],
-      [rtems_cv_ATOMIC="no"])
+    AC_LINK_IFELSE(
+      [AC_LANG_PROGRAM([[#include <stdatomic.h>]],
+        [[atomic_uint_fast32_t t; atomic_init(&t, 0); atomic_store( &t, 1 );]])],
+        [rtems_cv_ATOMIC="yes"],
+        [rtems_cv_ATOMIC="no"])
   ])
 ])
diff --git a/cpukit/configure.ac b/cpukit/configure.ac
index d82d30f..f897ece 100644
--- a/cpukit/configure.ac
+++ b/cpukit/configure.ac
@@ -149,6 +149,7 @@ RTEMS_CHECK_MULTIPROCESSING
 RTEMS_CHECK_POSIX_API
 RTEMS_CHECK_NETWORKING
 RTEMS_CHECK_SMP
+RTEMS_CHECK_ATOMIC
 
 rtems_major=`echo _RTEMS_VERSION | sed "s/\..*//"`
 rtems_minor=`echo _RTEMS_VERSION | sed "s/[[0-9]][[0-9]]*\.//;s/\..*//"`
@@ -186,6 +187,11 @@ RTEMS_CPUOPT([RTEMS_NETWORKING],
   [1],
   [if networking is enabled])
 
+RTEMS_CPUOPT([RTEMS_ATOMIC],
+  [test x"$rtems_cv_ATOMIC" = xyes],
+  [1],
+  [if cpu supports atomic operations])
+
 RTEMS_CPUOPT([RTEMS_VERSION],
   [true],
   ["]_RTEMS_VERSION["],
@@ -304,6 +310,7 @@ AM_CONDITIONAL(HAS_SMP,[test "$RTEMS_HAS_SMP" = "yes"])
 
 AM_CONDITIONAL(HAS_PTHREADS,test x"$rtems_cv_HAS_POSIX_API" = x"yes")
 AM_CONDITIONAL(LIBNETWORKING,test x"$rtems_cv_HAS_NETWORKING" = x"yes")
+AM_CONDITIONAL([ATOMIC],[test x"$rtems_cv_ATOMIC" = x"yes"])
 
 AM_CONDITIONAL([LIBSHELL],[test x"$HAVE_ASSIGNABLE_STDIO" = x"yes"])
 AM_CONDITIONAL([LIBSERDBG],[test x"$rtems_cv_cc_attribute_weak" = x"yes"])
diff --git a/cpukit/rtems/Makefile.am b/cpukit/rtems/Makefile.am
index a9b4ca8..31e2c3d 100644
--- a/cpukit/rtems/Makefile.am
+++ b/cpukit/rtems/Makefile.am
@@ -40,7 +40,9 @@ include_rtems_rtems_HEADERS += include/rtems/rtems/support.h
 include_rtems_rtems_HEADERS += include/rtems/rtems/tasks.h
 include_rtems_rtems_HEADERS += include/rtems/rtems/timer.h
 include_rtems_rtems_HEADERS += include/rtems/rtems/types.h
+if ATOMIC
 include_rtems_rtems_HEADERS += include/rtems/rtems/atomic.h
+endif
 include_rtems_rtems_HEADERS += mainpage.h
 
 if HAS_MP
diff --git a/cpukit/rtems/preinstall.am b/cpukit/rtems/preinstall.am
index 8a0f780..128d78f 100644
--- a/cpukit/rtems/preinstall.am
+++ b/cpukit/rtems/preinstall.am
@@ -131,9 +131,11 @@ $(PROJECT_INCLUDE)/rtems/rtems/types.h: include/rtems/rtems/types.h $(PROJECT_IN
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/types.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/types.h
 
+if ATOMIC
 $(PROJECT_INCLUDE)/rtems/rtems/atomic.h: include/rtems/rtems/atomic.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/atomic.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/atomic.h
+endif
 
 $(PROJECT_INCLUDE)/rtems/rtems/mainpage.h: mainpage.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/mainpage.h
diff --git a/cpukit/score/Makefile.am b/cpukit/score/Makefile.am
index 82bf26d..338c797 100644
--- a/cpukit/score/Makefile.am
+++ b/cpukit/score/Makefile.am
@@ -60,10 +60,12 @@ include_rtems_score_HEADERS += include/rtems/score/watchdog.h
 include_rtems_score_HEADERS += include/rtems/score/wkspace.h
 include_rtems_score_HEADERS += include/rtems/score/cpuopts.h
 include_rtems_score_HEADERS += include/rtems/score/basedefs.h
+if ATOMIC
 include_rtems_score_HEADERS += include/rtems/score/atomic.h
 include_rtems_score_HEADERS += include/rtems/score/genericcpuatomic.h
 include_rtems_score_HEADERS += include/rtems/score/genericatomicops.h
 include_rtems_score_HEADERS += include/rtems/score/cpustdatomic.h
+endif
 
 if HAS_PTHREADS
 include_rtems_score_HEADERS += include/rtems/score/corespinlock.h
diff --git a/cpukit/score/preinstall.am b/cpukit/score/preinstall.am
index 1b7955e..a48d21e 100644
--- a/cpukit/score/preinstall.am
+++ b/cpukit/score/preinstall.am
@@ -223,6 +223,7 @@ $(PROJECT_INCLUDE)/rtems/score/basedefs.h: include/rtems/score/basedefs.h $(PROJ
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/basedefs.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/basedefs.h
 
+if ATOMIC
 $(PROJECT_INCLUDE)/rtems/score/atomic.h: include/rtems/score/atomic.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/atomic.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/atomic.h
@@ -238,7 +239,7 @@ PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/genericatomicops.h
 $(PROJECT_INCLUDE)/rtems/score/cpustdatomic.h: include/rtems/score/cpustdatomic.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/cpustdatomic.h
 PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/score/cpustdatomic.h
-
+endif
 if HAS_PTHREADS
 $(PROJECT_INCLUDE)/rtems/score/corespinlock.h: include/rtems/score/corespinlock.h $(PROJECT_INCLUDE)/rtems/score/$(dirstamp)
 	$(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/score/corespinlock.h
diff --git a/testsuites/sptests/configure.ac b/testsuites/sptests/configure.ac
index bbdda18..db44659 100644
--- a/testsuites/sptests/configure.ac
+++ b/testsuites/sptests/configure.ac
@@ -20,11 +20,15 @@ RTEMS_PROG_CC_FOR_TARGET
 
 RTEMS_CANONICALIZE_TOOLS
 
+RTEMS_CHECK_CPUOPTS([RTEMS_ATOMIC])
+
 RTEMS_CHECK_CUSTOM_BSP(RTEMS_BSP)
 
 # FIXME: We should get rid of this. It's a cludge.
 AC_CHECK_SIZEOF([time_t])
 
+AM_CONDITIONAL([ATOMIC],[test x"$rtems_cv_RTEMS_ATOMIC" = xyes])
+
 # Explicitly list all Makefiles here
 AC_CONFIG_FILES([Makefile
 spcontext01/Makefile
diff --git a/testsuites/sptests/spatomic01/Makefile.am b/testsuites/sptests/spatomic01/Makefile.am
index 73677ba..3bf1e11 100644
--- a/testsuites/sptests/spatomic01/Makefile.am
+++ b/testsuites/sptests/spatomic01/Makefile.am
@@ -1,13 +1,16 @@
+if ATOMIC
 rtems_tests_PROGRAMS = spatomic01
 spatomic01_SOURCES = init.c tasks.c system.h 
 
 dist_rtems_tests_DATA = spatomic01.scn
 dist_rtems_tests_DATA += spatomic01.doc
+endif
 
 include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
 include $(top_srcdir)/../automake/compile.am
 include $(top_srcdir)/../automake/leaf.am
 
+if ATOMIC
 AM_CPPFLAGS += -I$(top_srcdir)/../support/include
 
 LINK_OBJS = $(spatomic01_OBJECTS)
@@ -16,5 +19,6 @@ LINK_LIBS = $(spatomic01_LDLIBS)
 spatomic01$(EXEEXT): $(spatomic01_OBJECTS) $(spatomic01_DEPENDENCIES)
 	@rm -f spatomic01$(EXEEXT)
 	$(make-exe)
+endif
 
 include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spatomic02/Makefile.am b/testsuites/sptests/spatomic02/Makefile.am
index b045731..cf3e655 100644
--- a/testsuites/sptests/spatomic02/Makefile.am
+++ b/testsuites/sptests/spatomic02/Makefile.am
@@ -1,13 +1,16 @@
+if ATOMIC
 rtems_tests_PROGRAMS = spatomic02
 spatomic02_SOURCES = init.c tasks.c system.h
 
 dist_rtems_tests_DATA = spatomic02.scn
 dist_rtems_tests_DATA += spatomic02.doc
+endif
 
 include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
 include $(top_srcdir)/../automake/compile.am
 include $(top_srcdir)/../automake/leaf.am
 
+if ATOMIC
 AM_CPPFLAGS += -I$(top_srcdir)/../support/include
 
 LINK_OBJS = $(spatomic02_OBJECTS)
@@ -16,5 +19,6 @@ LINK_LIBS = $(spatomic02_LDLIBS)
 spatomic02$(EXEEXT): $(spatomic02_OBJECTS) $(spatomic02_DEPENDENCIES)
 	@rm -f spatomic01$(EXEEXT)
 	$(make-exe)
+endif
 
 include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spatomic03/Makefile.am b/testsuites/sptests/spatomic03/Makefile.am
index 981ad16..15b3b47 100644
--- a/testsuites/sptests/spatomic03/Makefile.am
+++ b/testsuites/sptests/spatomic03/Makefile.am
@@ -1,13 +1,16 @@
+if ATOMIC
 rtems_tests_PROGRAMS = spatomic03
 spatomic03_SOURCES = init.c tasks.c system.h 
 
 dist_rtems_tests_DATA = spatomic03.scn
 dist_rtems_tests_DATA += spatomic03.doc
+endif
 
 include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
 include $(top_srcdir)/../automake/compile.am
 include $(top_srcdir)/../automake/leaf.am
 
+if ATOMIC
 AM_CPPFLAGS += -I$(top_srcdir)/../support/include
 
 LINK_OBJS = $(spatomic03_OBJECTS)
@@ -16,5 +19,6 @@ LINK_LIBS = $(spatomic03_LDLIBS)
 spatomic03$(EXEEXT): $(spatomic03_OBJECTS) $(spatomic03_DEPENDENCIES)
 	@rm -f spatomic03$(EXEEXT)
 	$(make-exe)
+endif
 
 include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spatomic04/Makefile.am b/testsuites/sptests/spatomic04/Makefile.am
index 12d84dd..d03e8b5 100644
--- a/testsuites/sptests/spatomic04/Makefile.am
+++ b/testsuites/sptests/spatomic04/Makefile.am
@@ -1,13 +1,16 @@
+if ATOMIC
 rtems_tests_PROGRAMS = spatomic04
 spatomic04_SOURCES = init.c tasks.c system.h 
 
 dist_rtems_tests_DATA = spatomic04.scn
 dist_rtems_tests_DATA += spatomic04.doc
+endif
 
 include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
 include $(top_srcdir)/../automake/compile.am
 include $(top_srcdir)/../automake/leaf.am
 
+if ATOMIC
 AM_CPPFLAGS += -I$(top_srcdir)/../support/include
 
 LINK_OBJS = $(spatomic04_OBJECTS)
@@ -16,5 +19,6 @@ LINK_LIBS = $(spatomic04_LDLIBS)
 spatomic04$(EXEEXT): $(spatomic04_OBJECTS) $(spatomic04_DEPENDENCIES)
 	@rm -f spatomic04$(EXEEXT)
 	$(make-exe)
+endif
 
 include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spatomic05/Makefile.am b/testsuites/sptests/spatomic05/Makefile.am
index 11c5a66..cf72b8e 100644
--- a/testsuites/sptests/spatomic05/Makefile.am
+++ b/testsuites/sptests/spatomic05/Makefile.am
@@ -1,13 +1,16 @@
+if ATOMIC
 rtems_tests_PROGRAMS = spatomic05
 spatomic05_SOURCES = init.c tasks.c system.h 
 
 dist_rtems_tests_DATA = spatomic05.scn
 dist_rtems_tests_DATA += spatomic05.doc
+endif
 
 include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
 include $(top_srcdir)/../automake/compile.am
 include $(top_srcdir)/../automake/leaf.am
 
+if ATOMIC
 AM_CPPFLAGS += -I$(top_srcdir)/../support/include
 
 LINK_OBJS = $(spatomic05_OBJECTS)
@@ -16,5 +19,6 @@ LINK_LIBS = $(spatomic05_LDLIBS)
 spatomic05$(EXEEXT): $(spatomic05_OBJECTS) $(spatomic05_DEPENDENCIES)
 	@rm -f spatomic05$(EXEEXT)
 	$(make-exe)
+endif
 
 include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spatomic06/Makefile.am b/testsuites/sptests/spatomic06/Makefile.am
index 8bd4ed3..82150f9 100644
--- a/testsuites/sptests/spatomic06/Makefile.am
+++ b/testsuites/sptests/spatomic06/Makefile.am
@@ -1,13 +1,16 @@
+if ATOMIC
 rtems_tests_PROGRAMS = spatomic06
 spatomic06_SOURCES = init.c tasks.c system.h 
 
 dist_rtems_tests_DATA = spatomic06.scn
 dist_rtems_tests_DATA += spatomic06.doc
+endif
 
 include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
 include $(top_srcdir)/../automake/compile.am
 include $(top_srcdir)/../automake/leaf.am
 
+if ATOMIC
 AM_CPPFLAGS += -I$(top_srcdir)/../support/include
 
 LINK_OBJS = $(spatomic06_OBJECTS)
@@ -16,5 +19,6 @@ LINK_LIBS = $(spatomic06_LDLIBS)
 spatomic06$(EXEEXT): $(spatomic06_OBJECTS) $(spatomic06_DEPENDENCIES)
 	@rm -f spatomic06$(EXEEXT)
 	$(make-exe)
+endif
 
 include $(top_srcdir)/../automake/local.am
diff --git a/testsuites/sptests/spatomic07/Makefile.am b/testsuites/sptests/spatomic07/Makefile.am
index bde7791..bd63c52 100644
--- a/testsuites/sptests/spatomic07/Makefile.am
+++ b/testsuites/sptests/spatomic07/Makefile.am
@@ -1,13 +1,16 @@
+if ATOMIC
 rtems_tests_PROGRAMS = spatomic07
 spatomic07_SOURCES = init.c tasks.c system.h 
 
 dist_rtems_tests_DATA = spatomic07.scn
 dist_rtems_tests_DATA += spatomic07.doc
+endif
 
 include $(RTEMS_ROOT)/make/custom/@RTEMS_BSP at .cfg
 include $(top_srcdir)/../automake/compile.am
 include $(top_srcdir)/../automake/leaf.am
 
+if ATOMIC
 AM_CPPFLAGS += -I$(top_srcdir)/../support/include
 
 LINK_OBJS = $(spatomic07_OBJECTS)
@@ -16,5 +19,6 @@ LINK_LIBS = $(spatomic07_LDLIBS)
 spatomic07$(EXEEXT): $(spatomic07_OBJECTS) $(spatomic07_DEPENDENCIES)
 	@rm -f spatomic07$(EXEEXT)
 	$(make-exe)
+endif
 
 include $(top_srcdir)/../automake/local.am
-- 
1.7.9.5




More information about the devel mailing list