mirror of
https://github.com/devkitPro/buildscripts.git
synced 2026-04-25 07:22:27 -05:00
5643 lines
179 KiB
Diff
5643 lines
179 KiB
Diff
--- newlib-1.13.0.orig/config.sub 2004-11-15 20:18:39.000000000 -0500
|
|
+++ newlib-psp/config.sub 2005-07-06 22:53:22.000000000 -0400
|
|
@@ -253,6 +253,7 @@
|
|
| mipsisa64sb1 | mipsisa64sb1el \
|
|
| mipsisa64sr71k | mipsisa64sr71kel \
|
|
| mipstx39 | mipstx39el \
|
|
+ | mipsallegrex | mipsallegrexel \
|
|
| mn10200 | mn10300 \
|
|
| msp430 \
|
|
| ns16k | ns32k \
|
|
@@ -326,6 +327,7 @@
|
|
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
|
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
|
| mipstx39-* | mipstx39el-* \
|
|
+ | mipsallegrex-* | mipsallegrexel-* \
|
|
| mmix-* \
|
|
| msp430-* \
|
|
| none-* | np1-* | ns16k-* | ns32k-* \
|
|
@@ -665,6 +667,10 @@
|
|
basic_machine=m68k-atari
|
|
os=-mint
|
|
;;
|
|
+ psp)
|
|
+ basic_machine=mipsallegrexel-psp
|
|
+ os=-elf
|
|
+ ;;
|
|
mips3*-*)
|
|
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
|
|
;;
|
|
--- newlib-1.13.0.orig/configure 2004-12-16 14:51:28.000000000 -0500
|
|
+++ newlib-psp/configure 2005-07-06 22:53:22.000000000 -0400
|
|
@@ -1507,6 +1507,9 @@
|
|
mips*-*-linux*)
|
|
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
|
;;
|
|
+ mipsallegrex*-*-*)
|
|
+ noconfigdirs="$noconfigdirs target-libgloss"
|
|
+ ;;
|
|
mips*-*-*)
|
|
noconfigdirs="$noconfigdirs gprof ${libgcj}"
|
|
;;
|
|
--- newlib-1.13.0.orig/configure.in 2004-12-16 14:51:28.000000000 -0500
|
|
+++ newlib-psp/configure.in 2005-07-06 22:53:22.000000000 -0400
|
|
@@ -716,6 +716,9 @@
|
|
mips*-*-linux*)
|
|
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
|
;;
|
|
+ mipsallegrex*-*-*)
|
|
+ noconfigdirs="$noconfigdirs target-libgloss"
|
|
+ ;;
|
|
mips*-*-*)
|
|
noconfigdirs="$noconfigdirs gprof ${libgcj}"
|
|
;;
|
|
--- newlib-1.13.0.orig/newlib/configure.host 2004-10-05 15:44:24.000000000 -0400
|
|
+++ newlib-psp/newlib/configure.host 2005-07-28 15:42:00.000000000 -0400
|
|
@@ -570,7 +570,14 @@
|
|
;;
|
|
mips*-*-elf*)
|
|
default_newlib_io_long_long="yes"
|
|
- newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES"
|
|
+ case "${host}" in
|
|
+ mipsallegrex*-psp-*)
|
|
+ sys_dir=psp
|
|
+ syscall_dir=syscalls
|
|
+ newlib_cflags="${newlib_cflags} -G0 -DPREFER_SIZE_OVER_SPEED -DCOMPACT_CTYPE -DCLOCK_PROVIDED -I${prefix}/psp/sdk/include" ;;
|
|
+ *)
|
|
+ newlib_cflags="${newlib_cflags} -DMISSING_SYSCALL_NAMES" ;;
|
|
+ esac
|
|
;;
|
|
mmix-*)
|
|
syscall_dir=syscalls
|
|
--- newlib-1.13.0.orig/newlib/libc/include/machine/time.h 2000-12-04 14:06:37.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/include/machine/time.h 2005-10-24 16:08:22.000000000 -0400
|
|
@@ -9,6 +9,10 @@
|
|
#endif
|
|
#endif /* !__rtems__ */
|
|
|
|
+#if defined(__psp__)
|
|
+#define _CLOCKS_PER_SEC_ 1000000
|
|
+#endif
|
|
+
|
|
#endif /* _MACHTIME_H_ */
|
|
|
|
|
|
--- newlib-1.13.0.orig/newlib/libc/include/sys/config.h 2004-06-22 17:54:51.000000000 -0400
|
|
+++ newlib-psp/newlib/libc/include/sys/config.h 2005-08-16 16:40:10.000000000 -0400
|
|
@@ -94,6 +94,12 @@
|
|
#endif
|
|
#endif
|
|
|
|
+/* We compile newlib with -G0 for PSP, but if we're compiling an app with $gp enabled,
|
|
+ then _impure_ptr is expected to live in .sdata. */
|
|
+#if defined(__psp__)
|
|
+#define __ATTRIBUTE_IMPURE_PTR__ __attribute__((__section__(".sdata")))
|
|
+#endif
|
|
+
|
|
#ifdef __xstormy16__
|
|
#define __SMALL_BITFIELDS
|
|
#undef INT_MAX
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/Makefile.am 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/Makefile.am 2005-11-01 03:28:52.000000000 -0500
|
|
@@ -0,0 +1,31 @@
|
|
+## Process this file with automake to generate Makefile.in
|
|
+
|
|
+AUTOMAKE_OPTIONS = cygnus
|
|
+
|
|
+INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
|
+
|
|
+noinst_LIBRARIES = lib.a
|
|
+
|
|
+LIBCGLUE_MULT_OBJS = _close.o _exit.o _fork.o _fstat.o _getpid.o \
|
|
+ _gettimeofday.o _kill.o _lseek.o _open.o _read.o \
|
|
+ _sbrk.o _wait.o _write.o clock.o isatty.o time.o \
|
|
+ _link.o _unlink.o sleep.o opendir.o readdir.o \
|
|
+ closedir.o getcwd.o chdir.o mkdir.o rmdir.o \
|
|
+ realpath.o _stat.o truncate.o access.o tzset.o \
|
|
+ __psp_set_errno.o
|
|
+
|
|
+XPRINTF_MULT_OBJS = vxprintf.o _xprintf.o __sout.o vsnprintf.o snprintf.o vsprintf.o sprintf.o __mout.o mprintf.o vmprintf.o asprintf.o vasprintf.o __fout.o fprintf.o vfprintf.o printf.o vprintf.o
|
|
+
|
|
+lib_a_SOURCES = libcglue.c pspcwd.c xprintf.c
|
|
+lib_a_LIBADD = $(LIBCGLUE_MULT_OBJS) $(XPRINTF_MULT_OBJS)
|
|
+
|
|
+all: crt0.o
|
|
+
|
|
+$(LIBCGLUE_MULT_OBJS): libcglue.c
|
|
+ $(COMPILE) -DF_$* $< -c -o $@
|
|
+
|
|
+$(XPRINTF_MULT_OBJS): xprintf.c
|
|
+ $(COMPILE) -DF_$* $< -c -o $@
|
|
+
|
|
+ACLOCAL_AMFLAGS = -I ../../..
|
|
+CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/Makefile.in 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/Makefile.in 2005-11-01 03:28:52.000000000 -0500
|
|
@@ -0,0 +1,352 @@
|
|
+# Makefile.in generated automatically by automake 1.4-p6 from Makefile.am
|
|
+
|
|
+# Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
|
+# This Makefile.in is free software; the Free Software Foundation
|
|
+# gives unlimited permission to copy and/or distribute it,
|
|
+# with or without modifications, as long as this notice is preserved.
|
|
+
|
|
+# This program is distributed in the hope that it will be useful,
|
|
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
+# PARTICULAR PURPOSE.
|
|
+
|
|
+
|
|
+SHELL = @SHELL@
|
|
+
|
|
+srcdir = @srcdir@
|
|
+top_srcdir = @top_srcdir@
|
|
+VPATH = @srcdir@
|
|
+prefix = @prefix@
|
|
+exec_prefix = @exec_prefix@
|
|
+
|
|
+bindir = @bindir@
|
|
+sbindir = @sbindir@
|
|
+libexecdir = @libexecdir@
|
|
+datadir = @datadir@
|
|
+sysconfdir = @sysconfdir@
|
|
+sharedstatedir = @sharedstatedir@
|
|
+localstatedir = @localstatedir@
|
|
+libdir = @libdir@
|
|
+infodir = @infodir@
|
|
+mandir = @mandir@
|
|
+includedir = @includedir@
|
|
+oldincludedir = /usr/include
|
|
+
|
|
+DESTDIR =
|
|
+
|
|
+pkgdatadir = $(datadir)/@PACKAGE@
|
|
+pkglibdir = $(libdir)/@PACKAGE@
|
|
+pkgincludedir = $(includedir)/@PACKAGE@
|
|
+
|
|
+top_builddir = .
|
|
+
|
|
+ACLOCAL = @ACLOCAL@
|
|
+AUTOCONF = @AUTOCONF@
|
|
+AUTOMAKE = @AUTOMAKE@
|
|
+AUTOHEADER = @AUTOHEADER@
|
|
+
|
|
+INSTALL = @INSTALL@
|
|
+INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
|
+INSTALL_DATA = @INSTALL_DATA@
|
|
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
|
+transform = @program_transform_name@
|
|
+
|
|
+NORMAL_INSTALL = :
|
|
+PRE_INSTALL = :
|
|
+POST_INSTALL = :
|
|
+NORMAL_UNINSTALL = :
|
|
+PRE_UNINSTALL = :
|
|
+POST_UNINSTALL = :
|
|
+build_alias = @build_alias@
|
|
+build_triplet = @build@
|
|
+host_alias = @host_alias@
|
|
+host_triplet = @host@
|
|
+target_alias = @target_alias@
|
|
+target_triplet = @target@
|
|
+AR = @AR@
|
|
+AS = @AS@
|
|
+CC = @CC@
|
|
+CPP = @CPP@
|
|
+EXEEXT = @EXEEXT@
|
|
+HAVE_LIB = @HAVE_LIB@
|
|
+LDFLAGS = @LDFLAGS@
|
|
+LIB = @LIB@
|
|
+LTLIB = @LTLIB@
|
|
+MAINT = @MAINT@
|
|
+MAKEINFO = @MAKEINFO@
|
|
+NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
|
|
+OBJEXT = @OBJEXT@
|
|
+PACKAGE = @PACKAGE@
|
|
+RANLIB = @RANLIB@
|
|
+VERSION = @VERSION@
|
|
+aext = @aext@
|
|
+libm_machine_dir = @libm_machine_dir@
|
|
+machine_dir = @machine_dir@
|
|
+newlib_basedir = @newlib_basedir@
|
|
+oext = @oext@
|
|
+sys_dir = @sys_dir@
|
|
+
|
|
+AUTOMAKE_OPTIONS = cygnus
|
|
+
|
|
+INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
|
+
|
|
+noinst_LIBRARIES = lib.a
|
|
+
|
|
+LIBCGLUE_MULT_OBJS = _close.o _exit.o _fork.o _fstat.o _getpid.o _gettimeofday.o _kill.o _lseek.o _open.o _read.o _sbrk.o _wait.o _write.o clock.o isatty.o time.o _link.o _unlink.o sleep.o opendir.o readdir.o closedir.o getcwd.o chdir.o mkdir.o rmdir.o realpath.o _stat.o truncate.o access.o tzset.o __psp_set_errno.o
|
|
+
|
|
+
|
|
+XPRINTF_MULT_OBJS = vxprintf.o _xprintf.o __sout.o vsnprintf.o snprintf.o vsprintf.o sprintf.o __mout.o mprintf.o vmprintf.o asprintf.o vasprintf.o __fout.o fprintf.o vfprintf.o printf.o vprintf.o
|
|
+
|
|
+lib_a_SOURCES = libcglue.c pspcwd.c xprintf.c
|
|
+lib_a_LIBADD = $(LIBCGLUE_MULT_OBJS) $(XPRINTF_MULT_OBJS)
|
|
+
|
|
+ACLOCAL_AMFLAGS = -I ../../..
|
|
+CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
|
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
|
+mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs
|
|
+CONFIG_CLEAN_FILES =
|
|
+LIBRARIES = $(noinst_LIBRARIES)
|
|
+
|
|
+
|
|
+DEFS = @DEFS@ -I. -I$(srcdir)
|
|
+CPPFLAGS = @CPPFLAGS@
|
|
+LIBS = @LIBS@
|
|
+lib_a_DEPENDENCIES = _close.o _exit.o _fork.o _fstat.o _getpid.o \
|
|
+_gettimeofday.o _kill.o _lseek.o _open.o _read.o _sbrk.o _wait.o \
|
|
+_write.o clock.o isatty.o time.o _link.o _unlink.o sleep.o opendir.o \
|
|
+readdir.o closedir.o getcwd.o chdir.o mkdir.o rmdir.o realpath.o \
|
|
+_stat.o truncate.o access.o __psp_set_errno.o vxprintf.o _xprintf.o \
|
|
+__sout.o vsnprintf.o snprintf.o vsprintf.o sprintf.o __mout.o \
|
|
+mprintf.o vmprintf.o asprintf.o vasprintf.o __fout.o fprintf.o \
|
|
+vfprintf.o printf.o vprintf.o tzset.o
|
|
+lib_a_OBJECTS = libcglue.o pspcwd.o xprintf.o
|
|
+CFLAGS = @CFLAGS@
|
|
+COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
|
+CCLD = $(CC)
|
|
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
|
+DIST_COMMON = README Makefile.am Makefile.in aclocal.m4 configure \
|
|
+configure.in
|
|
+
|
|
+
|
|
+DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
|
+
|
|
+TAR = tar
|
|
+GZIP_ENV = --best
|
|
+SOURCES = $(lib_a_SOURCES)
|
|
+OBJECTS = $(lib_a_OBJECTS)
|
|
+
|
|
+all: all-redirect
|
|
+.SUFFIXES:
|
|
+.SUFFIXES: .S .c .o .s
|
|
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
|
+ cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
|
|
+
|
|
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
|
+ cd $(top_builddir) \
|
|
+ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
|
+
|
|
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in \
|
|
+ ../../../acinclude.m4 ../../../aclocal.m4 \
|
|
+ ../../../libtool.m4
|
|
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
|
+
|
|
+config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
|
+ $(SHELL) ./config.status --recheck
|
|
+$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
|
+ cd $(srcdir) && $(AUTOCONF)
|
|
+
|
|
+mostlyclean-noinstLIBRARIES:
|
|
+
|
|
+clean-noinstLIBRARIES:
|
|
+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
|
+
|
|
+distclean-noinstLIBRARIES:
|
|
+
|
|
+maintainer-clean-noinstLIBRARIES:
|
|
+
|
|
+.c.o:
|
|
+ $(COMPILE) -c $<
|
|
+
|
|
+.s.o:
|
|
+ $(COMPILE) -c $<
|
|
+
|
|
+.S.o:
|
|
+ $(COMPILE) -c $<
|
|
+
|
|
+mostlyclean-compile:
|
|
+ -rm -f *.o core *.core
|
|
+
|
|
+clean-compile:
|
|
+
|
|
+distclean-compile:
|
|
+ -rm -f *.tab.c
|
|
+
|
|
+maintainer-clean-compile:
|
|
+
|
|
+lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES)
|
|
+ -rm -f lib.a
|
|
+ $(AR) cru lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD)
|
|
+ $(RANLIB) lib.a
|
|
+
|
|
+tags: TAGS
|
|
+
|
|
+ID: $(HEADERS) $(SOURCES) $(LISP)
|
|
+ list='$(SOURCES) $(HEADERS)'; \
|
|
+ unique=`for i in $$list; do echo $$i; done | \
|
|
+ awk ' { files[$$0] = 1; } \
|
|
+ END { for (i in files) print i; }'`; \
|
|
+ here=`pwd` && cd $(srcdir) \
|
|
+ && mkid -f$$here/ID $$unique $(LISP)
|
|
+
|
|
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
|
+ tags=; \
|
|
+ here=`pwd`; \
|
|
+ list='$(SOURCES) $(HEADERS)'; \
|
|
+ unique=`for i in $$list; do echo $$i; done | \
|
|
+ awk ' { files[$$0] = 1; } \
|
|
+ END { for (i in files) print i; }'`; \
|
|
+ test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|
|
+ || (cd $(srcdir) && etags -o $$here/TAGS $(ETAGS_ARGS) $$tags $$unique $(LISP))
|
|
+
|
|
+mostlyclean-tags:
|
|
+
|
|
+clean-tags:
|
|
+
|
|
+distclean-tags:
|
|
+ -rm -f TAGS ID
|
|
+
|
|
+maintainer-clean-tags:
|
|
+
|
|
+distdir = $(PACKAGE)-$(VERSION)
|
|
+top_distdir = $(distdir)
|
|
+
|
|
+# This target untars the dist file and tries a VPATH configuration. Then
|
|
+# it guarantees that the distribution is self-contained by making another
|
|
+# tarfile.
|
|
+distcheck: dist
|
|
+ -rm -rf $(distdir)
|
|
+ GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
|
|
+ mkdir $(distdir)/=build
|
|
+ mkdir $(distdir)/=inst
|
|
+ dc_install_base=`cd $(distdir)/=inst && pwd`; \
|
|
+ cd $(distdir)/=build \
|
|
+ && ../configure --srcdir=.. --prefix=$$dc_install_base \
|
|
+ && $(MAKE) $(AM_MAKEFLAGS) \
|
|
+ && $(MAKE) $(AM_MAKEFLAGS) dvi \
|
|
+ && $(MAKE) $(AM_MAKEFLAGS) check \
|
|
+ && $(MAKE) $(AM_MAKEFLAGS) install \
|
|
+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
|
+ && $(MAKE) $(AM_MAKEFLAGS) dist
|
|
+ -rm -rf $(distdir)
|
|
+ @banner="$(distdir).tar.gz is ready for distribution"; \
|
|
+ dashes=`echo "$$banner" | sed s/./=/g`; \
|
|
+ echo "$$dashes"; \
|
|
+ echo "$$banner"; \
|
|
+ echo "$$dashes"
|
|
+dist: distdir
|
|
+ -chmod -R a+r $(distdir)
|
|
+ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
|
+ -rm -rf $(distdir)
|
|
+dist-all: distdir
|
|
+ -chmod -R a+r $(distdir)
|
|
+ GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
|
+ -rm -rf $(distdir)
|
|
+distdir: $(DISTFILES)
|
|
+ -rm -rf $(distdir)
|
|
+ mkdir $(distdir)
|
|
+ -chmod 777 $(distdir)
|
|
+ @for file in $(DISTFILES); do \
|
|
+ if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
|
+ if test -d $$d/$$file; then \
|
|
+ cp -pr $$d/$$file $(distdir)/$$file; \
|
|
+ else \
|
|
+ test -f $(distdir)/$$file \
|
|
+ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
|
+ || cp -p $$d/$$file $(distdir)/$$file || :; \
|
|
+ fi; \
|
|
+ done
|
|
+info-am:
|
|
+info: info-am
|
|
+dvi-am:
|
|
+dvi: dvi-am
|
|
+check-am:
|
|
+check: check-am
|
|
+installcheck-am:
|
|
+installcheck: installcheck-am
|
|
+install-info-am:
|
|
+install-info: install-info-am
|
|
+install-exec-am:
|
|
+install-exec: install-exec-am
|
|
+
|
|
+install-data-am:
|
|
+install-data: install-data-am
|
|
+
|
|
+install-am: all-am
|
|
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
|
+install: install-am
|
|
+uninstall-am:
|
|
+uninstall: uninstall-am
|
|
+all-am: Makefile $(LIBRARIES)
|
|
+all-redirect: all-am
|
|
+install-strip:
|
|
+ $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
|
+installdirs:
|
|
+
|
|
+
|
|
+mostlyclean-generic:
|
|
+
|
|
+clean-generic:
|
|
+
|
|
+distclean-generic:
|
|
+ -rm -f Makefile $(CONFIG_CLEAN_FILES)
|
|
+ -rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
|
+
|
|
+maintainer-clean-generic:
|
|
+mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
|
|
+ mostlyclean-tags mostlyclean-generic
|
|
+
|
|
+mostlyclean: mostlyclean-am
|
|
+
|
|
+clean-am: clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
|
|
+ mostlyclean-am
|
|
+
|
|
+clean: clean-am
|
|
+
|
|
+distclean-am: distclean-noinstLIBRARIES distclean-compile \
|
|
+ distclean-tags distclean-generic clean-am
|
|
+
|
|
+distclean: distclean-am
|
|
+ -rm -f config.status
|
|
+
|
|
+maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
|
|
+ maintainer-clean-compile maintainer-clean-tags \
|
|
+ maintainer-clean-generic distclean-am
|
|
+ @echo "This command is intended for maintainers to use;"
|
|
+ @echo "it deletes files that may require special tools to rebuild."
|
|
+
|
|
+maintainer-clean: maintainer-clean-am
|
|
+ -rm -f config.status
|
|
+
|
|
+.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
|
|
+clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
|
|
+mostlyclean-compile distclean-compile clean-compile \
|
|
+maintainer-clean-compile tags mostlyclean-tags distclean-tags \
|
|
+clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \
|
|
+check-am installcheck-am installcheck install-info-am install-info \
|
|
+install-exec-am install-exec install-data-am install-data install-am \
|
|
+install uninstall-am uninstall all-redirect all-am all installdirs \
|
|
+mostlyclean-generic distclean-generic clean-generic \
|
|
+maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
|
+
|
|
+
|
|
+all: crt0.o
|
|
+
|
|
+$(LIBCGLUE_MULT_OBJS): libcglue.c
|
|
+ $(COMPILE) -DF_$* $< -c -o $@
|
|
+
|
|
+$(XPRINTF_MULT_OBJS): xprintf.c
|
|
+ $(COMPILE) -DF_$* $< -c -o $@
|
|
+
|
|
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
|
+# Otherwise a system limit (for SysV at least) may be exceeded.
|
|
+.NOEXPORT:
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/README 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/README 2005-07-28 15:42:00.000000000 -0400
|
|
@@ -0,0 +1,16 @@
|
|
+Newlib for PSP
|
|
+--
|
|
+
|
|
+This sys/psp directory depends on PSPSDK headers. It expects them to live in
|
|
+${prefix}/psp/sdk/include (see newlib/configure.host).
|
|
+
|
|
+I used automake 1.4-p6 to generate aclocal.m4 and Makefile.in:
|
|
+
|
|
+ aclocal -I ../../..
|
|
+ automake --cygnus
|
|
+
|
|
+Autoconf refused to work for me, so I copied configure from sys/sh and modified
|
|
+$ac_unique_file to point libcglue.c.
|
|
+
|
|
+--
|
|
+Marcus R. Brown <mrbrown@ocgnet.org>
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/aclocal.m4 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/aclocal.m4 2005-09-29 21:46:30.000000000 -0400
|
|
@@ -0,0 +1,1185 @@
|
|
+dnl aclocal.m4 generated automatically by aclocal 1.4-p6
|
|
+
|
|
+dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc.
|
|
+dnl This file is free software; the Free Software Foundation
|
|
+dnl gives unlimited permission to copy and/or distribute it,
|
|
+dnl with or without modifications, as long as this notice is preserved.
|
|
+
|
|
+dnl This program is distributed in the hope that it will be useful,
|
|
+dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
|
+dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
+dnl PARTICULAR PURPOSE.
|
|
+
|
|
+# lib-prefix.m4 serial 4 (gettext-0.14.2)
|
|
+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
|
|
+dnl This file is free software; the Free Software Foundation
|
|
+dnl gives unlimited permission to copy and/or distribute it,
|
|
+dnl with or without modifications, as long as this notice is preserved.
|
|
+
|
|
+dnl From Bruno Haible.
|
|
+
|
|
+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
|
|
+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
|
|
+dnl require excessive bracketing.
|
|
+ifdef([AC_HELP_STRING],
|
|
+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
|
|
+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
|
|
+
|
|
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
|
|
+dnl to access previously installed libraries. The basic assumption is that
|
|
+dnl a user will want packages to use other packages he previously installed
|
|
+dnl with the same --prefix option.
|
|
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
|
|
+dnl libraries, but is otherwise very convenient.
|
|
+AC_DEFUN([AC_LIB_PREFIX],
|
|
+[
|
|
+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
|
|
+ AC_REQUIRE([AC_PROG_CC])
|
|
+ AC_REQUIRE([AC_CANONICAL_HOST])
|
|
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
|
+ dnl By default, look in $includedir and $libdir.
|
|
+ use_additional=yes
|
|
+ AC_LIB_WITH_FINAL_PREFIX([
|
|
+ eval additional_includedir=\"$includedir\"
|
|
+ eval additional_libdir=\"$libdir\"
|
|
+ ])
|
|
+ AC_LIB_ARG_WITH([lib-prefix],
|
|
+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
|
|
+ --without-lib-prefix don't search for libraries in includedir and libdir],
|
|
+[
|
|
+ if test "X$withval" = "Xno"; then
|
|
+ use_additional=no
|
|
+ else
|
|
+ if test "X$withval" = "X"; then
|
|
+ AC_LIB_WITH_FINAL_PREFIX([
|
|
+ eval additional_includedir=\"$includedir\"
|
|
+ eval additional_libdir=\"$libdir\"
|
|
+ ])
|
|
+ else
|
|
+ additional_includedir="$withval/include"
|
|
+ additional_libdir="$withval/lib"
|
|
+ fi
|
|
+ fi
|
|
+])
|
|
+ if test $use_additional = yes; then
|
|
+ dnl Potentially add $additional_includedir to $CPPFLAGS.
|
|
+ dnl But don't add it
|
|
+ dnl 1. if it's the standard /usr/include,
|
|
+ dnl 2. if it's already present in $CPPFLAGS,
|
|
+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
|
|
+ dnl 4. if it doesn't exist as a directory.
|
|
+ if test "X$additional_includedir" != "X/usr/include"; then
|
|
+ haveit=
|
|
+ for x in $CPPFLAGS; do
|
|
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
+ if test "X$x" = "X-I$additional_includedir"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ if test "X$additional_includedir" = "X/usr/local/include"; then
|
|
+ if test -n "$GCC"; then
|
|
+ case $host_os in
|
|
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
|
+ esac
|
|
+ fi
|
|
+ fi
|
|
+ if test -z "$haveit"; then
|
|
+ if test -d "$additional_includedir"; then
|
|
+ dnl Really add $additional_includedir to $CPPFLAGS.
|
|
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ dnl Potentially add $additional_libdir to $LDFLAGS.
|
|
+ dnl But don't add it
|
|
+ dnl 1. if it's the standard /usr/lib,
|
|
+ dnl 2. if it's already present in $LDFLAGS,
|
|
+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
|
|
+ dnl 4. if it doesn't exist as a directory.
|
|
+ if test "X$additional_libdir" != "X/usr/lib"; then
|
|
+ haveit=
|
|
+ for x in $LDFLAGS; do
|
|
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
+ if test "X$x" = "X-L$additional_libdir"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ if test "X$additional_libdir" = "X/usr/local/lib"; then
|
|
+ if test -n "$GCC"; then
|
|
+ case $host_os in
|
|
+ linux*) haveit=yes;;
|
|
+ esac
|
|
+ fi
|
|
+ fi
|
|
+ if test -z "$haveit"; then
|
|
+ if test -d "$additional_libdir"; then
|
|
+ dnl Really add $additional_libdir to $LDFLAGS.
|
|
+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+])
|
|
+
|
|
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
|
|
+dnl acl_final_exec_prefix, containing the values to which $prefix and
|
|
+dnl $exec_prefix will expand at the end of the configure script.
|
|
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
|
|
+[
|
|
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
|
|
+ dnl at the end of configure.
|
|
+ if test "X$prefix" = "XNONE"; then
|
|
+ acl_final_prefix="$ac_default_prefix"
|
|
+ else
|
|
+ acl_final_prefix="$prefix"
|
|
+ fi
|
|
+ if test "X$exec_prefix" = "XNONE"; then
|
|
+ acl_final_exec_prefix='${prefix}'
|
|
+ else
|
|
+ acl_final_exec_prefix="$exec_prefix"
|
|
+ fi
|
|
+ acl_save_prefix="$prefix"
|
|
+ prefix="$acl_final_prefix"
|
|
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
|
|
+ prefix="$acl_save_prefix"
|
|
+])
|
|
+
|
|
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
|
|
+dnl variables prefix and exec_prefix bound to the values they will have
|
|
+dnl at the end of the configure script.
|
|
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
|
|
+[
|
|
+ acl_save_prefix="$prefix"
|
|
+ prefix="$acl_final_prefix"
|
|
+ acl_save_exec_prefix="$exec_prefix"
|
|
+ exec_prefix="$acl_final_exec_prefix"
|
|
+ $1
|
|
+ exec_prefix="$acl_save_exec_prefix"
|
|
+ prefix="$acl_save_prefix"
|
|
+])
|
|
+
|
|
+# lib-link.m4 serial 6 (gettext-0.14.3)
|
|
+dnl Copyright (C) 2001-2005 Free Software Foundation, Inc.
|
|
+dnl This file is free software; the Free Software Foundation
|
|
+dnl gives unlimited permission to copy and/or distribute it,
|
|
+dnl with or without modifications, as long as this notice is preserved.
|
|
+
|
|
+dnl From Bruno Haible.
|
|
+
|
|
+AC_PREREQ(2.50)
|
|
+
|
|
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
|
|
+dnl the libraries corresponding to explicit and implicit dependencies.
|
|
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
|
|
+dnl augments the CPPFLAGS variable.
|
|
+AC_DEFUN([AC_LIB_LINKFLAGS],
|
|
+[
|
|
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
|
+ AC_REQUIRE([AC_LIB_RPATH])
|
|
+ define([Name],[translit([$1],[./-], [___])])
|
|
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
|
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
|
+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
|
|
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
|
+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
|
|
+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
|
|
+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
|
|
+ ])
|
|
+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
|
|
+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
|
|
+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
|
|
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
|
+ AC_SUBST([LIB]NAME)
|
|
+ AC_SUBST([LTLIB]NAME)
|
|
+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
|
|
+ dnl results of this search when this library appears as a dependency.
|
|
+ HAVE_LIB[]NAME=yes
|
|
+ undefine([Name])
|
|
+ undefine([NAME])
|
|
+])
|
|
+
|
|
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
|
|
+dnl searches for libname and the libraries corresponding to explicit and
|
|
+dnl implicit dependencies, together with the specified include files and
|
|
+dnl the ability to compile and link the specified testcode. If found, it
|
|
+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
|
|
+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
|
|
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
|
|
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
|
|
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
|
|
+[
|
|
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
|
|
+ AC_REQUIRE([AC_LIB_RPATH])
|
|
+ define([Name],[translit([$1],[./-], [___])])
|
|
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
|
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
|
+
|
|
+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
|
|
+ dnl accordingly.
|
|
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
|
|
+
|
|
+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
|
|
+ dnl because if the user has installed lib[]Name and not disabled its use
|
|
+ dnl via --without-lib[]Name-prefix, he wants to use it.
|
|
+ ac_save_CPPFLAGS="$CPPFLAGS"
|
|
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
|
|
+
|
|
+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
|
|
+ ac_save_LIBS="$LIBS"
|
|
+ LIBS="$LIBS $LIB[]NAME"
|
|
+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
|
|
+ LIBS="$ac_save_LIBS"
|
|
+ ])
|
|
+ if test "$ac_cv_lib[]Name" = yes; then
|
|
+ HAVE_LIB[]NAME=yes
|
|
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
|
|
+ AC_MSG_CHECKING([how to link with lib[]$1])
|
|
+ AC_MSG_RESULT([$LIB[]NAME])
|
|
+ else
|
|
+ HAVE_LIB[]NAME=no
|
|
+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
|
|
+ dnl $INC[]NAME either.
|
|
+ CPPFLAGS="$ac_save_CPPFLAGS"
|
|
+ LIB[]NAME=
|
|
+ LTLIB[]NAME=
|
|
+ fi
|
|
+ AC_SUBST([HAVE_LIB]NAME)
|
|
+ AC_SUBST([LIB]NAME)
|
|
+ AC_SUBST([LTLIB]NAME)
|
|
+ undefine([Name])
|
|
+ undefine([NAME])
|
|
+])
|
|
+
|
|
+dnl Determine the platform dependent parameters needed to use rpath:
|
|
+dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
|
|
+dnl hardcode_direct, hardcode_minus_L.
|
|
+AC_DEFUN([AC_LIB_RPATH],
|
|
+[
|
|
+ dnl Tell automake >= 1.10 to complain if config.rpath is missing.
|
|
+ m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([config.rpath])])
|
|
+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
|
|
+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
|
|
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
|
|
+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
|
|
+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
|
|
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
|
|
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
|
|
+ . ./conftest.sh
|
|
+ rm -f ./conftest.sh
|
|
+ acl_cv_rpath=done
|
|
+ ])
|
|
+ wl="$acl_cv_wl"
|
|
+ libext="$acl_cv_libext"
|
|
+ shlibext="$acl_cv_shlibext"
|
|
+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
|
|
+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
|
|
+ hardcode_direct="$acl_cv_hardcode_direct"
|
|
+ hardcode_minus_L="$acl_cv_hardcode_minus_L"
|
|
+ dnl Determine whether the user wants rpath handling at all.
|
|
+ AC_ARG_ENABLE(rpath,
|
|
+ [ --disable-rpath do not hardcode runtime library paths],
|
|
+ :, enable_rpath=yes)
|
|
+])
|
|
+
|
|
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
|
|
+dnl the libraries corresponding to explicit and implicit dependencies.
|
|
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
|
|
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
|
|
+[
|
|
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
|
|
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
|
|
+ dnl By default, look in $includedir and $libdir.
|
|
+ use_additional=yes
|
|
+ AC_LIB_WITH_FINAL_PREFIX([
|
|
+ eval additional_includedir=\"$includedir\"
|
|
+ eval additional_libdir=\"$libdir\"
|
|
+ ])
|
|
+ AC_LIB_ARG_WITH([lib$1-prefix],
|
|
+[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
|
|
+ --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
|
|
+[
|
|
+ if test "X$withval" = "Xno"; then
|
|
+ use_additional=no
|
|
+ else
|
|
+ if test "X$withval" = "X"; then
|
|
+ AC_LIB_WITH_FINAL_PREFIX([
|
|
+ eval additional_includedir=\"$includedir\"
|
|
+ eval additional_libdir=\"$libdir\"
|
|
+ ])
|
|
+ else
|
|
+ additional_includedir="$withval/include"
|
|
+ additional_libdir="$withval/lib"
|
|
+ fi
|
|
+ fi
|
|
+])
|
|
+ dnl Search the library and its dependencies in $additional_libdir and
|
|
+ dnl $LDFLAGS. Using breadth-first-seach.
|
|
+ LIB[]NAME=
|
|
+ LTLIB[]NAME=
|
|
+ INC[]NAME=
|
|
+ rpathdirs=
|
|
+ ltrpathdirs=
|
|
+ names_already_handled=
|
|
+ names_next_round='$1 $2'
|
|
+ while test -n "$names_next_round"; do
|
|
+ names_this_round="$names_next_round"
|
|
+ names_next_round=
|
|
+ for name in $names_this_round; do
|
|
+ already_handled=
|
|
+ for n in $names_already_handled; do
|
|
+ if test "$n" = "$name"; then
|
|
+ already_handled=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$already_handled"; then
|
|
+ names_already_handled="$names_already_handled $name"
|
|
+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
|
|
+ dnl or AC_LIB_HAVE_LINKFLAGS call.
|
|
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
|
|
+ eval value=\"\$HAVE_LIB$uppername\"
|
|
+ if test -n "$value"; then
|
|
+ if test "$value" = yes; then
|
|
+ eval value=\"\$LIB$uppername\"
|
|
+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
|
|
+ eval value=\"\$LTLIB$uppername\"
|
|
+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
|
|
+ else
|
|
+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
|
|
+ dnl that this library doesn't exist. So just drop it.
|
|
+ :
|
|
+ fi
|
|
+ else
|
|
+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
|
|
+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
|
|
+ found_dir=
|
|
+ found_la=
|
|
+ found_so=
|
|
+ found_a=
|
|
+ if test $use_additional = yes; then
|
|
+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
|
|
+ found_dir="$additional_libdir"
|
|
+ found_so="$additional_libdir/lib$name.$shlibext"
|
|
+ if test -f "$additional_libdir/lib$name.la"; then
|
|
+ found_la="$additional_libdir/lib$name.la"
|
|
+ fi
|
|
+ else
|
|
+ if test -f "$additional_libdir/lib$name.$libext"; then
|
|
+ found_dir="$additional_libdir"
|
|
+ found_a="$additional_libdir/lib$name.$libext"
|
|
+ if test -f "$additional_libdir/lib$name.la"; then
|
|
+ found_la="$additional_libdir/lib$name.la"
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ if test "X$found_dir" = "X"; then
|
|
+ for x in $LDFLAGS $LTLIB[]NAME; do
|
|
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
+ case "$x" in
|
|
+ -L*)
|
|
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
|
|
+ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
|
|
+ found_dir="$dir"
|
|
+ found_so="$dir/lib$name.$shlibext"
|
|
+ if test -f "$dir/lib$name.la"; then
|
|
+ found_la="$dir/lib$name.la"
|
|
+ fi
|
|
+ else
|
|
+ if test -f "$dir/lib$name.$libext"; then
|
|
+ found_dir="$dir"
|
|
+ found_a="$dir/lib$name.$libext"
|
|
+ if test -f "$dir/lib$name.la"; then
|
|
+ found_la="$dir/lib$name.la"
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ ;;
|
|
+ esac
|
|
+ if test "X$found_dir" != "X"; then
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ fi
|
|
+ if test "X$found_dir" != "X"; then
|
|
+ dnl Found the library.
|
|
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
|
|
+ if test "X$found_so" != "X"; then
|
|
+ dnl Linking with a shared library. We attempt to hardcode its
|
|
+ dnl directory into the executable's runpath, unless it's the
|
|
+ dnl standard /usr/lib.
|
|
+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
|
|
+ dnl No hardcoding is needed.
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
+ else
|
|
+ dnl Use an explicit option to hardcode DIR into the resulting
|
|
+ dnl binary.
|
|
+ dnl Potentially add DIR to ltrpathdirs.
|
|
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
|
+ haveit=
|
|
+ for x in $ltrpathdirs; do
|
|
+ if test "X$x" = "X$found_dir"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ ltrpathdirs="$ltrpathdirs $found_dir"
|
|
+ fi
|
|
+ dnl The hardcoding into $LIBNAME is system dependent.
|
|
+ if test "$hardcode_direct" = yes; then
|
|
+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
|
|
+ dnl resulting binary.
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
+ else
|
|
+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
|
|
+ dnl Use an explicit option to hardcode DIR into the resulting
|
|
+ dnl binary.
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
+ dnl Potentially add DIR to rpathdirs.
|
|
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
|
|
+ haveit=
|
|
+ for x in $rpathdirs; do
|
|
+ if test "X$x" = "X$found_dir"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ rpathdirs="$rpathdirs $found_dir"
|
|
+ fi
|
|
+ else
|
|
+ dnl Rely on "-L$found_dir".
|
|
+ dnl But don't add it if it's already contained in the LDFLAGS
|
|
+ dnl or the already constructed $LIBNAME
|
|
+ haveit=
|
|
+ for x in $LDFLAGS $LIB[]NAME; do
|
|
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
+ if test "X$x" = "X-L$found_dir"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
|
|
+ fi
|
|
+ if test "$hardcode_minus_L" != no; then
|
|
+ dnl FIXME: Not sure whether we should use
|
|
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
|
+ dnl here.
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
|
|
+ else
|
|
+ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
|
|
+ dnl here, because this doesn't fit in flags passed to the
|
|
+ dnl compiler. So give up. No hardcoding. This affects only
|
|
+ dnl very old systems.
|
|
+ dnl FIXME: Not sure whether we should use
|
|
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
|
|
+ dnl here.
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ else
|
|
+ if test "X$found_a" != "X"; then
|
|
+ dnl Linking with a static library.
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
|
|
+ else
|
|
+ dnl We shouldn't come here, but anyway it's good to have a
|
|
+ dnl fallback.
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
|
|
+ fi
|
|
+ fi
|
|
+ dnl Assume the include files are nearby.
|
|
+ additional_includedir=
|
|
+ case "$found_dir" in
|
|
+ */lib | */lib/)
|
|
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
|
|
+ additional_includedir="$basedir/include"
|
|
+ ;;
|
|
+ esac
|
|
+ if test "X$additional_includedir" != "X"; then
|
|
+ dnl Potentially add $additional_includedir to $INCNAME.
|
|
+ dnl But don't add it
|
|
+ dnl 1. if it's the standard /usr/include,
|
|
+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
|
|
+ dnl 3. if it's already present in $CPPFLAGS or the already
|
|
+ dnl constructed $INCNAME,
|
|
+ dnl 4. if it doesn't exist as a directory.
|
|
+ if test "X$additional_includedir" != "X/usr/include"; then
|
|
+ haveit=
|
|
+ if test "X$additional_includedir" = "X/usr/local/include"; then
|
|
+ if test -n "$GCC"; then
|
|
+ case $host_os in
|
|
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
|
+ esac
|
|
+ fi
|
|
+ fi
|
|
+ if test -z "$haveit"; then
|
|
+ for x in $CPPFLAGS $INC[]NAME; do
|
|
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
+ if test "X$x" = "X-I$additional_includedir"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ if test -d "$additional_includedir"; then
|
|
+ dnl Really add $additional_includedir to $INCNAME.
|
|
+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ dnl Look for dependencies.
|
|
+ if test -n "$found_la"; then
|
|
+ dnl Read the .la file. It defines the variables
|
|
+ dnl dlname, library_names, old_library, dependency_libs, current,
|
|
+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
|
|
+ save_libdir="$libdir"
|
|
+ case "$found_la" in
|
|
+ */* | *\\*) . "$found_la" ;;
|
|
+ *) . "./$found_la" ;;
|
|
+ esac
|
|
+ libdir="$save_libdir"
|
|
+ dnl We use only dependency_libs.
|
|
+ for dep in $dependency_libs; do
|
|
+ case "$dep" in
|
|
+ -L*)
|
|
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
|
|
+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
|
|
+ dnl But don't add it
|
|
+ dnl 1. if it's the standard /usr/lib,
|
|
+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
|
|
+ dnl 3. if it's already present in $LDFLAGS or the already
|
|
+ dnl constructed $LIBNAME,
|
|
+ dnl 4. if it doesn't exist as a directory.
|
|
+ if test "X$additional_libdir" != "X/usr/lib"; then
|
|
+ haveit=
|
|
+ if test "X$additional_libdir" = "X/usr/local/lib"; then
|
|
+ if test -n "$GCC"; then
|
|
+ case $host_os in
|
|
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
|
|
+ esac
|
|
+ fi
|
|
+ fi
|
|
+ if test -z "$haveit"; then
|
|
+ haveit=
|
|
+ for x in $LDFLAGS $LIB[]NAME; do
|
|
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
+ if test "X$x" = "X-L$additional_libdir"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ if test -d "$additional_libdir"; then
|
|
+ dnl Really add $additional_libdir to $LIBNAME.
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
|
|
+ fi
|
|
+ fi
|
|
+ haveit=
|
|
+ for x in $LDFLAGS $LTLIB[]NAME; do
|
|
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
+ if test "X$x" = "X-L$additional_libdir"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ if test -d "$additional_libdir"; then
|
|
+ dnl Really add $additional_libdir to $LTLIBNAME.
|
|
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ ;;
|
|
+ -R*)
|
|
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
|
|
+ if test "$enable_rpath" != no; then
|
|
+ dnl Potentially add DIR to rpathdirs.
|
|
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
|
|
+ haveit=
|
|
+ for x in $rpathdirs; do
|
|
+ if test "X$x" = "X$dir"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ rpathdirs="$rpathdirs $dir"
|
|
+ fi
|
|
+ dnl Potentially add DIR to ltrpathdirs.
|
|
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
|
|
+ haveit=
|
|
+ for x in $ltrpathdirs; do
|
|
+ if test "X$x" = "X$dir"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ ltrpathdirs="$ltrpathdirs $dir"
|
|
+ fi
|
|
+ fi
|
|
+ ;;
|
|
+ -l*)
|
|
+ dnl Handle this in the next round.
|
|
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
|
|
+ ;;
|
|
+ *.la)
|
|
+ dnl Handle this in the next round. Throw away the .la's
|
|
+ dnl directory; it is already contained in a preceding -L
|
|
+ dnl option.
|
|
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
|
|
+ ;;
|
|
+ *)
|
|
+ dnl Most likely an immediate library name.
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
|
|
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
|
|
+ ;;
|
|
+ esac
|
|
+ done
|
|
+ fi
|
|
+ else
|
|
+ dnl Didn't find the library; assume it is in the system directories
|
|
+ dnl known to the linker and runtime loader. (All the system
|
|
+ dnl directories known to the linker should also be known to the
|
|
+ dnl runtime loader, otherwise the system is severely misconfigured.)
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
|
|
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
|
|
+ fi
|
|
+ fi
|
|
+ fi
|
|
+ done
|
|
+ done
|
|
+ if test "X$rpathdirs" != "X"; then
|
|
+ if test -n "$hardcode_libdir_separator"; then
|
|
+ dnl Weird platform: only the last -rpath option counts, the user must
|
|
+ dnl pass all path elements in one option. We can arrange that for a
|
|
+ dnl single library, but not when more than one $LIBNAMEs are used.
|
|
+ alldirs=
|
|
+ for found_dir in $rpathdirs; do
|
|
+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
|
|
+ done
|
|
+ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
|
|
+ acl_save_libdir="$libdir"
|
|
+ libdir="$alldirs"
|
|
+ eval flag=\"$hardcode_libdir_flag_spec\"
|
|
+ libdir="$acl_save_libdir"
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
|
+ else
|
|
+ dnl The -rpath options are cumulative.
|
|
+ for found_dir in $rpathdirs; do
|
|
+ acl_save_libdir="$libdir"
|
|
+ libdir="$found_dir"
|
|
+ eval flag=\"$hardcode_libdir_flag_spec\"
|
|
+ libdir="$acl_save_libdir"
|
|
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
|
|
+ done
|
|
+ fi
|
|
+ fi
|
|
+ if test "X$ltrpathdirs" != "X"; then
|
|
+ dnl When using libtool, the option that works for both libraries and
|
|
+ dnl executables is -R. The -R options are cumulative.
|
|
+ for found_dir in $ltrpathdirs; do
|
|
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
|
|
+ done
|
|
+ fi
|
|
+])
|
|
+
|
|
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
|
|
+dnl unless already present in VAR.
|
|
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
|
|
+dnl contains two or three consecutive elements that belong together.
|
|
+AC_DEFUN([AC_LIB_APPENDTOVAR],
|
|
+[
|
|
+ for element in [$2]; do
|
|
+ haveit=
|
|
+ for x in $[$1]; do
|
|
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
|
|
+ if test "X$x" = "X$element"; then
|
|
+ haveit=yes
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ if test -z "$haveit"; then
|
|
+ [$1]="${[$1]}${[$1]:+ }$element"
|
|
+ fi
|
|
+ done
|
|
+])
|
|
+
|
|
+# lib-ld.m4 serial 3 (gettext-0.13)
|
|
+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
|
|
+dnl This file is free software; the Free Software Foundation
|
|
+dnl gives unlimited permission to copy and/or distribute it,
|
|
+dnl with or without modifications, as long as this notice is preserved.
|
|
+
|
|
+dnl Subroutines of libtool.m4,
|
|
+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
|
|
+dnl with libtool.m4.
|
|
+
|
|
+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
|
|
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
|
|
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
|
|
+[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
|
|
+case `$LD -v 2>&1 </dev/null` in
|
|
+*GNU* | *'with BFD'*)
|
|
+ acl_cv_prog_gnu_ld=yes ;;
|
|
+*)
|
|
+ acl_cv_prog_gnu_ld=no ;;
|
|
+esac])
|
|
+with_gnu_ld=$acl_cv_prog_gnu_ld
|
|
+])
|
|
+
|
|
+dnl From libtool-1.4. Sets the variable LD.
|
|
+AC_DEFUN([AC_LIB_PROG_LD],
|
|
+[AC_ARG_WITH(gnu-ld,
|
|
+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
|
|
+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
|
|
+AC_REQUIRE([AC_PROG_CC])dnl
|
|
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
|
|
+# Prepare PATH_SEPARATOR.
|
|
+# The user is always right.
|
|
+if test "${PATH_SEPARATOR+set}" != set; then
|
|
+ echo "#! /bin/sh" >conf$$.sh
|
|
+ echo "exit 0" >>conf$$.sh
|
|
+ chmod +x conf$$.sh
|
|
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
|
|
+ PATH_SEPARATOR=';'
|
|
+ else
|
|
+ PATH_SEPARATOR=:
|
|
+ fi
|
|
+ rm -f conf$$.sh
|
|
+fi
|
|
+ac_prog=ld
|
|
+if test "$GCC" = yes; then
|
|
+ # Check if gcc -print-prog-name=ld gives a path.
|
|
+ AC_MSG_CHECKING([for ld used by GCC])
|
|
+ case $host in
|
|
+ *-*-mingw*)
|
|
+ # gcc leaves a trailing carriage return which upsets mingw
|
|
+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
|
|
+ *)
|
|
+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
|
|
+ esac
|
|
+ case $ac_prog in
|
|
+ # Accept absolute paths.
|
|
+ [[\\/]* | [A-Za-z]:[\\/]*)]
|
|
+ [re_direlt='/[^/][^/]*/\.\./']
|
|
+ # Canonicalize the path of ld
|
|
+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
|
|
+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
|
|
+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
|
|
+ done
|
|
+ test -z "$LD" && LD="$ac_prog"
|
|
+ ;;
|
|
+ "")
|
|
+ # If it fails, then pretend we aren't using GCC.
|
|
+ ac_prog=ld
|
|
+ ;;
|
|
+ *)
|
|
+ # If it is relative, then search for the first ld in PATH.
|
|
+ with_gnu_ld=unknown
|
|
+ ;;
|
|
+ esac
|
|
+elif test "$with_gnu_ld" = yes; then
|
|
+ AC_MSG_CHECKING([for GNU ld])
|
|
+else
|
|
+ AC_MSG_CHECKING([for non-GNU ld])
|
|
+fi
|
|
+AC_CACHE_VAL(acl_cv_path_LD,
|
|
+[if test -z "$LD"; then
|
|
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
|
|
+ for ac_dir in $PATH; do
|
|
+ test -z "$ac_dir" && ac_dir=.
|
|
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
|
|
+ acl_cv_path_LD="$ac_dir/$ac_prog"
|
|
+ # Check to see if the program is GNU ld. I'd rather use --version,
|
|
+ # but apparently some GNU ld's only accept -v.
|
|
+ # Break only if it was the GNU/non-GNU ld that we prefer.
|
|
+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
|
|
+ *GNU* | *'with BFD'*)
|
|
+ test "$with_gnu_ld" != no && break ;;
|
|
+ *)
|
|
+ test "$with_gnu_ld" != yes && break ;;
|
|
+ esac
|
|
+ fi
|
|
+ done
|
|
+ IFS="$ac_save_ifs"
|
|
+else
|
|
+ acl_cv_path_LD="$LD" # Let the user override the test with a path.
|
|
+fi])
|
|
+LD="$acl_cv_path_LD"
|
|
+if test -n "$LD"; then
|
|
+ AC_MSG_RESULT($LD)
|
|
+else
|
|
+ AC_MSG_RESULT(no)
|
|
+fi
|
|
+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
|
|
+AC_LIB_PROG_LD_GNU
|
|
+])
|
|
+
|
|
+dnl This provides configure definitions used by all the newlib
|
|
+dnl configure.in files.
|
|
+
|
|
+dnl Basic newlib configury. This calls basic introductory stuff,
|
|
+dnl including AM_INIT_AUTOMAKE and AC_CANONICAL_HOST. It also runs
|
|
+dnl configure.host. The only argument is the relative path to the top
|
|
+dnl newlib directory.
|
|
+
|
|
+AC_DEFUN(NEWLIB_CONFIGURE,
|
|
+[
|
|
+dnl Default to --enable-multilib
|
|
+AC_ARG_ENABLE(multilib,
|
|
+[ --enable-multilib build many library versions (default)],
|
|
+[case "${enableval}" in
|
|
+ yes) multilib=yes ;;
|
|
+ no) multilib=no ;;
|
|
+ *) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
|
|
+ esac], [multilib=yes])dnl
|
|
+
|
|
+dnl Support --enable-target-optspace
|
|
+AC_ARG_ENABLE(target-optspace,
|
|
+[ --enable-target-optspace optimize for space],
|
|
+[case "${enableval}" in
|
|
+ yes) target_optspace=yes ;;
|
|
+ no) target_optspace=no ;;
|
|
+ *) AC_MSG_ERROR(bad value ${enableval} for target-optspace option) ;;
|
|
+ esac], [target_optspace=])dnl
|
|
+
|
|
+dnl Support --enable-malloc-debugging - currently only supported for Cygwin
|
|
+AC_ARG_ENABLE(malloc-debugging,
|
|
+[ --enable-malloc-debugging indicate malloc debugging requested],
|
|
+[case "${enableval}" in
|
|
+ yes) malloc_debugging=yes ;;
|
|
+ no) malloc_debugging=no ;;
|
|
+ *) AC_MSG_ERROR(bad value ${enableval} for malloc-debugging option) ;;
|
|
+ esac], [malloc_debugging=])dnl
|
|
+
|
|
+dnl Support --enable-newlib-multithread
|
|
+AC_ARG_ENABLE(newlib-multithread,
|
|
+[ --enable-newlib-multithread enable support for multiple threads],
|
|
+[case "${enableval}" in
|
|
+ yes) newlib_multithread=yes ;;
|
|
+ no) newlib_multithread=no ;;
|
|
+ *) AC_MSG_ERROR(bad value ${enableval} for newlib-multithread option) ;;
|
|
+ esac], [newlib_multithread=yes])dnl
|
|
+
|
|
+dnl Support --enable-newlib-iconv
|
|
+AC_ARG_ENABLE(newlib-iconv,
|
|
+[ --enable-newlib-iconv enable iconv library support],
|
|
+[if test "${newlib_iconv+set}" != set; then
|
|
+ case "${enableval}" in
|
|
+ yes) newlib_iconv=yes ;;
|
|
+ no) newlib_iconv=no ;;
|
|
+ *) AC_MSG_ERROR(bad value ${enableval} for newlib-iconv option) ;;
|
|
+ esac
|
|
+ fi], [newlib_iconv=${newlib_iconv}])dnl
|
|
+
|
|
+dnl Support --enable-newlib-elix-level
|
|
+AC_ARG_ENABLE(newlib-elix-level,
|
|
+[ --enable-newlib-elix-level supply desired elix library level (1-4)],
|
|
+[case "${enableval}" in
|
|
+ 0) newlib_elix_level=0 ;;
|
|
+ 1) newlib_elix_level=1 ;;
|
|
+ 2) newlib_elix_level=2 ;;
|
|
+ 3) newlib_elix_level=3 ;;
|
|
+ 4) newlib_elix_level=4 ;;
|
|
+ *) AC_MSG_ERROR(bad value ${enableval} for newlib-elix-level option) ;;
|
|
+ esac], [newlib_elix_level=0])dnl
|
|
+
|
|
+dnl Support --disable-newlib-io-float
|
|
+AC_ARG_ENABLE(newlib-io-float,
|
|
+[ --disable-newlib-io-float disable printf/scanf family float support],
|
|
+[case "${enableval}" in
|
|
+ yes) newlib_io_float=yes ;;
|
|
+ no) newlib_io_float=no ;;
|
|
+ *) AC_MSG_ERROR(bad value ${enableval} for newlib-io-float option) ;;
|
|
+ esac], [newlib_io_float=yes])dnl
|
|
+
|
|
+dnl Support --disable-newlib-supplied-syscalls
|
|
+AC_ARG_ENABLE(newlib-supplied-syscalls,
|
|
+[ --disable-newlib-supplied-syscalls disable newlib from supplying syscalls],
|
|
+[case "${enableval}" in
|
|
+ yes) newlib_may_supply_syscalls=yes ;;
|
|
+ no) newlib_may_supply_syscalls=no ;;
|
|
+ *) AC_MSG_ERROR(bad value ${enableval} for newlib-supplied-syscalls option) ;;
|
|
+ esac], [newlib_may_supply_syscalls=yes])dnl
|
|
+
|
|
+AM_CONDITIONAL(MAY_SUPPLY_SYSCALLS, test x[$]{newlib_may_supply_syscalls} = xyes)
|
|
+
|
|
+dnl We may get other options which we don't document:
|
|
+dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
|
|
+
|
|
+test -z "[$]{with_target_subdir}" && with_target_subdir=.
|
|
+
|
|
+if test "[$]{srcdir}" = "."; then
|
|
+ if test "[$]{with_target_subdir}" != "."; then
|
|
+ newlib_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1"
|
|
+ else
|
|
+ newlib_basedir="[$]{srcdir}/[$]{with_multisrctop}$1"
|
|
+ fi
|
|
+else
|
|
+ newlib_basedir="[$]{srcdir}/$1"
|
|
+fi
|
|
+AC_SUBST(newlib_basedir)
|
|
+
|
|
+AC_CANONICAL_SYSTEM
|
|
+
|
|
+AM_INIT_AUTOMAKE(newlib, 1.13.0)
|
|
+
|
|
+# FIXME: We temporarily define our own version of AC_PROG_CC. This is
|
|
+# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
|
|
+# are probably using a cross compiler, which will not be able to fully
|
|
+# link an executable. This should really be fixed in autoconf
|
|
+# itself.
|
|
+
|
|
+AC_DEFUN(LIB_AC_PROG_CC,
|
|
+[AC_BEFORE([$0], [AC_PROG_CPP])dnl
|
|
+AC_CHECK_PROG(CC, gcc, gcc)
|
|
+if test -z "$CC"; then
|
|
+ AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
|
|
+ test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
|
|
+fi
|
|
+
|
|
+AC_PROG_CC_GNU
|
|
+
|
|
+if test $ac_cv_prog_gcc = yes; then
|
|
+ GCC=yes
|
|
+dnl Check whether -g works, even if CFLAGS is set, in case the package
|
|
+dnl plays around with CFLAGS (such as to build both debugging and
|
|
+dnl normal versions of a library), tasteless as that idea is.
|
|
+ ac_test_CFLAGS="${CFLAGS+set}"
|
|
+ ac_save_CFLAGS="$CFLAGS"
|
|
+ CFLAGS=
|
|
+ AC_PROG_CC_G
|
|
+ if test "$ac_test_CFLAGS" = set; then
|
|
+ CFLAGS="$ac_save_CFLAGS"
|
|
+ elif test $ac_cv_prog_cc_g = yes; then
|
|
+ CFLAGS="-g -O2"
|
|
+ else
|
|
+ CFLAGS="-O2"
|
|
+ fi
|
|
+else
|
|
+ GCC=
|
|
+ test "${CFLAGS+set}" = set || CFLAGS="-g"
|
|
+fi
|
|
+])
|
|
+
|
|
+LIB_AC_PROG_CC
|
|
+
|
|
+AC_CHECK_TOOL(AS, as)
|
|
+AC_CHECK_TOOL(AR, ar)
|
|
+AC_CHECK_TOOL(RANLIB, ranlib, :)
|
|
+
|
|
+AC_PROG_INSTALL
|
|
+
|
|
+AM_MAINTAINER_MODE
|
|
+
|
|
+# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
|
|
+# at least currently, we never actually build a program, so we never
|
|
+# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
|
|
+# fails, because we are probably configuring with a cross compiler
|
|
+# which can't create executables. So we include AC_EXEEXT to keep
|
|
+# automake happy, but we don't execute it, since we don't care about
|
|
+# the result.
|
|
+if false; then
|
|
+ AC_EXEEXT
|
|
+fi
|
|
+
|
|
+. [$]{newlib_basedir}/configure.host
|
|
+
|
|
+newlib_cflags="[$]{newlib_cflags} -fno-builtin"
|
|
+
|
|
+NEWLIB_CFLAGS=${newlib_cflags}
|
|
+AC_SUBST(NEWLIB_CFLAGS)
|
|
+
|
|
+LDFLAGS=${ldflags}
|
|
+AC_SUBST(LDFLAGS)
|
|
+
|
|
+AM_CONDITIONAL(ELIX_LEVEL_0, test x[$]{newlib_elix_level} = x0)
|
|
+AM_CONDITIONAL(ELIX_LEVEL_1, test x[$]{newlib_elix_level} = x1)
|
|
+AM_CONDITIONAL(ELIX_LEVEL_2, test x[$]{newlib_elix_level} = x2)
|
|
+AM_CONDITIONAL(ELIX_LEVEL_3, test x[$]{newlib_elix_level} = x3)
|
|
+AM_CONDITIONAL(ELIX_LEVEL_4, test x[$]{newlib_elix_level} = x4)
|
|
+
|
|
+AM_CONDITIONAL(USE_LIBTOOL, test x[$]{use_libtool} = xyes)
|
|
+
|
|
+# Hard-code OBJEXT. Normally it is set by AC_OBJEXT, but we
|
|
+# use oext, which is set in configure.host based on the target platform.
|
|
+OBJEXT=${oext}
|
|
+
|
|
+AC_SUBST(OBJEXT)
|
|
+AC_SUBST(oext)
|
|
+AC_SUBST(aext)
|
|
+
|
|
+AC_SUBST(libm_machine_dir)
|
|
+AC_SUBST(machine_dir)
|
|
+AC_SUBST(sys_dir)
|
|
+])
|
|
+
|
|
+# Do all the work for Automake. This macro actually does too much --
|
|
+# some checks are only needed if your package does certain things.
|
|
+# But this isn't really a big deal.
|
|
+
|
|
+# serial 1
|
|
+
|
|
+dnl Usage:
|
|
+dnl AM_INIT_AUTOMAKE(package,version, [no-define])
|
|
+
|
|
+AC_DEFUN([AM_INIT_AUTOMAKE],
|
|
+[AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl
|
|
+AC_REQUIRE([AC_PROG_INSTALL])
|
|
+PACKAGE=[$1]
|
|
+AC_SUBST(PACKAGE)
|
|
+VERSION=[$2]
|
|
+AC_SUBST(VERSION)
|
|
+dnl test to see if srcdir already configured
|
|
+if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
|
|
+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
|
+fi
|
|
+ifelse([$3],,
|
|
+AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
|
+AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
|
|
+AC_REQUIRE([AM_SANITY_CHECK])
|
|
+AC_REQUIRE([AC_ARG_PROGRAM])
|
|
+dnl FIXME This is truly gross.
|
|
+missing_dir=`cd $ac_aux_dir && pwd`
|
|
+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}, $missing_dir)
|
|
+AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
|
|
+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}, $missing_dir)
|
|
+AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
|
|
+AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
|
|
+AC_REQUIRE([AC_PROG_MAKE_SET])])
|
|
+
|
|
+# Copyright 2002 Free Software Foundation, Inc.
|
|
+
|
|
+# This program is free software; you can redistribute it and/or modify
|
|
+# it under the terms of the GNU General Public License as published by
|
|
+# the Free Software Foundation; either version 2, or (at your option)
|
|
+# any later version.
|
|
+
|
|
+# This program is distributed in the hope that it will be useful,
|
|
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
+# GNU General Public License for more details.
|
|
+
|
|
+# You should have received a copy of the GNU General Public License
|
|
+# along with this program; if not, write to the Free Software
|
|
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
+
|
|
+# AM_AUTOMAKE_VERSION(VERSION)
|
|
+# ----------------------------
|
|
+# Automake X.Y traces this macro to ensure aclocal.m4 has been
|
|
+# generated from the m4 files accompanying Automake X.Y.
|
|
+AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.4"])
|
|
+
|
|
+# AM_SET_CURRENT_AUTOMAKE_VERSION
|
|
+# -------------------------------
|
|
+# Call AM_AUTOMAKE_VERSION so it can be traced.
|
|
+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
|
|
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
|
|
+ [AM_AUTOMAKE_VERSION([1.4-p6])])
|
|
+
|
|
+#
|
|
+# Check to make sure that the build environment is sane.
|
|
+#
|
|
+
|
|
+AC_DEFUN([AM_SANITY_CHECK],
|
|
+[AC_MSG_CHECKING([whether build environment is sane])
|
|
+# Just in case
|
|
+sleep 1
|
|
+echo timestamp > conftestfile
|
|
+# Do `set' in a subshell so we don't clobber the current shell's
|
|
+# arguments. Must try -L first in case configure is actually a
|
|
+# symlink; some systems play weird games with the mod time of symlinks
|
|
+# (eg FreeBSD returns the mod time of the symlink's containing
|
|
+# directory).
|
|
+if (
|
|
+ set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
|
|
+ if test "[$]*" = "X"; then
|
|
+ # -L didn't work.
|
|
+ set X `ls -t $srcdir/configure conftestfile`
|
|
+ fi
|
|
+ if test "[$]*" != "X $srcdir/configure conftestfile" \
|
|
+ && test "[$]*" != "X conftestfile $srcdir/configure"; then
|
|
+
|
|
+ # If neither matched, then we have a broken ls. This can happen
|
|
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
|
|
+ # broken ls alias from the environment. This has actually
|
|
+ # happened. Such a system could not be considered "sane".
|
|
+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
|
+alias in your environment])
|
|
+ fi
|
|
+
|
|
+ test "[$]2" = conftestfile
|
|
+ )
|
|
+then
|
|
+ # Ok.
|
|
+ :
|
|
+else
|
|
+ AC_MSG_ERROR([newly created file is older than distributed files!
|
|
+Check your system clock])
|
|
+fi
|
|
+rm -f conftest*
|
|
+AC_MSG_RESULT(yes)])
|
|
+
|
|
+dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
|
|
+dnl The program must properly implement --version.
|
|
+AC_DEFUN([AM_MISSING_PROG],
|
|
+[AC_MSG_CHECKING(for working $2)
|
|
+# Run test in a subshell; some versions of sh will print an error if
|
|
+# an executable is not found, even if stderr is redirected.
|
|
+# Redirect stdin to placate older versions of autoconf. Sigh.
|
|
+if ($2 --version) < /dev/null > /dev/null 2>&1; then
|
|
+ $1=$2
|
|
+ AC_MSG_RESULT(found)
|
|
+else
|
|
+ $1="$3/missing $2"
|
|
+ AC_MSG_RESULT(missing)
|
|
+fi
|
|
+AC_SUBST($1)])
|
|
+
|
|
+# Define a conditional.
|
|
+
|
|
+AC_DEFUN([AM_CONDITIONAL],
|
|
+[AC_SUBST($1_TRUE)
|
|
+AC_SUBST($1_FALSE)
|
|
+if $2; then
|
|
+ $1_TRUE=
|
|
+ $1_FALSE='#'
|
|
+else
|
|
+ $1_TRUE='#'
|
|
+ $1_FALSE=
|
|
+fi])
|
|
+
|
|
+# Add --enable-maintainer-mode option to configure.
|
|
+# From Jim Meyering
|
|
+
|
|
+# serial 1
|
|
+
|
|
+AC_DEFUN([AM_MAINTAINER_MODE],
|
|
+[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
|
+ dnl maintainer-mode is disabled by default
|
|
+ AC_ARG_ENABLE(maintainer-mode,
|
|
+[ --enable-maintainer-mode enable make rules and dependencies not useful
|
|
+ (and sometimes confusing) to the casual installer],
|
|
+ USE_MAINTAINER_MODE=$enableval,
|
|
+ USE_MAINTAINER_MODE=no)
|
|
+ AC_MSG_RESULT($USE_MAINTAINER_MODE)
|
|
+ AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
|
|
+ MAINT=$MAINTAINER_MODE_TRUE
|
|
+ AC_SUBST(MAINT)dnl
|
|
+]
|
|
+)
|
|
+
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/configure 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/configure 2005-07-28 15:42:00.000000000 -0400
|
|
@@ -0,0 +1,1880 @@
|
|
+#! /bin/sh
|
|
+
|
|
+# Guess values for system-dependent variables and create Makefiles.
|
|
+# Generated automatically using autoconf version 2.13
|
|
+# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
|
|
+#
|
|
+# This configure script is free software; the Free Software Foundation
|
|
+# gives unlimited permission to copy, distribute and modify it.
|
|
+
|
|
+# Defaults:
|
|
+ac_help=
|
|
+ac_default_prefix=/usr/local
|
|
+# Any additions from configure.in:
|
|
+ac_help="$ac_help
|
|
+ --enable-multilib build many library versions (default)"
|
|
+ac_help="$ac_help
|
|
+ --enable-target-optspace optimize for space"
|
|
+ac_help="$ac_help
|
|
+ --enable-malloc-debugging indicate malloc debugging requested"
|
|
+ac_help="$ac_help
|
|
+ --enable-newlib-multithread enable support for multiple threads"
|
|
+ac_help="$ac_help
|
|
+ --enable-newlib-iconv enable iconv library support"
|
|
+ac_help="$ac_help
|
|
+ --enable-newlib-elix-level supply desired elix library level (1-4)"
|
|
+ac_help="$ac_help
|
|
+ --disable-newlib-io-float disable printf/scanf family float support"
|
|
+ac_help="$ac_help
|
|
+ --disable-newlib-supplied-syscalls disable newlib from supplying syscalls"
|
|
+ac_help="$ac_help
|
|
+ --enable-maintainer-mode enable make rules and dependencies not useful
|
|
+ (and sometimes confusing) to the casual installer"
|
|
+
|
|
+# Initialize some variables set by options.
|
|
+# The variables have the same names as the options, with
|
|
+# dashes changed to underlines.
|
|
+build=NONE
|
|
+cache_file=./config.cache
|
|
+exec_prefix=NONE
|
|
+host=NONE
|
|
+no_create=
|
|
+nonopt=NONE
|
|
+no_recursion=
|
|
+prefix=NONE
|
|
+program_prefix=NONE
|
|
+program_suffix=NONE
|
|
+program_transform_name=s,x,x,
|
|
+silent=
|
|
+site=
|
|
+srcdir=
|
|
+target=NONE
|
|
+verbose=
|
|
+x_includes=NONE
|
|
+x_libraries=NONE
|
|
+bindir='${exec_prefix}/bin'
|
|
+sbindir='${exec_prefix}/sbin'
|
|
+libexecdir='${exec_prefix}/libexec'
|
|
+datadir='${prefix}/share'
|
|
+sysconfdir='${prefix}/etc'
|
|
+sharedstatedir='${prefix}/com'
|
|
+localstatedir='${prefix}/var'
|
|
+libdir='${exec_prefix}/lib'
|
|
+includedir='${prefix}/include'
|
|
+oldincludedir='/usr/include'
|
|
+infodir='${prefix}/info'
|
|
+mandir='${prefix}/man'
|
|
+
|
|
+# Initialize some other variables.
|
|
+subdirs=
|
|
+MFLAGS= MAKEFLAGS=
|
|
+SHELL=${CONFIG_SHELL-/bin/sh}
|
|
+# Maximum number of lines to put in a shell here document.
|
|
+ac_max_here_lines=12
|
|
+
|
|
+ac_prev=
|
|
+for ac_option
|
|
+do
|
|
+
|
|
+ # If the previous option needs an argument, assign it.
|
|
+ if test -n "$ac_prev"; then
|
|
+ eval "$ac_prev=\$ac_option"
|
|
+ ac_prev=
|
|
+ continue
|
|
+ fi
|
|
+
|
|
+ case "$ac_option" in
|
|
+ -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
|
+ *) ac_optarg= ;;
|
|
+ esac
|
|
+
|
|
+ # Accept the important Cygnus configure options, so we can diagnose typos.
|
|
+
|
|
+ case "$ac_option" in
|
|
+
|
|
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
|
|
+ ac_prev=bindir ;;
|
|
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
|
|
+ bindir="$ac_optarg" ;;
|
|
+
|
|
+ -build | --build | --buil | --bui | --bu)
|
|
+ ac_prev=build ;;
|
|
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
|
|
+ build="$ac_optarg" ;;
|
|
+
|
|
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
|
|
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
|
|
+ ac_prev=cache_file ;;
|
|
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
|
|
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
|
|
+ cache_file="$ac_optarg" ;;
|
|
+
|
|
+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
|
|
+ ac_prev=datadir ;;
|
|
+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
|
|
+ | --da=*)
|
|
+ datadir="$ac_optarg" ;;
|
|
+
|
|
+ -disable-* | --disable-*)
|
|
+ ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
|
|
+ # Reject names that are not valid shell variable names.
|
|
+ if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
|
|
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
|
|
+ fi
|
|
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
|
|
+ eval "enable_${ac_feature}=no" ;;
|
|
+
|
|
+ -enable-* | --enable-*)
|
|
+ ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
|
|
+ # Reject names that are not valid shell variable names.
|
|
+ if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
|
|
+ { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
|
|
+ fi
|
|
+ ac_feature=`echo $ac_feature| sed 's/-/_/g'`
|
|
+ case "$ac_option" in
|
|
+ *=*) ;;
|
|
+ *) ac_optarg=yes ;;
|
|
+ esac
|
|
+ eval "enable_${ac_feature}='$ac_optarg'" ;;
|
|
+
|
|
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
|
|
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
|
|
+ | --exec | --exe | --ex)
|
|
+ ac_prev=exec_prefix ;;
|
|
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
|
|
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
|
|
+ | --exec=* | --exe=* | --ex=*)
|
|
+ exec_prefix="$ac_optarg" ;;
|
|
+
|
|
+ -gas | --gas | --ga | --g)
|
|
+ # Obsolete; use --with-gas.
|
|
+ with_gas=yes ;;
|
|
+
|
|
+ -help | --help | --hel | --he)
|
|
+ # Omit some internal or obsolete options to make the list less imposing.
|
|
+ # This message is too long to be a string in the A/UX 3.1 sh.
|
|
+ cat << EOF
|
|
+Usage: configure [options] [host]
|
|
+Options: [defaults in brackets after descriptions]
|
|
+Configuration:
|
|
+ --cache-file=FILE cache test results in FILE
|
|
+ --help print this message
|
|
+ --no-create do not create output files
|
|
+ --quiet, --silent do not print \`checking...' messages
|
|
+ --version print the version of autoconf that created configure
|
|
+Directory and file names:
|
|
+ --prefix=PREFIX install architecture-independent files in PREFIX
|
|
+ [$ac_default_prefix]
|
|
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
|
|
+ [same as prefix]
|
|
+ --bindir=DIR user executables in DIR [EPREFIX/bin]
|
|
+ --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
|
|
+ --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
|
|
+ --datadir=DIR read-only architecture-independent data in DIR
|
|
+ [PREFIX/share]
|
|
+ --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
|
|
+ --sharedstatedir=DIR modifiable architecture-independent data in DIR
|
|
+ [PREFIX/com]
|
|
+ --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
|
|
+ --libdir=DIR object code libraries in DIR [EPREFIX/lib]
|
|
+ --includedir=DIR C header files in DIR [PREFIX/include]
|
|
+ --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
|
|
+ --infodir=DIR info documentation in DIR [PREFIX/info]
|
|
+ --mandir=DIR man documentation in DIR [PREFIX/man]
|
|
+ --srcdir=DIR find the sources in DIR [configure dir or ..]
|
|
+ --program-prefix=PREFIX prepend PREFIX to installed program names
|
|
+ --program-suffix=SUFFIX append SUFFIX to installed program names
|
|
+ --program-transform-name=PROGRAM
|
|
+ run sed PROGRAM on installed program names
|
|
+EOF
|
|
+ cat << EOF
|
|
+Host type:
|
|
+ --build=BUILD configure for building on BUILD [BUILD=HOST]
|
|
+ --host=HOST configure for HOST [guessed]
|
|
+ --target=TARGET configure for TARGET [TARGET=HOST]
|
|
+Features and packages:
|
|
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
|
|
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
|
|
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
|
|
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
|
|
+ --x-includes=DIR X include files are in DIR
|
|
+ --x-libraries=DIR X library files are in DIR
|
|
+EOF
|
|
+ if test -n "$ac_help"; then
|
|
+ echo "--enable and --with options recognized:$ac_help"
|
|
+ fi
|
|
+ exit 0 ;;
|
|
+
|
|
+ -host | --host | --hos | --ho)
|
|
+ ac_prev=host ;;
|
|
+ -host=* | --host=* | --hos=* | --ho=*)
|
|
+ host="$ac_optarg" ;;
|
|
+
|
|
+ -includedir | --includedir | --includedi | --included | --include \
|
|
+ | --includ | --inclu | --incl | --inc)
|
|
+ ac_prev=includedir ;;
|
|
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
|
|
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
|
|
+ includedir="$ac_optarg" ;;
|
|
+
|
|
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
|
|
+ ac_prev=infodir ;;
|
|
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
|
|
+ infodir="$ac_optarg" ;;
|
|
+
|
|
+ -libdir | --libdir | --libdi | --libd)
|
|
+ ac_prev=libdir ;;
|
|
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
|
|
+ libdir="$ac_optarg" ;;
|
|
+
|
|
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
|
|
+ | --libexe | --libex | --libe)
|
|
+ ac_prev=libexecdir ;;
|
|
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
|
|
+ | --libexe=* | --libex=* | --libe=*)
|
|
+ libexecdir="$ac_optarg" ;;
|
|
+
|
|
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
|
|
+ | --localstate | --localstat | --localsta | --localst \
|
|
+ | --locals | --local | --loca | --loc | --lo)
|
|
+ ac_prev=localstatedir ;;
|
|
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
|
|
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \
|
|
+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
|
|
+ localstatedir="$ac_optarg" ;;
|
|
+
|
|
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
|
|
+ ac_prev=mandir ;;
|
|
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
|
|
+ mandir="$ac_optarg" ;;
|
|
+
|
|
+ -nfp | --nfp | --nf)
|
|
+ # Obsolete; use --without-fp.
|
|
+ with_fp=no ;;
|
|
+
|
|
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
|
|
+ | --no-cr | --no-c)
|
|
+ no_create=yes ;;
|
|
+
|
|
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
|
|
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
|
|
+ no_recursion=yes ;;
|
|
+
|
|
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
|
|
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
|
|
+ | --oldin | --oldi | --old | --ol | --o)
|
|
+ ac_prev=oldincludedir ;;
|
|
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
|
|
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
|
|
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
|
|
+ oldincludedir="$ac_optarg" ;;
|
|
+
|
|
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
|
|
+ ac_prev=prefix ;;
|
|
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
|
|
+ prefix="$ac_optarg" ;;
|
|
+
|
|
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
|
|
+ | --program-pre | --program-pr | --program-p)
|
|
+ ac_prev=program_prefix ;;
|
|
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
|
|
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
|
|
+ program_prefix="$ac_optarg" ;;
|
|
+
|
|
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
|
|
+ | --program-suf | --program-su | --program-s)
|
|
+ ac_prev=program_suffix ;;
|
|
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
|
|
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
|
|
+ program_suffix="$ac_optarg" ;;
|
|
+
|
|
+ -program-transform-name | --program-transform-name \
|
|
+ | --program-transform-nam | --program-transform-na \
|
|
+ | --program-transform-n | --program-transform- \
|
|
+ | --program-transform | --program-transfor \
|
|
+ | --program-transfo | --program-transf \
|
|
+ | --program-trans | --program-tran \
|
|
+ | --progr-tra | --program-tr | --program-t)
|
|
+ ac_prev=program_transform_name ;;
|
|
+ -program-transform-name=* | --program-transform-name=* \
|
|
+ | --program-transform-nam=* | --program-transform-na=* \
|
|
+ | --program-transform-n=* | --program-transform-=* \
|
|
+ | --program-transform=* | --program-transfor=* \
|
|
+ | --program-transfo=* | --program-transf=* \
|
|
+ | --program-trans=* | --program-tran=* \
|
|
+ | --progr-tra=* | --program-tr=* | --program-t=*)
|
|
+ program_transform_name="$ac_optarg" ;;
|
|
+
|
|
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
|
|
+ | -silent | --silent | --silen | --sile | --sil)
|
|
+ silent=yes ;;
|
|
+
|
|
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
|
|
+ ac_prev=sbindir ;;
|
|
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
|
|
+ | --sbi=* | --sb=*)
|
|
+ sbindir="$ac_optarg" ;;
|
|
+
|
|
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
|
|
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
|
|
+ | --sharedst | --shareds | --shared | --share | --shar \
|
|
+ | --sha | --sh)
|
|
+ ac_prev=sharedstatedir ;;
|
|
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
|
|
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
|
|
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
|
|
+ | --sha=* | --sh=*)
|
|
+ sharedstatedir="$ac_optarg" ;;
|
|
+
|
|
+ -site | --site | --sit)
|
|
+ ac_prev=site ;;
|
|
+ -site=* | --site=* | --sit=*)
|
|
+ site="$ac_optarg" ;;
|
|
+
|
|
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
|
|
+ ac_prev=srcdir ;;
|
|
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
|
|
+ srcdir="$ac_optarg" ;;
|
|
+
|
|
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
|
|
+ | --syscon | --sysco | --sysc | --sys | --sy)
|
|
+ ac_prev=sysconfdir ;;
|
|
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
|
|
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
|
|
+ sysconfdir="$ac_optarg" ;;
|
|
+
|
|
+ -target | --target | --targe | --targ | --tar | --ta | --t)
|
|
+ ac_prev=target ;;
|
|
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
|
|
+ target="$ac_optarg" ;;
|
|
+
|
|
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
|
|
+ verbose=yes ;;
|
|
+
|
|
+ -version | --version | --versio | --versi | --vers)
|
|
+ echo "configure generated by autoconf version 2.13"
|
|
+ exit 0 ;;
|
|
+
|
|
+ -with-* | --with-*)
|
|
+ ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
|
|
+ # Reject names that are not valid shell variable names.
|
|
+ if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
|
|
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
|
|
+ fi
|
|
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
|
|
+ case "$ac_option" in
|
|
+ *=*) ;;
|
|
+ *) ac_optarg=yes ;;
|
|
+ esac
|
|
+ eval "with_${ac_package}='$ac_optarg'" ;;
|
|
+
|
|
+ -without-* | --without-*)
|
|
+ ac_package=`echo $ac_option|sed -e 's/-*without-//'`
|
|
+ # Reject names that are not valid shell variable names.
|
|
+ if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
|
|
+ { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
|
|
+ fi
|
|
+ ac_package=`echo $ac_package| sed 's/-/_/g'`
|
|
+ eval "with_${ac_package}=no" ;;
|
|
+
|
|
+ --x)
|
|
+ # Obsolete; use --with-x.
|
|
+ with_x=yes ;;
|
|
+
|
|
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
|
|
+ | --x-incl | --x-inc | --x-in | --x-i)
|
|
+ ac_prev=x_includes ;;
|
|
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
|
|
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
|
|
+ x_includes="$ac_optarg" ;;
|
|
+
|
|
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
|
|
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
|
|
+ ac_prev=x_libraries ;;
|
|
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
|
|
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
|
|
+ x_libraries="$ac_optarg" ;;
|
|
+
|
|
+ -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
|
|
+ ;;
|
|
+
|
|
+ *)
|
|
+ if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
|
|
+ echo "configure: warning: $ac_option: invalid host type" 1>&2
|
|
+ fi
|
|
+ if test "x$nonopt" != xNONE; then
|
|
+ { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
|
|
+ fi
|
|
+ nonopt="$ac_option"
|
|
+ ;;
|
|
+
|
|
+ esac
|
|
+done
|
|
+
|
|
+if test -n "$ac_prev"; then
|
|
+ { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
|
|
+fi
|
|
+
|
|
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
|
|
+
|
|
+# File descriptor usage:
|
|
+# 0 standard input
|
|
+# 1 file creation
|
|
+# 2 errors and warnings
|
|
+# 3 some systems may open it to /dev/tty
|
|
+# 4 used on the Kubota Titan
|
|
+# 6 checking for... messages and results
|
|
+# 5 compiler messages saved in config.log
|
|
+if test "$silent" = yes; then
|
|
+ exec 6>/dev/null
|
|
+else
|
|
+ exec 6>&1
|
|
+fi
|
|
+exec 5>./config.log
|
|
+
|
|
+echo "\
|
|
+This file contains any messages produced by compilers while
|
|
+running configure, to aid debugging if configure makes a mistake.
|
|
+" 1>&5
|
|
+
|
|
+# Strip out --no-create and --no-recursion so they do not pile up.
|
|
+# Also quote any args containing shell metacharacters.
|
|
+ac_configure_args=
|
|
+for ac_arg
|
|
+do
|
|
+ case "$ac_arg" in
|
|
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
|
|
+ | --no-cr | --no-c) ;;
|
|
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
|
|
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
|
|
+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
|
|
+ ac_configure_args="$ac_configure_args '$ac_arg'" ;;
|
|
+ *) ac_configure_args="$ac_configure_args $ac_arg" ;;
|
|
+ esac
|
|
+done
|
|
+
|
|
+# NLS nuisances.
|
|
+# Only set these to C if already set. These must not be set unconditionally
|
|
+# because not all systems understand e.g. LANG=C (notably SCO).
|
|
+# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
|
|
+# Non-C LC_CTYPE values break the ctype check.
|
|
+if test "${LANG+set}" = set; then LANG=C; export LANG; fi
|
|
+if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
|
|
+if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
|
|
+if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
|
|
+
|
|
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
|
|
+rm -rf conftest* confdefs.h
|
|
+# AIX cpp loses on an empty file, so make sure it contains at least a newline.
|
|
+echo > confdefs.h
|
|
+
|
|
+# A filename unique to this package, relative to the directory that
|
|
+# configure is in, which we can look for to find out if srcdir is correct.
|
|
+ac_unique_file=libcglue.c
|
|
+
|
|
+# Find the source files, if location was not specified.
|
|
+if test -z "$srcdir"; then
|
|
+ ac_srcdir_defaulted=yes
|
|
+ # Try the directory containing this script, then its parent.
|
|
+ ac_prog=$0
|
|
+ ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
|
|
+ test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
|
|
+ srcdir=$ac_confdir
|
|
+ if test ! -r $srcdir/$ac_unique_file; then
|
|
+ srcdir=..
|
|
+ fi
|
|
+else
|
|
+ ac_srcdir_defaulted=no
|
|
+fi
|
|
+if test ! -r $srcdir/$ac_unique_file; then
|
|
+ if test "$ac_srcdir_defaulted" = yes; then
|
|
+ { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
|
|
+ else
|
|
+ { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
|
|
+ fi
|
|
+fi
|
|
+srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
|
|
+
|
|
+# Prefer explicitly selected file to automatically selected ones.
|
|
+if test -z "$CONFIG_SITE"; then
|
|
+ if test "x$prefix" != xNONE; then
|
|
+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
|
|
+ else
|
|
+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
|
|
+ fi
|
|
+fi
|
|
+for ac_site_file in $CONFIG_SITE; do
|
|
+ if test -r "$ac_site_file"; then
|
|
+ echo "loading site script $ac_site_file"
|
|
+ . "$ac_site_file"
|
|
+ fi
|
|
+done
|
|
+
|
|
+if test -r "$cache_file"; then
|
|
+ echo "loading cache $cache_file"
|
|
+ . $cache_file
|
|
+else
|
|
+ echo "creating cache $cache_file"
|
|
+ > $cache_file
|
|
+fi
|
|
+
|
|
+ac_ext=c
|
|
+# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
|
|
+ac_cpp='$CPP $CPPFLAGS'
|
|
+ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
|
|
+ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
|
|
+cross_compiling=$ac_cv_prog_cc_cross
|
|
+
|
|
+ac_exeext=
|
|
+ac_objext=o
|
|
+if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
|
|
+ # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu.
|
|
+ if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
|
|
+ ac_n= ac_c='
|
|
+' ac_t=' '
|
|
+ else
|
|
+ ac_n=-n ac_c= ac_t=
|
|
+ fi
|
|
+else
|
|
+ ac_n= ac_c='\c' ac_t=
|
|
+fi
|
|
+
|
|
+
|
|
+
|
|
+ac_aux_dir=
|
|
+for ac_dir in ../../../.. $srcdir/../../../..; do
|
|
+ if test -f $ac_dir/install-sh; then
|
|
+ ac_aux_dir=$ac_dir
|
|
+ ac_install_sh="$ac_aux_dir/install-sh -c"
|
|
+ break
|
|
+ elif test -f $ac_dir/install.sh; then
|
|
+ ac_aux_dir=$ac_dir
|
|
+ ac_install_sh="$ac_aux_dir/install.sh -c"
|
|
+ break
|
|
+ fi
|
|
+done
|
|
+if test -z "$ac_aux_dir"; then
|
|
+ { echo "configure: error: can not find install-sh or install.sh in ../../../.. $srcdir/../../../.." 1>&2; exit 1; }
|
|
+fi
|
|
+ac_config_guess=$ac_aux_dir/config.guess
|
|
+ac_config_sub=$ac_aux_dir/config.sub
|
|
+ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
|
|
+
|
|
+
|
|
+am__api_version="1.4"
|
|
+# Find a good install program. We prefer a C program (faster),
|
|
+# so one script is as good as another. But avoid the broken or
|
|
+# incompatible versions:
|
|
+# SysV /etc/install, /usr/sbin/install
|
|
+# SunOS /usr/etc/install
|
|
+# IRIX /sbin/install
|
|
+# AIX /bin/install
|
|
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
|
|
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
|
|
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
|
|
+# ./install, which can be erroneously created by make from ./install.sh.
|
|
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
|
|
+echo "configure:578: checking for a BSD compatible install" >&5
|
|
+if test -z "$INSTALL"; then
|
|
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
|
|
+ for ac_dir in $PATH; do
|
|
+ # Account for people who put trailing slashes in PATH elements.
|
|
+ case "$ac_dir/" in
|
|
+ /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
|
|
+ *)
|
|
+ # OSF1 and SCO ODT 3.0 have their own names for install.
|
|
+ # Don't use installbsd from OSF since it installs stuff as root
|
|
+ # by default.
|
|
+ for ac_prog in ginstall scoinst install; do
|
|
+ if test -f $ac_dir/$ac_prog; then
|
|
+ if test $ac_prog = install &&
|
|
+ grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
|
|
+ # AIX install. It has an incompatible calling convention.
|
|
+ :
|
|
+ else
|
|
+ ac_cv_path_install="$ac_dir/$ac_prog -c"
|
|
+ break 2
|
|
+ fi
|
|
+ fi
|
|
+ done
|
|
+ ;;
|
|
+ esac
|
|
+ done
|
|
+ IFS="$ac_save_IFS"
|
|
+
|
|
+fi
|
|
+ if test "${ac_cv_path_install+set}" = set; then
|
|
+ INSTALL="$ac_cv_path_install"
|
|
+ else
|
|
+ # As a last resort, use the slow shell script. We don't cache a
|
|
+ # path for INSTALL within a source directory, because that will
|
|
+ # break other packages using the cache if that directory is
|
|
+ # removed, or if the path is relative.
|
|
+ INSTALL="$ac_install_sh"
|
|
+ fi
|
|
+fi
|
|
+echo "$ac_t""$INSTALL" 1>&6
|
|
+
|
|
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
|
|
+# It thinks the first close brace ends the variable substitution.
|
|
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
|
|
+
|
|
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
|
|
+
|
|
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
|
|
+
|
|
+echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6
|
|
+echo "configure:631: checking whether build environment is sane" >&5
|
|
+# Just in case
|
|
+sleep 1
|
|
+echo timestamp > conftestfile
|
|
+# Do `set' in a subshell so we don't clobber the current shell's
|
|
+# arguments. Must try -L first in case configure is actually a
|
|
+# symlink; some systems play weird games with the mod time of symlinks
|
|
+# (eg FreeBSD returns the mod time of the symlink's containing
|
|
+# directory).
|
|
+if (
|
|
+ set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
|
|
+ if test "$*" = "X"; then
|
|
+ # -L didn't work.
|
|
+ set X `ls -t $srcdir/configure conftestfile`
|
|
+ fi
|
|
+ if test "$*" != "X $srcdir/configure conftestfile" \
|
|
+ && test "$*" != "X conftestfile $srcdir/configure"; then
|
|
+
|
|
+ # If neither matched, then we have a broken ls. This can happen
|
|
+ # if, for instance, CONFIG_SHELL is bash and it inherits a
|
|
+ # broken ls alias from the environment. This has actually
|
|
+ # happened. Such a system could not be considered "sane".
|
|
+ { echo "configure: error: ls -t appears to fail. Make sure there is not a broken
|
|
+alias in your environment" 1>&2; exit 1; }
|
|
+ fi
|
|
+
|
|
+ test "$2" = conftestfile
|
|
+ )
|
|
+then
|
|
+ # Ok.
|
|
+ :
|
|
+else
|
|
+ { echo "configure: error: newly created file is older than distributed files!
|
|
+Check your system clock" 1>&2; exit 1; }
|
|
+fi
|
|
+rm -f conftest*
|
|
+echo "$ac_t""yes" 1>&6
|
|
+if test "$program_transform_name" = s,x,x,; then
|
|
+ program_transform_name=
|
|
+else
|
|
+ # Double any \ or $. echo might interpret backslashes.
|
|
+ cat <<\EOF_SED > conftestsed
|
|
+s,\\,\\\\,g; s,\$,$$,g
|
|
+EOF_SED
|
|
+ program_transform_name="`echo $program_transform_name|sed -f conftestsed`"
|
|
+ rm -f conftestsed
|
|
+fi
|
|
+test "$program_prefix" != NONE &&
|
|
+ program_transform_name="s,^,${program_prefix},; $program_transform_name"
|
|
+# Use a double $ so make ignores it.
|
|
+test "$program_suffix" != NONE &&
|
|
+ program_transform_name="s,\$\$,${program_suffix},; $program_transform_name"
|
|
+
|
|
+# sed with no file args requires a program.
|
|
+test "$program_transform_name" = "" && program_transform_name="s,x,x,"
|
|
+
|
|
+echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
|
|
+echo "configure:688: checking whether ${MAKE-make} sets \${MAKE}" >&5
|
|
+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
|
|
+if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ cat > conftestmake <<\EOF
|
|
+all:
|
|
+ @echo 'ac_maketemp="${MAKE}"'
|
|
+EOF
|
|
+# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
|
|
+eval `${MAKE-make} -f conftestmake 2>/dev/null | grep temp=`
|
|
+if test -n "$ac_maketemp"; then
|
|
+ eval ac_cv_prog_make_${ac_make}_set=yes
|
|
+else
|
|
+ eval ac_cv_prog_make_${ac_make}_set=no
|
|
+fi
|
|
+rm -f conftestmake
|
|
+fi
|
|
+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then
|
|
+ echo "$ac_t""yes" 1>&6
|
|
+ SET_MAKE=
|
|
+else
|
|
+ echo "$ac_t""no" 1>&6
|
|
+ SET_MAKE="MAKE=${MAKE-make}"
|
|
+fi
|
|
+
|
|
+if test $host != $build; then
|
|
+ ac_tool_prefix=${host_alias}-
|
|
+else
|
|
+ ac_tool_prefix=
|
|
+fi
|
|
+
|
|
+echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6
|
|
+echo "configure:721: checking for Cygwin environment" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ cat > conftest.$ac_ext <<EOF
|
|
+#line 726 "configure"
|
|
+#include "confdefs.h"
|
|
+
|
|
+int main() {
|
|
+
|
|
+#ifndef __CYGWIN__
|
|
+#define __CYGWIN__ __CYGWIN32__
|
|
+#endif
|
|
+return __CYGWIN__;
|
|
+; return 0; }
|
|
+EOF
|
|
+if { (eval echo configure:737: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
|
+ rm -rf conftest*
|
|
+ ac_cv_cygwin=yes
|
|
+else
|
|
+ echo "configure: failed program was:" >&5
|
|
+ cat conftest.$ac_ext >&5
|
|
+ rm -rf conftest*
|
|
+ ac_cv_cygwin=no
|
|
+fi
|
|
+rm -f conftest*
|
|
+rm -f conftest*
|
|
+fi
|
|
+
|
|
+echo "$ac_t""$ac_cv_cygwin" 1>&6
|
|
+CYGWIN=
|
|
+test "$ac_cv_cygwin" = yes && CYGWIN=yes
|
|
+echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6
|
|
+echo "configure:754: checking for mingw32 environment" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ cat > conftest.$ac_ext <<EOF
|
|
+#line 759 "configure"
|
|
+#include "confdefs.h"
|
|
+
|
|
+int main() {
|
|
+return __MINGW32__;
|
|
+; return 0; }
|
|
+EOF
|
|
+if { (eval echo configure:766: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
|
+ rm -rf conftest*
|
|
+ ac_cv_mingw32=yes
|
|
+else
|
|
+ echo "configure: failed program was:" >&5
|
|
+ cat conftest.$ac_ext >&5
|
|
+ rm -rf conftest*
|
|
+ ac_cv_mingw32=no
|
|
+fi
|
|
+rm -f conftest*
|
|
+rm -f conftest*
|
|
+fi
|
|
+
|
|
+echo "$ac_t""$ac_cv_mingw32" 1>&6
|
|
+MINGW32=
|
|
+test "$ac_cv_mingw32" = yes && MINGW32=yes
|
|
+
|
|
+# Check whether --enable-multilib or --disable-multilib was given.
|
|
+if test "${enable_multilib+set}" = set; then
|
|
+ enableval="$enable_multilib"
|
|
+ case "${enableval}" in
|
|
+ yes) multilib=yes ;;
|
|
+ no) multilib=no ;;
|
|
+ *) { echo "configure: error: bad value ${enableval} for multilib option" 1>&2; exit 1; } ;;
|
|
+ esac
|
|
+else
|
|
+ multilib=yes
|
|
+fi
|
|
+
|
|
+# Check whether --enable-target-optspace or --disable-target-optspace was given.
|
|
+if test "${enable_target_optspace+set}" = set; then
|
|
+ enableval="$enable_target_optspace"
|
|
+ case "${enableval}" in
|
|
+ yes) target_optspace=yes ;;
|
|
+ no) target_optspace=no ;;
|
|
+ *) { echo "configure: error: bad value ${enableval} for target-optspace option" 1>&2; exit 1; } ;;
|
|
+ esac
|
|
+else
|
|
+ target_optspace=
|
|
+fi
|
|
+
|
|
+# Check whether --enable-malloc-debugging or --disable-malloc-debugging was given.
|
|
+if test "${enable_malloc_debugging+set}" = set; then
|
|
+ enableval="$enable_malloc_debugging"
|
|
+ case "${enableval}" in
|
|
+ yes) malloc_debugging=yes ;;
|
|
+ no) malloc_debugging=no ;;
|
|
+ *) { echo "configure: error: bad value ${enableval} for malloc-debugging option" 1>&2; exit 1; } ;;
|
|
+ esac
|
|
+else
|
|
+ malloc_debugging=
|
|
+fi
|
|
+
|
|
+# Check whether --enable-newlib-multithread or --disable-newlib-multithread was given.
|
|
+if test "${enable_newlib_multithread+set}" = set; then
|
|
+ enableval="$enable_newlib_multithread"
|
|
+ case "${enableval}" in
|
|
+ yes) newlib_multithread=yes ;;
|
|
+ no) newlib_multithread=no ;;
|
|
+ *) { echo "configure: error: bad value ${enableval} for newlib-multithread option" 1>&2; exit 1; } ;;
|
|
+ esac
|
|
+else
|
|
+ newlib_multithread=yes
|
|
+fi
|
|
+
|
|
+# Check whether --enable-newlib-iconv or --disable-newlib-iconv was given.
|
|
+if test "${enable_newlib_iconv+set}" = set; then
|
|
+ enableval="$enable_newlib_iconv"
|
|
+ if test "${newlib_iconv+set}" != set; then
|
|
+ case "${enableval}" in
|
|
+ yes) newlib_iconv=yes ;;
|
|
+ no) newlib_iconv=no ;;
|
|
+ *) { echo "configure: error: bad value ${enableval} for newlib-iconv option" 1>&2; exit 1; } ;;
|
|
+ esac
|
|
+ fi
|
|
+else
|
|
+ newlib_iconv=${newlib_iconv}
|
|
+fi
|
|
+
|
|
+# Check whether --enable-newlib-elix-level or --disable-newlib-elix-level was given.
|
|
+if test "${enable_newlib_elix_level+set}" = set; then
|
|
+ enableval="$enable_newlib_elix_level"
|
|
+ case "${enableval}" in
|
|
+ 0) newlib_elix_level=0 ;;
|
|
+ 1) newlib_elix_level=1 ;;
|
|
+ 2) newlib_elix_level=2 ;;
|
|
+ 3) newlib_elix_level=3 ;;
|
|
+ 4) newlib_elix_level=4 ;;
|
|
+ *) { echo "configure: error: bad value ${enableval} for newlib-elix-level option" 1>&2; exit 1; } ;;
|
|
+ esac
|
|
+else
|
|
+ newlib_elix_level=0
|
|
+fi
|
|
+
|
|
+# Check whether --enable-newlib-io-float or --disable-newlib-io-float was given.
|
|
+if test "${enable_newlib_io_float+set}" = set; then
|
|
+ enableval="$enable_newlib_io_float"
|
|
+ case "${enableval}" in
|
|
+ yes) newlib_io_float=yes ;;
|
|
+ no) newlib_io_float=no ;;
|
|
+ *) { echo "configure: error: bad value ${enableval} for newlib-io-float option" 1>&2; exit 1; } ;;
|
|
+ esac
|
|
+else
|
|
+ newlib_io_float=yes
|
|
+fi
|
|
+
|
|
+# Check whether --enable-newlib-supplied-syscalls or --disable-newlib-supplied-syscalls was given.
|
|
+if test "${enable_newlib_supplied_syscalls+set}" = set; then
|
|
+ enableval="$enable_newlib_supplied_syscalls"
|
|
+ case "${enableval}" in
|
|
+ yes) newlib_may_supply_syscalls=yes ;;
|
|
+ no) newlib_may_supply_syscalls=no ;;
|
|
+ *) { echo "configure: error: bad value ${enableval} for newlib-supplied-syscalls option" 1>&2; exit 1; } ;;
|
|
+ esac
|
|
+else
|
|
+ newlib_may_supply_syscalls=yes
|
|
+fi
|
|
+
|
|
+
|
|
+
|
|
+if test x${newlib_may_supply_syscalls} = xyes; then
|
|
+ MAY_SUPPLY_SYSCALLS_TRUE=
|
|
+ MAY_SUPPLY_SYSCALLS_FALSE='#'
|
|
+else
|
|
+ MAY_SUPPLY_SYSCALLS_TRUE='#'
|
|
+ MAY_SUPPLY_SYSCALLS_FALSE=
|
|
+fi
|
|
+
|
|
+
|
|
+test -z "${with_target_subdir}" && with_target_subdir=.
|
|
+
|
|
+if test "${srcdir}" = "."; then
|
|
+ if test "${with_target_subdir}" != "."; then
|
|
+ newlib_basedir="${srcdir}/${with_multisrctop}../../../.."
|
|
+ else
|
|
+ newlib_basedir="${srcdir}/${with_multisrctop}../../.."
|
|
+ fi
|
|
+else
|
|
+ newlib_basedir="${srcdir}/../../.."
|
|
+fi
|
|
+
|
|
+
|
|
+
|
|
+# Do some error checking and defaulting for the host and target type.
|
|
+# The inputs are:
|
|
+# configure --host=HOST --target=TARGET --build=BUILD NONOPT
|
|
+#
|
|
+# The rules are:
|
|
+# 1. You are not allowed to specify --host, --target, and nonopt at the
|
|
+# same time.
|
|
+# 2. Host defaults to nonopt.
|
|
+# 3. If nonopt is not specified, then host defaults to the current host,
|
|
+# as determined by config.guess.
|
|
+# 4. Target and build default to nonopt.
|
|
+# 5. If nonopt is not specified, then target and build default to host.
|
|
+
|
|
+# The aliases save the names the user supplied, while $host etc.
|
|
+# will get canonicalized.
|
|
+case $host---$target---$nonopt in
|
|
+NONE---*---* | *---NONE---* | *---*---NONE) ;;
|
|
+*) { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } ;;
|
|
+esac
|
|
+
|
|
+
|
|
+# Make sure we can run config.sub.
|
|
+if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then :
|
|
+else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
|
|
+fi
|
|
+
|
|
+echo $ac_n "checking host system type""... $ac_c" 1>&6
|
|
+echo "configure:936: checking host system type" >&5
|
|
+
|
|
+host_alias=$host
|
|
+case "$host_alias" in
|
|
+NONE)
|
|
+ case $nonopt in
|
|
+ NONE)
|
|
+ if host_alias=`${CONFIG_SHELL-/bin/sh} $ac_config_guess`; then :
|
|
+ else { echo "configure: error: can not guess host type; you must specify one" 1>&2; exit 1; }
|
|
+ fi ;;
|
|
+ *) host_alias=$nonopt ;;
|
|
+ esac ;;
|
|
+esac
|
|
+
|
|
+host=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $host_alias`
|
|
+host_cpu=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
|
+host_vendor=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
|
+host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
|
+echo "$ac_t""$host" 1>&6
|
|
+
|
|
+echo $ac_n "checking target system type""... $ac_c" 1>&6
|
|
+echo "configure:957: checking target system type" >&5
|
|
+
|
|
+target_alias=$target
|
|
+case "$target_alias" in
|
|
+NONE)
|
|
+ case $nonopt in
|
|
+ NONE) target_alias=$host_alias ;;
|
|
+ *) target_alias=$nonopt ;;
|
|
+ esac ;;
|
|
+esac
|
|
+
|
|
+target=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $target_alias`
|
|
+target_cpu=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
|
+target_vendor=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
|
+target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
|
+echo "$ac_t""$target" 1>&6
|
|
+
|
|
+echo $ac_n "checking build system type""... $ac_c" 1>&6
|
|
+echo "configure:975: checking build system type" >&5
|
|
+
|
|
+build_alias=$build
|
|
+case "$build_alias" in
|
|
+NONE)
|
|
+ case $nonopt in
|
|
+ NONE) build_alias=$host_alias ;;
|
|
+ *) build_alias=$nonopt ;;
|
|
+ esac ;;
|
|
+esac
|
|
+
|
|
+build=`${CONFIG_SHELL-/bin/sh} $ac_config_sub $build_alias`
|
|
+build_cpu=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'`
|
|
+build_vendor=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'`
|
|
+build_os=`echo $build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
|
|
+echo "$ac_t""$build" 1>&6
|
|
+
|
|
+test "$host_alias" != "$target_alias" &&
|
|
+ test "$program_prefix$program_suffix$program_transform_name" = \
|
|
+ NONENONEs,x,x, &&
|
|
+ program_prefix=${target_alias}-
|
|
+
|
|
+
|
|
+
|
|
+PACKAGE=newlib
|
|
+
|
|
+VERSION=1.13.0
|
|
+
|
|
+if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
|
|
+ { echo "configure: error: source directory already configured; run "make distclean" there first" 1>&2; exit 1; }
|
|
+fi
|
|
+cat >> confdefs.h <<EOF
|
|
+#define PACKAGE "$PACKAGE"
|
|
+EOF
|
|
+
|
|
+cat >> confdefs.h <<EOF
|
|
+#define VERSION "$VERSION"
|
|
+EOF
|
|
+
|
|
+
|
|
+
|
|
+missing_dir=`cd $ac_aux_dir && pwd`
|
|
+echo $ac_n "checking for working aclocal-${am__api_version}""... $ac_c" 1>&6
|
|
+echo "configure:1018: checking for working aclocal-${am__api_version}" >&5
|
|
+# Run test in a subshell; some versions of sh will print an error if
|
|
+# an executable is not found, even if stderr is redirected.
|
|
+# Redirect stdin to placate older versions of autoconf. Sigh.
|
|
+if (aclocal-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
|
|
+ ACLOCAL=aclocal-${am__api_version}
|
|
+ echo "$ac_t""found" 1>&6
|
|
+else
|
|
+ ACLOCAL="$missing_dir/missing aclocal-${am__api_version}"
|
|
+ echo "$ac_t""missing" 1>&6
|
|
+fi
|
|
+
|
|
+echo $ac_n "checking for working autoconf""... $ac_c" 1>&6
|
|
+echo "configure:1031: checking for working autoconf" >&5
|
|
+# Run test in a subshell; some versions of sh will print an error if
|
|
+# an executable is not found, even if stderr is redirected.
|
|
+# Redirect stdin to placate older versions of autoconf. Sigh.
|
|
+if (autoconf --version) < /dev/null > /dev/null 2>&1; then
|
|
+ AUTOCONF=autoconf
|
|
+ echo "$ac_t""found" 1>&6
|
|
+else
|
|
+ AUTOCONF="$missing_dir/missing autoconf"
|
|
+ echo "$ac_t""missing" 1>&6
|
|
+fi
|
|
+
|
|
+echo $ac_n "checking for working automake-${am__api_version}""... $ac_c" 1>&6
|
|
+echo "configure:1044: checking for working automake-${am__api_version}" >&5
|
|
+# Run test in a subshell; some versions of sh will print an error if
|
|
+# an executable is not found, even if stderr is redirected.
|
|
+# Redirect stdin to placate older versions of autoconf. Sigh.
|
|
+if (automake-${am__api_version} --version) < /dev/null > /dev/null 2>&1; then
|
|
+ AUTOMAKE=automake-${am__api_version}
|
|
+ echo "$ac_t""found" 1>&6
|
|
+else
|
|
+ AUTOMAKE="$missing_dir/missing automake-${am__api_version}"
|
|
+ echo "$ac_t""missing" 1>&6
|
|
+fi
|
|
+
|
|
+echo $ac_n "checking for working autoheader""... $ac_c" 1>&6
|
|
+echo "configure:1057: checking for working autoheader" >&5
|
|
+# Run test in a subshell; some versions of sh will print an error if
|
|
+# an executable is not found, even if stderr is redirected.
|
|
+# Redirect stdin to placate older versions of autoconf. Sigh.
|
|
+if (autoheader --version) < /dev/null > /dev/null 2>&1; then
|
|
+ AUTOHEADER=autoheader
|
|
+ echo "$ac_t""found" 1>&6
|
|
+else
|
|
+ AUTOHEADER="$missing_dir/missing autoheader"
|
|
+ echo "$ac_t""missing" 1>&6
|
|
+fi
|
|
+
|
|
+echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6
|
|
+echo "configure:1070: checking for working makeinfo" >&5
|
|
+# Run test in a subshell; some versions of sh will print an error if
|
|
+# an executable is not found, even if stderr is redirected.
|
|
+# Redirect stdin to placate older versions of autoconf. Sigh.
|
|
+if (makeinfo --version) < /dev/null > /dev/null 2>&1; then
|
|
+ MAKEINFO=makeinfo
|
|
+ echo "$ac_t""found" 1>&6
|
|
+else
|
|
+ MAKEINFO="$missing_dir/missing makeinfo"
|
|
+ echo "$ac_t""missing" 1>&6
|
|
+fi
|
|
+
|
|
+
|
|
+
|
|
+# FIXME: We temporarily define our own version of AC_PROG_CC. This is
|
|
+# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
|
|
+# are probably using a cross compiler, which will not be able to fully
|
|
+# link an executable. This should really be fixed in autoconf
|
|
+# itself.
|
|
+
|
|
+
|
|
+
|
|
+# Extract the first word of "gcc", so it can be a program name with args.
|
|
+set dummy gcc; ac_word=$2
|
|
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
|
+echo "configure:1095: checking for $ac_word" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ if test -n "$CC"; then
|
|
+ ac_cv_prog_CC="$CC" # Let the user override the test.
|
|
+else
|
|
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
|
|
+ ac_dummy="$PATH"
|
|
+ for ac_dir in $ac_dummy; do
|
|
+ test -z "$ac_dir" && ac_dir=.
|
|
+ if test -f $ac_dir/$ac_word; then
|
|
+ ac_cv_prog_CC="gcc"
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ IFS="$ac_save_ifs"
|
|
+fi
|
|
+fi
|
|
+CC="$ac_cv_prog_CC"
|
|
+if test -n "$CC"; then
|
|
+ echo "$ac_t""$CC" 1>&6
|
|
+else
|
|
+ echo "$ac_t""no" 1>&6
|
|
+fi
|
|
+
|
|
+if test -z "$CC"; then
|
|
+ # Extract the first word of "cc", so it can be a program name with args.
|
|
+set dummy cc; ac_word=$2
|
|
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
|
+echo "configure:1125: checking for $ac_word" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ if test -n "$CC"; then
|
|
+ ac_cv_prog_CC="$CC" # Let the user override the test.
|
|
+else
|
|
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
|
|
+ ac_prog_rejected=no
|
|
+ ac_dummy="$PATH"
|
|
+ for ac_dir in $ac_dummy; do
|
|
+ test -z "$ac_dir" && ac_dir=.
|
|
+ if test -f $ac_dir/$ac_word; then
|
|
+ if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
|
|
+ ac_prog_rejected=yes
|
|
+ continue
|
|
+ fi
|
|
+ ac_cv_prog_CC="cc"
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ IFS="$ac_save_ifs"
|
|
+if test $ac_prog_rejected = yes; then
|
|
+ # We found a bogon in the path, so make sure we never use it.
|
|
+ set dummy $ac_cv_prog_CC
|
|
+ shift
|
|
+ if test $# -gt 0; then
|
|
+ # We chose a different compiler from the bogus one.
|
|
+ # However, it has the same basename, so the bogon will be chosen
|
|
+ # first if we set CC to just the basename; use the full file name.
|
|
+ shift
|
|
+ set dummy "$ac_dir/$ac_word" "$@"
|
|
+ shift
|
|
+ ac_cv_prog_CC="$@"
|
|
+ fi
|
|
+fi
|
|
+fi
|
|
+fi
|
|
+CC="$ac_cv_prog_CC"
|
|
+if test -n "$CC"; then
|
|
+ echo "$ac_t""$CC" 1>&6
|
|
+else
|
|
+ echo "$ac_t""no" 1>&6
|
|
+fi
|
|
+
|
|
+ test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
|
|
+fi
|
|
+
|
|
+echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
|
|
+echo "configure:1174: checking whether we are using GNU C" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ cat > conftest.c <<EOF
|
|
+#ifdef __GNUC__
|
|
+ yes;
|
|
+#endif
|
|
+EOF
|
|
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1183: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
|
|
+ ac_cv_prog_gcc=yes
|
|
+else
|
|
+ ac_cv_prog_gcc=no
|
|
+fi
|
|
+fi
|
|
+
|
|
+echo "$ac_t""$ac_cv_prog_gcc" 1>&6
|
|
+
|
|
+if test $ac_cv_prog_gcc = yes; then
|
|
+ GCC=yes
|
|
+ ac_test_CFLAGS="${CFLAGS+set}"
|
|
+ ac_save_CFLAGS="$CFLAGS"
|
|
+ CFLAGS=
|
|
+ echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
|
|
+echo "configure:1198: checking whether ${CC-cc} accepts -g" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ echo 'void f(){}' > conftest.c
|
|
+if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
|
|
+ ac_cv_prog_cc_g=yes
|
|
+else
|
|
+ ac_cv_prog_cc_g=no
|
|
+fi
|
|
+rm -f conftest*
|
|
+
|
|
+fi
|
|
+
|
|
+echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
|
|
+ if test "$ac_test_CFLAGS" = set; then
|
|
+ CFLAGS="$ac_save_CFLAGS"
|
|
+ elif test $ac_cv_prog_cc_g = yes; then
|
|
+ CFLAGS="-g -O2"
|
|
+ else
|
|
+ CFLAGS="-O2"
|
|
+ fi
|
|
+else
|
|
+ GCC=
|
|
+ test "${CFLAGS+set}" = set || CFLAGS="-g"
|
|
+fi
|
|
+
|
|
+
|
|
+# Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
|
|
+set dummy ${ac_tool_prefix}as; ac_word=$2
|
|
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
|
+echo "configure:1229: checking for $ac_word" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_prog_AS'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ if test -n "$AS"; then
|
|
+ ac_cv_prog_AS="$AS" # Let the user override the test.
|
|
+else
|
|
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
|
|
+ ac_dummy="$PATH"
|
|
+ for ac_dir in $ac_dummy; do
|
|
+ test -z "$ac_dir" && ac_dir=.
|
|
+ if test -f $ac_dir/$ac_word; then
|
|
+ ac_cv_prog_AS="${ac_tool_prefix}as"
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ IFS="$ac_save_ifs"
|
|
+ test -z "$ac_cv_prog_AS" && ac_cv_prog_AS="as"
|
|
+fi
|
|
+fi
|
|
+AS="$ac_cv_prog_AS"
|
|
+if test -n "$AS"; then
|
|
+ echo "$ac_t""$AS" 1>&6
|
|
+else
|
|
+ echo "$ac_t""no" 1>&6
|
|
+fi
|
|
+
|
|
+
|
|
+
|
|
+# Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
|
|
+set dummy ${ac_tool_prefix}ar; ac_word=$2
|
|
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
|
+echo "configure:1261: checking for $ac_word" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_prog_AR'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ if test -n "$AR"; then
|
|
+ ac_cv_prog_AR="$AR" # Let the user override the test.
|
|
+else
|
|
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
|
|
+ ac_dummy="$PATH"
|
|
+ for ac_dir in $ac_dummy; do
|
|
+ test -z "$ac_dir" && ac_dir=.
|
|
+ if test -f $ac_dir/$ac_word; then
|
|
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ IFS="$ac_save_ifs"
|
|
+ test -z "$ac_cv_prog_AR" && ac_cv_prog_AR="ar"
|
|
+fi
|
|
+fi
|
|
+AR="$ac_cv_prog_AR"
|
|
+if test -n "$AR"; then
|
|
+ echo "$ac_t""$AR" 1>&6
|
|
+else
|
|
+ echo "$ac_t""no" 1>&6
|
|
+fi
|
|
+
|
|
+
|
|
+
|
|
+# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
|
|
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
|
|
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
|
+echo "configure:1293: checking for $ac_word" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ if test -n "$RANLIB"; then
|
|
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
|
|
+else
|
|
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
|
|
+ ac_dummy="$PATH"
|
|
+ for ac_dir in $ac_dummy; do
|
|
+ test -z "$ac_dir" && ac_dir=.
|
|
+ if test -f $ac_dir/$ac_word; then
|
|
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ IFS="$ac_save_ifs"
|
|
+fi
|
|
+fi
|
|
+RANLIB="$ac_cv_prog_RANLIB"
|
|
+if test -n "$RANLIB"; then
|
|
+ echo "$ac_t""$RANLIB" 1>&6
|
|
+else
|
|
+ echo "$ac_t""no" 1>&6
|
|
+fi
|
|
+
|
|
+
|
|
+if test -z "$ac_cv_prog_RANLIB"; then
|
|
+if test -n "$ac_tool_prefix"; then
|
|
+ # Extract the first word of "ranlib", so it can be a program name with args.
|
|
+set dummy ranlib; ac_word=$2
|
|
+echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
|
+echo "configure:1325: checking for $ac_word" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ if test -n "$RANLIB"; then
|
|
+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
|
|
+else
|
|
+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
|
|
+ ac_dummy="$PATH"
|
|
+ for ac_dir in $ac_dummy; do
|
|
+ test -z "$ac_dir" && ac_dir=.
|
|
+ if test -f $ac_dir/$ac_word; then
|
|
+ ac_cv_prog_RANLIB="ranlib"
|
|
+ break
|
|
+ fi
|
|
+ done
|
|
+ IFS="$ac_save_ifs"
|
|
+ test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":"
|
|
+fi
|
|
+fi
|
|
+RANLIB="$ac_cv_prog_RANLIB"
|
|
+if test -n "$RANLIB"; then
|
|
+ echo "$ac_t""$RANLIB" 1>&6
|
|
+else
|
|
+ echo "$ac_t""no" 1>&6
|
|
+fi
|
|
+
|
|
+else
|
|
+ RANLIB=":"
|
|
+fi
|
|
+fi
|
|
+
|
|
+
|
|
+# Find a good install program. We prefer a C program (faster),
|
|
+# so one script is as good as another. But avoid the broken or
|
|
+# incompatible versions:
|
|
+# SysV /etc/install, /usr/sbin/install
|
|
+# SunOS /usr/etc/install
|
|
+# IRIX /sbin/install
|
|
+# AIX /bin/install
|
|
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
|
|
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
|
|
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
|
|
+# ./install, which can be erroneously created by make from ./install.sh.
|
|
+echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
|
|
+echo "configure:1370: checking for a BSD compatible install" >&5
|
|
+if test -z "$INSTALL"; then
|
|
+if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
|
|
+ for ac_dir in $PATH; do
|
|
+ # Account for people who put trailing slashes in PATH elements.
|
|
+ case "$ac_dir/" in
|
|
+ /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
|
|
+ *)
|
|
+ # OSF1 and SCO ODT 3.0 have their own names for install.
|
|
+ # Don't use installbsd from OSF since it installs stuff as root
|
|
+ # by default.
|
|
+ for ac_prog in ginstall scoinst install; do
|
|
+ if test -f $ac_dir/$ac_prog; then
|
|
+ if test $ac_prog = install &&
|
|
+ grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
|
|
+ # AIX install. It has an incompatible calling convention.
|
|
+ :
|
|
+ else
|
|
+ ac_cv_path_install="$ac_dir/$ac_prog -c"
|
|
+ break 2
|
|
+ fi
|
|
+ fi
|
|
+ done
|
|
+ ;;
|
|
+ esac
|
|
+ done
|
|
+ IFS="$ac_save_IFS"
|
|
+
|
|
+fi
|
|
+ if test "${ac_cv_path_install+set}" = set; then
|
|
+ INSTALL="$ac_cv_path_install"
|
|
+ else
|
|
+ # As a last resort, use the slow shell script. We don't cache a
|
|
+ # path for INSTALL within a source directory, because that will
|
|
+ # break other packages using the cache if that directory is
|
|
+ # removed, or if the path is relative.
|
|
+ INSTALL="$ac_install_sh"
|
|
+ fi
|
|
+fi
|
|
+echo "$ac_t""$INSTALL" 1>&6
|
|
+
|
|
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
|
|
+# It thinks the first close brace ends the variable substitution.
|
|
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
|
|
+
|
|
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
|
|
+
|
|
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
|
|
+
|
|
+
|
|
+echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6
|
|
+echo "configure:1424: checking whether to enable maintainer-specific portions of Makefiles" >&5
|
|
+ # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given.
|
|
+if test "${enable_maintainer_mode+set}" = set; then
|
|
+ enableval="$enable_maintainer_mode"
|
|
+ USE_MAINTAINER_MODE=$enableval
|
|
+else
|
|
+ USE_MAINTAINER_MODE=no
|
|
+fi
|
|
+
|
|
+ echo "$ac_t""$USE_MAINTAINER_MODE" 1>&6
|
|
+
|
|
+
|
|
+if test $USE_MAINTAINER_MODE = yes; then
|
|
+ MAINTAINER_MODE_TRUE=
|
|
+ MAINTAINER_MODE_FALSE='#'
|
|
+else
|
|
+ MAINTAINER_MODE_TRUE='#'
|
|
+ MAINTAINER_MODE_FALSE=
|
|
+fi
|
|
+ MAINT=$MAINTAINER_MODE_TRUE
|
|
+
|
|
+
|
|
+
|
|
+# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
|
|
+# at least currently, we never actually build a program, so we never
|
|
+# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
|
|
+# fails, because we are probably configuring with a cross compiler
|
|
+# which can't create executables. So we include AC_EXEEXT to keep
|
|
+# automake happy, but we don't execute it, since we don't care about
|
|
+# the result.
|
|
+if false; then
|
|
+
|
|
+
|
|
+echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
|
|
+echo "configure:1458: checking for executable suffix" >&5
|
|
+if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then
|
|
+ echo $ac_n "(cached) $ac_c" 1>&6
|
|
+else
|
|
+ if test "$CYGWIN" = yes || test "$MINGW32" = yes; then
|
|
+ ac_cv_exeext=.exe
|
|
+else
|
|
+ rm -f conftest*
|
|
+ echo 'int main () { return 0; }' > conftest.$ac_ext
|
|
+ ac_cv_exeext=
|
|
+ if { (eval echo configure:1468: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
|
|
+ for file in conftest.*; do
|
|
+ case $file in
|
|
+ *.c | *.o | *.obj) ;;
|
|
+ *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;;
|
|
+ esac
|
|
+ done
|
|
+ else
|
|
+ { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; }
|
|
+ fi
|
|
+ rm -f conftest*
|
|
+ test x"${ac_cv_exeext}" = x && ac_cv_exeext=no
|
|
+fi
|
|
+fi
|
|
+
|
|
+EXEEXT=""
|
|
+test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext}
|
|
+echo "$ac_t""${ac_cv_exeext}" 1>&6
|
|
+ac_exeext=$EXEEXT
|
|
+
|
|
+fi
|
|
+
|
|
+. ${newlib_basedir}/configure.host
|
|
+
|
|
+newlib_cflags="${newlib_cflags} -fno-builtin"
|
|
+
|
|
+NEWLIB_CFLAGS=${newlib_cflags}
|
|
+
|
|
+
|
|
+LDFLAGS=${ldflags}
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+if test x${newlib_elix_level} = x0; then
|
|
+ ELIX_LEVEL_0_TRUE=
|
|
+ ELIX_LEVEL_0_FALSE='#'
|
|
+else
|
|
+ ELIX_LEVEL_0_TRUE='#'
|
|
+ ELIX_LEVEL_0_FALSE=
|
|
+fi
|
|
+
|
|
+
|
|
+if test x${newlib_elix_level} = x1; then
|
|
+ ELIX_LEVEL_1_TRUE=
|
|
+ ELIX_LEVEL_1_FALSE='#'
|
|
+else
|
|
+ ELIX_LEVEL_1_TRUE='#'
|
|
+ ELIX_LEVEL_1_FALSE=
|
|
+fi
|
|
+
|
|
+
|
|
+if test x${newlib_elix_level} = x2; then
|
|
+ ELIX_LEVEL_2_TRUE=
|
|
+ ELIX_LEVEL_2_FALSE='#'
|
|
+else
|
|
+ ELIX_LEVEL_2_TRUE='#'
|
|
+ ELIX_LEVEL_2_FALSE=
|
|
+fi
|
|
+
|
|
+
|
|
+if test x${newlib_elix_level} = x3; then
|
|
+ ELIX_LEVEL_3_TRUE=
|
|
+ ELIX_LEVEL_3_FALSE='#'
|
|
+else
|
|
+ ELIX_LEVEL_3_TRUE='#'
|
|
+ ELIX_LEVEL_3_FALSE=
|
|
+fi
|
|
+
|
|
+
|
|
+if test x${newlib_elix_level} = x4; then
|
|
+ ELIX_LEVEL_4_TRUE=
|
|
+ ELIX_LEVEL_4_FALSE='#'
|
|
+else
|
|
+ ELIX_LEVEL_4_TRUE='#'
|
|
+ ELIX_LEVEL_4_FALSE=
|
|
+fi
|
|
+
|
|
+
|
|
+
|
|
+if test x${use_libtool} = xyes; then
|
|
+ USE_LIBTOOL_TRUE=
|
|
+ USE_LIBTOOL_FALSE='#'
|
|
+else
|
|
+ USE_LIBTOOL_TRUE='#'
|
|
+ USE_LIBTOOL_FALSE=
|
|
+fi
|
|
+
|
|
+# Hard-code OBJEXT. Normally it is set by AC_OBJEXT, but we
|
|
+# use oext, which is set in configure.host based on the target platform.
|
|
+OBJEXT=${oext}
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+
|
|
+trap '' 1 2 15
|
|
+cat > confcache <<\EOF
|
|
+# This file is a shell script that caches the results of configure
|
|
+# tests run on this system so they can be shared between configure
|
|
+# scripts and configure runs. It is not useful on other systems.
|
|
+# If it contains results you don't want to keep, you may remove or edit it.
|
|
+#
|
|
+# By default, configure uses ./config.cache as the cache file,
|
|
+# creating it if it does not exist already. You can give configure
|
|
+# the --cache-file=FILE option to use a different cache file; that is
|
|
+# what configure does when it calls configure scripts in
|
|
+# subdirectories, so they share the cache.
|
|
+# Giving --cache-file=/dev/null disables caching, for debugging configure.
|
|
+# config.status only pays attention to the cache file if you give it the
|
|
+# --recheck option to rerun configure.
|
|
+#
|
|
+EOF
|
|
+# The following way of writing the cache mishandles newlines in values,
|
|
+# but we know of no workaround that is simple, portable, and efficient.
|
|
+# So, don't put newlines in cache variables' values.
|
|
+# Ultrix sh set writes to stderr and can't be redirected directly,
|
|
+# and sets the high bit in the cache file unless we assign to the vars.
|
|
+(set) 2>&1 |
|
|
+ case `(ac_space=' '; set | grep ac_space) 2>&1` in
|
|
+ *ac_space=\ *)
|
|
+ # `set' does not quote correctly, so add quotes (double-quote substitution
|
|
+ # turns \\\\ into \\, and sed turns \\ into \).
|
|
+ sed -n \
|
|
+ -e "s/'/'\\\\''/g" \
|
|
+ -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
|
|
+ ;;
|
|
+ *)
|
|
+ # `set' quotes correctly as required by POSIX, so do not add quotes.
|
|
+ sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
|
|
+ ;;
|
|
+ esac >> confcache
|
|
+if cmp -s $cache_file confcache; then
|
|
+ :
|
|
+else
|
|
+ if test -w $cache_file; then
|
|
+ echo "updating cache $cache_file"
|
|
+ cat confcache > $cache_file
|
|
+ else
|
|
+ echo "not updating unwritable cache $cache_file"
|
|
+ fi
|
|
+fi
|
|
+rm -f confcache
|
|
+
|
|
+trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
|
|
+
|
|
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
|
|
+# Let make expand exec_prefix.
|
|
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
|
|
+
|
|
+# Any assignment to VPATH causes Sun make to only execute
|
|
+# the first set of double-colon rules, so remove it if not needed.
|
|
+# If there is a colon in the path, we need to keep it.
|
|
+if test "x$srcdir" = x.; then
|
|
+ ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
|
|
+fi
|
|
+
|
|
+trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
|
|
+
|
|
+# Transform confdefs.h into DEFS.
|
|
+# Protect against shell expansion while executing Makefile rules.
|
|
+# Protect against Makefile macro expansion.
|
|
+cat > conftest.defs <<\EOF
|
|
+s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
|
|
+s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
|
|
+s%\[%\\&%g
|
|
+s%\]%\\&%g
|
|
+s%\$%$$%g
|
|
+EOF
|
|
+DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
|
|
+rm -f conftest.defs
|
|
+
|
|
+
|
|
+# Without the "./", some shells look in PATH for config.status.
|
|
+: ${CONFIG_STATUS=./config.status}
|
|
+
|
|
+echo creating $CONFIG_STATUS
|
|
+rm -f $CONFIG_STATUS
|
|
+cat > $CONFIG_STATUS <<EOF
|
|
+#! /bin/sh
|
|
+# Generated automatically by configure.
|
|
+# Run this file to recreate the current configuration.
|
|
+# This directory was configured as follows,
|
|
+# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
|
|
+#
|
|
+# $0 $ac_configure_args
|
|
+#
|
|
+# Compiler output produced by configure, useful for debugging
|
|
+# configure, is in ./config.log if it exists.
|
|
+
|
|
+ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
|
|
+for ac_option
|
|
+do
|
|
+ case "\$ac_option" in
|
|
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
|
|
+ echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
|
|
+ exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
|
|
+ -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
|
|
+ echo "$CONFIG_STATUS generated by autoconf version 2.13"
|
|
+ exit 0 ;;
|
|
+ -help | --help | --hel | --he | --h)
|
|
+ echo "\$ac_cs_usage"; exit 0 ;;
|
|
+ *) echo "\$ac_cs_usage"; exit 1 ;;
|
|
+ esac
|
|
+done
|
|
+
|
|
+ac_given_srcdir=$srcdir
|
|
+ac_given_INSTALL="$INSTALL"
|
|
+
|
|
+trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
|
|
+EOF
|
|
+cat >> $CONFIG_STATUS <<EOF
|
|
+
|
|
+# Protect against being on the right side of a sed subst in config.status.
|
|
+sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
|
|
+ s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
|
|
+$ac_vpsub
|
|
+$extrasub
|
|
+s%@SHELL@%$SHELL%g
|
|
+s%@CFLAGS@%$CFLAGS%g
|
|
+s%@CPPFLAGS@%$CPPFLAGS%g
|
|
+s%@CXXFLAGS@%$CXXFLAGS%g
|
|
+s%@FFLAGS@%$FFLAGS%g
|
|
+s%@DEFS@%$DEFS%g
|
|
+s%@LDFLAGS@%$LDFLAGS%g
|
|
+s%@LIBS@%$LIBS%g
|
|
+s%@exec_prefix@%$exec_prefix%g
|
|
+s%@prefix@%$prefix%g
|
|
+s%@program_transform_name@%$program_transform_name%g
|
|
+s%@bindir@%$bindir%g
|
|
+s%@sbindir@%$sbindir%g
|
|
+s%@libexecdir@%$libexecdir%g
|
|
+s%@datadir@%$datadir%g
|
|
+s%@sysconfdir@%$sysconfdir%g
|
|
+s%@sharedstatedir@%$sharedstatedir%g
|
|
+s%@localstatedir@%$localstatedir%g
|
|
+s%@libdir@%$libdir%g
|
|
+s%@includedir@%$includedir%g
|
|
+s%@oldincludedir@%$oldincludedir%g
|
|
+s%@infodir@%$infodir%g
|
|
+s%@mandir@%$mandir%g
|
|
+s%@MAY_SUPPLY_SYSCALLS_TRUE@%$MAY_SUPPLY_SYSCALLS_TRUE%g
|
|
+s%@MAY_SUPPLY_SYSCALLS_FALSE@%$MAY_SUPPLY_SYSCALLS_FALSE%g
|
|
+s%@newlib_basedir@%$newlib_basedir%g
|
|
+s%@host@%$host%g
|
|
+s%@host_alias@%$host_alias%g
|
|
+s%@host_cpu@%$host_cpu%g
|
|
+s%@host_vendor@%$host_vendor%g
|
|
+s%@host_os@%$host_os%g
|
|
+s%@target@%$target%g
|
|
+s%@target_alias@%$target_alias%g
|
|
+s%@target_cpu@%$target_cpu%g
|
|
+s%@target_vendor@%$target_vendor%g
|
|
+s%@target_os@%$target_os%g
|
|
+s%@build@%$build%g
|
|
+s%@build_alias@%$build_alias%g
|
|
+s%@build_cpu@%$build_cpu%g
|
|
+s%@build_vendor@%$build_vendor%g
|
|
+s%@build_os@%$build_os%g
|
|
+s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
|
|
+s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
|
|
+s%@INSTALL_DATA@%$INSTALL_DATA%g
|
|
+s%@PACKAGE@%$PACKAGE%g
|
|
+s%@VERSION@%$VERSION%g
|
|
+s%@ACLOCAL@%$ACLOCAL%g
|
|
+s%@AUTOCONF@%$AUTOCONF%g
|
|
+s%@AUTOMAKE@%$AUTOMAKE%g
|
|
+s%@AUTOHEADER@%$AUTOHEADER%g
|
|
+s%@MAKEINFO@%$MAKEINFO%g
|
|
+s%@SET_MAKE@%$SET_MAKE%g
|
|
+s%@CC@%$CC%g
|
|
+s%@AS@%$AS%g
|
|
+s%@AR@%$AR%g
|
|
+s%@RANLIB@%$RANLIB%g
|
|
+s%@MAINTAINER_MODE_TRUE@%$MAINTAINER_MODE_TRUE%g
|
|
+s%@MAINTAINER_MODE_FALSE@%$MAINTAINER_MODE_FALSE%g
|
|
+s%@MAINT@%$MAINT%g
|
|
+s%@EXEEXT@%$EXEEXT%g
|
|
+s%@NEWLIB_CFLAGS@%$NEWLIB_CFLAGS%g
|
|
+s%@ELIX_LEVEL_0_TRUE@%$ELIX_LEVEL_0_TRUE%g
|
|
+s%@ELIX_LEVEL_0_FALSE@%$ELIX_LEVEL_0_FALSE%g
|
|
+s%@ELIX_LEVEL_1_TRUE@%$ELIX_LEVEL_1_TRUE%g
|
|
+s%@ELIX_LEVEL_1_FALSE@%$ELIX_LEVEL_1_FALSE%g
|
|
+s%@ELIX_LEVEL_2_TRUE@%$ELIX_LEVEL_2_TRUE%g
|
|
+s%@ELIX_LEVEL_2_FALSE@%$ELIX_LEVEL_2_FALSE%g
|
|
+s%@ELIX_LEVEL_3_TRUE@%$ELIX_LEVEL_3_TRUE%g
|
|
+s%@ELIX_LEVEL_3_FALSE@%$ELIX_LEVEL_3_FALSE%g
|
|
+s%@ELIX_LEVEL_4_TRUE@%$ELIX_LEVEL_4_TRUE%g
|
|
+s%@ELIX_LEVEL_4_FALSE@%$ELIX_LEVEL_4_FALSE%g
|
|
+s%@USE_LIBTOOL_TRUE@%$USE_LIBTOOL_TRUE%g
|
|
+s%@USE_LIBTOOL_FALSE@%$USE_LIBTOOL_FALSE%g
|
|
+s%@OBJEXT@%$OBJEXT%g
|
|
+s%@oext@%$oext%g
|
|
+s%@aext@%$aext%g
|
|
+s%@libm_machine_dir@%$libm_machine_dir%g
|
|
+s%@machine_dir@%$machine_dir%g
|
|
+s%@sys_dir@%$sys_dir%g
|
|
+
|
|
+CEOF
|
|
+EOF
|
|
+
|
|
+cat >> $CONFIG_STATUS <<\EOF
|
|
+
|
|
+# Split the substitutions into bite-sized pieces for seds with
|
|
+# small command number limits, like on Digital OSF/1 and HP-UX.
|
|
+ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
|
|
+ac_file=1 # Number of current file.
|
|
+ac_beg=1 # First line for current file.
|
|
+ac_end=$ac_max_sed_cmds # Line after last line for current file.
|
|
+ac_more_lines=:
|
|
+ac_sed_cmds=""
|
|
+while $ac_more_lines; do
|
|
+ if test $ac_beg -gt 1; then
|
|
+ sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
|
|
+ else
|
|
+ sed "${ac_end}q" conftest.subs > conftest.s$ac_file
|
|
+ fi
|
|
+ if test ! -s conftest.s$ac_file; then
|
|
+ ac_more_lines=false
|
|
+ rm -f conftest.s$ac_file
|
|
+ else
|
|
+ if test -z "$ac_sed_cmds"; then
|
|
+ ac_sed_cmds="sed -f conftest.s$ac_file"
|
|
+ else
|
|
+ ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
|
|
+ fi
|
|
+ ac_file=`expr $ac_file + 1`
|
|
+ ac_beg=$ac_end
|
|
+ ac_end=`expr $ac_end + $ac_max_sed_cmds`
|
|
+ fi
|
|
+done
|
|
+if test -z "$ac_sed_cmds"; then
|
|
+ ac_sed_cmds=cat
|
|
+fi
|
|
+EOF
|
|
+
|
|
+cat >> $CONFIG_STATUS <<EOF
|
|
+
|
|
+CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
|
|
+EOF
|
|
+cat >> $CONFIG_STATUS <<\EOF
|
|
+for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
|
|
+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
|
|
+ case "$ac_file" in
|
|
+ *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
|
|
+ ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
|
|
+ *) ac_file_in="${ac_file}.in" ;;
|
|
+ esac
|
|
+
|
|
+ # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
|
|
+
|
|
+ # Remove last slash and all that follows it. Not all systems have dirname.
|
|
+ ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
|
|
+ if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
|
|
+ # The file is in a subdirectory.
|
|
+ test ! -d "$ac_dir" && mkdir "$ac_dir"
|
|
+ ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
|
|
+ # A "../" for each directory in $ac_dir_suffix.
|
|
+ ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
|
|
+ else
|
|
+ ac_dir_suffix= ac_dots=
|
|
+ fi
|
|
+
|
|
+ case "$ac_given_srcdir" in
|
|
+ .) srcdir=.
|
|
+ if test -z "$ac_dots"; then top_srcdir=.
|
|
+ else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
|
|
+ /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
|
|
+ *) # Relative path.
|
|
+ srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
|
|
+ top_srcdir="$ac_dots$ac_given_srcdir" ;;
|
|
+ esac
|
|
+
|
|
+ case "$ac_given_INSTALL" in
|
|
+ [/$]*) INSTALL="$ac_given_INSTALL" ;;
|
|
+ *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
|
|
+ esac
|
|
+
|
|
+ echo creating "$ac_file"
|
|
+ rm -f "$ac_file"
|
|
+ configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
|
|
+ case "$ac_file" in
|
|
+ *Makefile*) ac_comsub="1i\\
|
|
+# $configure_input" ;;
|
|
+ *) ac_comsub= ;;
|
|
+ esac
|
|
+
|
|
+ ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
|
|
+ sed -e "$ac_comsub
|
|
+s%@configure_input@%$configure_input%g
|
|
+s%@srcdir@%$srcdir%g
|
|
+s%@top_srcdir@%$top_srcdir%g
|
|
+s%@INSTALL@%$INSTALL%g
|
|
+" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
|
|
+fi; done
|
|
+rm -f conftest.s*
|
|
+
|
|
+EOF
|
|
+cat >> $CONFIG_STATUS <<EOF
|
|
+
|
|
+EOF
|
|
+cat >> $CONFIG_STATUS <<\EOF
|
|
+
|
|
+exit 0
|
|
+EOF
|
|
+chmod +x $CONFIG_STATUS
|
|
+rm -fr confdefs* $ac_clean_files
|
|
+test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
|
|
+
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/configure.in 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/configure.in 2005-07-28 15:42:00.000000000 -0400
|
|
@@ -0,0 +1,12 @@
|
|
+dnl This is the newlib/libc/sys/psp configure.in file.
|
|
+dnl Process this file with autoconf to produce a configure script.
|
|
+
|
|
+AC_PREREQ(2.5)
|
|
+AC_INIT(libcglue.c)
|
|
+
|
|
+dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
|
|
+AC_CONFIG_AUX_DIR(../../../..)
|
|
+
|
|
+NEWLIB_CONFIGURE(../../..)
|
|
+
|
|
+AC_OUTPUT(Makefile)
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/crt0.c 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/crt0.c 2005-07-28 15:42:00.000000000 -0400
|
|
@@ -0,0 +1,3 @@
|
|
+/* The real crt0.c lives in PSPSDK. */
|
|
+
|
|
+void _start() { }
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/libcglue.c 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/libcglue.c 2005-11-01 11:23:24.000000000 -0500
|
|
@@ -0,0 +1,700 @@
|
|
+/*
|
|
+ * PSP Software Development Kit - http://www.pspdev.org
|
|
+ * -----------------------------------------------------------------------
|
|
+ * Licensed under the BSD license, see LICENSE in PSPSDK root for details.
|
|
+ *
|
|
+ * libcglue.c - Newlib-compatible system calls.
|
|
+ *
|
|
+ * Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org>
|
|
+ * Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
|
|
+ * Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
|
|
+ * Copyright (c) 2005 Jim Paris <jim@jtan.com>
|
|
+ *
|
|
+ */
|
|
+#include <errno.h>
|
|
+#include <malloc.h>
|
|
+#include <reent.h>
|
|
+#include <stdarg.h>
|
|
+#include <stdlib.h>
|
|
+#include <string.h>
|
|
+#include <time.h>
|
|
+#include <sys/fcntl.h>
|
|
+#include <sys/stat.h>
|
|
+#include <sys/time.h>
|
|
+#include <sys/types.h>
|
|
+#include <sys/unistd.h>
|
|
+#include <sys/dirent.h>
|
|
+
|
|
+#include <psptypes.h>
|
|
+#include <pspiofilemgr.h>
|
|
+#include <pspmodulemgr.h>
|
|
+#include <pspsysmem.h>
|
|
+#include <pspthreadman.h>
|
|
+#include <psputils.h>
|
|
+#include <psputility.h>
|
|
+#include <pspstdio.h>
|
|
+
|
|
+extern char __psp_cwd[MAXPATHLEN + 1];
|
|
+extern void __psp_init_cwd(char *argv_0);
|
|
+extern int __psp_path_absolute(const char *in, char *out, int len);
|
|
+
|
|
+#define __PSP_FILENO_MAX 1024
|
|
+extern char * __psp_filename_map[__PSP_FILENO_MAX];
|
|
+
|
|
+int __psp_set_errno(int code);
|
|
+
|
|
+#ifdef F___psp_set_errno
|
|
+int __psp_set_errno(int code)
|
|
+{
|
|
+ if ((code & 0x80010000) == 0x80010000) {
|
|
+ errno = code & 0xFFFF;
|
|
+ return -1;
|
|
+ }
|
|
+ return code;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_getcwd
|
|
+char *getcwd(char *buf, size_t size)
|
|
+{
|
|
+ if(!buf) {
|
|
+ errno = EINVAL;
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ if(strlen(__psp_cwd) >= size) {
|
|
+ errno = ERANGE;
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ strcpy(buf, __psp_cwd);
|
|
+ return buf;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_chdir
|
|
+int chdir(const char *path)
|
|
+{
|
|
+ char dest[MAXPATHLEN + 1];
|
|
+ SceUID uid;
|
|
+
|
|
+ if(__psp_path_absolute(path, dest, MAXPATHLEN) < 0) {
|
|
+ errno = ENAMETOOLONG;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ /* sceIoChdir doesn't give an indication of whether it worked,
|
|
+ so test for existence by attempting to open the dir */
|
|
+ uid = sceIoDopen(dest);
|
|
+ if(uid < 0) {
|
|
+ errno = ENOTDIR;
|
|
+ return -1;
|
|
+ }
|
|
+ sceIoDclose(uid);
|
|
+
|
|
+ sceIoChdir(dest);
|
|
+ strcpy(__psp_cwd, dest);
|
|
+ return 0;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_mkdir
|
|
+int mkdir(const char *pathname, mode_t mode)
|
|
+{
|
|
+ char dest[MAXPATHLEN + 1];
|
|
+
|
|
+ if(__psp_path_absolute(pathname, dest, MAXPATHLEN) < 0) {
|
|
+ errno = ENAMETOOLONG;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ return __psp_set_errno(sceIoMkdir(dest, mode));
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_rmdir
|
|
+int rmdir(const char *pathname)
|
|
+{
|
|
+ char dest[MAXPATHLEN + 1];
|
|
+
|
|
+ if(__psp_path_absolute(pathname, dest, MAXPATHLEN) < 0) {
|
|
+ errno = ENAMETOOLONG;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ return __psp_set_errno(sceIoRmdir(dest));
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_realpath
|
|
+char *realpath(const char *path, char *resolved_path)
|
|
+{
|
|
+ if(!path || !resolved_path) {
|
|
+ errno = EINVAL;
|
|
+ return NULL;
|
|
+ }
|
|
+ if(__psp_path_absolute(path, resolved_path, MAXPATHLEN) < 0) {
|
|
+ errno = ENAMETOOLONG;
|
|
+ return NULL;
|
|
+ }
|
|
+ if(access(resolved_path, F_OK) < 0) {
|
|
+ errno = ENOENT;
|
|
+ return NULL;
|
|
+ }
|
|
+ return resolved_path;
|
|
+}
|
|
+#endif
|
|
+
|
|
+/* Wrappers of the standard open(), close(), read(), write(), unlink() and lseek() routines. */
|
|
+#ifdef F__open
|
|
+int _open(const char *name, int flags, int mode)
|
|
+{
|
|
+ int fd;
|
|
+ int sce_flags;
|
|
+ char dest[MAXPATHLEN + 1];
|
|
+
|
|
+ if(__psp_path_absolute(name, dest, MAXPATHLEN) < 0) {
|
|
+ errno = ENAMETOOLONG;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ /* O_RDONLY starts at 0, where PSP_O_RDONLY starts at 1, so remap the read/write
|
|
+ flags by adding 1. */
|
|
+ sce_flags = (flags & O_ACCMODE) + 1;
|
|
+
|
|
+ /* Translate standard open flags into the flags understood by the PSP kernel. */
|
|
+ if (flags & O_APPEND) {
|
|
+ sce_flags |= PSP_O_APPEND;
|
|
+ }
|
|
+ if (flags & O_CREAT) {
|
|
+ sce_flags |= PSP_O_CREAT;
|
|
+ }
|
|
+ if (flags & O_TRUNC) {
|
|
+ sce_flags |= PSP_O_TRUNC;
|
|
+ }
|
|
+ if (flags & O_EXCL) {
|
|
+ sce_flags |= PSP_O_EXCL;
|
|
+ }
|
|
+ if (flags & O_NONBLOCK) {
|
|
+ sce_flags |= PSP_O_NBLOCK;
|
|
+ }
|
|
+
|
|
+ fd = sceIoOpen(dest, sce_flags, mode);
|
|
+ if ((fd >= 0) && (fd < __PSP_FILENO_MAX)) {
|
|
+ __psp_filename_map[fd] = strdup(dest);
|
|
+ }
|
|
+ return __psp_set_errno(fd);
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F__close
|
|
+int _close(int fd)
|
|
+{
|
|
+ if (fd < 0) {
|
|
+ errno = EBADF;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ if ((fd >= 0) && (fd < __PSP_FILENO_MAX)) {
|
|
+ if (__psp_filename_map[fd] != NULL) {
|
|
+ free(__psp_filename_map[fd]);
|
|
+ __psp_filename_map[fd] = NULL;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ return __psp_set_errno(sceIoClose(fd));
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F__read
|
|
+int _read(int fd, void *buf, size_t size)
|
|
+{
|
|
+ if (fd < 0) {
|
|
+ errno = EBADF;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ return __psp_set_errno(sceIoRead(fd, buf, size));
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F__write
|
|
+int _write(int fd, const void *buf, size_t size)
|
|
+{
|
|
+ if (fd < 0) {
|
|
+ errno = EBADF;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ return __psp_set_errno(sceIoWrite(fd, buf, size));
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F__lseek
|
|
+off_t _lseek(int fd, off_t offset, int whence)
|
|
+{
|
|
+ if (fd < 0) {
|
|
+ errno = EBADF;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ /* We don't have to do anything with the whence argument because SEEK_* == PSP_SEEK_*. */
|
|
+ return (off_t) __psp_set_errno(sceIoLseek(fd, offset, whence));
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F__unlink
|
|
+int _unlink(const char *path)
|
|
+{
|
|
+ char dest[MAXPATHLEN + 1];
|
|
+
|
|
+ if(__psp_path_absolute(path, dest, MAXPATHLEN) < 0) {
|
|
+ errno = ENAMETOOLONG;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ return __psp_set_errno(sceIoRemove(dest));
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F__link
|
|
+int _link(const char *name1, const char *name2)
|
|
+{
|
|
+ errno = ENOSYS;
|
|
+ return -1; /* not supported */
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_opendir
|
|
+DIR *opendir(const char *filename)
|
|
+{
|
|
+ char dest[MAXPATHLEN + 1];
|
|
+ DIR *dirp;
|
|
+ SceUID uid;
|
|
+
|
|
+ /* Normalize pathname so that opendir(".") works */
|
|
+ if(__psp_path_absolute(filename, dest, MAXPATHLEN) < 0) {
|
|
+ errno = ENOENT;
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ dirp = (DIR *)malloc(sizeof(DIR));
|
|
+
|
|
+ uid = sceIoDopen(dest);
|
|
+
|
|
+ if (uid < 0)
|
|
+ {
|
|
+ free(dirp);
|
|
+ (void) __psp_set_errno(uid);
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ dirp->uid = uid;
|
|
+
|
|
+ return dirp;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_readdir
|
|
+struct dirent *readdir(DIR *dirp)
|
|
+{
|
|
+ int ret;
|
|
+
|
|
+ /* Zero the dirent, to avoid possible problems with sceIoDread */
|
|
+ memset(&dirp->de, 0, sizeof(struct dirent));
|
|
+
|
|
+ ret = sceIoDread(dirp->uid, (SceIoDirent *)&dirp->de);
|
|
+ if (ret == 0) {
|
|
+ /* EOF */
|
|
+ errno = 0;
|
|
+ return NULL;
|
|
+ }
|
|
+ if (ret < 0) {
|
|
+ (void) __psp_set_errno(ret);
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
+ return &dirp->de;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_closedir
|
|
+int closedir(DIR *dirp)
|
|
+{
|
|
+ if (dirp != NULL)
|
|
+ {
|
|
+ int uid;
|
|
+ uid = dirp->uid;
|
|
+ free (dirp);
|
|
+ return __psp_set_errno(sceIoDclose(uid));
|
|
+ }
|
|
+ errno = EBADF;
|
|
+ return -1;
|
|
+}
|
|
+#endif
|
|
+
|
|
+/* Time routines. These wrap around the routines provided by the kernel. */
|
|
+#ifdef F__gettimeofday
|
|
+int _gettimeofday(struct timeval *tp, struct timezone *tzp)
|
|
+{
|
|
+ return __psp_set_errno(sceKernelLibcGettimeofday(tp, tzp));
|
|
+}
|
|
+
|
|
+#endif
|
|
+
|
|
+#if defined(F_clock)
|
|
+clock_t clock(void)
|
|
+{
|
|
+ return __psp_set_errno(sceKernelLibcClock());
|
|
+}
|
|
+#endif
|
|
+
|
|
+#if defined(F_time)
|
|
+time_t time(time_t *t)
|
|
+{
|
|
+ return __psp_set_errno(sceKernelLibcTime(t));
|
|
+}
|
|
+#endif
|
|
+
|
|
+#if defined(F_sleep)
|
|
+unsigned int sleep(unsigned int secs) {
|
|
+ while(secs--) {
|
|
+ sceKernelDelayThreadCB(1000000);
|
|
+ }
|
|
+ return 0;
|
|
+}
|
|
+#endif
|
|
+
|
|
+/* PSP-compatible sbrk(). */
|
|
+#if defined(F__sbrk) || defined(F_glue__sbrk)
|
|
+/* TODO: Currently our default heap is set to the maximum available block size
|
|
+ when sbrk() is first called. Sony seems to always use a default of 64KB,
|
|
+ with the expectation that user programs will override the default size with
|
|
+ their own desired size. The only reason I can think of them doing this is
|
|
+ to allow each PRX to have their own seperate heap. I think that their
|
|
+ method is overkill for most user programs.
|
|
+
|
|
+ What I'd like to do instead is to use the default of 64KB for PRXes as Sony
|
|
+ does, but use the maximum available block size for executables. This avoids
|
|
+ the requirement of specifying the heap size manually in user programs.
|
|
+ However, we currently don't have a clean way to distinguish PRXes and normal
|
|
+ executables, so this code needs to be revisited once we do come up with a
|
|
+ way. */
|
|
+#define DEFAULT_PRX_HEAP_SIZE_KB 64
|
|
+
|
|
+/* If defined it specifies the desired size of the heap, in KB. */
|
|
+extern unsigned int sce_newlib_heap_kb_size __attribute__((weak));
|
|
+
|
|
+/* UID of the memory block that represents the heap. */
|
|
+static SceUID __psp_heap_blockid;
|
|
+
|
|
+void * _sbrk(ptrdiff_t incr)
|
|
+{
|
|
+ static void * heap_bottom = NULL;
|
|
+ static void * heap_top = NULL;
|
|
+ static void * heap_ptr = NULL;
|
|
+
|
|
+ /* Has our heap been initialized? */
|
|
+ if (heap_bottom == NULL) {
|
|
+ /* No, initialize the heap. */
|
|
+ SceSize heap_size;
|
|
+
|
|
+ if (&sce_newlib_heap_kb_size != NULL) {
|
|
+ heap_size = sce_newlib_heap_kb_size * 1024;
|
|
+ } else {
|
|
+ /* TODO: Here we should distinguish between a PRX and a normal
|
|
+ executable. Right now we assume it's an executable. */
|
|
+ if (0 /* is a prx */) {
|
|
+ heap_size = DEFAULT_PRX_HEAP_SIZE_KB * 1024;
|
|
+ } else {
|
|
+ heap_size = sceKernelMaxFreeMemSize();
|
|
+ }
|
|
+ }
|
|
+
|
|
+ __psp_heap_blockid = sceKernelAllocPartitionMemory(2, "block", PSP_SMEM_Low, heap_size, NULL);
|
|
+ if (__psp_heap_blockid > 0) {
|
|
+ heap_bottom = sceKernelGetBlockHeadAddr(__psp_heap_blockid);
|
|
+ heap_ptr = heap_bottom;
|
|
+ heap_top = (unsigned char *) heap_bottom + heap_size;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ void * heap_addr = (void *) -1;
|
|
+ void * next_heap_ptr = (void *) ((ptrdiff_t) heap_ptr + incr);
|
|
+ if ((heap_bottom != NULL) && (next_heap_ptr >= heap_bottom) && (next_heap_ptr < heap_top)) {
|
|
+ heap_addr = heap_ptr;
|
|
+ heap_ptr = next_heap_ptr;
|
|
+ }
|
|
+
|
|
+ return heap_addr;
|
|
+}
|
|
+
|
|
+/* Free the heap. */
|
|
+int __psp_free_heap(void)
|
|
+{
|
|
+ if (__psp_heap_blockid > 0) {
|
|
+ return sceKernelFreePartitionMemory(__psp_heap_blockid);
|
|
+ }
|
|
+
|
|
+ return __psp_heap_blockid;
|
|
+}
|
|
+#endif
|
|
+
|
|
+/* Other POSIX routines that must be defined. */
|
|
+#ifdef F__fstat
|
|
+int _fstat(int fd, struct stat *sbuf)
|
|
+{
|
|
+ int ret;
|
|
+ SceOff oldpos;
|
|
+ if ((fd >= 0) && (fd < __PSP_FILENO_MAX)) {
|
|
+ if (__psp_filename_map[fd] != NULL) {
|
|
+ if (strcmp(__psp_filename_map[fd], " __PSP_STDIO") == 0) {
|
|
+ memset(sbuf, '\0', sizeof(struct stat));
|
|
+ sbuf->st_mode = S_IFCHR;
|
|
+ return 0;
|
|
+ } else {
|
|
+ ret = stat(__psp_filename_map[fd], sbuf);
|
|
+
|
|
+ /* Find true size of the open file */
|
|
+ oldpos = sceIoLseek(fd, 0, SEEK_CUR);
|
|
+ if (oldpos != (off_t) -1) {
|
|
+ sbuf->st_size = (off_t) sceIoLseek(fd, 0, SEEK_END);
|
|
+ sceIoLseek(fd, oldpos, SEEK_SET);
|
|
+ }
|
|
+
|
|
+ return ret;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ errno = EBADF;
|
|
+ return -1;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_isatty
|
|
+int isatty(int fd)
|
|
+{
|
|
+ if ((fd >= 0) && (fd < __PSP_FILENO_MAX)) {
|
|
+ if (__psp_filename_map[fd] != NULL) {
|
|
+ if (strcmp(__psp_filename_map[fd], " __PSP_STDIO") == 0) {
|
|
+ return 1;
|
|
+ } else {
|
|
+ return 0;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
+ return 0;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F__stat
|
|
+static time_t psp_to_epoch_time(ScePspDateTime psp_time)
|
|
+{
|
|
+ struct tm conv_time;
|
|
+ conv_time.tm_year = psp_time.year;
|
|
+ conv_time.tm_mon = psp_time.month;
|
|
+ conv_time.tm_mday = psp_time.day;
|
|
+ conv_time.tm_hour = psp_time.hour;
|
|
+ conv_time.tm_min = psp_time.minute;
|
|
+ conv_time.tm_sec = psp_time.second;
|
|
+ conv_time.tm_isdst = -1;
|
|
+ return mktime(&conv_time);
|
|
+}
|
|
+
|
|
+int _stat(const char *filename, struct stat *buf)
|
|
+{
|
|
+ SceIoStat psp_stat;
|
|
+ char dest[MAXPATHLEN + 1];
|
|
+ int ret;
|
|
+
|
|
+ if(__psp_path_absolute(filename, dest, MAXPATHLEN) < 0) {
|
|
+ errno = ENAMETOOLONG;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ memset(buf, '\0', sizeof(struct stat));
|
|
+ ret = sceIoGetstat(dest, &psp_stat);
|
|
+ if (ret < 0) {
|
|
+ return __psp_set_errno(ret);
|
|
+ }
|
|
+
|
|
+ buf->st_ctime = psp_to_epoch_time(psp_stat.st_ctime);
|
|
+ buf->st_atime = psp_to_epoch_time(psp_stat.st_atime);
|
|
+ buf->st_mtime = psp_to_epoch_time(psp_stat.st_mtime);
|
|
+
|
|
+ buf->st_mode = (psp_stat.st_mode & 0xfff) |
|
|
+ ((FIO_S_ISLNK(psp_stat.st_mode))?(S_IFLNK):(0)) |
|
|
+ ((FIO_S_ISREG(psp_stat.st_mode))?(S_IFREG):(0)) |
|
|
+ ((FIO_S_ISDIR(psp_stat.st_mode))?(S_IFDIR):(0));
|
|
+ buf->st_size = psp_stat.st_size;
|
|
+ return 0;
|
|
+}
|
|
+#endif
|
|
+
|
|
+/* from stat.h in ps2sdk, this function may be correct */
|
|
+#define FIO_CST_SIZE 0x0004
|
|
+
|
|
+#ifdef F_truncate
|
|
+int truncate(const char *filename, off_t length)
|
|
+{
|
|
+ SceIoStat psp_stat;
|
|
+ char dest[MAXPATHLEN + 1];
|
|
+
|
|
+ if(__psp_path_absolute(filename, dest, MAXPATHLEN) < 0) {
|
|
+ errno = ENAMETOOLONG;
|
|
+ return -1;
|
|
+ }
|
|
+
|
|
+ psp_stat.st_size = length;
|
|
+ if(length < 0)
|
|
+ {
|
|
+ errno = EINVAL;
|
|
+ return -1;
|
|
+ }
|
|
+ return __psp_set_errno(sceIoChstat(dest, &psp_stat, FIO_CST_SIZE));
|
|
+}
|
|
+#endif
|
|
+
|
|
+/* Unsupported newlib system calls. */
|
|
+#ifdef F__fork
|
|
+pid_t fork(void)
|
|
+{
|
|
+ errno = ENOSYS;
|
|
+ return (pid_t) -1;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F__getpid
|
|
+pid_t _getpid(void)
|
|
+{
|
|
+ errno = ENOSYS;
|
|
+ return (pid_t) -1;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F__kill
|
|
+int _kill(int unused, int unused2)
|
|
+{
|
|
+ errno = ENOSYS;
|
|
+ return -1;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F__wait
|
|
+pid_t _wait(int *unused)
|
|
+{
|
|
+ errno = ENOSYS;
|
|
+ return (pid_t) -1;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_access
|
|
+int access(const char *fn, int flags)
|
|
+{
|
|
+ struct stat s;
|
|
+ if (stat(fn, &s))
|
|
+ return -1;
|
|
+ if (s.st_mode & S_IFDIR)
|
|
+ return 0;
|
|
+ if (flags & W_OK)
|
|
+ {
|
|
+ if (s.st_mode & S_IWRITE)
|
|
+ return 0;
|
|
+ errno = EACCES;
|
|
+ return -1;
|
|
+ }
|
|
+ return 0;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_tzset
|
|
+void tzset(void)
|
|
+{
|
|
+ static int initialized = 0;
|
|
+
|
|
+ if (!initialized)
|
|
+ {
|
|
+ initialized = 1;
|
|
+
|
|
+ /* Don't init if TZ has already been set once, this probably means the user
|
|
+ wanted to override what we would set below. */
|
|
+ if (getenv("TZ") == NULL)
|
|
+ {
|
|
+ /* Initialize timezone from PSP configuration */
|
|
+ int tzOffset = 0;
|
|
+ sceUtilityGetSystemParamInt(PSP_SYSTEMPARAM_ID_INT_TIMEZONE, &tzOffset);
|
|
+ int tzOffsetAbs = tzOffset < 0 ? -tzOffset : tzOffset;
|
|
+ int hours = tzOffsetAbs / 60;
|
|
+ int minutes = tzOffsetAbs - hours * 60;
|
|
+ int pspDaylight = 0;
|
|
+ sceUtilityGetSystemParamInt(PSP_SYSTEMPARAM_ID_INT_DAYLIGHTSAVINGS, &pspDaylight);
|
|
+ static char tz[18];
|
|
+ sprintf(tz, "GMT%s%02i:%02i%s", tzOffset < 0 ? "+" : "-", hours, minutes, pspDaylight ? "daylight" : "");
|
|
+ setenv("TZ", tz, 1);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ _tzset_r(_REENT);
|
|
+}
|
|
+#endif
|
|
+
|
|
+/* Exit. */
|
|
+#if defined(F__exit) || defined(F_glue__exit)
|
|
+extern int sce_newlib_nocreate_thread_in_start __attribute__((weak));
|
|
+
|
|
+extern int __psp_free_heap(void);
|
|
+
|
|
+void _exit(int status)
|
|
+{
|
|
+ if (&sce_newlib_nocreate_thread_in_start != NULL) {
|
|
+ /* Free the heap created by _sbrk(). */
|
|
+ __psp_free_heap();
|
|
+
|
|
+ sceKernelSelfStopUnloadModule(1, 0, NULL);
|
|
+ } else {
|
|
+ if (status == 0) {
|
|
+ /* Free the heap created by _sbrk(). */
|
|
+ __psp_free_heap();
|
|
+ }
|
|
+
|
|
+ sceKernelExitThread(status);
|
|
+ }
|
|
+
|
|
+ while (1) ;
|
|
+}
|
|
+
|
|
+/* Note: This function is being linked into _exit.o.
|
|
+
|
|
+ Because __psp_libc_init is a weak import in crt0.c, the linker
|
|
+ chooses to ignore an object file in libc.a that contains just this
|
|
+ function, since it's not necessary for successful compilation.
|
|
+
|
|
+ By putting it instead in _exit.o, which is already used by crt0.c,
|
|
+ the linker sees __psp_libc_init and resolves the symbol properly.
|
|
+*/
|
|
+void __psp_libc_init(int argc, char *argv[])
|
|
+{
|
|
+ int fd;
|
|
+ (void) argc;
|
|
+
|
|
+ /* Initialize cwd from this program's path */
|
|
+ __psp_init_cwd(argv[0]);
|
|
+
|
|
+ /* Initialize filenamap */
|
|
+ memset(__psp_filename_map, '\0', sizeof(char *) * __PSP_FILENO_MAX);
|
|
+ fd = sceKernelStdin();
|
|
+ if ((fd >= 0) && (fd < __PSP_FILENO_MAX)) {
|
|
+ __psp_filename_map[fd] = strdup(" __PSP_STDIO");
|
|
+ }
|
|
+ fd = sceKernelStdout();
|
|
+ if ((fd >= 0) && (fd < __PSP_FILENO_MAX)) {
|
|
+ __psp_filename_map[fd] = strdup(" __PSP_STDIO");
|
|
+ }
|
|
+ fd = sceKernelStderr();
|
|
+ if ((fd >= 0) && (fd < __PSP_FILENO_MAX)) {
|
|
+ __psp_filename_map[fd] = strdup(" __PSP_STDIO");
|
|
+ }
|
|
+}
|
|
+
|
|
+#endif /* F__exit */
|
|
+
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/pspcwd.c 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/pspcwd.c 2005-10-06 05:24:40.000000000 -0400
|
|
@@ -0,0 +1,167 @@
|
|
+/*
|
|
+ * PSP Software Development Kit - http://www.pspdev.org
|
|
+ * -----------------------------------------------------------------------
|
|
+ * Licensed under the BSD license, see LICENSE in PSPSDK root for details.
|
|
+ *
|
|
+ * pspcwd.c - Current working directory emulation helper functions
|
|
+ *
|
|
+ * Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org>
|
|
+ * Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
|
|
+ * Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
|
|
+ * Copyright (c) 2005 Jim Paris <jim@jtan.com>
|
|
+ *
|
|
+ */
|
|
+#include <string.h>
|
|
+#include <sys/types.h>
|
|
+#include <sys/unistd.h>
|
|
+
|
|
+#include <psptypes.h>
|
|
+#include <pspiofilemgr.h>
|
|
+
|
|
+char __psp_cwd[MAXPATHLEN + 1] = { 0 };
|
|
+char * __psp_filename_map[1024];
|
|
+
|
|
+/* Set the current working directory (CWD) to the path where the module was launched. */
|
|
+void __psp_init_cwd(char *argv_0)
|
|
+{
|
|
+ if (argv_0 != NULL) {
|
|
+ char base_path[MAXPATHLEN + 1];
|
|
+ char *end;
|
|
+
|
|
+ strncpy(base_path, argv_0, sizeof(base_path) - 1);
|
|
+ base_path[sizeof(base_path) - 1] = '\0';
|
|
+ end = strrchr(base_path, '/');
|
|
+ if (end != NULL) {
|
|
+ *(end + 1) = '\0';
|
|
+ chdir(base_path);
|
|
+ }
|
|
+ }
|
|
+}
|
|
+
|
|
+/* Return the number of bytes taken up by the "drive:" prefix,
|
|
+ or -1 if it's not found */
|
|
+int __psp_get_drive(const char *d)
|
|
+{
|
|
+ int i;
|
|
+ for(i=0; d[i]; i++) {
|
|
+ if(! ((d[i] >= 'a' && d[i] <= 'z') ||
|
|
+ (d[i] >= '0' && d[i] <= '9') ))
|
|
+ break;
|
|
+ }
|
|
+ if(d[i] == ':') return i+1;
|
|
+ return -1;
|
|
+}
|
|
+
|
|
+/* Like strcpy, but returns 0 if the string doesn't fit */
|
|
+int __psp_safe_strcpy(char *out, const char *in, int maxlen)
|
|
+{
|
|
+ for( ; maxlen > 0 && *in ; maxlen-- )
|
|
+ *(out++) = *(in++);
|
|
+ if(maxlen < 1) return 0;
|
|
+ *out = 0;
|
|
+ return 1;
|
|
+}
|
|
+
|
|
+/* Like strcat, but returns 0 if the string doesn't fit */
|
|
+int __psp_safe_strcat(char *out, const char *in, int maxlen)
|
|
+{
|
|
+ for( ; *out ; out++,maxlen-- )
|
|
+ continue;
|
|
+ return __psp_safe_strcpy(out, in, maxlen);
|
|
+}
|
|
+
|
|
+/* Normalize a pathname (without leading "drive:") by removing
|
|
+ . and .. components, duplicated /, etc. */
|
|
+int __psp_path_normalize(char *out, int len)
|
|
+{
|
|
+ int i, j;
|
|
+ int first, next;
|
|
+
|
|
+ /* First append "/" to make the rest easier */
|
|
+ if(!__psp_safe_strcat(out,"/",len)) return -10;
|
|
+
|
|
+ /* Convert "//" to "/" */
|
|
+ for(i=0; out[i+1]; i++) {
|
|
+ if(out[i]=='/' && out[i+1]=='/') {
|
|
+ for(j=i+1; out[j]; j++)
|
|
+ out[j] = out[j+1];
|
|
+ i--;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ /* Convert "/./" to "/" */
|
|
+ for(i=0; out[i] && out[i+1] && out[i+2]; i++) {
|
|
+ if(out[i]=='/' && out[i+1]=='.' && out[i+2]=='/') {
|
|
+ for(j=i+1; out[j]; j++)
|
|
+ out[j] = out[j+2];
|
|
+ i--;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ /* Convert "/asdf/../" to "/" until we can't anymore. Also
|
|
+ * convert leading "/../" to "/" */
|
|
+ first = next = 0;
|
|
+ while(1) {
|
|
+ /* If a "../" follows, remove it and the parent */
|
|
+ if(out[next+1] && out[next+1]=='.' &&
|
|
+ out[next+2] && out[next+2]=='.' &&
|
|
+ out[next+3] && out[next+3]=='/') {
|
|
+ for(j=0; out[first+j+1]; j++)
|
|
+ out[first+j+1] = out[next+j+4];
|
|
+ first = next = 0;
|
|
+ continue;
|
|
+ }
|
|
+
|
|
+ /* Find next slash */
|
|
+ first = next;
|
|
+ for(next=first+1; out[next] && out[next] != '/'; next++)
|
|
+ continue;
|
|
+ if(!out[next]) break;
|
|
+ }
|
|
+
|
|
+ /* Remove trailing "/" */
|
|
+ for(i=1; out[i]; i++)
|
|
+ continue;
|
|
+ if(i > 1 && out[i-1] == '/')
|
|
+ out[i-1] = 0;
|
|
+
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+/* Convert relative path to absolute path. */
|
|
+int __psp_path_absolute(const char *in, char *out, int len)
|
|
+{
|
|
+ int dr;
|
|
+
|
|
+ /* See what the relative URL starts with */
|
|
+ dr = __psp_get_drive(in);
|
|
+ if(dr > 0 && in[dr] == '/') {
|
|
+ /* It starts with "drive:/", so it's already absolute */
|
|
+ if(!__psp_safe_strcpy(out, in, len))
|
|
+ return -1;
|
|
+ } else if(in[0] == '/') {
|
|
+ /* It's absolute, but missing the drive, so use cwd's drive */
|
|
+ if(strlen(__psp_cwd) >= len)
|
|
+ return -2;
|
|
+ strcpy(out, __psp_cwd);
|
|
+ dr = __psp_get_drive(out);
|
|
+ out[dr] = 0;
|
|
+ if(!__psp_safe_strcat(out, in, len))
|
|
+ return -3;
|
|
+ } else {
|
|
+ /* It's not absolute, so append it to the current cwd */
|
|
+ if(strlen(__psp_cwd) >= len)
|
|
+ return -4;
|
|
+ strcpy(out, __psp_cwd);
|
|
+ if(!__psp_safe_strcat(out, "/", len))
|
|
+ return -6;
|
|
+ if(!__psp_safe_strcat(out, in, len))
|
|
+ return -7;
|
|
+ }
|
|
+
|
|
+ /* Now normalize the pathname portion */
|
|
+ dr = __psp_get_drive(out);
|
|
+ if(dr < 0) dr = 0;
|
|
+ return __psp_path_normalize(out + dr, len - dr);
|
|
+}
|
|
+
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/sys/dirent.h 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/sys/dirent.h 2005-10-20 00:38:25.000000000 -0400
|
|
@@ -0,0 +1,39 @@
|
|
+#ifndef _SYS_DIRENT_H
|
|
+#define _SYS_DIRENT_H
|
|
+
|
|
+/* PSP dirent.h, based on pspiofilemgr_dirent.h
|
|
+ by Jim Paris <jim@jtan.com> */
|
|
+
|
|
+#ifdef __cplusplus
|
|
+extern "C" {
|
|
+#endif
|
|
+
|
|
+#include <pspiofilemgr_dirent.h>
|
|
+
|
|
+#define MAXNAMLEN 255
|
|
+
|
|
+/* Same as SceIoDirent, just with a different name. */
|
|
+struct dirent {
|
|
+ /** File status. */
|
|
+ SceIoStat d_stat;
|
|
+ /** File name. */
|
|
+ char d_name[256];
|
|
+ /** Device-specific data. */
|
|
+ void * d_private;
|
|
+ int dummy;
|
|
+};
|
|
+
|
|
+typedef struct {
|
|
+ SceUID uid;
|
|
+ struct dirent de;
|
|
+} DIR;
|
|
+
|
|
+DIR *opendir (const char *);
|
|
+struct dirent *readdir (DIR *);
|
|
+int closedir (DIR *);
|
|
+
|
|
+#ifdef __cplusplus
|
|
+}
|
|
+#endif
|
|
+
|
|
+#endif
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/sys/errno.h 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/sys/errno.h 2005-10-25 05:58:18.000000000 -0400
|
|
@@ -0,0 +1,158 @@
|
|
+/* errno.h for PSP, based on newlib/libc/include/sys/errno.h. */
|
|
+
|
|
+#ifndef _SYS_ERRNO_H_
|
|
+#ifdef __cplusplus
|
|
+extern "C" {
|
|
+#endif
|
|
+#define _SYS_ERRNO_H_
|
|
+
|
|
+#include <sys/reent.h>
|
|
+
|
|
+#ifndef _REENT_ONLY
|
|
+#define errno (*__errno())
|
|
+extern int *__errno _PARAMS ((void));
|
|
+#endif
|
|
+
|
|
+/* Please don't use these variables directly.
|
|
+ Use strerror instead. */
|
|
+extern __IMPORT _CONST char * _CONST _sys_errlist[];
|
|
+extern __IMPORT int _sys_nerr;
|
|
+#ifdef __CYGWIN__
|
|
+extern __IMPORT const char * const sys_errlist[];
|
|
+extern __IMPORT int sys_nerr;
|
|
+#endif
|
|
+
|
|
+#define __errno_r(ptr) ((ptr)->_errno)
|
|
+
|
|
+#define EPERM 1 /* Not super-user */
|
|
+#define ENOENT 2 /* No such file or directory */
|
|
+#define ESRCH 3 /* No such process */
|
|
+#define EINTR 4 /* Interrupted system call */
|
|
+#define EIO 5 /* I/O error */
|
|
+#define ENXIO 6 /* No such device or address */
|
|
+#define E2BIG 7 /* Arg list too long */
|
|
+#define ENOEXEC 8 /* Exec format error */
|
|
+#define EBADF 9 /* Bad file number */
|
|
+#define ECHILD 10 /* No children */
|
|
+#define EAGAIN 11 /* No more processes */
|
|
+#define ENOMEM 12 /* Not enough core */
|
|
+#define EACCES 13 /* Permission denied */
|
|
+#define EFAULT 14 /* Bad address */
|
|
+#define ENOTBLK 15 /* Block device required */
|
|
+#define EBUSY 16 /* Mount device busy */
|
|
+#define EEXIST 17 /* File exists */
|
|
+#define EXDEV 18 /* Cross-device link */
|
|
+#define ENODEV 19 /* No such device */
|
|
+#define ENOTDIR 20 /* Not a directory */
|
|
+#define EISDIR 21 /* Is a directory */
|
|
+#define EINVAL 22 /* Invalid argument */
|
|
+#define ENFILE 23 /* Too many open files in system */
|
|
+#define EMFILE 24 /* Too many open files */
|
|
+#define ENOTTY 25 /* Not a typewriter */
|
|
+#define ETXTBSY 26 /* Text file busy */
|
|
+#define EFBIG 27 /* File too large */
|
|
+#define ENOSPC 28 /* No space left on device */
|
|
+#define ESPIPE 29 /* Illegal seek */
|
|
+#define EROFS 30 /* Read only file system */
|
|
+#define EMLINK 31 /* Too many links */
|
|
+#define EPIPE 32 /* Broken pipe */
|
|
+#define EDOM 33 /* Math arg out of domain of func */
|
|
+#define ERANGE 34 /* Math result not representable */
|
|
+#define ENOMSG 35 /* No message of desired type */
|
|
+#define EIDRM 36 /* Identifier removed */
|
|
+#define ECHRNG 37 /* Channel number out of range */
|
|
+#define EL2NSYNC 38 /* Level 2 not synchronized */
|
|
+#define EL3HLT 39 /* Level 3 halted */
|
|
+#define EL3RST 40 /* Level 3 reset */
|
|
+#define ELNRNG 41 /* Link number out of range */
|
|
+#define EUNATCH 42 /* Protocol driver not attached */
|
|
+#define ENOCSI 43 /* No CSI structure available */
|
|
+#define EL2HLT 44 /* Level 2 halted */
|
|
+#define EDEADLK 45 /* Deadlock condition */
|
|
+#define ENOLCK 46 /* No record locks available */
|
|
+#define EBADE 50 /* Invalid exchange */
|
|
+#define EBADR 51 /* Invalid request descriptor */
|
|
+#define EXFULL 52 /* Exchange full */
|
|
+#define ENOANO 53 /* No anode */
|
|
+#define EBADRQC 54 /* Invalid request code */
|
|
+#define EBADSLT 55 /* Invalid slot */
|
|
+#define EDEADLOCK 56 /* File locking deadlock error */
|
|
+#define EBFONT 57 /* Bad font file fmt */
|
|
+#define ENOSTR 60 /* Device not a stream */
|
|
+#define ENODATA 61 /* No data (for no delay io) */
|
|
+#define ETIME 62 /* Timer expired */
|
|
+#define ENOSR 63 /* Out of streams resources */
|
|
+#define ENONET 64 /* Machine is not on the network */
|
|
+#define ENOPKG 65 /* Package not installed */
|
|
+#define EREMOTE 66 /* The object is remote */
|
|
+#define ENOLINK 67 /* The link has been severed */
|
|
+#define EADV 68 /* Advertise error */
|
|
+#define ESRMNT 69 /* Srmount error */
|
|
+#define ECOMM 70 /* Communication error on send */
|
|
+#define EPROTO 71 /* Protocol error */
|
|
+#define EMULTIHOP 74 /* Multihop attempted */
|
|
+#define ELBIN 75 /* Inode is remote (not really error) */
|
|
+#define EDOTDOT 76 /* Cross mount point (not really error) */
|
|
+#define EBADMSG 77 /* Trying to read unreadable message */
|
|
+#define EFTYPE 79 /* Inappropriate file type or format */
|
|
+#define ENOTUNIQ 80 /* Given log. name not unique */
|
|
+#define EBADFD 81 /* f.d. invalid for this operation */
|
|
+#define EREMCHG 82 /* Remote address changed */
|
|
+#define ELIBACC 83 /* Can't access a needed shared lib */
|
|
+#define ELIBBAD 84 /* Accessing a corrupted shared lib */
|
|
+#define ELIBSCN 85 /* .lib section in a.out corrupted */
|
|
+#define ELIBMAX 86 /* Attempting to link in too many libs */
|
|
+#define ELIBEXEC 87 /* Attempting to exec a shared library */
|
|
+#define ENOSYS 88 /* Function not implemented */
|
|
+#define ENMFILE 89 /* No more files */
|
|
+#define ENOTEMPTY 90 /* Directory not empty */
|
|
+#define ENAMETOOLONG 91 /* File or path name too long */
|
|
+#define ELOOP 92 /* Too many symbolic links */
|
|
+#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
|
|
+#define EPFNOSUPPORT 96 /* Protocol family not supported */
|
|
+#define ECONNRESET 104 /* Connection reset by peer */
|
|
+#define ENOBUFS 105 /* No buffer space available */
|
|
+#define EAFNOSUPPORT 106 /* Address family not supported by protocol family */
|
|
+#define EPROTOTYPE 107 /* Protocol wrong type for socket */
|
|
+#define ENOTSOCK 108 /* Socket operation on non-socket */
|
|
+#define ENOPROTOOPT 109 /* Protocol not available */
|
|
+#define ESHUTDOWN 110 /* Can't send after socket shutdown */
|
|
+#define ECONNREFUSED 111 /* Connection refused */
|
|
+#define EADDRINUSE 112 /* Address already in use */
|
|
+#define ECONNABORTED 113 /* Connection aborted */
|
|
+#define ENETUNREACH 114 /* Network is unreachable */
|
|
+#define ENETDOWN 115 /* Network interface is not configured */
|
|
+#define ETIMEDOUT 116 /* Connection timed out */
|
|
+#define EHOSTDOWN 117 /* Host is down */
|
|
+#define EHOSTUNREACH 118 /* Host is unreachable */
|
|
+#define EINPROGRESS 119 /* Connection already in progress */
|
|
+#define EALREADY 120 /* Socket already connected */
|
|
+#define EDESTADDRREQ 121 /* Destination address required */
|
|
+#define EMSGSIZE 122 /* Message too long */
|
|
+#define EPROTONOSUPPORT 123 /* Unknown protocol */
|
|
+#define ESOCKTNOSUPPORT 124 /* Socket type not supported */
|
|
+#define EADDRNOTAVAIL 125 /* Address not available */
|
|
+#define ENETRESET 126
|
|
+#define EISCONN 127 /* Socket is already connected */
|
|
+#define ENOTCONN 128 /* Socket is not connected */
|
|
+#define ETOOMANYREFS 129
|
|
+#define EPROCLIM 130
|
|
+#define EUSERS 131
|
|
+#define EDQUOT 132
|
|
+#define ESTALE 133
|
|
+#define ENOTSUP 134 /* Not supported */
|
|
+#define ENOMEDIUM 135 /* No medium (in tape drive) */
|
|
+#define ENOSHARE 136 /* No such host or network path */
|
|
+#define ECASECLASH 137 /* Filename exists with different case */
|
|
+#define EILSEQ 138
|
|
+#define EOVERFLOW 139 /* Value too large for defined data type */
|
|
+
|
|
+/* From cygwin32. */
|
|
+#define EWOULDBLOCK EAGAIN /* Operation would block */
|
|
+
|
|
+#define __ELASTERROR 2000 /* Users can add values starting here */
|
|
+
|
|
+#ifdef __cplusplus
|
|
+}
|
|
+#endif
|
|
+#endif /* _SYS_ERRNO_H */
|
|
--- newlib-1.13.0.orig/newlib/libc/sys/psp/xprintf.c 1969-12-31 19:00:00.000000000 -0500
|
|
+++ newlib-psp/newlib/libc/sys/psp/xprintf.c 2005-11-01 03:28:52.000000000 -0500
|
|
@@ -0,0 +1,964 @@
|
|
+/*
|
|
+ * PSP Software Development Kit - http://www.pspdev.org
|
|
+ * -----------------------------------------------------------------------
|
|
+ * Licensed under the BSD license, see LICENSE in PSPSDK root for details.
|
|
+ *
|
|
+ * xprintf.c - Various *printf functions.
|
|
+ *
|
|
+ * Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org>
|
|
+ * Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
|
|
+ * Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
|
|
+ *
|
|
+ * $Id: newlib-1.13.0.patch,v 1.5 2005-11-03 19:19:12 wntrmute Exp $
|
|
+ */
|
|
+/* Code borrowed from mysql's xprintf.c, by Richard Hipp */
|
|
+/* This xprintf.c file on which this one is based is in public domain. */
|
|
+
|
|
+#include <stdio.h>
|
|
+#include <string.h>
|
|
+#include <malloc.h>
|
|
+
|
|
+#include <stdarg.h>
|
|
+#include <stddef.h>
|
|
+
|
|
+/*
|
|
+** The maximum number of digits of accuracy in a floating-point conversion.
|
|
+*/
|
|
+#define MAXDIG 20
|
|
+
|
|
+/* Instead of including ctype.h, use the isdigit() prototype because psplibc doesn't
|
|
+ know about newlib, and newlib defines isdigit as a macro that uses _ctype_. */
|
|
+int isdigit(int __c);
|
|
+
|
|
+int vxprintf(void (*func)(char *, int, void *), void *arg, const char *format, va_list ap);
|
|
+
|
|
+#ifdef F_vxprintf
|
|
+/*
|
|
+** Conversion types fall into various categories as defined by the
|
|
+** following enumeration.
|
|
+*/
|
|
+
|
|
+enum e_type { /* The type of the format field */
|
|
+ RADIX, /* Integer types. %d, %x, %o, and so forth */
|
|
+ FLOAT, /* Floating point. %f */
|
|
+ EXP, /* Exponentional notation. %e and %E */
|
|
+ GENERIC, /* Floating or exponential, depending on exponent. %g */
|
|
+ SIZE, /* Return number of characters processed so far. %n */
|
|
+ STRING, /* Strings. %s */
|
|
+ PERCENT, /* Percent symbol. %% */
|
|
+ CHAR, /* Characters. %c */
|
|
+ ERROR, /* Used to indicate no such conversion type */
|
|
+/* The rest are extensions, not normally found in printf() */
|
|
+ CHARLIT, /* Literal characters. %' */
|
|
+ SEEIT, /* Strings with visible control characters. %S */
|
|
+ MEM_STRING, /* A string which should be deleted after use. %z */
|
|
+ ORDINAL, /* 1st, 2nd, 3rd and so forth */
|
|
+};
|
|
+
|
|
+/*
|
|
+** Each builtin conversion character (ex: the 'd' in "%d") is described
|
|
+** by an instance of the following structure
|
|
+*/
|
|
+typedef struct s_info { /* Information about each format field */
|
|
+ int fmttype; /* The format field code letter */
|
|
+ int base; /* The base for radix conversion */
|
|
+ char *charset; /* The character set for conversion */
|
|
+ int flag_signed; /* Is the quantity signed? */
|
|
+ char *prefix; /* Prefix on non-zero values in alt format */
|
|
+ enum e_type type; /* Conversion paradigm */
|
|
+} info;
|
|
+
|
|
+/*
|
|
+** The following table is searched linearly, so it is good to put the
|
|
+** most frequently used conversion types first.
|
|
+*/
|
|
+static info fmtinfo[] = {
|
|
+ { 'd', 10, "0123456789", 1, 0, RADIX, },
|
|
+ { 's', 0, 0, 0, 0, STRING, },
|
|
+ { 'S', 0, 0, 0, 0, SEEIT, },
|
|
+ { 'z', 0, 0, 0, 0, MEM_STRING, },
|
|
+ { 'c', 0, 0, 0, 0, CHAR, },
|
|
+ { 'o', 8, "01234567", 0, "0", RADIX, },
|
|
+ { 'u', 10, "0123456789", 0, 0, RADIX, },
|
|
+ { 'x', 16, "0123456789abcdef", 0, "x0", RADIX, },
|
|
+ { 'X', 16, "0123456789ABCDEF", 0, "X0", RADIX, },
|
|
+ { 'r', 10, "0123456789", 0, 0, ORDINAL, },
|
|
+ { 'f', 0, 0, 1, 0, FLOAT, },
|
|
+ { 'e', 0, "e", 1, 0, EXP, },
|
|
+ { 'E', 0, "E", 1, 0, EXP, },
|
|
+ { 'g', 0, "e", 1, 0, GENERIC, },
|
|
+ { 'G', 0, "E", 1, 0, GENERIC, },
|
|
+ { 'i', 10, "0123456789", 1, 0, RADIX, },
|
|
+ { 'n', 0, 0, 0, 0, SIZE, },
|
|
+ { 'S', 0, 0, 0, 0, SEEIT, },
|
|
+ { '%', 0, 0, 0, 0, PERCENT, },
|
|
+ { 'b', 2, "01", 0, "b0", RADIX, }, /* Binary notation */
|
|
+ { 'p', 16, "0123456789ABCDEF", 0, "x0", RADIX, }, /* Pointers */
|
|
+ { '\'', 0, 0, 0, 0, CHARLIT, }, /* Literal char */
|
|
+};
|
|
+#define NINFO (sizeof(fmtinfo)/sizeof(info)) /* Size of the fmtinfo table */
|
|
+
|
|
+/*
|
|
+** If NOFLOATINGPOINT is defined, then none of the floating point
|
|
+** conversions will work.
|
|
+*/
|
|
+#ifndef NOFLOATINGPOINT
|
|
+/*
|
|
+** "*val" is a double such that 0.1 <= *val < 10.0
|
|
+** Return the ascii code for the leading digit of *val, then
|
|
+** multiply "*val" by 10.0 to renormalize.
|
|
+**
|
|
+** Example:
|
|
+** input: *val = 3.14159
|
|
+** output: *val = 1.4159 function return = '3'
|
|
+**
|
|
+** The counter *cnt is incremented each time. After counter exceeds
|
|
+** 16 (the number of significant digits in a 64-bit float) '0' is
|
|
+** always returned.
|
|
+*/
|
|
+static int getdigit(long double *val, int *cnt){
|
|
+ int digit;
|
|
+ long double d;
|
|
+ if( (*cnt)++ >= MAXDIG ) return '0';
|
|
+ digit = (int)*val;
|
|
+ d = digit;
|
|
+ digit += '0';
|
|
+ *val = (*val - d)*10.0;
|
|
+ return digit;
|
|
+}
|
|
+#endif
|
|
+
|
|
+/*
|
|
+** Setting the size of the BUFFER involves trade-offs. No %d or %f
|
|
+** conversion can have more than BUFSIZE characters. If the field
|
|
+** width is larger than BUFSIZE, it is silently shortened. On the
|
|
+** other hand, this routine consumes more stack space with larger
|
|
+** BUFSIZEs. If you have some threads for which you want to minimize
|
|
+** stack space, you should keep BUFSIZE small.
|
|
+*/
|
|
+#define BUFSIZE 100 /* Size of the output buffer */
|
|
+
|
|
+/*
|
|
+** The root program. All variations call this core.
|
|
+**
|
|
+** INPUTS:
|
|
+** func This is a pointer to a function taking three arguments
|
|
+** 1. A pointer to the list of characters to be output
|
|
+** (Note, this list is NOT null terminated.)
|
|
+** 2. An integer number of characters to be output.
|
|
+** (Note: This number might be zero.)
|
|
+** 3. A pointer to anything. Same as the "arg" parameter.
|
|
+**
|
|
+** arg This is the pointer to anything which will be passed as the
|
|
+** third argument to "func". Use it for whatever you like.
|
|
+**
|
|
+** fmt This is the format string, as in the usual print.
|
|
+**
|
|
+** ap This is a pointer to a list of arguments. Same as in
|
|
+** vfprint.
|
|
+**
|
|
+** OUTPUTS:
|
|
+** The return value is the total number of characters sent to
|
|
+** the function "func". Returns -1 on a error.
|
|
+**
|
|
+** Note that the order in which automatic variables are declared below
|
|
+** seems to make a big difference in determining how fast this beast
|
|
+** will run.
|
|
+*/
|
|
+
|
|
+int vxprintf(func,arg,format,ap)
|
|
+ void (*func)(char*,int,void*);
|
|
+ void *arg;
|
|
+ const char *format;
|
|
+ va_list ap;
|
|
+{
|
|
+ register const char *fmt; /* The format string. */
|
|
+ register int c; /* Next character in the format string */
|
|
+ register char *bufpt; /* Pointer to the conversion buffer */
|
|
+ register int precision; /* Precision of the current field */
|
|
+ register int length; /* Length of the field */
|
|
+ register int idx; /* A general purpose loop counter */
|
|
+ int count; /* Total number of characters output */
|
|
+ int width; /* Width of the current field */
|
|
+ int flag_leftjustify; /* True if "-" flag is present */
|
|
+ int flag_plussign; /* True if "+" flag is present */
|
|
+ int flag_blanksign; /* True if " " flag is present */
|
|
+ int flag_alternateform; /* True if "#" flag is present */
|
|
+ int flag_zeropad; /* True if field width constant starts with zero */
|
|
+ int flag_long; /* True if "l" flag is present */
|
|
+ int flag_center; /* True if "=" flag is present */
|
|
+ unsigned long long longvalue; /* Value for integer types */
|
|
+
|
|
+ long double realvalue; /* Value for real types */
|
|
+ info *infop; /* Pointer to the appropriate info structure */
|
|
+ char buf[BUFSIZE]; /* Conversion buffer */
|
|
+ char prefix; /* Prefix character. "+" or "-" or " " or '\0'. */
|
|
+ int errorflag = 0; /* True if an error is encountered */
|
|
+ enum e_type xtype; /* Conversion paradigm */
|
|
+ char *zMem = 0; /* String to be freed */
|
|
+ static char spaces[] =
|
|
+ " ";
|
|
+#define SPACESIZE (sizeof(spaces)-1)
|
|
+#ifndef NOFLOATINGPOINT
|
|
+ int exp; /* exponent of real numbers */
|
|
+ long double rounder; /* Used for rounding floating point values */
|
|
+ int flag_dp; /* True if decimal point should be shown */
|
|
+ int flag_rtz; /* True if trailing zeros should be removed */
|
|
+ int flag_exp; /* True to force display of the exponent */
|
|
+ int nsd; /* Number of significant digits returned */
|
|
+#endif
|
|
+
|
|
+ fmt = format; /* Put in a register for speed */
|
|
+ count = length = 0;
|
|
+ bufpt = 0;
|
|
+ for(; (c=(*fmt))!=0; ++fmt){
|
|
+ if( c!='%' ){
|
|
+ register int amt;
|
|
+ bufpt = (char *)fmt;
|
|
+ amt = 1;
|
|
+ while( (c=(*++fmt))!='%' && c!=0 ) amt++;
|
|
+ (*func)(bufpt,amt,arg);
|
|
+ count += amt;
|
|
+ if( c==0 ) break;
|
|
+ }
|
|
+ if( (c=(*++fmt))==0 ){
|
|
+ errorflag = 1;
|
|
+ (*func)("%",1,arg);
|
|
+ count++;
|
|
+ break;
|
|
+ }
|
|
+ /* Find out what flags are present */
|
|
+ flag_leftjustify = flag_plussign = flag_blanksign =
|
|
+ flag_alternateform = flag_zeropad = flag_center = 0;
|
|
+ do{
|
|
+ switch( c ){
|
|
+ case '-': flag_leftjustify = 1; c = 0; break;
|
|
+ case '+': flag_plussign = 1; c = 0; break;
|
|
+ case ' ': flag_blanksign = 1; c = 0; break;
|
|
+ case '#': flag_alternateform = 1; c = 0; break;
|
|
+ case '0': flag_zeropad = 1; c = 0; break;
|
|
+ case '=': flag_center = 1; c = 0; break;
|
|
+ default: break;
|
|
+ }
|
|
+ }while( c==0 && (c=(*++fmt))!=0 );
|
|
+ if( flag_center ) flag_leftjustify = 0;
|
|
+ /* Get the field width */
|
|
+ width = 0;
|
|
+ if( c=='*' ){
|
|
+ width = va_arg(ap,int);
|
|
+ if( width<0 ){
|
|
+ flag_leftjustify = 1;
|
|
+ width = -width;
|
|
+ }
|
|
+ c = *++fmt;
|
|
+ }else{
|
|
+ while( isdigit(c) ){
|
|
+ width = width*10 + c - '0';
|
|
+ c = *++fmt;
|
|
+ }
|
|
+ }
|
|
+ if( width > BUFSIZE-10 ){
|
|
+ width = BUFSIZE-10;
|
|
+ }
|
|
+ /* Get the precision */
|
|
+ if( c=='.' ){
|
|
+ precision = 0;
|
|
+ c = *++fmt;
|
|
+ if( c=='*' ){
|
|
+ precision = va_arg(ap,int);
|
|
+#ifndef COMPATIBILITY
|
|
+ /* This is sensible, but SUN OS 4.1 doesn't do it. */
|
|
+ if( precision<0 ) precision = -precision;
|
|
+#endif
|
|
+ c = *++fmt;
|
|
+ }else{
|
|
+ while( isdigit(c) ){
|
|
+ precision = precision*10 + c - '0';
|
|
+ c = *++fmt;
|
|
+ }
|
|
+ }
|
|
+ /* Limit the precision to prevent overflowing buf[] during conversion */
|
|
+ if( precision>BUFSIZE-40 ) precision = BUFSIZE-40;
|
|
+ }else{
|
|
+ precision = -1;
|
|
+ }
|
|
+ /* Get the conversion type modifier */
|
|
+ if( c=='l' ){
|
|
+ flag_long = 1;
|
|
+ c = *++fmt;
|
|
+ if( c == 'l' ){
|
|
+ flag_long = 2;
|
|
+ c = *++fmt;
|
|
+ }
|
|
+ }else{
|
|
+ flag_long = 0;
|
|
+ }
|
|
+ /* Fetch the info entry for the field */
|
|
+ infop = 0;
|
|
+ for(idx=0; idx<NINFO; idx++){
|
|
+ if( c==fmtinfo[idx].fmttype ){
|
|
+ infop = &fmtinfo[idx];
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ /* No info entry found. It must be an error. */
|
|
+ if( infop==0 ){
|
|
+ xtype = ERROR;
|
|
+ }else{
|
|
+ xtype = infop->type;
|
|
+ }
|
|
+
|
|
+ /*
|
|
+ ** At this point, variables are initialized as follows:
|
|
+ **
|
|
+ ** flag_alternateform TRUE if a '#' is present.
|
|
+ ** flag_plussign TRUE if a '+' is present.
|
|
+ ** flag_leftjustify TRUE if a '-' is present or if the
|
|
+ ** field width was negative.
|
|
+ ** flag_zeropad TRUE if the width began with 0.
|
|
+ ** flag_long TRUE if the letter 'l' (ell) prefixed
|
|
+ ** the conversion character.
|
|
+ ** flag_blanksign TRUE if a ' ' is present.
|
|
+ ** width The specified field width. This is
|
|
+ ** always non-negative. Zero is the default.
|
|
+ ** precision The specified precision. The default
|
|
+ ** is -1.
|
|
+ ** xtype The class of the conversion.
|
|
+ ** infop Pointer to the appropriate info struct.
|
|
+ */
|
|
+ switch( xtype ){
|
|
+ case ORDINAL:
|
|
+ case RADIX:
|
|
+ if(( flag_long>1 )&&( infop->flag_signed )){
|
|
+ signed long long t = va_arg(ap,signed long long);
|
|
+ longvalue = t;
|
|
+ }else if(( flag_long>1 )&&( !infop->flag_signed )){
|
|
+ unsigned long long t = va_arg(ap,unsigned long long);
|
|
+ longvalue = t;
|
|
+ }else if(( flag_long )&&( infop->flag_signed )){
|
|
+ signed long t = va_arg(ap,signed long);
|
|
+ longvalue = t;
|
|
+ }else if(( flag_long )&&( !infop->flag_signed )){
|
|
+ unsigned long t = va_arg(ap,unsigned long);
|
|
+ longvalue = t;
|
|
+ }else if(( !flag_long )&&( infop->flag_signed )){
|
|
+ signed int t = va_arg(ap,signed int) & ((unsigned long) 0xffffffff);
|
|
+ longvalue = t;
|
|
+ }else{
|
|
+ unsigned int t = va_arg(ap,unsigned int) & ((unsigned long) 0xffffffff);
|
|
+ longvalue = t;
|
|
+ }
|
|
+#ifdef COMPATIBILITY
|
|
+ /* For the format %#x, the value zero is printed "0" not "0x0".
|
|
+ ** I think this is stupid. */
|
|
+ if( longvalue==0 ) flag_alternateform = 0;
|
|
+#else
|
|
+ /* More sensible: turn off the prefix for octal (to prevent "00"),
|
|
+ ** but leave the prefix for hex. */
|
|
+ if( longvalue==0 && infop->base==8 ) flag_alternateform = 0;
|
|
+#endif
|
|
+ if( infop->flag_signed ){
|
|
+ if( *(long long*)&longvalue<0 ){
|
|
+ longvalue = -*(long long*)&longvalue;
|
|
+ prefix = '-';
|
|
+ }else if( flag_plussign ) prefix = '+';
|
|
+ else if( flag_blanksign ) prefix = ' ';
|
|
+ else prefix = 0;
|
|
+ }else prefix = 0;
|
|
+ if( flag_zeropad && precision<width-(prefix!=0) ){
|
|
+ precision = width-(prefix!=0);
|
|
+ }
|
|
+ bufpt = &buf[BUFSIZE];
|
|
+ if( xtype==ORDINAL ){
|
|
+ long a,b;
|
|
+ a = longvalue%10;
|
|
+ b = longvalue%100;
|
|
+ bufpt -= 2;
|
|
+ if( a==0 || a>3 || (b>10 && b<14) ){
|
|
+ bufpt[0] = 't';
|
|
+ bufpt[1] = 'h';
|
|
+ }else if( a==1 ){
|
|
+ bufpt[0] = 's';
|
|
+ bufpt[1] = 't';
|
|
+ }else if( a==2 ){
|
|
+ bufpt[0] = 'n';
|
|
+ bufpt[1] = 'd';
|
|
+ }else if( a==3 ){
|
|
+ bufpt[0] = 'r';
|
|
+ bufpt[1] = 'd';
|
|
+ }
|
|
+ }
|
|
+ {
|
|
+ register char *cset; /* Use registers for speed */
|
|
+ register int base;
|
|
+ cset = infop->charset;
|
|
+ base = infop->base;
|
|
+ do{ /* Convert to ascii */
|
|
+ *(--bufpt) = cset[longvalue%base];
|
|
+ longvalue = longvalue/base;
|
|
+ }while( longvalue>0 );
|
|
+ }
|
|
+ length = (int)(&buf[BUFSIZE]-bufpt);
|
|
+ if(infop->fmttype == 'p')
|
|
+ {
|
|
+ precision = 8;
|
|
+ flag_alternateform = 1;
|
|
+ }
|
|
+
|
|
+ for(idx=precision-length; idx>0; idx--){
|
|
+ *(--bufpt) = '0'; /* Zero pad */
|
|
+ }
|
|
+ if( prefix ) *(--bufpt) = prefix; /* Add sign */
|
|
+ if( flag_alternateform && infop->prefix ){ /* Add "0" or "0x" */
|
|
+ char *pre, x;
|
|
+ pre = infop->prefix;
|
|
+ if( *bufpt!=pre[0] ){
|
|
+ for(pre=infop->prefix; (x=(*pre))!=0; pre++) *(--bufpt) = x;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ length = (int)(&buf[BUFSIZE]-bufpt);
|
|
+ break;
|
|
+ case FLOAT:
|
|
+ case EXP:
|
|
+ case GENERIC:
|
|
+ realvalue = va_arg(ap,double);
|
|
+#ifndef NOFLOATINGPOINT
|
|
+ if( precision<0 ) precision = 6; /* Set default precision */
|
|
+ if( precision>BUFSIZE-10 ) precision = BUFSIZE-10;
|
|
+ if( realvalue<0.0 ){
|
|
+ realvalue = -realvalue;
|
|
+ prefix = '-';
|
|
+ }else{
|
|
+ if( flag_plussign ) prefix = '+';
|
|
+ else if( flag_blanksign ) prefix = ' ';
|
|
+ else prefix = 0;
|
|
+ }
|
|
+ if( infop->type==GENERIC && precision>0 ) precision--;
|
|
+ rounder = 0.0;
|
|
+#ifdef COMPATIBILITY
|
|
+ /* Rounding works like BSD when the constant 0.4999 is used. Wierd! */
|
|
+ for(idx=precision, rounder=0.4999; idx>0; idx--, rounder*=0.1);
|
|
+#else
|
|
+ /* It makes more sense to use 0.5 */
|
|
+ if( precision>MAXDIG-1 ) idx = MAXDIG-1;
|
|
+ else idx = precision;
|
|
+ for(rounder=0.5; idx>0; idx--, rounder*=0.1);
|
|
+#endif
|
|
+ if( infop->type==FLOAT ) realvalue += rounder;
|
|
+ /* Normalize realvalue to within 10.0 > realvalue >= 1.0 */
|
|
+ exp = 0;
|
|
+ if( realvalue>0.0 ){
|
|
+ int k = 0;
|
|
+ while( realvalue>=1e8 && k++<100 ){ realvalue *= 1e-8; exp+=8; }
|
|
+ while( realvalue>=10.0 && k++<100 ){ realvalue *= 0.1; exp++; }
|
|
+ while( realvalue<1e-8 && k++<100 ){ realvalue *= 1e8; exp-=8; }
|
|
+ while( realvalue<1.0 && k++<100 ){ realvalue *= 10.0; exp--; }
|
|
+ if( k>=100 ){
|
|
+ bufpt = "NaN";
|
|
+ length = 3;
|
|
+ break;
|
|
+ }
|
|
+ }
|
|
+ bufpt = buf;
|
|
+ /*
|
|
+ ** If the field type is GENERIC, then convert to either EXP
|
|
+ ** or FLOAT, as appropriate.
|
|
+ */
|
|
+ flag_exp = xtype==EXP;
|
|
+ if( xtype!=FLOAT ){
|
|
+ realvalue += rounder;
|
|
+ if( realvalue>=10.0 ){ realvalue *= 0.1; exp++; }
|
|
+ }
|
|
+ if( xtype==GENERIC ){
|
|
+ flag_rtz = !flag_alternateform;
|
|
+ if( exp<-4 || exp>precision ){
|
|
+ xtype = EXP;
|
|
+ }else{
|
|
+ precision = precision - exp;
|
|
+ xtype = FLOAT;
|
|
+ }
|
|
+ }else{
|
|
+ flag_rtz = 0;
|
|
+ }
|
|
+ /*
|
|
+ ** The "exp+precision" test causes output to be of type EXP if
|
|
+ ** the precision is too large to fit in buf[].
|
|
+ */
|
|
+ nsd = 0;
|
|
+ if( xtype==FLOAT && exp+precision<BUFSIZE-30 ){
|
|
+ flag_dp = (precision>0 || flag_alternateform);
|
|
+ if( prefix ) *(bufpt++) = prefix; /* Sign */
|
|
+ if( exp<0 ) *(bufpt++) = '0'; /* Digits before "." */
|
|
+ else for(; exp>=0; exp--) *(bufpt++) = getdigit(&realvalue,&nsd);
|
|
+ if( flag_dp ) *(bufpt++) = '.'; /* The decimal point */
|
|
+ for(exp++; exp<0 && precision>0; precision--, exp++){
|
|
+ *(bufpt++) = '0';
|
|
+ }
|
|
+ while( (precision--)>0 ) *(bufpt++) = getdigit(&realvalue,&nsd);
|
|
+ *(bufpt--) = 0; /* Null terminate */
|
|
+ if( flag_rtz && flag_dp ){ /* Remove trailing zeros and "." */
|
|
+ while( bufpt>=buf && *bufpt=='0' ) *(bufpt--) = 0;
|
|
+ if( bufpt>=buf && *bufpt=='.' ) *(bufpt--) = 0;
|
|
+ }
|
|
+ bufpt++; /* point to next free slot */
|
|
+ }else{ /* EXP or GENERIC */
|
|
+ flag_dp = (precision>0 || flag_alternateform);
|
|
+ if( prefix ) *(bufpt++) = prefix; /* Sign */
|
|
+ *(bufpt++) = getdigit(&realvalue,&nsd); /* First digit */
|
|
+ if( flag_dp ) *(bufpt++) = '.'; /* Decimal point */
|
|
+ while( (precision--)>0 ) *(bufpt++) = getdigit(&realvalue,&nsd);
|
|
+ bufpt--; /* point to last digit */
|
|
+ if( flag_rtz && flag_dp ){ /* Remove tail zeros */
|
|
+ while( bufpt>=buf && *bufpt=='0' ) *(bufpt--) = 0;
|
|
+ if( bufpt>=buf && *bufpt=='.' ) *(bufpt--) = 0;
|
|
+ }
|
|
+ bufpt++; /* point to next free slot */
|
|
+ if( exp || flag_exp ){
|
|
+ *(bufpt++) = infop->charset[0];
|
|
+ if( exp<0 ){ *(bufpt++) = '-'; exp = -exp; } /* sign of exp */
|
|
+ else { *(bufpt++) = '+'; }
|
|
+ if( exp>=100 ){
|
|
+ *(bufpt++) = (exp/100)+'0'; /* 100's digit */
|
|
+ exp %= 100;
|
|
+ }
|
|
+ *(bufpt++) = exp/10+'0'; /* 10's digit */
|
|
+ *(bufpt++) = exp%10+'0'; /* 1's digit */
|
|
+ }
|
|
+ }
|
|
+ /* The converted number is in buf[] and zero terminated. Output it.
|
|
+ ** Note that the number is in the usual order, not reversed as with
|
|
+ ** integer conversions. */
|
|
+ length = (int)(bufpt-buf);
|
|
+ bufpt = buf;
|
|
+
|
|
+ /* Special case: Add leading zeros if the flag_zeropad flag is
|
|
+ ** set and we are not left justified */
|
|
+ if( flag_zeropad && !flag_leftjustify && length < width){
|
|
+ int i;
|
|
+ int nPad = width - length;
|
|
+ for(i=width; i>=nPad; i--){
|
|
+ bufpt[i] = bufpt[i-nPad];
|
|
+ }
|
|
+ i = prefix!=0;
|
|
+ while( nPad-- ) bufpt[i++] = '0';
|
|
+ length = width;
|
|
+ }
|
|
+#endif
|
|
+ break;
|
|
+ case SIZE:
|
|
+ *(va_arg(ap,int*)) = count;
|
|
+ length = width = 0;
|
|
+ break;
|
|
+ case PERCENT:
|
|
+ buf[0] = '%';
|
|
+ bufpt = buf;
|
|
+ length = 1;
|
|
+ break;
|
|
+ case CHARLIT:
|
|
+ case CHAR:
|
|
+ c = buf[0] = (xtype==CHAR ? va_arg(ap,int) : *++fmt);
|
|
+ if( precision>=0 ){
|
|
+ for(idx=1; idx<precision; idx++) buf[idx] = c;
|
|
+ length = precision;
|
|
+ }else{
|
|
+ length =1;
|
|
+ }
|
|
+ bufpt = buf;
|
|
+ break;
|
|
+ case STRING:
|
|
+ case MEM_STRING:
|
|
+ zMem = bufpt = va_arg(ap,char*);
|
|
+ if( bufpt==0 ) bufpt = "(null)";
|
|
+ length = strlen(bufpt);
|
|
+ if( precision>=0 && precision<length ) length = precision;
|
|
+ break;
|
|
+ case SEEIT:
|
|
+ {
|
|
+ int i;
|
|
+ int c;
|
|
+ char *arg = va_arg(ap,char*);
|
|
+ for(i=0; i<BUFSIZE-1 && (c = *arg++)!=0; i++){
|
|
+ if( c<0x20 || c>=0x7f ){
|
|
+ buf[i++] = '^';
|
|
+ buf[i] = (c&0x1f)+0x40;
|
|
+ }else{
|
|
+ buf[i] = c;
|
|
+ }
|
|
+ }
|
|
+ bufpt = buf;
|
|
+ length = i;
|
|
+ if( precision>=0 && precision<length ) length = precision;
|
|
+ }
|
|
+ break;
|
|
+ case ERROR:
|
|
+ buf[0] = '%';
|
|
+ buf[1] = c;
|
|
+ errorflag = 0;
|
|
+ idx = 1+(c!=0);
|
|
+ (*func)("%",idx,arg);
|
|
+ count += idx;
|
|
+ if( c==0 ) fmt--;
|
|
+ break;
|
|
+ }/* End switch over the format type */
|
|
+ /*
|
|
+ ** The text of the conversion is pointed to by "bufpt" and is
|
|
+ ** "length" characters long. The field width is "width". Do
|
|
+ ** the output.
|
|
+ */
|
|
+ if( !flag_leftjustify ){
|
|
+ register int nspace;
|
|
+ nspace = width-length;
|
|
+ if( nspace>0 ){
|
|
+ if( flag_center ){
|
|
+ nspace = nspace/2;
|
|
+ width -= nspace;
|
|
+ flag_leftjustify = 1;
|
|
+ }
|
|
+ count += nspace;
|
|
+ while( nspace>=SPACESIZE ){
|
|
+ (*func)(spaces,SPACESIZE,arg);
|
|
+ nspace -= SPACESIZE;
|
|
+ }
|
|
+ if( nspace>0 ) (*func)(spaces,nspace,arg);
|
|
+ }
|
|
+ }
|
|
+ if( length>0 ){
|
|
+ (*func)(bufpt,length,arg);
|
|
+ count += length;
|
|
+ }
|
|
+ if( xtype==MEM_STRING && zMem ){
|
|
+ free(zMem);
|
|
+ }
|
|
+ if( flag_leftjustify ){
|
|
+ register int nspace;
|
|
+ nspace = width-length;
|
|
+ if( nspace>0 ){
|
|
+ count += nspace;
|
|
+ while( nspace>=SPACESIZE ){
|
|
+ (*func)(spaces,SPACESIZE,arg);
|
|
+ nspace -= SPACESIZE;
|
|
+ }
|
|
+ if( nspace>0 ) (*func)(spaces,nspace,arg);
|
|
+ }
|
|
+ }
|
|
+ }/* End for loop over the format string */
|
|
+ return errorflag ? -1 : count;
|
|
+} /* End of function */
|
|
+#endif
|
|
+
|
|
+#ifdef F__xprintf
|
|
+/*
|
|
+** This non-standard function is still occasionally useful....
|
|
+*/
|
|
+int xprintf(
|
|
+ void (*func)(char*,int,void*),
|
|
+ void *arg,
|
|
+ const char *format,
|
|
+ ...
|
|
+){
|
|
+ va_list ap;
|
|
+ va_start(ap,format);
|
|
+ return vxprintf(func,arg,format,ap);
|
|
+}
|
|
+#endif
|
|
+
|
|
+/*
|
|
+** Now for string-print, also as found in any standard library.
|
|
+** Add to this the snprint function which stops added characters
|
|
+** to the string at a given length.
|
|
+**
|
|
+** Note that snprint returns the length of the string as it would
|
|
+** be if there were no limit on the output.
|
|
+*/
|
|
+struct s_strargument { /* Describes the string being written to */
|
|
+ char *next; /* Next free slot in the string */
|
|
+ char *last; /* Last available slot in the string */
|
|
+};
|
|
+
|
|
+void __sout(char *, int, void *);
|
|
+#ifdef F___sout
|
|
+void __sout(txt,amt,arg)
|
|
+ char *txt;
|
|
+ int amt;
|
|
+ void *arg;
|
|
+{
|
|
+ register char *head;
|
|
+ register const char *t;
|
|
+ register int a;
|
|
+ register char *tail;
|
|
+ a = amt;
|
|
+ t = txt;
|
|
+ head = ((struct s_strargument*)arg)->next;
|
|
+ tail = ((struct s_strargument*)arg)->last;
|
|
+ if( tail ){
|
|
+ while( a-- >0 && head<tail ) *(head++) = *(t++);
|
|
+ }else{
|
|
+ while( a-- >0 ) *(head++) = *(t++);
|
|
+ }
|
|
+ *head = 0;
|
|
+ ((struct s_strargument*)arg)->next = head;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_vsnprintf
|
|
+int vsnprintf(char *buf, size_t n, const char *fmt, va_list ap){
|
|
+ struct s_strargument arg;
|
|
+ arg.next = buf;
|
|
+ arg.last = &buf[n-1];
|
|
+ *buf = 0;
|
|
+ return vxprintf(__sout,&arg,fmt,ap);
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_snprintf
|
|
+int snprintf(char *str, size_t sz, const char *format, ...)
|
|
+{
|
|
+ va_list args;
|
|
+ struct s_strargument arg;
|
|
+ int ret;
|
|
+
|
|
+ arg.next = str;
|
|
+ arg.last = &str[sz-1];
|
|
+
|
|
+ va_start(args, format);
|
|
+ ret = vxprintf(__sout, &arg, format, args);
|
|
+ va_end(args);
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_vsprintf
|
|
+int vsprintf(char *buf, const char *fmt, va_list ap){
|
|
+ struct s_strargument arg;
|
|
+ arg.next = buf;
|
|
+ arg.last = NULL;
|
|
+ *buf = 0;
|
|
+ return vxprintf(__sout,&arg,fmt,ap);
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_sprintf
|
|
+__attribute__((weak))
|
|
+int sprintf (char *str, const char *format, ...)
|
|
+{
|
|
+ va_list args;
|
|
+ struct s_strargument arg;
|
|
+ int ret;
|
|
+
|
|
+ arg.next = str;
|
|
+ arg.last = NULL;
|
|
+
|
|
+ va_start(args, format);
|
|
+ ret = vxprintf(__sout, &arg, format, args);
|
|
+ va_end(args);
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+#endif
|
|
+
|
|
+/*
|
|
+** The following section of code handles the mprintf routine, that
|
|
+** writes to memory obtained from malloc().
|
|
+*/
|
|
+
|
|
+/* This structure is used to store state information about the
|
|
+** write in progress
|
|
+*/
|
|
+__attribute__((weak))
|
|
+struct sgMprintf {
|
|
+ char *zBase; /* A base allocation */
|
|
+ char *zText; /* The string collected so far */
|
|
+ int nChar; /* Length of the string so far */
|
|
+ int nAlloc; /* Amount of space allocated in zText */
|
|
+};
|
|
+
|
|
+void __mout(char *, int, void*);
|
|
+
|
|
+#ifdef F___mout
|
|
+/* The xprintf callback function. */
|
|
+void __mout(zNewText,nNewChar,arg)
|
|
+ char *zNewText;
|
|
+ int nNewChar;
|
|
+ void *arg;
|
|
+{
|
|
+ struct sgMprintf *pM = (struct sgMprintf*)arg;
|
|
+ if( pM->nChar + nNewChar + 1 > pM->nAlloc ){
|
|
+ pM->nAlloc = pM->nChar + nNewChar*2 + 1;
|
|
+ if( pM->zText==pM->zBase ){
|
|
+ pM->zText = malloc(pM->nAlloc);
|
|
+ if( pM->zText && pM->nChar ) memcpy(pM->zText,pM->zBase,pM->nChar);
|
|
+ }else{
|
|
+ pM->zText = realloc(pM->zText, pM->nAlloc);
|
|
+ }
|
|
+ }
|
|
+ if( pM->zText ){
|
|
+ memcpy(&pM->zText[pM->nChar], zNewText, nNewChar);
|
|
+ pM->nChar += nNewChar;
|
|
+ pM->zText[pM->nChar] = 0;
|
|
+ }
|
|
+}
|
|
+#endif
|
|
+
|
|
+/*
|
|
+** mprintf() works like printf(), but allocations memory to hold the
|
|
+** resulting string and returns a pointer to the allocated memory.
|
|
+**
|
|
+** We changed the name to TclMPrint() to conform with the Tcl private
|
|
+** routine naming conventions.
|
|
+*/
|
|
+
|
|
+#ifdef F_mprintf
|
|
+char *mprintf(const char *zFormat, ...){
|
|
+ va_list ap;
|
|
+ struct sgMprintf sMprintf;
|
|
+ char *zNew;
|
|
+ char zBuf[200];
|
|
+
|
|
+ va_start(ap,zFormat);
|
|
+ sMprintf.nChar = 0;
|
|
+ sMprintf.nAlloc = sizeof(zBuf);
|
|
+ sMprintf.zText = zBuf;
|
|
+ sMprintf.zBase = zBuf;
|
|
+ vxprintf(__mout,&sMprintf,zFormat,ap);
|
|
+ va_end(ap);
|
|
+ if( sMprintf.zText==sMprintf.zBase ){
|
|
+ zNew = malloc( sMprintf.nChar+1 );
|
|
+ if( zNew ) strcpy(zNew,zBuf);
|
|
+ }else{
|
|
+ zNew = realloc(sMprintf.zText,sMprintf.nChar+1);
|
|
+ }
|
|
+
|
|
+ return zNew;
|
|
+}
|
|
+#endif
|
|
+
|
|
+/* This is the varargs version of mprintf.
|
|
+**
|
|
+** The name is changed to TclVMPrintf() to conform with Tcl naming
|
|
+** conventions.
|
|
+*/
|
|
+#ifdef F_vmprintf
|
|
+char *vmprintf(const char *zFormat,va_list ap){
|
|
+ struct sgMprintf sMprintf;
|
|
+ char zBuf[200];
|
|
+ sMprintf.nChar = 0;
|
|
+ sMprintf.zText = zBuf;
|
|
+ sMprintf.nAlloc = sizeof(zBuf);
|
|
+ sMprintf.zBase = zBuf;
|
|
+ vxprintf(__mout,&sMprintf,zFormat,ap);
|
|
+ if( sMprintf.zText==sMprintf.zBase ){
|
|
+ sMprintf.zText = malloc( strlen(zBuf)+1 );
|
|
+ if( sMprintf.zText ) strcpy(sMprintf.zText,zBuf);
|
|
+ }else{
|
|
+ sMprintf.zText = realloc(sMprintf.zText,sMprintf.nChar+1);
|
|
+ }
|
|
+ return sMprintf.zText;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_asprintf
|
|
+int asprintf(char ** strp, const char *zFormat, ...){
|
|
+ va_list ap;
|
|
+ struct sgMprintf sMprintf;
|
|
+ char *zNew;
|
|
+ char zBuf[200];
|
|
+
|
|
+ va_start(ap,zFormat);
|
|
+ sMprintf.nChar = 0;
|
|
+ sMprintf.nAlloc = sizeof(zBuf);
|
|
+ sMprintf.zText = zBuf;
|
|
+ sMprintf.zBase = zBuf;
|
|
+ vxprintf(__mout,&sMprintf,zFormat,ap);
|
|
+ va_end(ap);
|
|
+ if( sMprintf.zText==sMprintf.zBase ){
|
|
+ zNew = malloc( sMprintf.nChar+1 );
|
|
+ if( zNew ) strcpy(zNew,zBuf);
|
|
+ }else{
|
|
+ zNew = realloc(sMprintf.zText,sMprintf.nChar+1);
|
|
+ }
|
|
+
|
|
+ *strp = zNew;
|
|
+
|
|
+ return sMprintf.nChar+1;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_vasprintf
|
|
+int vasprintf(char **strp, const char *format, va_list ap) {
|
|
+ struct sgMprintf sMprintf;
|
|
+ char zBuf[200];
|
|
+ sMprintf.nChar = 0;
|
|
+ sMprintf.zText = zBuf;
|
|
+ sMprintf.nAlloc = sizeof(zBuf);
|
|
+ sMprintf.zBase = zBuf;
|
|
+ vxprintf(__mout,&sMprintf,format,ap);
|
|
+ if( sMprintf.zText==sMprintf.zBase ){
|
|
+ sMprintf.zText = malloc( strlen(zBuf)+1 );
|
|
+ if( sMprintf.zText ) strcpy(sMprintf.zText,zBuf);
|
|
+ }else{
|
|
+ sMprintf.zText = realloc(sMprintf.zText,sMprintf.nChar+1);
|
|
+ }
|
|
+ *strp = sMprintf.zText;
|
|
+ return sMprintf.nChar;
|
|
+}
|
|
+#endif
|
|
+
|
|
+/*
|
|
+** The following section of code handles the standard fprintf routines
|
|
+** for pthreads.
|
|
+*/
|
|
+
|
|
+void __fout(char *, int, void *);
|
|
+
|
|
+#ifdef F___fout
|
|
+void __fout(zNewText,nNewChar,arg)
|
|
+ char *zNewText;
|
|
+ int nNewChar;
|
|
+ void *arg;
|
|
+{
|
|
+ fwrite(zNewText,1,nNewChar,(FILE*)arg);
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_fprintf
|
|
+/* The public interface routines */
|
|
+int fprintf(FILE *pOut, const char *zFormat, ...){
|
|
+ va_list ap;
|
|
+ int retc;
|
|
+
|
|
+ va_start(ap,zFormat);
|
|
+ retc = vxprintf(__fout,pOut,zFormat,ap);
|
|
+ va_end(ap);
|
|
+ return retc;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_vfprintf
|
|
+int vfprintf(FILE *pOut, const char *zFormat, va_list ap){
|
|
+ return vxprintf(__fout,pOut,zFormat,ap);
|
|
+}
|
|
+#endif
|
|
+
|
|
+
|
|
+#ifdef F_printf
|
|
+int printf(const char *format, ...)
|
|
+{
|
|
+ va_list args;
|
|
+ int ret;
|
|
+
|
|
+ va_start(args, format);
|
|
+ ret = vprintf(format, args);
|
|
+ va_end(args);
|
|
+
|
|
+ return ret;
|
|
+}
|
|
+#endif
|
|
+
|
|
+#ifdef F_vprintf
|
|
+int vprintf(const char *format, va_list args)
|
|
+{
|
|
+ return vxprintf(__fout, stdout, format, args);
|
|
+}
|
|
+#endif
|