]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
[vxworks] build partial libatomic
authorAlexandre Oliva <oliva@adacore.com>
Thu, 22 May 2025 18:15:31 +0000 (15:15 -0300)
committerAlexandre Oliva <oliva@gnu.org>
Thu, 22 May 2025 18:15:31 +0000 (15:15 -0300)
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.

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
libatomic/Makefile.in
libatomic/configure
libatomic/configure.ac
libatomic/configure.tgt

index 0f1a71560848ade7adc45d2d0b82ccfcf52837b4..65dff6ece9ff8eed03ba78745c76f3f15badc438 100644 (file)
@@ -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)
index 9798e7c09e99aeb6f7d0ac35e6ca1ed4838d94d5..4344ac4a2e8fc3be7bbc80c27973e710aa7c8d36 100644 (file)
@@ -89,18 +89,18 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
-@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@am__append_1 = $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS)))
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@am__append_2 = $(foreach \
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ s,$(SIZES),$(addsuffix \
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ _$(s)_1_.lo,$(SIZEOBJS))) \
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ $(addsuffix \
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ _8_2_.lo,$(SIZEOBJS)) \
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@ tas_1_2_.lo
-@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@am__append_3 = $(addsuffix _8_1_.lo,$(SIZEOBJS))
-@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@am__append_4 = $(addsuffix _16_1_.lo,$(SIZEOBJS)) \
-@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@                   $(addsuffix _16_2_.lo,$(SIZEOBJS))
-
-@ARCH_AARCH64_LINUX_TRUE@am__append_5 = atomic_16.S
+@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_1 = $(foreach s,$(SIZES),$(addsuffix _$(s)_1_.lo,$(SIZEOBJS)))
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_2 = $(foreach \
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@  s,$(SIZES),$(addsuffix \
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@  _$(s)_1_.lo,$(SIZEOBJS))) \
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@  $(addsuffix \
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@  _8_2_.lo,$(SIZEOBJS)) \
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@  tas_1_2_.lo
+@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_3 = $(addsuffix _8_1_.lo,$(SIZEOBJS))
+@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_4 = $(addsuffix _16_1_.lo,$(SIZEOBJS)) \
+@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@                    $(addsuffix _16_2_.lo,$(SIZEOBJS))
+
+@ARCH_AARCH64_LINUX_TRUE@@PARTIAL_VXWORKS_FALSE@am__append_5 = atomic_16.S
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
@@ -156,10 +156,14 @@ am__uninstall_files_from_dir = { \
   }
 am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
 LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES)
