Since vxworks' libc contains much of libatomic, in not-very-granular
modules, building all of libatomic doesn't work very well.

However, some expected entry points are not present in libc, so
arrange for libatomic to build only those missing bits.

I'm putting this in as "build machinery"; please let me know in case of
objections.


for  libatomic/ChangeLog

        * configure.tgt: Set partial_libatomic on *-*-vxworks*.
        * configure.ac (PARTIAL_VXWORKS): New AM_CONDITIONAL.
        * Makefile.am (libatomic_la_SOURCES): Select few sources for
        PARTIAL_VXWORKS.
        * configure, Makefile.in: Rebuilt.
---
 libatomic/Makefile.am   |    8 +++
 libatomic/Makefile.in   |  109 ++++++++++++++++++++++++++---------------------
 libatomic/configure     |   20 ++++++++-
 libatomic/configure.ac  |    3 +
 libatomic/configure.tgt |    4 ++
 5 files changed, 93 insertions(+), 51 deletions(-)

diff --git a/libatomic/Makefile.am b/libatomic/Makefile.am
index 0f1a71560848a..65dff6ece9ff8 100644
--- a/libatomic/Makefile.am
+++ b/libatomic/Makefile.am
@@ -70,11 +70,16 @@ endif
 
 libatomic_la_LDFLAGS = $(libatomic_version_info) $(libatomic_version_script) \
        $(lt_host_flags) $(libatomic_darwin_rpath)
+
+SIZES = @SIZES@
+
+if PARTIAL_VXWORKS
+libatomic_la_SOURCES = fenv.c fence.c flag.c
+else
 libatomic_la_SOURCES = gload.c gstore.c gcas.c gexch.c glfree.c lock.c init.c \
        fenv.c fence.c flag.c
 
 SIZEOBJS = load store cas exch fadd fsub fand fior fxor fnand tas
-SIZES = @SIZES@
 
 EXTRA_libatomic_la_SOURCES = $(addsuffix _n.c,$(SIZEOBJS))
 libatomic_la_DEPENDENCIES = $(libatomic_la_LIBADD) $(libatomic_version_dep)
@@ -152,6 +157,7 @@ endif
 if ARCH_AARCH64_LINUX
 libatomic_la_SOURCES += atomic_16.S
 endif
+endif
 
 libatomic_convenience_la_SOURCES = $(libatomic_la_SOURCES)
 libatomic_convenience_la_LIBADD = $(libatomic_la_LIBADD)
diff --git a/libatomic/Makefile.in b/libatomic/Makefile.in
diff --git a/libatomic/configure b/libatomic/configure
[omitted]
diff --git a/libatomic/configure.ac b/libatomic/configure.ac
index aafae71028d2d..01141f6437697 100644
--- a/libatomic/configure.ac
+++ b/libatomic/configure.ac
@@ -175,11 +175,14 @@ esac
 AC_SUBST(SYSROOT_CFLAGS_FOR_TARGET)
 
 # Get target configury.
+partial_libatomic=
 . ${srcdir}/configure.tgt
 if test -n "$UNSUPPORTED"; then
   AC_MSG_ERROR([Configuration ${target} is unsupported.])
 fi
 
+AM_CONDITIONAL(PARTIAL_VXWORKS, test "x$partial_libatomic" = "xvxworks")
+
 # Write out the ifunc resolver arg type.
 AC_DEFINE_UNQUOTED(IFUNC_RESOLVER_ARGS, $IFUNC_RESOLVER_ARGS,
        [Define ifunc resolver function argument.])
diff --git a/libatomic/configure.tgt b/libatomic/configure.tgt
index 6db039d6e8bb6..606d249116af5 100644
--- a/libatomic/configure.tgt
+++ b/libatomic/configure.tgt
@@ -185,6 +185,10 @@ case "${target}" in
   nvptx*-*-*)
        ;;
 
+  *-*-vxworks*)
+        partial_libatomic=vxworks
+       ;;
+
   *)
        # Who are you?
        UNSUPPORTED=1


-- 
Alexandre Oliva, happy hacker            https://blog.lx.oliva.nom.br/
Free Software Activist     FSFLA co-founder     GNU Toolchain Engineer
More tolerance and less prejudice are key for inclusion and diversity.
Excluding neuro-others for not behaving ""normal"" is *not* inclusive!

Reply via email to