man8dir = $(mandir)/man8
man9dir = $(mandir)/man9
-# INSTALL_PROGRAM_ARGS is changed by configure.in to use -x for a
-# cygwin host.
-INSTALL_PROGRAM_ARGS =
-
-INSTALL = $(SHELL) $$s/install-sh -c
-INSTALL_PROGRAM = $(INSTALL) $(INSTALL_PROGRAM_ARGS)
-INSTALL_SCRIPT = $(INSTALL)
-INSTALL_DATA = $(INSTALL) -m 644
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_DATA = @INSTALL_DATA@
# -------------------------------------------------
# Miscellaneous non-standard autoconf-set variables
build_tooldir = @build_tooldir@
# Directory in which the compiler finds executables, libraries, etc.
-libsubdir = $(libdir)/gcc-lib/$(target_alias)/$(gcc_version)
+libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)
GDB_NLM_DEPS =
# This is the name of the environment variable used for the path to
# compilers to use to create programs which must be run in the build
# environment.
CC_FOR_BUILD = @CC_FOR_BUILD@
-CFLAGS_FOR_BUILD = $(CFLAGS)
+CFLAGS_FOR_BUILD = @CFLAGS_FOR_BUILD@
CXX_FOR_BUILD = $(CXX)
# The BUILD_* variables are a special case, which are used for the gcc
# cross-building scheme.
EXTRA_GCC_FLAGS = \
- 'AR=$(AR)' \
- 'AS=$(AS)' \
- 'CC=$(CC)' \
- 'CXX=$(CXX)' \
- 'DLLTOOL=$$(DLLTOOL_FOR_TARGET)' \
'BUILD_PREFIX=$(BUILD_PREFIX)' \
'BUILD_PREFIX_1=$(BUILD_PREFIX_1)' \
- 'NM=$(NM)' \
- 'RANLIB=$(RANLIB)' \
- 'WINDRES=$$(WINDRES_FOR_TARGET)' \
"GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \
"CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \
"`echo 'LANGUAGES=$(LANGUAGES)' | sed -e s/.*=$$/XFOO=/`" \
"`echo 'LIBGCC2_CFLAGS=$(LIBGCC2_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \
"`echo 'LIBGCC2_DEBUG_CFLAGS=$(LIBGCC2_DEBUG_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \
"`echo 'LIBGCC2_INCLUDES=$(LIBGCC2_INCLUDES)' | sed -e s/.*=$$/XFOO=/`" \
- "`echo 'ENQUIRE=$(ENQUIRE)' | sed -e s/.*=$$/XFOO=/`" \
"`echo 'STAGE1_CFLAGS=$(STAGE1_CFLAGS)' | sed -e s/.*=$$/XFOO=/`" \
"`echo 'BOOT_CFLAGS=$(BOOT_CFLAGS)' | sed -e s/.*=$$/XFOO=/`"
-GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_GCC_FLAGS)
+GCC_FLAGS_TO_PASS = $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(EXTRA_GCC_FLAGS)
.PHONY: configure-host
configure-host: maybe-configure-gcc \
# Check target.
.PHONY: check do-check
-check:
- $(MAKE) do-check
+check: do-check
# Only include modules actually being configured and built.
do-check: maybe-check-gcc \
maybe-configure-build-libiberty:
configure-build-libiberty:
@test ! -f $(BUILD_SUBDIR)/libiberty/Makefile || exit 0; \
- [ -d $(BUILD_SUBDIR)/libiberty ] || \
- mkdir $(BUILD_SUBDIR)/libiberty;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(BUILD_SUBDIR)/libiberty ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
AR="$(AR_FOR_BUILD)"; export AR; \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/libstdc++-v3/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/libstdc++-v3 ] || \
- mkdir $(TARGET_SUBDIR)/libstdc++-v3; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \
rm -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/libstdc++-v3/multilib.out
configure-target-libstdc++-v3: $(TARGET_SUBDIR)/libstdc++-v3/multilib.out
@test ! -f $(TARGET_SUBDIR)/libstdc++-v3/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/libstdc++-v3 ] || \
- mkdir $(TARGET_SUBDIR)/libstdc++-v3;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libstdc++-v3 ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/newlib/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/newlib ] || \
- mkdir $(TARGET_SUBDIR)/newlib; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/newlib ; \
rm -f $(TARGET_SUBDIR)/newlib/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/newlib/multilib.out
configure-target-newlib: $(TARGET_SUBDIR)/newlib/multilib.out
@test ! -f $(TARGET_SUBDIR)/newlib/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/newlib ] || \
- mkdir $(TARGET_SUBDIR)/newlib;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/newlib ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/libf2c/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/libf2c ] || \
- mkdir $(TARGET_SUBDIR)/libf2c; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libf2c ; \
rm -f $(TARGET_SUBDIR)/libf2c/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/libf2c/multilib.out
configure-target-libf2c: $(TARGET_SUBDIR)/libf2c/multilib.out
@test ! -f $(TARGET_SUBDIR)/libf2c/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/libf2c ] || \
- mkdir $(TARGET_SUBDIR)/libf2c;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libf2c ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/libobjc/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/libobjc ] || \
- mkdir $(TARGET_SUBDIR)/libobjc; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libobjc ; \
rm -f $(TARGET_SUBDIR)/libobjc/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/libobjc/multilib.out
configure-target-libobjc: $(TARGET_SUBDIR)/libobjc/multilib.out
@test ! -f $(TARGET_SUBDIR)/libobjc/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/libobjc ] || \
- mkdir $(TARGET_SUBDIR)/libobjc;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libobjc ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/libtermcap/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/libtermcap ] || \
- mkdir $(TARGET_SUBDIR)/libtermcap; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libtermcap ; \
rm -f $(TARGET_SUBDIR)/libtermcap/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/libtermcap/multilib.out
configure-target-libtermcap: $(TARGET_SUBDIR)/libtermcap/multilib.out
@test ! -f $(TARGET_SUBDIR)/libtermcap/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/libtermcap ] || \
- mkdir $(TARGET_SUBDIR)/libtermcap;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libtermcap ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/winsup/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/winsup ] || \
- mkdir $(TARGET_SUBDIR)/winsup; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/winsup ; \
rm -f $(TARGET_SUBDIR)/winsup/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/winsup/multilib.out
configure-target-winsup: $(TARGET_SUBDIR)/winsup/multilib.out
@test ! -f $(TARGET_SUBDIR)/winsup/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/winsup ] || \
- mkdir $(TARGET_SUBDIR)/winsup;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/winsup ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/libgloss/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/libgloss ] || \
- mkdir $(TARGET_SUBDIR)/libgloss; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgloss ; \
rm -f $(TARGET_SUBDIR)/libgloss/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/libgloss/multilib.out
configure-target-libgloss: $(TARGET_SUBDIR)/libgloss/multilib.out
@test ! -f $(TARGET_SUBDIR)/libgloss/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/libgloss ] || \
- mkdir $(TARGET_SUBDIR)/libgloss;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgloss ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/libiberty/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/libiberty ] || \
- mkdir $(TARGET_SUBDIR)/libiberty; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \
rm -f $(TARGET_SUBDIR)/libiberty/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/libiberty/multilib.out
configure-target-libiberty: $(TARGET_SUBDIR)/libiberty/multilib.out
@test ! -f $(TARGET_SUBDIR)/libiberty/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/libiberty ] || \
- mkdir $(TARGET_SUBDIR)/libiberty;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libiberty ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/gperf/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/gperf ] || \
- mkdir $(TARGET_SUBDIR)/gperf; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/gperf ; \
rm -f $(TARGET_SUBDIR)/gperf/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/gperf/multilib.out
configure-target-gperf: $(TARGET_SUBDIR)/gperf/multilib.out
@test ! -f $(TARGET_SUBDIR)/gperf/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/gperf ] || \
- mkdir $(TARGET_SUBDIR)/gperf;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/gperf ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/examples/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/examples ] || \
- mkdir $(TARGET_SUBDIR)/examples; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/examples ; \
rm -f $(TARGET_SUBDIR)/examples/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/examples/multilib.out
configure-target-examples: $(TARGET_SUBDIR)/examples/multilib.out
@test ! -f $(TARGET_SUBDIR)/examples/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/examples ] || \
- mkdir $(TARGET_SUBDIR)/examples;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/examples ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/libffi/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/libffi ] || \
- mkdir $(TARGET_SUBDIR)/libffi; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libffi ; \
rm -f $(TARGET_SUBDIR)/libffi/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/libffi/multilib.out
configure-target-libffi: $(TARGET_SUBDIR)/libffi/multilib.out
@test ! -f $(TARGET_SUBDIR)/libffi/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/libffi ] || \
- mkdir $(TARGET_SUBDIR)/libffi;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libffi ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/libjava/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/libjava ] || \
- mkdir $(TARGET_SUBDIR)/libjava; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libjava ; \
rm -f $(TARGET_SUBDIR)/libjava/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/libjava/multilib.out
configure-target-libjava: $(TARGET_SUBDIR)/libjava/multilib.out
@test ! -f $(TARGET_SUBDIR)/libjava/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/libjava ] || \
- mkdir $(TARGET_SUBDIR)/libjava;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libjava ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/zlib/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/zlib ] || \
- mkdir $(TARGET_SUBDIR)/zlib; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/zlib ; \
rm -f $(TARGET_SUBDIR)/zlib/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/zlib/multilib.out
configure-target-zlib: $(TARGET_SUBDIR)/zlib/multilib.out
@test ! -f $(TARGET_SUBDIR)/zlib/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/zlib ] || \
- mkdir $(TARGET_SUBDIR)/zlib;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/zlib ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/boehm-gc/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/boehm-gc ] || \
- mkdir $(TARGET_SUBDIR)/boehm-gc; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/boehm-gc ; \
rm -f $(TARGET_SUBDIR)/boehm-gc/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/boehm-gc/multilib.out
configure-target-boehm-gc: $(TARGET_SUBDIR)/boehm-gc/multilib.out
@test ! -f $(TARGET_SUBDIR)/boehm-gc/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/boehm-gc ] || \
- mkdir $(TARGET_SUBDIR)/boehm-gc;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/boehm-gc ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/qthreads/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/qthreads ] || \
- mkdir $(TARGET_SUBDIR)/qthreads; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/qthreads ; \
rm -f $(TARGET_SUBDIR)/qthreads/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/qthreads/multilib.out
configure-target-qthreads: $(TARGET_SUBDIR)/qthreads/multilib.out
@test ! -f $(TARGET_SUBDIR)/qthreads/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/qthreads ] || \
- mkdir $(TARGET_SUBDIR)/qthreads;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/qthreads ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
# There's only one multilib.out. Cleverer subdirs shouldn't need it copied.
$(TARGET_SUBDIR)/rda/multilib.out: multilib.out
- @[ -d $(TARGET_SUBDIR)/rda ] || \
- mkdir $(TARGET_SUBDIR)/rda; \
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/rda ; \
rm -f $(TARGET_SUBDIR)/rda/Makefile || : ; \
cp multilib.out $(TARGET_SUBDIR)/rda/multilib.out
configure-target-rda: $(TARGET_SUBDIR)/rda/multilib.out
@test ! -f $(TARGET_SUBDIR)/rda/Makefile || exit 0; \
- [ -d $(TARGET_SUBDIR)/rda ] || \
- mkdir $(TARGET_SUBDIR)/rda;\
+ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/rda ; \
r=`${PWD_COMMAND}`; export r; \
s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
$(SET_LIB_PATH) \
fi
.PHONY: check-c++
-check-c++:
- $(MAKE) check-target-libstdc++-v3 check-gcc-c++
+check-c++: check-target-libstdc++-v3 check-gcc-c++
.PHONY: install-gcc maybe-install-gcc
maybe-install-gcc:
# Host modules specific to gcc.
# GCC needs to identify certain tools.
-configure-gcc: maybe-configure-binutils maybe-configure-gas maybe-configure-ld maybe-configure-bison maybe-configure-flex
+# GCC also needs the information exported by the intl configure script.
+configure-gcc: maybe-configure-intl maybe-configure-binutils maybe-configure-gas maybe-configure-ld maybe-configure-bison maybe-configure-flex
all-gcc: maybe-all-libiberty maybe-all-intl maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib
# This is a slightly kludgy method of getting dependencies on
# all-build-libiberty correct; it would be better to build it every time.
all-gcc: maybe-all-build-libiberty
-all-bootstrap: maybe-all-libiberty maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib
+all-bootstrap: maybe-all-libiberty maybe-all-intl maybe-all-texinfo maybe-all-bison maybe-all-byacc maybe-all-binutils maybe-all-gas maybe-all-ld maybe-all-zlib
# Host modules specific to gdb.
# GDB needs to know that the simulator is being built.
all-gzip: maybe-all-libiberty
all-hello: maybe-all-libiberty
all-m4: maybe-all-libiberty maybe-all-texinfo
-all-make: maybe-all-libiberty
+all-make: maybe-all-libiberty maybe-all-intl
all-patch: maybe-all-libiberty
all-prms: maybe-all-libiberty
all-recode: maybe-all-libiberty