mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
[vxworks] build partial libatomic
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.
This commit is contained in:
committed by
Alexandre Oliva
parent
a4f45de95e
commit
10360c1b0d
@@ -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)
|
||||
|
||||
@@ -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@@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@am__append_5 = atomic_16.S
|
||||
@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
|
||||
|
||||
20
libatomic/configure
vendored
20
libatomic/configure
vendored
@@ -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.
|
||||
|
||||
@@ -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.])
|
||||
|
||||
@@ -185,6 +185,10 @@ case "${target}" in
|
||||
nvptx*-*-*)
|
||||
;;
|
||||
|
||||
*-*-vxworks*)
|
||||
partial_libatomic=vxworks
|
||||
;;
|
||||
|
||||
*)
|
||||
# Who are you?
|
||||
UNSUPPORTED=1
|
||||
|
||||
Reference in New Issue
Block a user