-@ARCH_AARCH64_LINUX_TRUE@am__objects_1 = atomic_16.lo
-am_libatomic_la_OBJECTS = gload.lo gstore.lo gcas.lo gexch.lo \
-       glfree.lo lock.lo init.lo fenv.lo fence.lo flag.lo \
-       $(am__objects_1)
+@ARCH_AARCH64_LINUX_TRUE@@PARTIAL_VXWORKS_FALSE@am__objects_1 =  \
+@ARCH_AARCH64_LINUX_TRUE@@PARTIAL_VXWORKS_FALSE@       atomic_16.lo
+@PARTIAL_VXWORKS_FALSE@am_libatomic_la_OBJECTS = gload.lo gstore.lo \
+@PARTIAL_VXWORKS_FALSE@        gcas.lo gexch.lo glfree.lo lock.lo \
+@PARTIAL_VXWORKS_FALSE@        init.lo fenv.lo fence.lo flag.lo \
+@PARTIAL_VXWORKS_FALSE@        $(am__objects_1)
+@PARTIAL_VXWORKS_TRUE@am_libatomic_la_OBJECTS = fenv.lo fence.lo \
+@PARTIAL_VXWORKS_TRUE@ flag.lo $(am__objects_1)
 libatomic_la_OBJECTS = $(am_libatomic_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
 am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -169,8 +173,12 @@ libatomic_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
        $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
        $(libatomic_la_LDFLAGS) $(LDFLAGS) -o $@
 libatomic_convenience_la_DEPENDENCIES = $(libatomic_la_LIBADD)
-am__objects_2 = gload.lo gstore.lo gcas.lo gexch.lo glfree.lo lock.lo \
-       init.lo fenv.lo fence.lo flag.lo $(am__objects_1)
+@PARTIAL_VXWORKS_FALSE@am__objects_2 = gload.lo gstore.lo gcas.lo \
+@PARTIAL_VXWORKS_FALSE@        gexch.lo glfree.lo lock.lo init.lo \
+@PARTIAL_VXWORKS_FALSE@        fenv.lo fence.lo flag.lo \
+@PARTIAL_VXWORKS_FALSE@        $(am__objects_1)
+@PARTIAL_VXWORKS_TRUE@am__objects_2 = fenv.lo fence.lo flag.lo \
+@PARTIAL_VXWORKS_TRUE@ $(am__objects_1)
 am_libatomic_convenience_la_OBJECTS = $(am__objects_2)
 libatomic_convenience_la_OBJECTS =  \
        $(am_libatomic_convenience_la_OBJECTS)
@@ -423,39 +431,44 @@ libatomic_version_info = -version-info $(libtool_VERSION)
 libatomic_la_LDFLAGS = $(libatomic_version_info) $(libatomic_version_script) \
        $(lt_host_flags) $(libatomic_darwin_rpath)
 
-libatomic_la_SOURCES = gload.c gstore.c gcas.c gexch.c glfree.c lock.c \
-       init.c fenv.c fence.c flag.c $(am__append_5)
-SIZEOBJS = load store cas exch fadd fsub fand fior fxor fnand tas
-EXTRA_libatomic_la_SOURCES = $(addsuffix _n.c,$(SIZEOBJS))
-libatomic_la_DEPENDENCIES = $(libatomic_la_LIBADD) $(libatomic_version_dep)
-empty = 
-space = $(empty) $(empty)
-PAT_SPLIT = $(subst _,$(space),$(*F))
-PAT_BASE = $(word 1,$(PAT_SPLIT))
-PAT_N = $(word 2,$(PAT_SPLIT))
-PAT_S = $(word 3,$(PAT_SPLIT))
-IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
-IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
-@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
-@AMDEP_FALSE@M_DEPS = 
-M_SIZE = -DN=$(PAT_N)
-M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
-M_FILE = $(PAT_BASE)_n.c
+@PARTIAL_VXWORKS_FALSE@libatomic_la_SOURCES = gload.c gstore.c gcas.c \
+@PARTIAL_VXWORKS_FALSE@        gexch.c glfree.c lock.c init.c fenv.c \
+@PARTIAL_VXWORKS_FALSE@        fence.c flag.c $(am__append_5)
+@PARTIAL_VXWORKS_TRUE@libatomic_la_SOURCES = fenv.c fence.c flag.c \
+@PARTIAL_VXWORKS_TRUE@ $(am__append_5)
+@PARTIAL_VXWORKS_FALSE@SIZEOBJS = load store cas exch fadd fsub fand fior fxor fnand tas
+@PARTIAL_VXWORKS_FALSE@EXTRA_libatomic_la_SOURCES = $(addsuffix _n.c,$(SIZEOBJS))
+@PARTIAL_VXWORKS_FALSE@libatomic_la_DEPENDENCIES = $(libatomic_la_LIBADD) $(libatomic_version_dep)
+@PARTIAL_VXWORKS_FALSE@empty = 
+@PARTIAL_VXWORKS_FALSE@space = $(empty) $(empty)
+@PARTIAL_VXWORKS_FALSE@PAT_SPLIT = $(subst _,$(space),$(*F))
+@PARTIAL_VXWORKS_FALSE@PAT_BASE = $(word 1,$(PAT_SPLIT))
+@PARTIAL_VXWORKS_FALSE@PAT_N = $(word 2,$(PAT_SPLIT))
+@PARTIAL_VXWORKS_FALSE@PAT_S = $(word 3,$(PAT_SPLIT))
+@PARTIAL_VXWORKS_FALSE@IFUNC_DEF = -DIFUNC_ALT=$(PAT_S)
+@PARTIAL_VXWORKS_FALSE@IFUNC_OPT = $(word $(PAT_S),$(IFUNC_OPTIONS))
+@PARTIAL_VXWORKS_FALSE@@AMDEP_TRUE@M_DEPS = -MT $@ -MD -MP -MF $(DEPDIR)/$(@F).Ppo
+@PARTIAL_VXWORKS_FALSE@@AMDEP_FALSE@M_DEPS = 
+@PARTIAL_VXWORKS_FALSE@M_SIZE = -DN=$(PAT_N)
+@PARTIAL_VXWORKS_FALSE@M_IFUNC = $(if $(PAT_S),$(IFUNC_DEF) $(IFUNC_OPT))
+@PARTIAL_VXWORKS_FALSE@M_FILE = $(PAT_BASE)_n.c
 
 # The lack of explicit dependency on the source file means that VPATH cannot
 # work properly.  Instead, perform this operation by hand.  First, collect a
 # list of all .c files in the search path.
-all_c_files := $(foreach dir,$(search_path),$(wildcard $(dir)/*.c))
+@PARTIAL_VXWORKS_FALSE@all_c_files := $(foreach dir,$(search_path),$(wildcard $(dir)/*.c))
 
 # Then sort through them to find the one we want, and select the first.
-M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files)))
-libatomic_la_LIBADD = $(foreach s,$(SIZES),$(addsuffix \
-       _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) $(am__append_2) \
-       $(am__append_3) $(am__append_4)
-@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv8-a+lse
-@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
-@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -march=i586
-@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@IFUNC_OPTIONS = -mcx16 -mcx16
+@PARTIAL_VXWORKS_FALSE@M_SRC = $(firstword $(filter %/$(M_FILE), $(all_c_files)))
+@PARTIAL_VXWORKS_FALSE@libatomic_la_LIBADD = $(foreach \
+@PARTIAL_VXWORKS_FALSE@        s,$(SIZES),$(addsuffix \
+@PARTIAL_VXWORKS_FALSE@        _$(s)_.lo,$(SIZEOBJS))) $(am__append_1) \
+@PARTIAL_VXWORKS_FALSE@        $(am__append_2) $(am__append_3) \
+@PARTIAL_VXWORKS_FALSE@        $(am__append_4)
+@ARCH_AARCH64_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv8-a+lse
+@ARCH_ARM_LINUX_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=armv7-a+fp -DHAVE_KERNEL64
+@ARCH_I386_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -march=i586
+@ARCH_X86_64_TRUE@@HAVE_IFUNC_TRUE@@PARTIAL_VXWORKS_FALSE@IFUNC_OPTIONS = -mcx16 -mcx16
 libatomic_convenience_la_SOURCES = $(libatomic_la_SOURCES)
 libatomic_convenience_la_LIBADD = $(libatomic_la_LIBADD)
 MULTISRCTOP = 
@@ -891,10 +904,10 @@ vpath % $(strip $(search_path))
 @LIBAT_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBAT_BUILD_VERSIONED_SHLIB_TRUE@         $(libatomic_la_OBJECTS) $(libatomic_la_LIBADD) \
 @LIBAT_BUILD_VERSIONED_SHLIB_SUN_TRUE@@LIBAT_BUILD_VERSIONED_SHLIB_TRUE@        > $@ || (rm -f $@ ; exit 1)
 
--include $(wildcard $(DEPDIR)/*.Ppo)
+@PARTIAL_VXWORKS_FALSE@-include $(wildcard $(DEPDIR)/*.Ppo)
 
-%_.lo: Makefile
-       $(LTCOMPILE) $(M_DEPS) $(M_SIZE) $(M_IFUNC) -c -o $@ $(M_SRC)
+@PARTIAL_VXWORKS_FALSE@%_.lo: Makefile
+@PARTIAL_VXWORKS_FALSE@        $(LTCOMPILE) $(M_DEPS) $(M_SIZE) $(M_IFUNC) -c -o $@ $(M_SRC)
 
 # Amend the automake generated all-multi rule to guarantee that all-multi
 # is not run in parallel with the %_.lo rules which generate $(DEPDIR)/*.Ppo
index d579bab96f86ce863882d4dc04e59af399b0b9c5..67b3a6388d7f999ed11dc32c5e99c778689d2a15 100755 (executable)
@@ -656,6 +656,8 @@ LIBAT_BUILD_VERSIONED_SHLIB_FALSE
 LIBAT_BUILD_VERSIONED_SHLIB_TRUE
 OPT_LDFLAGS
 SECTION_LDFLAGS
+PARTIAL_VXWORKS_FALSE
+PARTIAL_VXWORKS_TRUE
 SYSROOT_CFLAGS_FOR_TARGET
 enable_aarch64_lse
 libtool_VERSION
@@ -11456,7 +11458,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11459 "configure"
+#line 11461 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11562,7 +11564,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11565 "configure"
+#line 11567 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11932,11 +11934,21 @@ esac
 
 
 # Get target configury.
+partial_libatomic=
 . ${srcdir}/configure.tgt
 if test -n "$UNSUPPORTED"; then
   as_fn_error $? "Configuration ${target} is unsupported." "$LINENO" 5
 fi
 
+ if test "x$partial_libatomic" = "xvxworks"; then
+  PARTIAL_VXWORKS_TRUE=
+  PARTIAL_VXWORKS_FALSE='#'
+else
+  PARTIAL_VXWORKS_TRUE='#'
+  PARTIAL_VXWORKS_FALSE=
+fi
+
+
 # Write out the ifunc resolver arg type.
 
 cat >>confdefs.h <<_ACEOF
@@ -15989,6 +16001,10 @@ if test -z "${ENABLE_DARWIN_AT_RPATH_TRUE}" && test -z "${ENABLE_DARWIN_AT_RPATH
   as_fn_error $? "conditional \"ENABLE_DARWIN_AT_RPATH\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${PARTIAL_VXWORKS_TRUE}" && test -z "${PARTIAL_VXWORKS_FALSE}"; then
+  as_fn_error $? "conditional \"PARTIAL_VXWORKS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 if test -z "${LIBAT_BUILD_VERSIONED_SHLIB_TRUE}" && test -z "${LIBAT_BUILD_VERSIONED_SHLIB_FALSE}"; then
   as_fn_error $? "conditional \"LIBAT_BUILD_VERSIONED_SHLIB\" was never defined.
index aafae71028d2d5030f3e932a88bdd304ecf11d5b..01141f64376975c849644575459a5fb59297a9af 100644 (file)
@@ -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.])
index 6db039d6e8bb62928450f2b937901e7bf1c0131c..606d249116af5ea82d5b62ce6d90a75b7305f96a 100644 (file)
@@ -185,6 +185,10 @@ case "${target}" in
   nvptx*-*-*)
        ;;
 
+  *-*-vxworks*)
+        partial_libatomic=vxworks
+       ;;
+
   *)
        # Who are you?
        UNSUPPORTED=1