diff --git a/dkpsp/patches/binutils-2.16.1.patch b/dkpsp/patches/binutils-2.16.1.patch index 04b42ed..b665948 100644 --- a/dkpsp/patches/binutils-2.16.1.patch +++ b/dkpsp/patches/binutils-2.16.1.patch @@ -1,6 +1,6 @@ diff -Nbaur binutils-2.16.1/bfd/Makefile.am binutils-2.16.1-psp/bfd/Makefile.am --- binutils-2.16.1/bfd/Makefile.am Sun Jun 12 19:58:52 2005 -+++ binutils-2.16.1-psp/bfd/Makefile.am Wed Aug 24 01:57:12 2005 ++++ binutils-2.16.1-psp/bfd/Makefile.am Thu Nov 3 18:04:53 2005 @@ -3,7 +3,7 @@ AUTOMAKE_OPTIONS = 1.9 cygnus @@ -12,7 +12,7 @@ diff -Nbaur binutils-2.16.1/bfd/Makefile.am binutils-2.16.1-psp/bfd/Makefile.am CSEARCH = -I. -I$(srcdir) -I$(INCDIR) diff -Nbaur binutils-2.16.1/bfd/Makefile.in binutils-2.16.1-psp/bfd/Makefile.in --- binutils-2.16.1/bfd/Makefile.in Sun Jun 12 19:58:55 2005 -+++ binutils-2.16.1-psp/bfd/Makefile.in Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/bfd/Makefile.in Thu Nov 3 18:04:53 2005 @@ -250,7 +250,7 @@ AUTOMAKE_OPTIONS = 1.9 cygnus @@ -24,7 +24,7 @@ diff -Nbaur binutils-2.16.1/bfd/Makefile.in binutils-2.16.1-psp/bfd/Makefile.in MKDEP = gcc -MM diff -Nbaur binutils-2.16.1/bfd/archures.c binutils-2.16.1-psp/bfd/archures.c --- binutils-2.16.1/bfd/archures.c Mon Jan 17 14:08:03 2005 -+++ binutils-2.16.1-psp/bfd/archures.c Wed Aug 24 01:57:12 2005 ++++ binutils-2.16.1-psp/bfd/archures.c Thu Nov 3 18:04:53 2005 @@ -155,6 +155,7 @@ .#define bfd_mach_mips16 16 .#define bfd_mach_mips5 5 @@ -35,7 +35,7 @@ diff -Nbaur binutils-2.16.1/bfd/archures.c binutils-2.16.1-psp/bfd/archures.c .#define bfd_mach_mipsisa64 64 diff -Nbaur binutils-2.16.1/bfd/bfd-in2.h binutils-2.16.1-psp/bfd/bfd-in2.h --- binutils-2.16.1/bfd/bfd-in2.h Wed Mar 2 21:23:20 2005 -+++ binutils-2.16.1-psp/bfd/bfd-in2.h Wed Aug 24 01:57:12 2005 ++++ binutils-2.16.1-psp/bfd/bfd-in2.h Thu Nov 3 18:04:54 2005 @@ -1600,6 +1600,7 @@ #define bfd_mach_mips16 16 #define bfd_mach_mips5 5 @@ -46,7 +46,7 @@ diff -Nbaur binutils-2.16.1/bfd/bfd-in2.h binutils-2.16.1-psp/bfd/bfd-in2.h #define bfd_mach_mipsisa64 64 diff -Nbaur binutils-2.16.1/bfd/cpu-mips.c binutils-2.16.1-psp/bfd/cpu-mips.c --- binutils-2.16.1/bfd/cpu-mips.c Thu Mar 3 11:40:58 2005 -+++ binutils-2.16.1-psp/bfd/cpu-mips.c Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/bfd/cpu-mips.c Thu Nov 3 18:04:54 2005 @@ -86,6 +86,7 @@ I_mipsisa64, I_mipsisa64r2, @@ -67,7 +67,7 @@ diff -Nbaur binutils-2.16.1/bfd/cpu-mips.c binutils-2.16.1-psp/bfd/cpu-mips.c /* The default architecture is mips:3000, but with a machine number of diff -Nbaur binutils-2.16.1/bfd/doc/chew.c binutils-2.16.1-psp/bfd/doc/chew.c --- binutils-2.16.1/bfd/doc/chew.c Thu Mar 3 11:41:02 2005 -+++ binutils-2.16.1-psp/bfd/doc/chew.c Wed Aug 24 02:05:41 2005 ++++ binutils-2.16.1-psp/bfd/doc/chew.c Thu Nov 3 18:30:10 2005 @@ -91,6 +91,12 @@ #define DEF_SIZE 5000 #define STACK 50 @@ -83,7 +83,7 @@ diff -Nbaur binutils-2.16.1/bfd/doc/chew.c binutils-2.16.1-psp/bfd/doc/chew.c diff -Nbaur binutils-2.16.1/bfd/elfxx-mips.c binutils-2.16.1-psp/bfd/elfxx-mips.c --- binutils-2.16.1/bfd/elfxx-mips.c Sat May 28 22:58:29 2005 -+++ binutils-2.16.1-psp/bfd/elfxx-mips.c Wed Aug 24 01:57:12 2005 ++++ binutils-2.16.1-psp/bfd/elfxx-mips.c Thu Nov 3 18:04:54 2005 @@ -4669,6 +4669,9 @@ case E_MIPS_MACH_SB1: return bfd_mach_mips_sb1; @@ -105,7 +105,24 @@ diff -Nbaur binutils-2.16.1/bfd/elfxx-mips.c binutils-2.16.1-psp/bfd/elfxx-mips. case bfd_mach_mipsisa32: val = E_MIPS_ARCH_32; break; -@@ -9641,6 +9648,7 @@ +@@ -8422,6 +8429,8 @@ + if (dynobj != NULL && force_local && h->root.type != STT_TLS) + { + got = mips_elf_got_section (dynobj, FALSE); ++ if (got) ++ { + g = mips_elf_section_data (got)->u.got_info; + + if (g->next) +@@ -8472,6 +8481,7 @@ + g->global_gotno--; + } + } ++ } + + _bfd_elf_link_hash_hide_symbol (info, &h->root, force_local); + } +@@ -9641,6 +9651,7 @@ /* MIPS II extensions. */ { bfd_mach_mips4000, bfd_mach_mips6000 }, { bfd_mach_mipsisa32, bfd_mach_mips6000 }, @@ -115,15 +132,15 @@ diff -Nbaur binutils-2.16.1/bfd/elfxx-mips.c binutils-2.16.1-psp/bfd/elfxx-mips. { bfd_mach_mips6000, bfd_mach_mips3000 }, diff -Nbaur binutils-2.16.1/bfd/version.h binutils-2.16.1-psp/bfd/version.h --- binutils-2.16.1/bfd/version.h Sun Jun 12 18:37:59 2005 -+++ binutils-2.16.1-psp/bfd/version.h Wed Aug 24 01:58:28 2005 ++++ binutils-2.16.1-psp/bfd/version.h Thu Nov 3 18:04:54 2005 @@ -1,3 +1,3 @@ -#define BFD_VERSION_DATE 20050612 -+#define BFD_VERSION_DATE (PSPDEV 20050822) ++#define BFD_VERSION_DATE (PSPDEV 20051022) #define BFD_VERSION @bfd_version@ #define BFD_VERSION_STRING @bfd_version_string@ diff -Nbaur binutils-2.16.1/binutils/readelf.c binutils-2.16.1-psp/binutils/readelf.c --- binutils-2.16.1/binutils/readelf.c Wed Apr 20 19:43:36 2005 -+++ binutils-2.16.1-psp/binutils/readelf.c Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/binutils/readelf.c Thu Nov 3 18:04:54 2005 @@ -2043,6 +2043,7 @@ case E_MIPS_MACH_5500: strcat (buf, ", 5500"); break; case E_MIPS_MACH_SB1: strcat (buf, ", sb1"); break; @@ -134,7 +151,7 @@ diff -Nbaur binutils-2.16.1/binutils/readelf.c binutils-2.16.1-psp/binutils/read MIPS ELF does not specify EF_MIPS_MACH, it is a GNU diff -Nbaur binutils-2.16.1/config.sub binutils-2.16.1-psp/config.sub --- binutils-2.16.1/config.sub Wed Jan 19 00:34:56 2005 -+++ binutils-2.16.1-psp/config.sub Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/config.sub Thu Nov 3 18:04:54 2005 @@ -253,6 +253,7 @@ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ @@ -164,7 +181,7 @@ diff -Nbaur binutils-2.16.1/config.sub binutils-2.16.1-psp/config.sub basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` diff -Nbaur binutils-2.16.1/gas/config/tc-mips.c binutils-2.16.1-psp/gas/config/tc-mips.c --- binutils-2.16.1/gas/config/tc-mips.c Sun Jun 12 19:07:03 2005 -+++ binutils-2.16.1-psp/gas/config/tc-mips.c Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/gas/config/tc-mips.c Thu Nov 3 18:04:54 2005 @@ -365,11 +365,15 @@ #define CPU_HAS_MDMX(cpu) (FALSE \ ) @@ -182,7 +199,95 @@ diff -Nbaur binutils-2.16.1/gas/config/tc-mips.c binutils-2.16.1-psp/gas/config/ /* True if mflo and mfhi can be immediately followed by instructions which write to the HI and LO registers. -@@ -7817,6 +7821,30 @@ +@@ -393,6 +397,7 @@ + || mips_opts.arch == CPU_R12000 \ + || mips_opts.arch == CPU_RM7000 \ + || mips_opts.arch == CPU_VR5500 \ ++ || mips_opts.arch == CPU_ALLEGREX \ + ) + + /* Whether the processor uses hardware interlocks to protect reads +@@ -1161,6 +1166,20 @@ + static segT pdr_seg; + #endif + ++/* Expressions saved for use in VFPU immediate mode macros. */ ++ ++static expressionS vimm_expr[4]; ++static expressionS voffset_expr[4]; ++ ++/* VFPU instruction prefixes to apply to the current VFPU instruction. */ ++ ++static int vfpu_has_dprefix; ++static int vfpu_has_sprefix; ++static int vfpu_has_tprefix; ++static char vfpu_dprefix_operands[64]; ++static char vfpu_sprefix_operands[64]; ++static char vfpu_tprefix_operands[64]; ++ + /* The default target format to use. */ + + const char * +@@ -1641,6 +1660,58 @@ + return; + } + ++ /* If we've generated operands for a VFPU prefix instruction then we need ++ to assemble and append the prefix instruction before emitting the ++ instruction it prefixes. Note that in mips_ip prefix operands do not ++ cause any side effects with imm_expr or offset_expr. If they did ++ we'd have to save and restore them here. */ ++ if (CPU_IS_ALLEGREX (mips_opts.arch) ++ && (vfpu_has_dprefix || vfpu_has_sprefix || vfpu_has_tprefix)) ++ { ++ if (mips_opts.noreorder && ++ (history[0].insn_mo->pinfo & (INSN_UNCOND_BRANCH_DELAY ++ | INSN_COND_BRANCH_DELAY ++ | INSN_COND_BRANCH_LIKELY))) ++ as_bad (_("VFPU instruction with prefix can't be used in a branch delay slot")); ++ ++ if (vfpu_has_dprefix) ++ { ++ struct mips_cl_insn dprefix_insn; ++ bfd_reloc_code_real_type dprefix_unused_reloc[3] ++ = {BFD_RELOC_UNUSED, BFD_RELOC_UNUSED, BFD_RELOC_UNUSED}; ++ char dprefix_str[80]; ++ ++ sprintf (dprefix_str, "vpfxd %s", vfpu_dprefix_operands); ++ mips_ip (str, &dprefix_insn); ++ append_insn (&dprefix_insn, NULL, dprefix_unused_reloc); ++ vfpu_has_dprefix = 0; ++ } ++ if (vfpu_has_sprefix) ++ { ++ struct mips_cl_insn sprefix_insn; ++ bfd_reloc_code_real_type sprefix_unused_reloc[3] ++ = {BFD_RELOC_UNUSED, BFD_RELOC_UNUSED, BFD_RELOC_UNUSED}; ++ char sprefix_str[80]; ++ ++ sprintf (sprefix_str, "vpfxs %s", vfpu_sprefix_operands); ++ mips_ip (str, &sprefix_insn); ++ append_insn (&sprefix_insn, NULL, sprefix_unused_reloc); ++ vfpu_has_sprefix = 0; ++ } ++ if (vfpu_has_tprefix) ++ { ++ struct mips_cl_insn tprefix_insn; ++ bfd_reloc_code_real_type tprefix_unused_reloc[3] ++ = {BFD_RELOC_UNUSED, BFD_RELOC_UNUSED, BFD_RELOC_UNUSED}; ++ char tprefix_str[80]; ++ ++ sprintf (tprefix_str, "vpfxt %s", vfpu_tprefix_operands); ++ mips_ip (str, &tprefix_insn); ++ append_insn (&tprefix_insn, NULL, tprefix_unused_reloc); ++ vfpu_has_tprefix = 0; ++ } ++ } ++ + if (insn.insn_mo->pinfo == INSN_MACRO) + { + macro_start (); +@@ -7817,6 +7888,30 @@ case '%': USE_BITS (OP_MASK_VECALIGN, OP_SH_VECALIGN); break; case '[': break; case ']': break; @@ -213,7 +318,525 @@ diff -Nbaur binutils-2.16.1/gas/config/tc-mips.c binutils-2.16.1-psp/gas/config/ default: as_bad (_("internal: bad mips opcode (unknown operand type `%c'): %s %s"), c, opc->name, opc->args); -@@ -8485,6 +8513,7 @@ +@@ -8125,6 +8220,517 @@ + } + break; + ++ case '?': /* VFPU extension character. */ ++ switch (*++args) ++ { ++ case '[': /* these must match exactly */ ++ case ']': ++ if (*s++ == *args) ++ continue; ++ break; ++ ++ case '0': /* Source or target prefix. */ ++ case '1': ++ case '2': ++ case '3': ++ { ++ char *orig_s = s; ++ int pos = *args - '0'; ++ int negation = 0; ++ int is_constant = 0; ++ int abs_consthi = 0; ++ int swz_constlo = 0; ++ int constant_code = 0; ++ int bad_format = 0; ++ unsigned int operand; ++ ++ if (*s == '-') ++ { ++ negation = 1; ++ ++s; ++ } ++ if (ISDIGIT (*s)) ++ { ++ is_constant = 1; ++ if (*s == '0') ++ constant_code = 0; ++ else if (*s == '1') ++ { ++ if (s[1] == '/') ++ { ++ s += 2; ++ if (*s == '2') ++ constant_code = 3; ++ else if (*s == '3') ++ constant_code = 5; ++ else if (*s == '4') ++ constant_code = 6; ++ else if (*s == '6') ++ constant_code = 7; ++ else ++ bad_format = 1; ++ } ++ else ++ constant_code = 1; ++ } ++ else if (*s == '2') ++ constant_code = 2; ++ else if (*s == '3') ++ constant_code = 4; ++ else ++ bad_format = 1; ++ ++ /* Bits 0-1 of the constant code are stored in the ++ SWZ/CST[1:0] field, and bit 2 is stored in the ++ ABS/CST[2] field. */ ++ swz_constlo = constant_code & VFPU_MASK_PFX_SWZ_CSTLO; ++ abs_consthi = constant_code >> 2; ++ } ++ else ++ { ++ if (*s == '|') ++ { ++ abs_consthi = 1; ++ ++s; ++ } ++ if (*s == 'x' || *s == 'X') ++ { ++ swz_constlo = 0; ++ ++s; ++ } ++ else if (*s == 'y' || *s == 'Y') ++ { ++ swz_constlo = 1; ++ ++s; ++ } ++ else if (*s == 'z' || *s == 'Z') ++ { ++ swz_constlo = 2; ++ ++s; ++ } ++ else if (*s == 'w' || *s == 'W') ++ { ++ swz_constlo = 3; ++ ++s; ++ } ++ else if (*s != ',' && *s != '|' ++ && ! IS_SPACE_OR_NUL (*s)) ++ bad_format = 1; ++ if (! bad_format) ++ { ++ /* Make sure the abs value was written properly. */ ++ if (*s == '|') ++ { ++ ++s; ++ if (! abs_consthi) ++ bad_format = 1; ++ } ++ else if (abs_consthi) ++ bad_format = 1; ++ } ++ } ++ ++ if (bad_format ++ || (*s != ',' && ! IS_SPACE_OR_NUL (*s))) ++ as_bad (_("Invalid prefix format (%s)"), orig_s); ++ ++ /* The bit positions of each field vary depending on the ++ position of our operand. We can't use INSERT_OPERAND() ++ as it would mask out the values set by other operands. */ ++ operand = (((negation & VFPU_MASK_PFX_NEG) ++ << (VFPU_SH_PFX_NEG + pos)) ++ || ((is_constant & VFPU_MASK_PFX_CST) ++ << (VFPU_SH_PFX_CST + pos)) ++ || ((abs_consthi & VFPU_MASK_PFX_ABS_CSTHI) ++ << (VFPU_SH_PFX_ABS_CSTHI + pos)) ++ || ((swz_constlo & VFPU_MASK_PFX_SWZ_CSTLO) ++ << (VFPU_SH_PFX_SWZ_CSTLO + pos * 2))); ++ ip->insn_opcode |= operand; ++ } ++ continue; ++ ++ case '4': /* Destination prefix. */ ++ case '5': ++ case '6': ++ case '7': ++ { ++ char *orig_s = s; ++ int mask = 0; ++ int saturation = 0; ++ int pos = *args - '4'; ++ unsigned int operand; ++ ++ if (*s == '[') ++ ++s; ++ if (*s == '-') ++ ++s; ++ if (*s == 'm' || *s == 'M') ++ { ++ mask = 1; ++ ++s; ++ } ++ else if (*s == '0') ++ { ++ saturation = 1; ++ ++s; ++ } ++ else if (*s == '1') ++ { ++ saturation = 3; ++ ++s; ++ } ++ if (*s == ':') ++ { ++ ++s; ++ if (*s == '+') ++ ++s; ++ if (*s == '1') ++ ++s; ++ } ++ if (*s == ']') ++ ++s; ++ if (*s != ',' && ! IS_SPACE_OR_NUL (*s)) ++ as_bad (_("Invalid prefix format (%s)"), orig_s); ++ ++ /* The position of the stored mask and saturation code ++ depend on the position of the prefix operand. Because ++ the bits aren't consecutive, we have to be careful to ++ insert them without masking out any other operands. */ ++ operand = (((mask & VFPU_MASK_PFX_MASK) ++ << (VFPU_SH_PFX_MASK + pos)) ++ || ((saturation & VFPU_MASK_PFX_SAT) ++ << (VFPU_SH_PFX_SAT + pos * 2))); ++ ip->insn_opcode |= operand; ++ } ++ continue; ++ ++ case 'a': /* Constant. */ ++ { ++ static const char * const vfpu_const_names[20] = { ++ "", "VFPU_HUGE", "VFPU_SQRT2", "VFPU_SQRT1_2", ++ "VFPU_2_SQRTPI", "VFPU_2_PI", "VFPU_1_PI", "VFPU_PI_4", ++ "VFPU_PI_2", "VFPU_PI", "VFPU_E", "VFPU_LOG2E", ++ "VFPU_LOG10E", "VFPU_LN2", "VFPU_LN10", "VFPU_2PI", ++ "VFPU_PI_6", "VFPU_LOG10TWO", "VFPU_LOG2TEN", "VFPU_SQRT3_2" ++ }; ++ const int vfpu_num_constants = ARRAY_SIZE (vfpu_const_names) - 1; ++ int i; ++ ++ if (!ISDIGIT (*s)) ++ { ++ /* Try to match one of the predefined constants. */ ++ for (i = 1; i <= vfpu_num_constants; i++) ++ if (!strcasecmp (s, vfpu_const_names[i])) ++ break; ++ if (i <= vfpu_num_constants) ++ s += strlen (vfpu_const_names[i]); ++ else ++ as_bad (_("Invalid constant code (%s)"), s); ++ INSERT_OPERAND (VFPU_CONST, *ip, i); ++ } ++ else ++ { ++ my_getExpression (&imm_expr, s); ++ check_absolute_expr (ip, &imm_expr); ++ if (imm_expr.X_add_number == 0 ++ || imm_expr.X_add_number > vfpu_num_constants) ++ as_bad (_("Improper constant code (%lu)"), ++ (unsigned long) imm_expr.X_add_number); ++ INSERT_OPERAND (VFPU_CONST, *ip, imm_expr.X_add_number); ++ imm_expr.X_op = O_absent; ++ s = expr_end; ++ } ++ } ++ continue; ++ ++ case 'b': ++ my_getExpression (&imm_expr, s); ++ check_absolute_expr (ip, &imm_expr); ++ if ((unsigned long) imm_expr.X_add_number > 31) ++ as_bad (_("Improper scale (%lu)"), ++ (unsigned long) imm_expr.X_add_number); ++ INSERT_OPERAND (VFPU_IMM5, *ip, imm_expr.X_add_number); ++ imm_expr.X_op = O_absent; ++ s = expr_end; ++ continue; ++ ++ case 'c': /* Condition code bit. */ ++ my_getExpression (&imm_expr, s); ++ check_absolute_expr (ip, &imm_expr); ++ if ((unsigned long) imm_expr.X_add_number > 5) ++ as_bad (_("Improper condition bit (%lu)"), ++ (unsigned long) imm_expr.X_add_number); ++ INSERT_OPERAND (VFPU_CC, *ip, imm_expr.X_add_number); ++ imm_expr.X_op = O_absent; ++ s = expr_end; ++ continue; ++ ++ case 'e': /* Condition code bit for conditional moves. */ ++ my_getExpression (&imm_expr, s); ++ check_absolute_expr (ip, &imm_expr); ++ if ((unsigned long) imm_expr.X_add_number > 6) ++ as_bad (_("Improper condition bit (%lu)"), ++ (unsigned long) imm_expr.X_add_number); ++ INSERT_OPERAND (VFPU_IMM3, *ip, imm_expr.X_add_number); ++ imm_expr.X_op = O_absent; ++ s = expr_end; ++ continue; ++ ++ case 'f': /* Condition code. */ ++ { ++ static const char * const vfpu_cond_names[16] = { ++ "FL", "EQ", "LT", "LE", "TR", "NE", "GE", "GT", ++ "EZ", "EN", "EI", "ES", "NZ", "NN", "NI", "NS" ++ }; ++ unsigned long cond; ++ int i, arg_count; ++ ++ if (!ISDIGIT (*s)) ++ { ++ for (i = 0; i < VFPU_NUM_CONDS; i++) ++ if (!strncasecmp (s, vfpu_cond_names[i], 2)) ++ break; ++ if (i < VFPU_NUM_CONDS) ++ s += 2; ++ else ++ as_bad (_("Invalid VFPU condition code (%s)"), s); ++ cond = i; ++ } ++ else ++ { ++ my_getExpression (&imm_expr, s); ++ check_absolute_expr (ip, &imm_expr); ++ cond = imm_expr.X_add_number; ++ if (cond >= VFPU_NUM_CONDS) ++ as_bad (_("Invalid VFPU condition code (%lu)"), cond); ++ imm_expr.X_op = O_absent; ++ s = expr_end; ++ } ++ ++ /* Verify that the right number of arguments were passed ++ for the selected condition code. */ ++ arg_count = *++args - '0'; ++ if (cond != VFPU_COND_FL && cond != VFPU_COND_TR ++ && ((cond >= VFPU_COND_EZ && arg_count < 1) ++ || (arg_count <= 1))) ++ as_bad (_("Invalid VFPU condition operation")); ++ INSERT_OPERAND (VFPU_COND, *ip, cond); ++ } ++ continue; ++ ++ case 'i': /* Wrap. */ ++ my_getExpression (&imm_expr, s); ++ check_absolute_expr (ip, &imm_expr); ++ if ((unsigned long) imm_expr.X_add_number > 255) ++ as_bad (_("Improper wrap (%lu)"), ++ (unsigned long) imm_expr.X_add_number); ++ INSERT_OPERAND (VFPU_IMM8, *ip, imm_expr.X_add_number); ++ imm_expr.X_op = O_absent; ++ s = expr_end; ++ continue; ++ ++ case 'o': /* VFPU 16-bit offset. */ ++ /* Check whether there is only a single bracketed expression ++ left. If so, it must be the base register and the ++ constant must be zero. */ ++ if (*s == '(' && strchr (s + 1, '(') == 0) ++ { ++ offset_expr.X_op = O_constant; ++ offset_expr.X_add_number = 0; ++ continue; ++ } ++ ++ /* If this value won't fit into a 16 bit offset, then go ++ find a macro that will generate the 32 bit offset ++ code pattern. */ ++ if (my_getSmallExpression (&offset_expr, offset_reloc, s) == 0 ++ && (offset_expr.X_op != O_constant ++ || offset_expr.X_add_number >= 0x8000 ++ || offset_expr.X_add_number < -0x8000)) ++ break; ++ ++ s = expr_end; ++ continue; ++ ++ case 'q': ++ case 'r': /* VFPU control register. */ ++ if (s[0] != '$' || !ISDIGIT (s[1])) ++ { ++ as_bad (_("Invalid VFPU control register name (%s)"), s); ++ continue; ++ } ++ ++ ++s; ++ regno = 0; ++ do ++ { ++ regno *= 10; ++ regno += *s - '0'; ++ ++s; ++ } ++ while (ISDIGIT (*s)); ++ if (regno < 128 || regno > 143) ++ as_bad (_("Invalid VFPU control register number (%d)"), regno); ++ else if (regno == 133 || regno == 134) ++ as_bad (_("Improper VFPU control register number (%d)"), regno); ++ if (*args == 'q') ++ INSERT_OPERAND (VFPU_VMTVC, *ip, regno); ++ else ++ INSERT_OPERAND (VFPU_VMFVC, *ip, regno); ++ continue; ++ ++ case 'u': /* 16-bit floating point constant. */ ++ { ++ if (s[0] == '0' && (s[1] == 'x' || s[1] == 'X')) ++ { ++ my_getExpression (&imm_expr, s); ++ check_absolute_expr (ip, &imm_expr); ++ if ((unsigned long) imm_expr.X_add_number > 0xffff) ++ as_bad (_("Improper half floating point constant: (%lu)"), ++ (unsigned long) imm_expr.X_add_number); ++ INSERT_OPERAND (VFPU_FLOAT16, *ip, imm_expr.X_add_number); ++ imm_expr.X_op = O_absent; ++ s = expr_end; ++ } ++ else ++ { ++ union flt2int { ++ unsigned long i; ++ float f; ++ } flt2int; ++ unsigned char temp[8]; ++ char *save_in; ++ char *err; ++ int len; ++ int sign, exponent, fraction, exponent16; ++ unsigned int float16 = 0; ++ ++ save_in = input_line_pointer; ++ input_line_pointer = s; ++ err = md_atof ('f', (char *) temp, &len); ++ s = input_line_pointer; ++ input_line_pointer = save_in; ++ if (err != NULL && *err != '\0') ++ { ++ as_bad (_("Bad half floating point constant: %s"), err); ++ memset (temp, '\0', sizeof temp); ++ } ++ ++ /* Convert the 32-bit IEEE754 float into the VFPU ++ 16-bit float format. */ ++ if (! target_big_endian) ++ flt2int.i = bfd_getl32 (temp); ++ else ++ flt2int.i = bfd_getb32 (temp); ++ /* TODO: There must be constants for these somewhere... */ ++ sign = (flt2int.i >> 31) & 0x1; ++ exponent = (flt2int.i >> 23) & 0xff; ++ fraction = flt2int.i & 0x7fffff; ++ exponent16 = exponent - 112; ++ if (exponent16 >= 0) ++ { ++ if (exponent16 > VFPU_FLOAT16_EXP_MAX ++ && exponent != 0xff) ++ { ++ as_warn (_("Half floating point overflow: %g"), ++ flt2int.f); ++ exponent16 = VFPU_FLOAT16_EXP_MAX; ++ fraction = 0; ++ } ++ else if (exponent16 <= VFPU_FLOAT16_EXP_MAX) ++ fraction = (flt2int.i >> 13) & VFPU_MASK_FLOAT16_FRAC; ++ else if (exponent == 0xff) ++ { ++ exponent16 = VFPU_FLOAT16_EXP_MAX; ++ if (! fraction) ++ fraction = 0; ++ else ++ fraction = 1; ++ } ++ } ++ else ++ { ++ if (exponent != 0 || fraction != 0) ++ as_warn (_("Half floating point underflow: %g"), ++ flt2int.f); ++ exponent16 = 0; ++ fraction = 0; ++ } ++ INSERT_BITS (float16, sign, VFPU_MASK_FLOAT16_SIGN, ++ VFPU_SH_FLOAT16_SIGN); ++ INSERT_BITS (float16, exponent16, VFPU_MASK_FLOAT16_EXP, ++ VFPU_SH_FLOAT16_EXP); ++ INSERT_BITS (float16, fraction, VFPU_MASK_FLOAT16_FRAC, ++ VFPU_SH_FLOAT16_FRAC); ++ INSERT_OPERAND (VFPU_FLOAT16, *ip, float16); ++ /* Parse the 16-bit constant. */ ++ sprintf ((char *) temp, "0x%04x", float16); ++ my_getExpression (&imm_expr, (char *) temp); ++ } ++ } ++ continue; ++ ++ case 'w': /* Rotation code. */ ++ { ++ int bad_code = 0; ++ int opsize; ++ ++ if (*s != '[') ++ { ++ my_getExpression (&imm_expr, s); ++ check_absolute_expr (ip, &imm_expr); ++ if ((unsigned long) imm_expr.X_add_number > 31) ++ as_bad (_("Improper rotation code (%lu)"), ++ (unsigned long) imm_expr.X_add_number); ++ INSERT_OPERAND (VFPU_ROT, *ip, imm_expr.X_add_number); ++ imm_expr.X_op = O_absent; ++ s = expr_end; ++ continue; ++ } ++ ++ ++ } ++ continue; ++ ++ case 'y': ++ /* Save the current immediate and offset expressions for ++ the lvi macro. */ ++ { ++ int slot = *++args - '0'; ++ ++ assert (slot >= 0 && slot < 4); ++ ++ memcpy (&vimm_expr[slot], &imm_expr, sizeof (imm_expr)); ++ memcpy (&voffset_expr[slot], &offset_expr, sizeof (offset_expr)); ++ imm_expr.X_op = O_absent; ++ offset_expr.X_op = O_absent; ++ imm_reloc[0] = BFD_RELOC_UNUSED; ++ imm_reloc[1] = BFD_RELOC_UNUSED; ++ imm_reloc[2] = BFD_RELOC_UNUSED; ++ offset_reloc[0] = BFD_RELOC_UNUSED; ++ offset_reloc[1] = BFD_RELOC_UNUSED; ++ offset_reloc[2] = BFD_RELOC_UNUSED; ++ } ++ continue; ++ ++ case 'z': /* Store to write buffer. */ ++ { ++ int wb = 0; ++ ++ if (strncasecmp (s, "WT", 2) == 0) ++ wb = 0; ++ else if (strncasecmp (s, "WB", 2) == 0) ++ wb = 1; ++ else ++ as_bad (_("Invalid memory access type (%s)"), s); ++ s += 2; ++ INSERT_OPERAND (VFPU_RWB, *ip, wb); ++ } ++ continue; ++ ++ } ++ break; ++ + case '<': /* must be at least one digit */ + /* + * According to the manual, if the shift amount is greater +@@ -8485,6 +9091,7 @@ if ((regno & 1) != 0 && HAVE_32BIT_FPRS @@ -221,7 +844,7 @@ diff -Nbaur binutils-2.16.1/gas/config/tc-mips.c binutils-2.16.1-psp/gas/config/ && ! (strcmp (str, "mtc1") == 0 || strcmp (str, "mfc1") == 0 || strcmp (str, "lwc1") == 0 -@@ -13743,6 +13772,8 @@ +@@ -13743,6 +14350,8 @@ /* MIPS II */ { "r6000", 0, ISA_MIPS2, CPU_R6000 }, @@ -232,7 +855,7 @@ diff -Nbaur binutils-2.16.1/gas/config/tc-mips.c binutils-2.16.1-psp/gas/config/ { "r4000", 0, ISA_MIPS3, CPU_R4000 }, diff -Nbaur binutils-2.16.1/gas/configure binutils-2.16.1-psp/gas/configure --- binutils-2.16.1/gas/configure Tue Mar 1 00:43:51 2005 -+++ binutils-2.16.1-psp/gas/configure Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/gas/configure Thu Nov 3 18:04:54 2005 @@ -4537,6 +4537,9 @@ mips64vr | mips64vrel) mips_cpu=vr4100 @@ -245,7 +868,7 @@ diff -Nbaur binutils-2.16.1/gas/configure binutils-2.16.1-psp/gas/configure ;; diff -Nbaur binutils-2.16.1/gas/configure.in binutils-2.16.1-psp/gas/configure.in --- binutils-2.16.1/gas/configure.in Tue Mar 1 00:43:57 2005 -+++ binutils-2.16.1-psp/gas/configure.in Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/gas/configure.in Thu Nov 3 18:04:54 2005 @@ -222,6 +222,9 @@ mips64vr | mips64vrel) mips_cpu=vr4100 @@ -256,9 +879,22 @@ diff -Nbaur binutils-2.16.1/gas/configure.in binutils-2.16.1-psp/gas/configure.i mipsisa32r2* | mipsisa64r2*) changequote(,)dnl mips_cpu=`echo $target_cpu | sed -e 's/[a-z]*..r2//' -e 's/el$//'` +diff -Nbaur binutils-2.16.1/gas/testsuite/gas/mips/mips.exp binutils-2.16.1-psp/gas/testsuite/gas/mips/mips.exp +--- binutils-2.16.1/gas/testsuite/gas/mips/mips.exp Tue Apr 19 18:09:45 2005 ++++ binutils-2.16.1-psp/gas/testsuite/gas/mips/mips.exp Thu Nov 3 18:04:54 2005 +@@ -382,6 +382,9 @@ + mips_arch_create sb1 64 mips64 { mips3d } \ + { -march=sb1 -mtune=sb1 } { -mmips:sb1 } \ + { mipsisa64sb1-*-* mipsisa64sb1el-*-* } ++mips_arch_create allegrex 32 mips2 { ror } \ ++ { -march=allegrex -mtune=allegrex } { -mmips:allegrex } \ ++ { mipsallegrex-*-* mipsallegrexel-*-* } + + + # diff -Nbaur binutils-2.16.1/include/bin-bugs.h binutils-2.16.1-psp/include/bin-bugs.h --- binutils-2.16.1/include/bin-bugs.h Fri Jul 23 16:40:19 2004 -+++ binutils-2.16.1-psp/include/bin-bugs.h Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/include/bin-bugs.h Thu Nov 3 18:04:54 2005 @@ -1,3 +1,3 @@ #ifndef REPORT_BUGS_TO -#define REPORT_BUGS_TO "" @@ -266,7 +902,7 @@ diff -Nbaur binutils-2.16.1/include/bin-bugs.h binutils-2.16.1-psp/include/bin-b #endif diff -Nbaur binutils-2.16.1/include/elf/common.h binutils-2.16.1-psp/include/elf/common.h --- binutils-2.16.1/include/elf/common.h Fri Oct 8 14:55:08 2004 -+++ binutils-2.16.1-psp/include/elf/common.h Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/include/elf/common.h Thu Nov 3 18:04:54 2005 @@ -93,6 +93,7 @@ #define ET_HIOS 0xFEFF /* Operating system-specific */ #define ET_LOPROC 0xFF00 /* Processor-specific */ @@ -277,7 +913,7 @@ diff -Nbaur binutils-2.16.1/include/elf/common.h binutils-2.16.1-psp/include/elf are officially assigned by registry@caldera.com. See below for a list of diff -Nbaur binutils-2.16.1/include/elf/mips.h binutils-2.16.1-psp/include/elf/mips.h --- binutils-2.16.1/include/elf/mips.h Thu Mar 3 11:58:06 2005 -+++ binutils-2.16.1-psp/include/elf/mips.h Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/include/elf/mips.h Thu Nov 3 18:04:54 2005 @@ -212,6 +212,7 @@ #define E_MIPS_MACH_5400 0x00910000 #define E_MIPS_MACH_5500 0x00980000 @@ -288,8 +924,8 @@ diff -Nbaur binutils-2.16.1/include/elf/mips.h binutils-2.16.1-psp/include/elf/m exist. Symbols with a st_shndx field corresponding to one of these diff -Nbaur binutils-2.16.1/include/opcode/mips.h binutils-2.16.1-psp/include/opcode/mips.h --- binutils-2.16.1/include/opcode/mips.h Thu Mar 3 11:58:10 2005 -+++ binutils-2.16.1-psp/include/opcode/mips.h Wed Aug 24 01:57:13 2005 -@@ -171,6 +171,83 @@ ++++ binutils-2.16.1-psp/include/opcode/mips.h Thu Nov 3 18:04:54 2005 +@@ -171,6 +171,97 @@ #define MDMX_FMTSEL_VEC_QH 0x15 #define MDMX_FMTSEL_VEC_OB 0x16 @@ -334,6 +970,18 @@ diff -Nbaur binutils-2.16.1/include/opcode/mips.h binutils-2.16.1-psp/include/op +#define VFPU_OP_VT_VS_VD 0xff800000 +#define VFPU_OPCODE_VMMUL 0xf0000000 + ++/* VFPU condition codes. FL and TR accept no arguments, while any conditions ++ above and including EZ only accept one argument. The rest require two ++ arguments. */ ++enum ++{ ++ VFPU_COND_FL, VFPU_COND_EQ, VFPU_COND_LT, VFPU_COND_LE, ++ VFPU_COND_TR, VFPU_COND_NE, VFPU_COND_GE, VFPU_COND_GT, ++ VFPU_COND_EZ, VFPU_COND_EN, VFPU_COND_EI, VFPU_COND_ES, ++ VFPU_COND_NZ, VFPU_COND_NN, VFPU_COND_NI, VFPU_COND_NS, ++ VFPU_NUM_CONDS ++}; ++ +/* VFPU prefix instruction operands. The *_SH_* values really specify where + the bitfield begins, as VFPU prefix instructions have four operands + encoded within the immediate field. */ @@ -343,9 +991,11 @@ diff -Nbaur binutils-2.16.1/include/opcode/mips.h binutils-2.16.1-psp/include/op +#define VFPU_MASK_PFX_CST 0x1 /* Constant. */ +#define VFPU_SH_PFX_ABS_CSTHI 8 +#define VFPU_MASK_PFX_ABS_CSTHI 0x1 /* Abs/Constant (bit 2). */ ++#define VFPU_SH_PFX_SWZ_CSTLO 0 +#define VFPU_MASK_PFX_SWZ_CSTLO 0x3 /* Swizzle/Constant (bits 0-1). */ +#define VFPU_SH_PFX_MASK 8 +#define VFPU_MASK_PFX_MASK 0x1 /* Mask. */ ++#define VFPU_SH_PFX_SAT 0 +#define VFPU_MASK_PFX_SAT 0x3 /* Saturation. */ + +/* Special handling of the vrot instructions. */ @@ -373,7 +1023,7 @@ diff -Nbaur binutils-2.16.1/include/opcode/mips.h binutils-2.16.1-psp/include/op /* This structure holds information for a particular instruction. */ struct mips_opcode -@@ -258,6 +335,29 @@ +@@ -258,6 +349,29 @@ Requires that "+A" or "+E" occur first to set position. Enforces: 32 < (pos+size) <= 64. @@ -403,7 +1053,7 @@ diff -Nbaur binutils-2.16.1/include/opcode/mips.h binutils-2.16.1-psp/include/op Floating point instructions: "D" 5 bit destination register (OP_*_FD) "M" 3 bit compare condition code (OP_*_CCC) (only used for mips4 and up) -@@ -442,6 +542,8 @@ +@@ -442,6 +556,8 @@ #define INSN_5400 0x01000000 /* NEC VR5500 instruction. */ #define INSN_5500 0x02000000 @@ -412,7 +1062,7 @@ diff -Nbaur binutils-2.16.1/include/opcode/mips.h binutils-2.16.1-psp/include/op /* MIPS ISA defines, use instead of hardcoding ISA level. */ -@@ -489,6 +591,7 @@ +@@ -489,6 +605,7 @@ #define CPU_MIPS64 64 #define CPU_MIPS64R2 65 #define CPU_SB1 12310201 /* octal 'SB', 01. */ @@ -420,7 +1070,7 @@ diff -Nbaur binutils-2.16.1/include/opcode/mips.h binutils-2.16.1-psp/include/op /* Test for membership in an ISA including chip specific ISAs. INSN is pointer to an element of the opcode table; ISA is the specified -@@ -510,6 +613,7 @@ +@@ -510,6 +627,7 @@ || (cpu == CPU_VR4120 && ((insn)->membership & INSN_4120) != 0) \ || (cpu == CPU_VR5400 && ((insn)->membership & INSN_5400) != 0) \ || (cpu == CPU_VR5500 && ((insn)->membership & INSN_5500) != 0) \ @@ -428,62 +1078,62 @@ diff -Nbaur binutils-2.16.1/include/opcode/mips.h binutils-2.16.1-psp/include/op || 0) /* Please keep this term for easier source merging. */ /* This is a list of macro expanded instructions. -@@ -625,6 +729,16 @@ +@@ -625,6 +743,16 @@ M_LL_AB, M_LLD_AB, M_LS_A, -+ M_LVHIP, -+ M_LVHIS, -+ M_LVIP, -+ M_LVIQ, -+ M_LVIS, -+ M_LVIT, -+ M_LVLQ_AB, -+ M_LVRQ_AB, -+ M_LVQ_AB, -+ M_LVQ_AB_2, ++ M_LVHI_P, ++ M_LVHI_S, ++ M_LVI_P, ++ M_LVI_Q, ++ M_LVI_S, ++ M_LVI_T, ++ M_LVL_Q_AB, ++ M_LVR_Q_AB, ++ M_LV_Q_AB, ++ M_LV_Q_AB_2, M_LW_A, M_LW_AB, M_LWC0_A, -@@ -714,6 +828,10 @@ +@@ -714,6 +842,10 @@ M_SUB_I, M_SUBU_I, M_SUBU_I_2, -+ M_SVLQ_AB, -+ M_SVQ_AB, -+ M_SVRQ_AB, -+ M_SVS_AB, ++ M_SVL_Q_AB, ++ M_SV_Q_AB, ++ M_SVR_Q_AB, ++ M_SV_S_AB, M_TEQ_I, M_TGE_I, M_TGEU_I, -@@ -728,14 +846,24 @@ +@@ -728,14 +860,24 @@ M_ULH_A, M_ULHU, M_ULHU_A, -+ M_ULVQ, -+ M_ULVQ_AB, -+ M_ULVS, ++ M_ULV_Q, ++ M_ULV_Q_AB, ++ M_ULV_S, M_ULW, M_ULW_A, M_USH, M_USH_A, -+ M_USVQ, -+ M_USVQ_AB, -+ M_USVS, ++ M_USV_Q, ++ M_USV_Q_AB, ++ M_USV_S, M_USW, M_USW_A, M_USD, M_USD_A, -+ M_VCMOVP, -+ M_VCMOVQ, -+ M_VCMOVS, -+ M_VCMOVT, ++ M_VCMOV_P, ++ M_VCMOV_Q, ++ M_VCMOV_S, ++ M_VCMOV_T, M_XOR_I, M_COP0, M_COP1, diff -Nbaur binutils-2.16.1/ld/Makefile.am binutils-2.16.1-psp/ld/Makefile.am --- binutils-2.16.1/ld/Makefile.am Thu Jan 20 19:37:49 2005 -+++ binutils-2.16.1-psp/ld/Makefile.am Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/ld/Makefile.am Thu Nov 3 18:04:54 2005 @@ -190,6 +190,7 @@ eelf_i386_chaos.o \ eelf_i386_fbsd.o \ @@ -504,7 +1154,7 @@ diff -Nbaur binutils-2.16.1/ld/Makefile.am binutils-2.16.1-psp/ld/Makefile.am ${GENSCRIPTS} elf_s390 "$(tdir_elf_s390)" diff -Nbaur binutils-2.16.1/ld/Makefile.in binutils-2.16.1-psp/ld/Makefile.in --- binutils-2.16.1/ld/Makefile.in Sun Jan 23 05:36:37 2005 -+++ binutils-2.16.1-psp/ld/Makefile.in Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/ld/Makefile.in Thu Nov 3 18:04:54 2005 @@ -315,6 +315,7 @@ eelf_i386_chaos.o \ eelf_i386_fbsd.o \ @@ -525,7 +1175,7 @@ diff -Nbaur binutils-2.16.1/ld/Makefile.in binutils-2.16.1-psp/ld/Makefile.in ${GENSCRIPTS} elf_s390 "$(tdir_elf_s390)" diff -Nbaur binutils-2.16.1/ld/configure.tgt binutils-2.16.1-psp/ld/configure.tgt --- binutils-2.16.1/ld/configure.tgt Tue Feb 8 19:54:27 2005 -+++ binutils-2.16.1-psp/ld/configure.tgt Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/ld/configure.tgt Thu Nov 3 18:04:54 2005 @@ -428,6 +428,8 @@ mips*vr4100-*-elf*) targ_emul=elf32b4300 ;; mips*vr5000el-*-elf*) targ_emul=elf32l4300 ;; @@ -537,7 +1187,7 @@ diff -Nbaur binutils-2.16.1/ld/configure.tgt binutils-2.16.1-psp/ld/configure.tg mips*el-*-rtems*) targ_emul=elf32elmip ;; diff -Nbaur binutils-2.16.1/ld/emulparams/elf_mipsallegrexel_psp.sh binutils-2.16.1-psp/ld/emulparams/elf_mipsallegrexel_psp.sh --- binutils-2.16.1/ld/emulparams/elf_mipsallegrexel_psp.sh Thu Jan 1 00:00:00 1970 -+++ binutils-2.16.1-psp/ld/emulparams/elf_mipsallegrexel_psp.sh Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/ld/emulparams/elf_mipsallegrexel_psp.sh Thu Nov 3 18:04:54 2005 @@ -0,0 +1,22 @@ +# Based off of the default elf32 MIPS target. However, we use a seperate +# script template because the PSP architecture defines sections that normally @@ -563,7 +1213,7 @@ diff -Nbaur binutils-2.16.1/ld/emulparams/elf_mipsallegrexel_psp.sh binutils-2.1 +OTHER_SECTIONS="/DISCARD/ : { *(.comment) *(.pdr) }" diff -Nbaur binutils-2.16.1/ld/scripttempl/elf_psp.sc binutils-2.16.1-psp/ld/scripttempl/elf_psp.sc --- binutils-2.16.1/ld/scripttempl/elf_psp.sc Thu Jan 1 00:00:00 1970 -+++ binutils-2.16.1-psp/ld/scripttempl/elf_psp.sc Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/ld/scripttempl/elf_psp.sc Thu Nov 3 18:04:54 2005 @@ -0,0 +1,496 @@ +# +# Unusual variables checked by this code: @@ -1063,7 +1713,7 @@ diff -Nbaur binutils-2.16.1/ld/scripttempl/elf_psp.sc binutils-2.16.1-psp/ld/scr +EOF diff -Nbaur binutils-2.16.1/opcodes/mips-dis.c binutils-2.16.1-psp/opcodes/mips-dis.c --- binutils-2.16.1/opcodes/mips-dis.c Thu Mar 3 11:49:50 2005 -+++ binutils-2.16.1-psp/opcodes/mips-dis.c Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/opcodes/mips-dis.c Thu Nov 3 18:04:54 2005 @@ -140,6 +140,139 @@ "c0_taglo", "c0_taghi", "c0_errorepc", "c0_desave", }; @@ -1330,7 +1980,7 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-dis.c binutils-2.16.1-psp/opcodes/mips- + case '7': + { + unsigned int pos = *d, base = '4'; -+ unsigned int mask = (l >> (pos - (base - VFPU_MASK_PFX_MASK))) & VFPU_MASK_PFX_MASK; ++ unsigned int mask = (l >> (pos - (base - VFPU_SH_PFX_MASK))) & VFPU_MASK_PFX_MASK; + unsigned int saturation = (l >> ((pos - base) * 2)) & VFPU_MASK_PFX_SAT; + + if (mask) @@ -1620,7 +2270,7 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-dis.c binutils-2.16.1-psp/opcodes/mips- default: diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips-opc.c --- binutils-2.16.1/opcodes/mips-opc.c Thu Mar 3 11:49:50 2005 -+++ binutils-2.16.1-psp/opcodes/mips-opc.c Wed Aug 24 01:57:13 2005 ++++ binutils-2.16.1-psp/opcodes/mips-opc.c Thu Nov 3 18:04:54 2005 @@ -109,6 +109,7 @@ #define N5 (INSN_5400 | INSN_5500) #define N54 INSN_5400 @@ -1633,7 +2283,7 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- {"bnel", "s,t,p", 0x54000000, 0xfc000000, CBL|RD_s|RD_t, 0, I2|T3 }, {"bnel", "s,I,p", 0, (int) M_BNEL_I, INSN_MACRO, 0, I2|T3 }, {"break", "", 0x0000000d, 0xffffffff, TRAP, 0, I1 }, -+{"break", "B", 0x0000000d, 0xfc00003f, TRAP, 0, I32|AL }, ++{"break", "B", 0x0000000d, 0xfc00003f, TRAP, 0, AL }, {"break", "c", 0x0000000d, 0xfc00ffff, TRAP, 0, I1 }, {"break", "c,q", 0x0000000d, 0xfc00003f, TRAP, 0, I1 }, {"c.f.d", "S,T", 0x46200030, 0xffe007ff, RD_S|RD_T|WR_CC|FP_D, 0, I1 }, @@ -1656,7 +2306,7 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- {"ctc0", "t,G", 0x40c00000, 0xffe007ff, COD|RD_t|WR_CC, 0, I1 }, {"ctc1", "t,G", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S, 0, I1 }, {"ctc1", "t,S", 0x44c00000, 0xffe007ff, COD|RD_t|WR_CC|FP_S, 0, I1 }, -@@ -465,10 +469,12 @@ +@@ -465,13 +469,15 @@ {"cvt.ps.s","D,V,T", 0x46000026, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I5 }, {"cvt.pw.ps", "D,S", 0x46c00024, 0xffff003f, WR_D|RD_S|FP_S|FP_D, 0, M3D }, {"dabs", "d,v", 0, (int) M_DABS, INSN_MACRO, 0, I3 }, @@ -1668,7 +2318,20 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- +{"min", "d,v,t", 0x0000002d, 0xfc0007ff, WR_d|RD_s|RD_t, 0, AL }, {"daddu", "d,v,t", 0x0000002d, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I3 }, {"daddu", "t,r,I", 0, (int) M_DADDU_I, INSN_MACRO, 0, I3 }, - {"dbreak", "", 0x7000003f, 0xffffffff, 0, 0, N5 }, +-{"dbreak", "", 0x7000003f, 0xffffffff, 0, 0, N5 }, ++{"dbreak", "", 0x7000003f, 0xffffffff, 0, 0, N5|AL }, + {"dclo", "U,s", 0x70000025, 0xfc0007ff, RD_s|WR_d|WR_t, 0, I64|N55 }, + {"dclz", "U,s", 0x70000024, 0xfc0007ff, RD_s|WR_d|WR_t, 0, I64|N55 }, + /* dctr and dctw are used on the r5000. */ +@@ -558,7 +564,7 @@ + {"dremu", "z,s,t", 0x0000001f, 0xfc00ffff, RD_s|RD_t|WR_HILO, 0, I3 }, + {"dremu", "d,v,t", 3, (int) M_DREMU_3, INSN_MACRO, 0, I3 }, + {"dremu", "d,v,I", 3, (int) M_DREMU_3I, INSN_MACRO, 0, I3 }, +-{"dret", "", 0x7000003e, 0xffffffff, 0, 0, N5 }, ++{"dret", "", 0x7000003e, 0xffffffff, 0, 0, N5|AL }, + {"drol", "d,v,t", 0, (int) M_DROL, INSN_MACRO, 0, I3 }, + {"drol", "d,v,I", 0, (int) M_DROL_I, INSN_MACRO, 0, I3 }, + {"dror", "d,v,t", 0, (int) M_DROR, INSN_MACRO, 0, I3 }, @@ -595,8 +601,8 @@ {"dsubu", "d,v,I", 0, (int) M_DSUBU_I, INSN_MACRO, 0, I3 }, {"ei", "", 0x41606020, 0xffffffff, WR_t|WR_C0, 0, I33 }, @@ -1735,6 +2398,15 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- {"maddu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55}, {"maddu", "s,t", 0x70000001, 0xfc00ffff, RD_s|RD_t|WR_HILO|IS_M, 0, G1 }, {"maddu", "d,s,t", 0x70000001, 0xfc0007ff, RD_s|RD_t|WR_HILO|WR_d|IS_M, 0, G1 }, +@@ -739,7 +738,7 @@ + /* mfhc2 is at the bottom of the table. */ + {"mfc3", "t,G", 0x4c000000, 0xffe007ff, LCD|WR_t|RD_C3, 0, I1 }, + {"mfc3", "t,G,H", 0x4c000000, 0xffe007f8, LCD|WR_t|RD_C3, 0, I32 }, +-{"mfdr", "t,G", 0x7000003d, 0xffe007ff, LCD|WR_t|RD_C0, 0, N5 }, ++{"mfdr", "t,G", 0x7000003d, 0xffe007ff, LCD|WR_t|RD_C0, 0, N5|AL }, + {"mfhi", "d", 0x00000010, 0xffff07ff, WR_d|RD_HI, 0, I1 }, + {"mflo", "d", 0x00000012, 0xffff07ff, WR_d|RD_LO, 0, I1 }, + {"min.ob", "X,Y,Q", 0x78000006, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, @@ -756,7 +755,7 @@ {"movf.l", "X,Y,N", 0x46a00011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_D, 0, MX|SB1 }, {"movf.s", "D,S,N", 0x46000011, 0xffe3003f, WR_D|RD_S|RD_CC|FP_S, 0, I4|I32 }, @@ -1764,6 +2436,15 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- {"msubu", "s,t", 0x70000005, 0xfc00ffff, RD_s|RD_t|MOD_HILO, 0, I32|N55 }, {"mtpc", "t,P", 0x4080c801, 0xffe0ffc1, COD|RD_t|WR_C0, 0, M1|N5 }, {"mtps", "t,P", 0x4080c800, 0xffe0ffc1, COD|RD_t|WR_C0, 0, M1|N5 }, +@@ -802,7 +803,7 @@ + /* mthc2 is at the bottom of the table. */ + {"mtc3", "t,G", 0x4c800000, 0xffe007ff, COD|RD_t|WR_C3|WR_CC, 0, I1 }, + {"mtc3", "t,G,H", 0x4c800000, 0xffe007f8, COD|RD_t|WR_C3|WR_CC, 0, I32 }, +-{"mtdr", "t,G", 0x7080003d, 0xffe007ff, COD|RD_t|WR_C0, 0, N5 }, ++{"mtdr", "t,G", 0x7080003d, 0xffe007ff, COD|RD_t|WR_C0, 0, N5|AL }, + {"mthi", "s", 0x00000011, 0xfc1fffff, RD_s|WR_HI, 0, I1 }, + {"mtlo", "s", 0x00000013, 0xfc1fffff, RD_s|WR_LO, 0, I1 }, + {"mul.d", "D,V,T", 0x46200002, 0xffe0003f, WR_D|RD_S|RD_T|FP_D, 0, I1 }, @@ -936,13 +937,13 @@ {"rol", "d,v,I", 0, (int) M_ROL_I, INSN_MACRO, 0, I1 }, {"ror", "d,v,t", 0, (int) M_ROR, INSN_MACRO, 0, I1 }, @@ -1837,12 +2518,14 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- {"xor", "d,v,t", 0x00000026, 0xfc0007ff, WR_d|RD_s|RD_t, 0, I1 }, {"xor", "t,r,I", 0, (int) M_XOR_I, INSN_MACRO, 0, I1 }, {"xor.ob", "X,Y,Q", 0x7800000d, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX|SB1 }, -@@ -1179,6 +1173,317 @@ +@@ -1179,6 +1173,319 @@ {"xor.qh", "X,Y,Q", 0x7820000d, 0xfc20003f, WR_D|RD_S|RD_T|FP_D, 0, MX }, {"xori", "t,r,i", 0x38000000, 0xfc000000, WR_t|RD_s, 0, I1 }, +/* Sony Allegrex CPU core. */ +{"bitrev", "d,t", 0x7c000520, 0xffe007ff, WR_d|RD_t, 0, AL }, ++{"mfic", "t,G", 0x70000024, 0xffe007ff, LCD|WR_t|RD_C0, 0, AL }, ++{"mtic", "t,G", 0x70000026, 0xffe007ff, COD|RD_t|WR_C0, 0, AL }, + +/* Sony Allegrex VFPU instructions. */ +{"bvf", "?c,p", 0x49000000, 0xffe30000, CBD|RD_CC, 0, AL }, @@ -1850,37 +2533,37 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- +{"bvt", "?c,p", 0x49010000, 0xffe30000, CBD|RD_CC, 0, AL }, +{"bvtl", "?c,p", 0x49030000, 0xffe30000, CBL|RD_CC, 0, AL }, +{"lv.s", "?m0x,?o(b)", 0xc8000000, 0xfc000000, CLD|RD_s|WR_CC, 0, AL }, -+{"lv.s", "?m0x,A(b)", 0, (int) M_LVQ_AB, INSN_MACRO, 0, AL }, -+{"ulv.s", "?m0x,o(b)", 0, (int) M_ULVS, INSN_MACRO, 0, AL }, ++{"lv.s", "?m0x,A(b)", 0, (int) M_LV_Q_AB, INSN_MACRO, 0, AL }, ++{"ulv.s", "?m0x,o(b)", 0, (int) M_ULV_S, INSN_MACRO, 0, AL }, +{"lv.q", "?n3x,?o(b)", 0xd8000000, 0xfc000002, CLD|RD_s|WR_CC, 0, AL }, -+{"lv.q", "?n3x,A(b)", 0, (int) M_LVQ_AB_2, INSN_MACRO, 0, AL }, -+{"ulv.q", "?n3x,?o(b)", 0, (int) M_ULVQ, INSN_MACRO, 0, AL }, -+{"ulv.q", "?n3x,A(b)", 0, (int) M_ULVQ_AB, INSN_MACRO, 0, AL }, -+{"lvi.s", "?t0x,l?y0", 0, (int) M_LVIS, INSN_MACRO, 0, AL }, -+{"lvi.p", "?t1x,?[l?y0,l?y1?]", 0, (int) M_LVIP, INSN_MACRO, 0, AL }, -+{"lvi.t", "?t2x,?[l?y0,l?y1,l?y2?]", 0, (int) M_LVIT, INSN_MACRO, 0, AL }, -+{"lvi.q", "?t3x,?[l?y0,l?y1,l?y2,l?y3?]", 0, (int) M_LVIQ, INSN_MACRO, 0, AL }, -+{"lvhi.s", "?t0x,?[?u?y0,?u?y1?]", 0, (int) M_LVHIS, INSN_MACRO, 0, AL }, -+{"lvhi.p", "?t1x,?[?u?y0,?u?y1,?u?y2,?u?y3?]", 0, (int) M_LVHIP, INSN_MACRO, 0, AL }, ++{"lv.q", "?n3x,A(b)", 0, (int) M_LV_Q_AB_2, INSN_MACRO, 0, AL }, ++{"ulv.q", "?n3x,?o(b)", 0, (int) M_ULV_Q, INSN_MACRO, 0, AL }, ++{"ulv.q", "?n3x,A(b)", 0, (int) M_ULV_Q_AB, INSN_MACRO, 0, AL }, ++{"lvi.s", "?t0x,l?y0", 0, (int) M_LVI_S, INSN_MACRO, 0, AL }, ++{"lvi.p", "?t1x,?[l?y0,l?y1?]", 0, (int) M_LVI_P, INSN_MACRO, 0, AL }, ++{"lvi.t", "?t2x,?[l?y0,l?y1,l?y2?]", 0, (int) M_LVI_T, INSN_MACRO, 0, AL }, ++{"lvi.q", "?t3x,?[l?y0,l?y1,l?y2,l?y3?]", 0, (int) M_LVI_Q, INSN_MACRO, 0, AL }, ++{"lvhi.s", "?t0x,?[?u?y0,?u?y1?]", 0, (int) M_LVHI_S, INSN_MACRO, 0, AL }, ++{"lvhi.p", "?t1x,?[?u?y0,?u?y1,?u?y2,?u?y3?]", 0, (int) M_LVHI_P, INSN_MACRO, 0, AL }, +{"sv.s", "?m0x,?o(b)", 0xe8000000, 0xfc000000, SM|RD_s|RD_C2, 0, AL }, -+{"sv.s", "?m0x,A(b)", 0, (int) M_SVS_AB, INSN_MACRO, 0, AL }, -+{"usv.s", "?m0x,o(b)", 0, (int) M_USVS, INSN_MACRO, 0, AL }, ++{"sv.s", "?m0x,A(b)", 0, (int) M_SV_S_AB, INSN_MACRO, 0, AL }, ++{"usv.s", "?m0x,o(b)", 0, (int) M_USV_S, INSN_MACRO, 0, AL }, +{"sv.q", "?n3x,?o(b)", 0xf8000000, 0xfc000002, SM|RD_s|RD_C2, 0, AL }, +{"sv.q", "?n3x,?o(b),?z", 0xf8000000, 0xfc000000, SM|RD_s|RD_C2, 0, AL }, -+{"sv.q", "?n3x,A(b)", 0, (int) M_SVQ_AB, INSN_MACRO, 0, AL }, -+{"sv.q", "?n3x,A(b),?z", 0, (int) M_SVQ_AB, INSN_MACRO, 0, AL }, -+{"sv.q", "?n3x,A,?z", 0, (int) M_SVQ_AB, INSN_MACRO, 0, AL }, -+{"usv.q", "?n3x,?o(b)", 0, (int) M_USVQ, INSN_MACRO, 0, AL }, -+{"usv.q", "?n3x,A(b)", 0, (int) M_USVQ_AB, INSN_MACRO, 0, AL }, ++{"sv.q", "?n3x,A(b)", 0, (int) M_SV_Q_AB, INSN_MACRO, 0, AL }, ++{"sv.q", "?n3x,A(b),?z", 0, (int) M_SV_Q_AB, INSN_MACRO, 0, AL }, ++{"sv.q", "?n3x,A,?z", 0, (int) M_SV_Q_AB, INSN_MACRO, 0, AL }, ++{"usv.q", "?n3x,?o(b)", 0, (int) M_USV_Q, INSN_MACRO, 0, AL }, ++{"usv.q", "?n3x,A(b)", 0, (int) M_USV_Q_AB, INSN_MACRO, 0, AL }, +{"vwb.q", "?n3x,?o(b)", 0xf8000002, 0xfc000002, SM|RD_s|RD_C2, 0, AL }, +{"lvl.q", "?n3x,?o(b)", 0xd4000000, 0xfc000002, CLD|RD_s|WR_CC, 0, AL }, -+{"lvl.q", "?n3x,A(b)", 0, (int) M_LVLQ_AB, INSN_MACRO, 0, AL }, ++{"lvl.q", "?n3x,A(b)", 0, (int) M_LVL_Q_AB, INSN_MACRO, 0, AL }, +{"lvr.q", "?n3x,?o(b)", 0xd4000002, 0xfc000002, CLD|RD_s|WR_CC, 0, AL }, -+{"lvr.q", "?n3x,A(b)", 0, (int) M_LVRQ_AB, INSN_MACRO, 0, AL }, ++{"lvr.q", "?n3x,A(b)", 0, (int) M_LVR_Q_AB, INSN_MACRO, 0, AL }, +{"svl.q", "?n3x,?o(b)", 0xf4000000, 0xfc000002, SM|RD_s|RD_C2, 0, AL }, -+{"svl.q", "?n3x,A(b)", 0, (int) M_SVLQ_AB, INSN_MACRO, 0, AL }, ++{"svl.q", "?n3x,A(b)", 0, (int) M_SVL_Q_AB, INSN_MACRO, 0, AL }, +{"svr.q", "?n3x,?o(b)", 0xf4000002, 0xfc000002, SM|RD_s|RD_C2, 0, AL }, -+{"svr.q", "?n3x,A(b)", 0, (int) M_SVRQ_AB, INSN_MACRO, 0, AL }, ++{"svr.q", "?n3x,A(b)", 0, (int) M_SVR_Q_AB, INSN_MACRO, 0, AL }, +{"mtv", "t,?d0z", 0x48e00000, 0xffe0ff80, LCD|WR_t|WR_C2, 0, AL }, +{"mfv", "t,?d0z", 0x48600000, 0xffe0ff80, COD|RD_t|WR_CC|RD_C2, 0, AL }, +{"mtvc", "t,?q", 0x48e00000, 0xffe0ff00, LCD|WR_t|WR_C2, 0, AL }, @@ -1945,7 +2628,7 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- +{"vf2iu.q", "?d3m,?s3s,?b", 0xd2408080, 0xffe08080, RD_C2, 0, AL }, +{"vf2id.q", "?d3m,?s3s,?b", 0xd2608080, 0xffe08080, RD_C2, 0, AL }, +{"vi2f.q", "?d3d,?s3w,?b", 0xd2808080, 0xffe08080, RD_C2, 0, AL }, -+{"vcmov.q", "?d3d,?s3s,?e", 0, (int) M_VCMOVQ, INSN_MACRO, 0, AL }, ++{"vcmov.q", "?d3d,?s3s,?e", 0, (int) M_VCMOV_Q, INSN_MACRO, 0, AL }, +{"vcmovt.q", "?d3d,?s3s,?e", 0xd2a08080, 0xfff88080, RD_C2, 0, AL }, +{"vcmovf.q", "?d3d,?s3s,?e", 0xd2a88080, 0xfff88080, RD_C2, 0, AL }, +{"vmmul.q", "?v7z,?s7y,?t7x", 0xf0008080, 0xff808080, RD_C2, 0, AL }, @@ -2008,7 +2691,7 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- +{"vf2iu.t", "?d2m,?s2s,?b", 0xd2408000, 0xffe08080, RD_C2, 0, AL }, +{"vf2id.t", "?d2m,?s2s,?b", 0xd2608000, 0xffe08080, RD_C2, 0, AL }, +{"vi2f.t", "?d2d,?s2w,?b", 0xd2808000, 0xffe08080, RD_C2, 0, AL }, -+{"vcmov.t", "?d2d,?s2s,?e", 0, (int) M_VCMOVT, INSN_MACRO, 0, AL }, ++{"vcmov.t", "?d2d,?s2s,?e", 0, (int) M_VCMOV_T, INSN_MACRO, 0, AL }, +{"vcmovt.t", "?d2d,?s2s,?e", 0xd2a08000, 0xfff88080, RD_C2, 0, AL }, +{"vcmovf.t", "?d2d,?s2s,?e", 0xd2a88000, 0xfff88080, RD_C2, 0, AL }, +{"vmmul.t", "?v6z,?s6y,?t6x", 0xf0008000, 0xff808080, RD_C2, 0, AL }, @@ -2077,7 +2760,7 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- +{"vf2iu.p", "?d1m,?s1s,?b", 0xd2400080, 0xffe08080, RD_C2, 0, AL }, +{"vf2id.p", "?d1m,?s1s,?b", 0xd2600080, 0xffe08080, RD_C2, 0, AL }, +{"vi2f.p", "?d1d,?s1w,?b", 0xd2800080, 0xffe08080, RD_C2, 0, AL }, -+{"vcmov.p", "?d1d,?s1s,?e", 0, (int) M_VCMOVP, INSN_MACRO, 0, AL }, ++{"vcmov.p", "?d1d,?s1s,?e", 0, (int) M_VCMOV_P, INSN_MACRO, 0, AL }, +{"vcmovt.p", "?d1d,?s1s,?e", 0xd2a00080, 0xfff88080, RD_C2, 0, AL }, +{"vcmovf.p", "?d1d,?s1s,?e", 0xd2a80080, 0xfff88080, RD_C2, 0, AL }, +{"vmmul.p", "?v5z,?s5y,?t5x", 0xf0000080, 0xff808080, RD_C2, 0, AL }, @@ -2138,7 +2821,7 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- +{"vf2iu.s", "?d0m,?s0s,?b", 0xd2400000, 0xffe08080, RD_C2, 0, AL }, +{"vf2id.s", "?d0m,?s0s,?b", 0xd2600000, 0xffe08080, RD_C2, 0, AL }, +{"vi2f.s", "?d0d,?s0w,?b", 0xd2800000, 0xffe08080, RD_C2, 0, AL }, -+{"vcmov.s", "?d0d,?s0s,?e", 0, (int) M_VCMOVS, INSN_MACRO, 0, AL }, ++{"vcmov.s", "?d0d,?s0s,?e", 0, (int) M_VCMOV_S, INSN_MACRO, 0, AL }, +{"vcmovt.s", "?d0d,?s0s,?e", 0xd2a00000, 0xfff88080, RD_C2, 0, AL }, +{"vcmovf.s", "?d0d,?s0s,?e", 0xd2a80000, 0xfff88080, RD_C2, 0, AL }, +{"vwbn.s", "?d0d,?s0s,?i", 0xd3000000, 0xff008080, RD_C2, 0, AL }, @@ -2155,7 +2838,7 @@ diff -Nbaur binutils-2.16.1/opcodes/mips-opc.c binutils-2.16.1-psp/opcodes/mips- /* Coprocessor 2 move/branch operations overlap with VR5400 .ob format instructions so they are here for the latters to take precedence. */ {"bc2f", "p", 0x49000000, 0xffff0000, CBD|RD_CC, 0, I1 }, -@@ -1197,6 +1502,36 @@ +@@ -1197,6 +1504,36 @@ {"mtc2", "t,G", 0x48800000, 0xffe007ff, COD|RD_t|WR_C2|WR_CC, 0, I1 }, {"mtc2", "t,G,H", 0x48800000, 0xffe007f8, COD|RD_t|WR_C2|WR_CC, 0, I32 }, {"mthc2", "t,i", 0x48e00000, 0xffe00000, COD|RD_t|WR_C2|WR_CC, 0, I33 }, diff --git a/dkpsp/patches/gcc-4.0.2.patch b/dkpsp/patches/gcc-4.0.2.patch new file mode 100644 index 0000000..2d1b7a7 --- /dev/null +++ b/dkpsp/patches/gcc-4.0.2.patch @@ -0,0 +1,1092 @@ +--- gcc-4.0.2.orig/config.sub 2005-04-25 03:36:56.000000000 -0700 ++++ gcc-psp/config.sub 2005-07-22 17:40:49.000000000 -0700 +@@ -254,6 +254,7 @@ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ ++ | mipsallegrex | mipsallegrexel \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ +@@ -328,6 +329,7 @@ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ ++ | mipsallegrex-* | mipsallegrexel-* \ + | mmix-* \ + | msp430-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ +@@ -668,6 +670,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/'` + ;; +--- gcc-4.0.2.orig/gcc/c-incpath.c 2005-01-23 07:05:27.000000000 -0800 ++++ gcc-psp/gcc/c-incpath.c 2005-07-22 21:49:25.000000000 -0700 +@@ -331,13 +331,18 @@ + cpp_dir *p; + + #if defined (HAVE_DOS_BASED_FILE_SYSTEM) +- /* Convert all backslashes to slashes. The native CRT stat() +- function does not recognize a directory that ends in a backslash +- (unless it is a drive root dir, such "c:\"). Forward slashes, +- trailing or otherwise, cause no problems for stat(). */ +- char* c; +- for (c = path; *c; c++) +- if (*c == '\\') *c = '/'; ++ /* Remove unnecessary trailing slashes. On some versions of MS ++ Windows, trailing _forward_ slashes cause no problems for stat(). ++ On newer versions, stat() does not recognise a directory that ends ++ in a '\\' or '/', unless it is a drive root dir, such as "c:/", ++ where it is obligatory. */ ++ int pathlen = strlen (path); ++ char* end = path + pathlen - 1; ++ /* Preserve the lead '/' or lead "c:/". */ ++ char* start = path + (pathlen > 2 && path[1] == ':' ? 3 : 1); ++ ++ for (; end > start && IS_DIR_SEPARATOR (*end); end--) ++ *end = 0; + #endif + + p = xmalloc (sizeof (cpp_dir)); +--- gcc-4.0.2.orig/gcc/config.gcc 2005-10-22 14:38:16.000000000 -0700 ++++ gcc-psp/gcc/config.gcc 2005-07-22 17:40:41.000000000 -0700 +@@ -406,12 +406,6 @@ + tm_defines="${tm_defines} FBSD_MAJOR=5" ;; + *-*-freebsd6 | *-*-freebsd[6].*) + tm_defines="${tm_defines} FBSD_MAJOR=6" ;; +- *-*-freebsd7 | *-*-freebsd[7].*) +- tm_defines="${tm_defines} FBSD_MAJOR=7" ;; +- *-*-freebsd8 | *-*-freebsd[8].*) +- tm_defines="${tm_defines} FBSD_MAJOR=8" ;; +- *-*-freebsd9 | *-*-freebsd[9].*) +- tm_defines="${tm_defines} FBSD_MAJOR=9" ;; + *) + echo 'Please update *-*-freebsd* in gcc/config.gcc' + exit 1 +@@ -740,11 +734,6 @@ + tmake_file=bfin/t-bfin-elf + use_collect2=no + ;; +-bfin*-uclinux*) +- tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h bfin/uclinux.h" +- tmake_file=bfin/t-bfin-elf +- use_collect2=no +- ;; + bfin*-*) + tm_file="${tm_file} dbxelf.h elfos.h bfin/elf.h" + tmake_file=bfin/t-bfin +@@ -1531,6 +1520,18 @@ + tmake_file=mips/t-r3900 + use_fixproto=yes + ;; ++mipsallegrex-*-elf* | mipsallegrexel-*-elf*) ++ tm_file="elfos.h ${tm_file} mips/elf.h" ++ tmake_file=mips/t-allegrex ++ target_cpu_default="MASK_SINGLE_FLOAT|MASK_DIVIDE_BREAKS" ++ tm_defines="MIPS_ISA_DEFAULT=2 MIPS_CPU_STRING_DEFAULT=\\\"allegrex\\\" MIPS_ABI_DEFAULT=ABI_EABI" ++ case ${target} in ++ mipsallegrex*-psp-elf*) ++ tm_file="${tm_file} mips/psp.h" ++ ;; ++ esac ++ use_fixproto=yes ++ ;; + mmix-knuth-mmixware) + need_64bit_hwint=yes + ;; +--- gcc-4.0.2.orig/gcc/config/mips/allegrex.md 1969-12-31 16:00:00.000000000 -0800 ++++ gcc-psp/gcc/config/mips/allegrex.md 2005-08-28 09:29:14.000000000 -0700 +@@ -0,0 +1,183 @@ ++;; Sony ALLEGREX instructions. ++;; Copyright (C) 2005 Free Software Foundation, Inc. ++;; ++;; This file is part of GCC. ++;; ++;; GCC 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. ++;; ++;; GCC 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 GCC; see the file COPYING. If not, write to ++;; the Free Software Foundation, 59 Temple Place - Suite 330, ++;; Boston, MA 02111-1307, USA. ++ ++; Multiply Add and Subtract. ++ ++(define_insn "allegrex_madd" ++ [(set (match_operand:SI 0 "register_operand" "+l") ++ (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "d") ++ (match_operand:SI 2 "register_operand" "d")) ++ (match_dup 0))) ++ (clobber (match_scratch:SI 3 "=h"))] ++ "TARGET_ALLEGREX" ++ "madd\t%1,%2" ++ [(set_attr "type" "imadd") ++ (set_attr "mode" "SI")]) ++ ++(define_insn "allegrex_msub" ++ [(set (match_operand:SI 0 "register_operand" "+l") ++ (minus:SI (match_dup 0) ++ (mult:SI (match_operand:SI 1 "register_operand" "d") ++ (match_operand:SI 2 "register_operand" "d")))) ++ (clobber (match_scratch:SI 3 "=h"))] ++ "TARGET_ALLEGREX" ++ "msub\t%1,%2" ++ [(set_attr "type" "imadd") ++ (set_attr "mode" "SI")]) ++ ++ ++; Min and max. ++ ++(define_insn "sminsi3" ++ [(set (match_operand:SI 0 "register_operand" "=d") ++ (smin:SI (match_operand:SI 1 "register_operand" "d") ++ (match_operand:SI 2 "register_operand" "d")))] ++ "TARGET_ALLEGREX" ++ "min\t%0,%1,%2" ++ [(set_attr "type" "arith") ++ (set_attr "mode" "SI")]) ++ ++(define_insn "smaxsi3" ++ [(set (match_operand:SI 0 "register_operand" "=d") ++ (smax:SI (match_operand:SI 1 "register_operand" "d") ++ (match_operand:SI 2 "register_operand" "d")))] ++ "TARGET_ALLEGREX" ++ "max\t%0,%1,%2" ++ [(set_attr "type" "arith") ++ (set_attr "mode" "SI")]) ++ ++ ++; Extended shift instructions. ++ ++(define_insn "allegrex_bitrev" ++ [(set (match_operand:SI 0 "register_operand" "=d") ++ (unspec:SI [(match_operand:SI 1 "register_operand" "d")] ++ UNSPEC_BITREV))] ++ "TARGET_ALLEGREX" ++ "bitrev\t%0,%1" ++ [(set_attr "type" "arith") ++ (set_attr "mode" "SI")]) ++ ++(define_insn "allegrex_wsbh" ++ [(set (match_operand:SI 0 "register_operand" "=d") ++ (unspec:SI [(match_operand:SI 1 "register_operand" "d")] ++ UNSPEC_WSBH))] ++ "TARGET_ALLEGREX" ++ "wsbh\t%0,%1" ++ [(set_attr "type" "arith") ++ (set_attr "mode" "SI")]) ++ ++(define_insn "allegrex_wsbw" ++ [(set (match_operand:SI 0 "register_operand" "=d") ++ (unspec:SI [(match_operand:SI 1 "register_operand" "d")] ++ UNSPEC_WSBW))] ++ "TARGET_ALLEGREX" ++ "wsbw\t%0,%1" ++ [(set_attr "type" "arith") ++ (set_attr "mode" "SI")]) ++ ++ ++; Count leading ones, count trailing zeros, and count trailing ones (clz is ++; already defined). ++ ++(define_insn "allegrex_clo" ++ [(set (match_operand:SI 0 "register_operand" "=d") ++ (unspec:SI [(match_operand:SI 1 "register_operand" "d")] ++ UNSPEC_CLO))] ++ "TARGET_ALLEGREX" ++ "clo\t%0,%1" ++ [(set_attr "type" "clz") ++ (set_attr "mode" "SI")]) ++ ++(define_expand "ctzsi2" ++ [(set (match_operand:SI 0 "register_operand") ++ (ctz:SI (match_operand:SI 1 "register_operand")))] ++ "TARGET_ALLEGREX" ++{ ++ rtx r1; ++ ++ r1 = gen_reg_rtx (SImode); ++ emit_insn (gen_allegrex_bitrev (r1, operands[1])); ++ emit_insn (gen_clzsi2 (operands[0], r1)); ++ DONE; ++}) ++ ++(define_expand "allegrex_cto" ++ [(set (match_operand:SI 0 "register_operand") ++ (unspec:SI [(match_operand:SI 1 "register_operand")] ++ UNSPEC_CTO))] ++ "TARGET_ALLEGREX" ++{ ++ rtx r1; ++ ++ r1 = gen_reg_rtx (SImode); ++ emit_insn (gen_allegrex_bitrev (r1, operands[1])); ++ emit_insn (gen_allegrex_clo (operands[0], r1)); ++ DONE; ++}) ++ ++ ++; Misc. ++ ++(define_insn "allegrex_sync" ++ [(unspec_volatile [(const_int 0)] UNSPEC_SYNC)] ++ "TARGET_ALLEGREX" ++ "sync" ++ [(set_attr "type" "unknown") ++ (set_attr "mode" "none")]) ++ ++(define_insn "allegrex_cache" ++ [(unspec_volatile [(match_operand:SI 0 "const_int_operand" "") ++ (match_operand:SI 1 "register_operand" "d")] ++ UNSPEC_CACHE)] ++ "TARGET_ALLEGREX" ++ "cache\t%0,0(%1)" ++ [(set_attr "type" "unknown") ++ (set_attr "mode" "none")]) ++ ++ ++; Floating-point builtins. ++ ++(define_insn "allegrex_ceil_w_s" ++ [(set (match_operand:SI 0 "register_operand" "=f") ++ (unspec:SI [(match_operand:SF 1 "register_operand" "f")] ++ UNSPEC_CEIL_W_S))] ++ "TARGET_ALLEGREX" ++ "ceil.w.s\t%0,%1" ++ [(set_attr "type" "fcvt") ++ (set_attr "mode" "SF")]) ++ ++(define_insn "allegrex_floor_w_s" ++ [(set (match_operand:SI 0 "register_operand" "=f") ++ (unspec:SI [(match_operand:SF 1 "register_operand" "f")] ++ UNSPEC_FLOOR_W_S))] ++ "TARGET_ALLEGREX" ++ "floor.w.s\t%0,%1" ++ [(set_attr "type" "fcvt") ++ (set_attr "mode" "SF")]) ++ ++(define_insn "allegrex_round_w_s" ++ [(set (match_operand:SI 0 "register_operand" "=f") ++ (unspec:SI [(match_operand:SF 1 "register_operand" "f")] ++ UNSPEC_ROUND_W_S))] ++ "TARGET_ALLEGREX" ++ "round.w.s\t%0,%1" ++ [(set_attr "type" "fcvt") ++ (set_attr "mode" "SF")]) +--- gcc-4.0.2.orig/gcc/config/mips/mips-protos.h 2004-12-29 19:07:56.000000000 -0800 ++++ gcc-psp/gcc/config/mips/mips-protos.h 2005-08-23 23:52:02.000000000 -0700 +@@ -205,5 +205,6 @@ + extern void irix_asm_output_align (FILE *, unsigned); + extern const char *current_section_name (void); + extern unsigned int current_section_flags (void); ++extern bool mips_use_ins_ext_p (rtx, rtx, rtx); + + #endif /* ! GCC_MIPS_PROTOS_H */ +--- gcc-4.0.2.orig/gcc/config/mips/mips.c 2005-05-08 04:56:53.000000000 -0700 ++++ gcc-psp/gcc/config/mips/mips.c 2005-08-26 18:56:46.000000000 -0700 +@@ -150,6 +150,15 @@ + MIPS_DF_FTYPE_DF, + MIPS_DF_FTYPE_DF_DF, + ++ /* For the Sony ALLEGREX. */ ++ MIPS_SI_FTYPE_QI, ++ MIPS_SI_FTYPE_HI, ++ MIPS_SI_FTYPE_SI, ++ MIPS_SI_FTYPE_SI_SI, ++ MIPS_VOID_FTYPE_VOID, ++ MIPS_VOID_FTYPE_SI_SI, ++ MIPS_SI_FTYPE_SF, ++ + /* The last type. */ + MIPS_MAX_FTYPE_MAX + }; +@@ -162,6 +171,10 @@ + operands 1 and above. */ + MIPS_BUILTIN_DIRECT, + ++ /* The builtin corresponds directly to an .md pattern. There is no return ++ value and the arguments are mapped to operands 0 and above. */ ++ MIPS_BUILTIN_DIRECT_NO_TARGET, ++ + /* The builtin corresponds to a comparison instruction followed by + a mips_cond_move_tf_ps pattern. The first two arguments are the + values to compare and the second two arguments are the vector +@@ -185,7 +198,12 @@ + MIPS_BUILTIN_CMP_LOWER, + + /* As above, but the instruction only sets a single $fcc register. */ +- MIPS_BUILTIN_CMP_SINGLE ++ MIPS_BUILTIN_CMP_SINGLE, ++ ++ /* The builtin corresponds to the ALLEGREX cache instruction. Operand 0 ++ is the function code (must be less than 32) and operand 1 is the base ++ address. */ ++ MIPS_BUILTIN_CACHE + }; + + /* Invokes MACRO (COND) for each c.cond.fmt condition. */ +@@ -361,13 +379,14 @@ + static rtx mips_prepare_builtin_target (enum insn_code, unsigned int, rtx); + static rtx mips_expand_builtin (tree, rtx, rtx, enum machine_mode, int); + static void mips_init_builtins (void); +-static rtx mips_expand_builtin_direct (enum insn_code, rtx, tree); ++static rtx mips_expand_builtin_direct (enum insn_code, rtx, tree, bool); + static rtx mips_expand_builtin_movtf (enum mips_builtin_type, + enum insn_code, enum mips_fp_condition, + rtx, tree); + static rtx mips_expand_builtin_compare (enum mips_builtin_type, + enum insn_code, enum mips_fp_condition, + rtx, tree); ++static rtx mips_expand_builtin_cache (enum insn_code icode, rtx, tree); + + /* Structure to be filled in by compute_frame_size with register + save masks, and offsets for the current function. */ +@@ -673,6 +692,7 @@ + + /* MIPS II */ + { "r6000", PROCESSOR_R6000, 2 }, ++ { "allegrex", PROCESSOR_ALLEGREX, 2 }, + + /* MIPS III */ + { "r4000", PROCESSOR_R4000, 3 }, +@@ -3969,6 +3989,38 @@ + return true; + } + ++/* Return true if (zero_extract OP SIZE POSITION) can be used as the ++ source of an "ext" instruction or the destination of an "ins" ++ instruction. OP must be a register operand and the following ++ conditions must hold: ++ ++ 0 <= POSITION < GET_MODE_BITSIZE (GET_MODE (op)) ++ 0 < SIZE <= GET_MODE_BITSIZE (GET_MODE (op)) ++ 0 < POSITION + SIZE <= GET_MODE_BITSIZE (GET_MODE (op)) ++ ++ Also reject lengths equal to a word as they are better handled ++ by the move patterns. */ ++ ++bool ++mips_use_ins_ext_p (rtx op, rtx size, rtx position) ++{ ++ HOST_WIDE_INT len, pos; ++ ++ if (!ISA_HAS_EXT_INS ++ || !register_operand (op, VOIDmode) ++ || GET_MODE_BITSIZE (GET_MODE (op)) > BITS_PER_WORD) ++ return false; ++ ++ len = INTVAL (size); ++ pos = INTVAL (position); ++ ++ if (len <= 0 || len >= GET_MODE_BITSIZE (GET_MODE (op)) ++ || pos < 0 || pos + len > GET_MODE_BITSIZE (GET_MODE (op))) ++ return false; ++ ++ return true; ++} ++ + /* Set up globals to generate code for the ISA or processor + described by INFO. */ + +@@ -9498,6 +9550,67 @@ + DIRECT_BUILTIN (sqrt_ps, MIPS_V2SF_FTYPE_V2SF, MASK_PAIRED_SINGLE) + }; + ++/* Builtin functions for the Sony ALLEGREX processor. ++ ++ These have the `__builtin_allgrex_' prefix instead of `__builtin_mips_' ++ to maintain compatibility with Sony's ALLEGREX GCC port. ++ ++ Some of the builtins may seem redundant, but they are the same as the ++ builtins defined in the Sony compiler. I chose to map redundant and ++ trivial builtins to the original instruction instead of creating ++ duplicate patterns specifically for the ALLEGREX (as Sony does). */ ++ ++/* Define a MIPS_BUILTIN_DIRECT function for instruction CODE_FOR_allegrex_. ++ FUNCTION_TYPE and TARGET_FLAGS are builtin_description fields. */ ++#define DIRECT_ALLEGREX_BUILTIN(INSN, FUNCTION_TYPE, TARGET_FLAGS) \ ++ { CODE_FOR_allegrex_ ## INSN, 0, "__builtin_allegrex_" #INSN, \ ++ MIPS_BUILTIN_DIRECT, FUNCTION_TYPE, TARGET_FLAGS } ++ ++/* Same as the above, but mapped to an instruction that doesn't share the ++ NAME. NAME is the name of the builtin without the builtin prefix. */ ++#define DIRECT_ALLEGREX_NAMED_BUILTIN(NAME, INSN, FUNCTION_TYPE, TARGET_FLAGS) \ ++ { CODE_FOR_ ## INSN, 0, "__builtin_allegrex_" #NAME, \ ++ MIPS_BUILTIN_DIRECT, FUNCTION_TYPE, TARGET_FLAGS } ++ ++/* Define a MIPS_BUILTIN_DIRECT_NO_TARGET function for instruction ++ CODE_FOR_allegrex_. FUNCTION_TYPE and TARGET_FLAGS are ++ builtin_description fields. */ ++#define DIRECT_ALLEGREX_NO_TARGET_BUILTIN(INSN, FUNCTION_TYPE, TARGET_FLAGS) \ ++ { CODE_FOR_allegrex_ ## INSN, 0, "__builtin_allegrex_" #INSN, \ ++ MIPS_BUILTIN_DIRECT_NO_TARGET, FUNCTION_TYPE, TARGET_FLAGS } ++ ++/* Define a builtin with a specific function TYPE. */ ++#define SPECIAL_ALLEGREX_BUILTIN(TYPE, INSN, FUNCTION_TYPE, TARGET_FLAGS) \ ++ { CODE_FOR_allegrex_ ## INSN, 0, "__builtin_allegrex_" #INSN, \ ++ MIPS_BUILTIN_ ## TYPE, FUNCTION_TYPE, TARGET_FLAGS } ++ ++static const struct builtin_description allegrex_bdesc[] = ++{ ++ DIRECT_ALLEGREX_BUILTIN(bitrev, MIPS_SI_FTYPE_SI, 0), ++ DIRECT_ALLEGREX_BUILTIN(wsbh, MIPS_SI_FTYPE_SI, 0), ++ DIRECT_ALLEGREX_BUILTIN(wsbw, MIPS_SI_FTYPE_SI, 0), ++ DIRECT_ALLEGREX_NAMED_BUILTIN(clz, clzsi2, MIPS_SI_FTYPE_SI, 0), ++ DIRECT_ALLEGREX_BUILTIN(clo, MIPS_SI_FTYPE_SI, 0), ++ DIRECT_ALLEGREX_NAMED_BUILTIN(ctz, ctzsi2, MIPS_SI_FTYPE_SI, 0), ++ DIRECT_ALLEGREX_BUILTIN(cto, MIPS_SI_FTYPE_SI, 0), ++ DIRECT_ALLEGREX_NAMED_BUILTIN(rotr, rotrsi3, MIPS_SI_FTYPE_SI_SI, 0), ++ DIRECT_ALLEGREX_NAMED_BUILTIN(rotl, rotlsi3, MIPS_SI_FTYPE_SI_SI, 0), ++ ++ DIRECT_ALLEGREX_NAMED_BUILTIN(seb, extendqisi2, MIPS_SI_FTYPE_QI, 0), ++ DIRECT_ALLEGREX_NAMED_BUILTIN(seh, extendhisi2, MIPS_SI_FTYPE_HI, 0), ++ DIRECT_ALLEGREX_NAMED_BUILTIN(max, smaxsi3, MIPS_SI_FTYPE_SI_SI, 0), ++ DIRECT_ALLEGREX_NAMED_BUILTIN(min, sminsi3, MIPS_SI_FTYPE_SI_SI, 0), ++ ++ DIRECT_ALLEGREX_NO_TARGET_BUILTIN(sync, MIPS_VOID_FTYPE_VOID, 0), ++ SPECIAL_ALLEGREX_BUILTIN(CACHE, cache, MIPS_VOID_FTYPE_SI_SI, 0), ++ ++ DIRECT_ALLEGREX_NAMED_BUILTIN(sqrt_s, sqrtsf2, MIPS_SF_FTYPE_SF, 0), ++ DIRECT_ALLEGREX_BUILTIN(ceil_w_s, MIPS_SI_FTYPE_SF, 0), ++ DIRECT_ALLEGREX_BUILTIN(floor_w_s, MIPS_SI_FTYPE_SF, 0), ++ DIRECT_ALLEGREX_BUILTIN(round_w_s, MIPS_SI_FTYPE_SF, 0), ++ DIRECT_ALLEGREX_NAMED_BUILTIN(trunc_w_s, fix_truncsfsi2_insn, MIPS_SI_FTYPE_SF, 0) ++}; ++ + /* This helps provide a mapping from builtin function codes to bdesc + arrays. */ + +@@ -9517,7 +9630,8 @@ + static const struct bdesc_map bdesc_arrays[] = + { + { mips_bdesc, ARRAY_SIZE (mips_bdesc), PROCESSOR_DEFAULT }, +- { sb1_bdesc, ARRAY_SIZE (sb1_bdesc), PROCESSOR_SB1 } ++ { sb1_bdesc, ARRAY_SIZE (sb1_bdesc), PROCESSOR_SB1 }, ++ { allegrex_bdesc, ARRAY_SIZE (allegrex_bdesc), PROCESSOR_ALLEGREX } + }; + + /* Take the head of argument list *ARGLIST and convert it into a form +@@ -9534,7 +9648,15 @@ + value = expand_expr (TREE_VALUE (*arglist), NULL_RTX, VOIDmode, 0); + mode = insn_data[icode].operand[op].mode; + if (!insn_data[icode].operand[op].predicate (value, mode)) ++ { + value = copy_to_mode_reg (mode, value); ++ /* Check the predicate again. */ ++ if (!insn_data[icode].operand[op].predicate (value, mode)) ++ { ++ error ("invalid argument to builtin function"); ++ return const0_rtx; ++ } ++ } + + *arglist = TREE_CHAIN (*arglist); + return value; +@@ -9591,7 +9713,10 @@ + switch (type) + { + case MIPS_BUILTIN_DIRECT: +- return mips_expand_builtin_direct (icode, target, arglist); ++ return mips_expand_builtin_direct (icode, target, arglist, true); ++ ++ case MIPS_BUILTIN_DIRECT_NO_TARGET: ++ return mips_expand_builtin_direct (icode, target, arglist, false); + + case MIPS_BUILTIN_MOVT: + case MIPS_BUILTIN_MOVF: +@@ -9606,6 +9731,9 @@ + return mips_expand_builtin_compare (type, icode, bdesc[fcode].cond, + target, arglist); + ++ case MIPS_BUILTIN_CACHE: ++ return mips_expand_builtin_cache (icode, target, arglist); ++ + default: + return 0; + } +@@ -9622,10 +9750,12 @@ + tree V2SF_type_node; + unsigned int offset; + +- /* We have only builtins for -mpaired-single and -mips3d. */ +- if (!TARGET_PAIRED_SINGLE_FLOAT) ++ /* We have only builtins for -mpaired-single, -mips3d, and the Sony ALLEGREX. */ ++ if (!TARGET_PAIRED_SINGLE_FLOAT && !TARGET_ALLEGREX) + return; + ++ if (TARGET_PAIRED_SINGLE_FLOAT) ++ { + V2SF_type_node = build_vector_type_for_mode (float_type_node, V2SFmode); + + types[MIPS_V2SF_FTYPE_V2SF] +@@ -9684,6 +9814,45 @@ + types[MIPS_DF_FTYPE_DF_DF] + = build_function_type_list (double_type_node, + double_type_node, double_type_node, NULL_TREE); ++ } ++ ++ if (TARGET_ALLEGREX) ++ { ++ types[MIPS_SI_FTYPE_QI] ++ = build_function_type_list (intSI_type_node, ++ intQI_type_node, ++ NULL_TREE); ++ ++ types[MIPS_SI_FTYPE_HI] ++ = build_function_type_list (intSI_type_node, ++ intHI_type_node, ++ NULL_TREE); ++ ++ types[MIPS_SI_FTYPE_SI] ++ = build_function_type_list (intSI_type_node, ++ intSI_type_node, ++ NULL_TREE); ++ ++ types[MIPS_SI_FTYPE_SI_SI] ++ = build_function_type_list (intSI_type_node, ++ intSI_type_node, intSI_type_node, ++ NULL_TREE); ++ ++ types[MIPS_VOID_FTYPE_VOID] ++ = build_function_type_list (void_type_node, void_type_node, NULL_TREE); ++ ++ types[MIPS_VOID_FTYPE_SI_SI] ++ = build_function_type_list (void_type_node, ++ intSI_type_node, intSI_type_node, NULL_TREE); ++ ++ types[MIPS_SF_FTYPE_SF] ++ = build_function_type_list (float_type_node, ++ float_type_node, NULL_TREE); ++ ++ types[MIPS_SI_FTYPE_SF] ++ = build_function_type_list (intSI_type_node, ++ float_type_node, NULL_TREE); ++ } + + /* Iterate through all of the bdesc arrays, initializing all of the + builtin functions. */ +@@ -9703,30 +9872,44 @@ + + /* Expand a MIPS_BUILTIN_DIRECT function. ICODE is the code of the + .md pattern and ARGLIST is the list of function arguments. TARGET, +- if nonnull, suggests a good place to put the result. */ ++ if nonnull, suggests a good place to put the result. ++ HAS_TARGET indicates the function must return something. */ + + static rtx +-mips_expand_builtin_direct (enum insn_code icode, rtx target, tree arglist) ++mips_expand_builtin_direct (enum insn_code icode, rtx target, tree arglist, ++ bool has_target) + { + rtx ops[MAX_RECOG_OPERANDS]; +- int i; ++ int i = 0; + +- target = mips_prepare_builtin_target (icode, 0, target); +- for (i = 1; i < insn_data[icode].n_operands; i++) ++ if (has_target) ++ { ++ /* We save target to ops[0]. */ ++ ops[0] = mips_prepare_builtin_target (icode, 0, target); ++ i = 1; ++ } ++ ++ /* We need to test if arglist is not zero. Some instructions have extra ++ clobber registers. */ ++ for (; i < insn_data[icode].n_operands && arglist != 0; i++) + ops[i] = mips_prepare_builtin_arg (icode, i, &arglist); + +- switch (insn_data[icode].n_operands) ++ switch (i) + { ++ case 0: ++ emit_insn (GEN_FCN (icode) (0)); ++ break; ++ + case 2: +- emit_insn (GEN_FCN (icode) (target, ops[1])); ++ emit_insn (GEN_FCN (icode) (ops[0], ops[1])); + break; + + case 3: +- emit_insn (GEN_FCN (icode) (target, ops[1], ops[2])); ++ emit_insn (GEN_FCN (icode) (ops[0], ops[1], ops[2])); + break; + + case 4: +- emit_insn (GEN_FCN (icode) (target, ops[1], ops[2], ops[3])); ++ emit_insn (GEN_FCN (icode) (ops[0], ops[1], ops[2], ops[3])); + break; + + default: +@@ -9857,4 +10040,26 @@ + return target; + } + ++/* Expand a __builtin_allegrex_cache() function. Make sure the passed ++ cache function code is less than 32. */ ++ ++static rtx ++mips_expand_builtin_cache (enum insn_code icode, rtx target, tree arglist) ++{ ++ rtx op0, op1; ++ ++ op0 = mips_prepare_builtin_arg (icode, 0, &arglist); ++ op1 = mips_prepare_builtin_arg (icode, 1, &arglist); ++ ++ if (GET_CODE (op0) == CONST_INT) ++ if (INTVAL (op0) < 0 || INTVAL (op0) > 0x1f) ++ { ++ error ("invalid function code '%d'", INTVAL (op0)); ++ return const0_rtx; ++ } ++ ++ emit_insn (GEN_FCN (icode) (op0, op1)); ++ return target; ++} ++ + #include "gt-mips.h" +--- gcc-4.0.2.orig/gcc/config/mips/mips.h 2005-04-15 00:00:18.000000000 -0700 ++++ gcc-psp/gcc/config/mips/mips.h 2005-08-25 20:24:02.000000000 -0700 +@@ -59,7 +59,8 @@ + PROCESSOR_R8000, + PROCESSOR_R9000, + PROCESSOR_SB1, +- PROCESSOR_SR71000 ++ PROCESSOR_SR71000, ++ PROCESSOR_ALLEGREX + }; + + /* Which ABI to use. ABI_32 (original 32, or o32), ABI_N32 (n32), +@@ -308,6 +309,7 @@ + #define TARGET_MIPS9000 (mips_arch == PROCESSOR_R9000) + #define TARGET_SB1 (mips_arch == PROCESSOR_SB1) + #define TARGET_SR71K (mips_arch == PROCESSOR_SR71000) ++#define TARGET_ALLEGREX (mips_arch == PROCESSOR_ALLEGREX) + + /* Scheduling target defines. */ + #define TUNE_MIPS3000 (mips_tune == PROCESSOR_R3000) +@@ -322,6 +324,7 @@ + #define TUNE_MIPS7000 (mips_tune == PROCESSOR_R7000) + #define TUNE_MIPS9000 (mips_tune == PROCESSOR_R9000) + #define TUNE_SB1 (mips_tune == PROCESSOR_SB1) ++#define TUNE_ALLEGREX (mips_tune == PROCESSOR_ALLEGREX) + + /* True if the pre-reload scheduler should try to create chains of + multiply-add or multiply-subtract instructions. For example, +@@ -873,6 +876,9 @@ + && !TARGET_MIPS5500 \ + && !TARGET_MIPS16) + ++/* ISA has just the integer condition move instructions (movn,movz) */ ++#define ISA_HAS_INT_CONDMOVE (TARGET_ALLEGREX) ++ + /* ISA has the mips4 FP condition code instructions: FP-compare to CC, + branch on CC, and move (both FP and non-FP) on CC. */ + #define ISA_HAS_8CC (ISA_MIPS4 \ +@@ -889,7 +895,8 @@ + + /* ISA has conditional trap instructions. */ + #define ISA_HAS_COND_TRAP (!ISA_MIPS1 \ +- && !TARGET_MIPS16) ++ && !TARGET_MIPS16 \ ++ && !TARGET_ALLEGREX) + + /* ISA has integer multiply-accumulate instructions, madd and msub. */ + #define ISA_HAS_MADD_MSUB ((ISA_MIPS32 \ +@@ -907,6 +914,7 @@ + #define ISA_HAS_CLZ_CLO ((ISA_MIPS32 \ + || ISA_MIPS32R2 \ + || ISA_MIPS64 \ ++ || TARGET_ALLEGREX \ + ) && !TARGET_MIPS16) + + /* ISA has double-word count leading zeroes/ones instruction (not +@@ -954,6 +962,7 @@ + || TARGET_MIPS5400 \ + || TARGET_MIPS5500 \ + || TARGET_SR71K \ ++ || TARGET_ALLEGREX \ + )) + + /* ISA has 64-bit rotate right instruction. */ +@@ -987,6 +996,13 @@ + /* ISA includes the MIPS32r2 seb and seh instructions. */ + #define ISA_HAS_SEB_SEH (!TARGET_MIPS16 \ + && (ISA_MIPS32R2 \ ++ || TARGET_ALLEGREX \ ++ )) ++ ++/* ISA includes the MIPS32/64 rev 2 ext and ins instructions. */ ++#define ISA_HAS_EXT_INS (!TARGET_MIPS16 \ ++ && (ISA_MIPS32R2 \ ++ || TARGET_ALLEGREX \ + )) + + /* True if the result of a load is not available to the next instruction. +@@ -1017,7 +1033,8 @@ + #define ISA_HAS_HILO_INTERLOCKS (ISA_MIPS32 \ + || ISA_MIPS32R2 \ + || ISA_MIPS64 \ +- || TARGET_MIPS5500) ++ || TARGET_MIPS5500 \ ++ || TARGET_ALLEGREX) + + /* Add -G xx support. */ + +@@ -1427,6 +1444,11 @@ + /* Define if loading short immediate values into registers sign extends. */ + #define SHORT_IMMEDIATES_SIGN_EXTEND + ++/* The [d]clz instructions have the natural values at 0. */ ++ ++#define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \ ++ ((VALUE) = GET_MODE_BITSIZE (MODE), true) ++ + /* Standard register usage. */ + + /* Number of hardware registers. We have: +--- gcc-4.0.2.orig/gcc/config/mips/mips.md 2005-05-08 04:56:58.000000000 -0700 ++++ gcc-psp/gcc/config/mips/mips.md 2005-08-28 09:29:10.000000000 -0700 +@@ -70,6 +70,21 @@ + (UNSPEC_RSQRT2 209) + (UNSPEC_RECIP1 210) + (UNSPEC_RECIP2 211) ++ ++ ;; Sony ALLEGREX instructions ++ (UNSPEC_BITREV 400) ++ (UNSPEC_WSBH 401) ++ (UNSPEC_WSBW 402) ++ ++ (UNSPEC_CLO 403) ++ (UNSPEC_CTO 404) ++ ++ (UNSPEC_CACHE 405) ++ (UNSPEC_SYNC 406) ++ ++ (UNSPEC_CEIL_W_S 407) ++ (UNSPEC_FLOOR_W_S 408) ++ (UNSPEC_ROUND_W_S 409) + ] + ) + +@@ -1514,9 +1529,9 @@ + (mult:DI + (any_extend:DI (match_operand:SI 1 "register_operand" "d")) + (any_extend:DI (match_operand:SI 2 "register_operand" "d")))))] +- "!TARGET_64BIT && ISA_HAS_MSAC" ++ "!TARGET_64BIT && (ISA_HAS_MSAC || TARGET_ALLEGREX)" + { +- if (TARGET_MIPS5500) ++ if (TARGET_MIPS5500 || TARGET_ALLEGREX) + return "msub\t%1,%2"; + else + return "msac\t$0,%1,%2"; +@@ -1631,12 +1646,12 @@ + (mult:DI (any_extend:DI (match_operand:SI 1 "register_operand" "d")) + (any_extend:DI (match_operand:SI 2 "register_operand" "d"))) + (match_operand:DI 3 "register_operand" "0")))] +- "(TARGET_MAD || ISA_HAS_MACC) ++ "(TARGET_MAD || ISA_HAS_MACC || TARGET_ALLEGREX) + && !TARGET_64BIT" + { + if (TARGET_MAD) + return "mad\t%1,%2"; +- else if (TARGET_MIPS5500) ++ else if (TARGET_MIPS5500 || TARGET_ALLEGREX) + return "madd\t%1,%2"; + else + /* See comment in *macc. */ +@@ -1911,36 +1926,24 @@ + ;; .................... + ;; + +-(define_insn "ffs2" +- [(set (match_operand:GPR 0 "register_operand" "=&d") +- (ffs:GPR (match_operand:GPR 1 "register_operand" "d"))) +- (clobber (match_scratch:GPR 2 "=&d")) +- (clobber (match_scratch:GPR 3 "=&d"))] +- "!TARGET_MIPS16" ++(define_expand "ffs2" ++ [(set (match_operand:GPR 0 "register_operand" "") ++ (ffs:GPR (match_operand:GPR 1 "register_operand" "")))] ++ "ISA_HAS_CLZ_CLO" + { +- if (optimize && find_reg_note (insn, REG_DEAD, operands[1])) +- return "%(\ +-move\t%0,%.\;\ +-beq\t%1,%.,2f\n\ +-%~1:\tand\t%2,%1,0x0001\;\ +-addu\t%0,%0,1\;\ +-beq\t%2,%.,1b\;\ +-srl\t%1,%1,1\n\ +-%~2:%)"; +- +- return "%(\ +-move\t%0,%.\;\ +-move\t%3,%1\;\ +-beq\t%3,%.,2f\n\ +-%~1:\tand\t%2,%3,0x0001\;\ +-addu\t%0,%0,1\;\ +-beq\t%2,%.,1b\;\ +-srl\t%3,%3,1\n\ +-%~2:%)"; +-} +- [(set_attr "type" "multi") +- (set_attr "mode" "") +- (set_attr "length" "28")]) ++ rtx r1, r2, r3, r4; ++ ++ r1 = gen_reg_rtx (mode); ++ r2 = gen_reg_rtx (mode); ++ r3 = gen_reg_rtx (mode); ++ r4 = gen_reg_rtx (mode); ++ emit_insn (gen_neg2 (r1, operands[1])); ++ emit_insn (gen_and3 (r2, operands[1], r1)); ++ emit_insn (gen_clz2 (r3, r2)); ++ emit_move_insn (r4, GEN_INT (GET_MODE_BITSIZE (mode))); ++ emit_insn (gen_sub3 (operands[0], r4, r3)); ++ DONE; ++}) + + ;; + ;; ................... +@@ -2790,7 +2793,7 @@ + + (define_expand "extzv" + [(set (match_operand 0 "register_operand") +- (zero_extract (match_operand:QI 1 "memory_operand") ++ (zero_extract (match_operand 1 "nonimmediate_operand") + (match_operand 2 "immediate_operand") + (match_operand 3 "immediate_operand")))] + "!TARGET_MIPS16" +@@ -2799,12 +2802,33 @@ + INTVAL (operands[2]), + INTVAL (operands[3]))) + DONE; ++ else if (mips_use_ins_ext_p (operands[1], operands[2], operands[3])) ++ { ++ if (GET_MODE (operands[0]) == DImode) ++ emit_insn (gen_extzvdi (operands[0], operands[1], operands[2], ++ operands[3])); ++ else ++ emit_insn (gen_extzvsi (operands[0], operands[1], operands[2], ++ operands[3])); ++ DONE; ++ } + else + FAIL; + }) + ++(define_insn "extzv" ++ [(set (match_operand:GPR 0 "register_operand" "=d") ++ (zero_extract:GPR (match_operand:GPR 1 "register_operand" "d") ++ (match_operand:SI 2 "immediate_operand" "I") ++ (match_operand:SI 3 "immediate_operand" "I")))] ++ "mips_use_ins_ext_p (operands[1], operands[2], operands[3])" ++ "ext\t%0,%1,%3,%2" ++ [(set_attr "type" "arith") ++ (set_attr "mode" "")]) ++ ++ + (define_expand "insv" +- [(set (zero_extract (match_operand:QI 0 "memory_operand") ++ [(set (zero_extract (match_operand 0 "nonimmediate_operand") + (match_operand 1 "immediate_operand") + (match_operand 2 "immediate_operand")) + (match_operand 3 "reg_or_0_operand"))] +@@ -2814,10 +2838,30 @@ + INTVAL (operands[1]), + INTVAL (operands[2]))) + DONE; ++ else if (mips_use_ins_ext_p (operands[0], operands[1], operands[2])) ++ { ++ if (GET_MODE (operands[0]) == DImode) ++ emit_insn (gen_insvdi (operands[0], operands[1], operands[2], ++ operands[3])); ++ else ++ emit_insn (gen_insvsi (operands[0], operands[1], operands[2], ++ operands[3])); ++ DONE; ++ } + else + FAIL; + }) + ++(define_insn "insv" ++ [(set (zero_extract:GPR (match_operand:GPR 0 "register_operand" "+d") ++ (match_operand:SI 1 "immediate_operand" "I") ++ (match_operand:SI 2 "immediate_operand" "I")) ++ (match_operand:GPR 3 "reg_or_0_operand" "dJ"))] ++ "mips_use_ins_ext_p (operands[0], operands[1], operands[2])" ++ "ins\t%0,%z3,%2,%1" ++ [(set_attr "type" "arith") ++ (set_attr "mode" "")]) ++ + ;; Unaligned word moves generated by the bit field patterns. + ;; + ;; As far as the rtl is concerned, both the left-part and right-part +@@ -4087,6 +4131,25 @@ + [(set_attr "type" "shift") + (set_attr "mode" "")]) + ++(define_expand "rotl3" ++ [(set (match_operand:GPR 0 "register_operand") ++ (rotate:GPR (match_operand:GPR 1 "register_operand") ++ (match_operand:SI 2 "arith_operand")))] ++ "ISA_HAS_ROTR_" ++{ ++ rtx temp; ++ ++ if (GET_CODE (operands[2]) == CONST_INT) ++ temp = GEN_INT (GET_MODE_BITSIZE (mode) - INTVAL (operands[2])); ++ else ++ { ++ temp = gen_reg_rtx (mode); ++ emit_insn (gen_neg2 (temp, operands[2])); ++ } ++ emit_insn (gen_rotr3 (operands[0], operands[1], temp)); ++ DONE; ++}) ++ + ;; + ;; .................... + ;; +@@ -5200,7 +5263,7 @@ + (const_int 0)]) + (match_operand:GPR 2 "reg_or_0_operand" "dJ,0") + (match_operand:GPR 3 "reg_or_0_operand" "0,dJ")))] +- "ISA_HAS_CONDMOVE" ++ "ISA_HAS_CONDMOVE || ISA_HAS_INT_CONDMOVE" + "@ + mov%T4\t%0,%z2,%1 + mov%t4\t%0,%z3,%1" +@@ -5230,8 +5293,12 @@ + (if_then_else:GPR (match_dup 5) + (match_operand:GPR 2 "reg_or_0_operand") + (match_operand:GPR 3 "reg_or_0_operand")))] +- "ISA_HAS_CONDMOVE" ++ "ISA_HAS_CONDMOVE || ISA_HAS_INT_CONDMOVE" + { ++ if (ISA_HAS_INT_CONDMOVE ++ && GET_MODE_CLASS (GET_MODE (cmp_operands[0])) == MODE_FLOAT) ++ FAIL; ++ + gen_conditional_move (operands); + DONE; + }) +@@ -5299,3 +5366,6 @@ + ; The MIPS Paired-Single Floating Point and MIPS-3D Instructions. + + (include "mips-ps-3d.md") ++ ++; Sony ALLEGREX instructions. ++(include "allegrex.md") +--- gcc-4.0.2.orig/gcc/config/mips/psp.h 1969-12-31 16:00:00.000000000 -0800 ++++ gcc-psp/gcc/config/mips/psp.h 2005-07-12 03:05:10.000000000 -0700 +@@ -0,0 +1,31 @@ ++/* Support for Sony's Playstation Portable (PSP). ++ Copyright (C) 2005 Free Software Foundation, Inc. ++ Contributed by Marcus R. Brown ++ ++This file is part of GCC. ++ ++GCC 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. ++ ++GCC 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 GCC; see the file COPYING. If not, write to ++the Free Software Foundation, 59 Temple Place - Suite 330, ++Boston, MA 02111-1307, USA. */ ++ ++/* Override the startfile spec to include crt0.o. */ ++#undef STARTFILE_SPEC ++#define STARTFILE_SPEC "crt0%O%s crti%O%s crtbegin%O%s" ++ ++#undef SUBTARGET_CPP_SPEC ++#define SUBTARGET_CPP_SPEC "-DPSP=1 -D__psp__=1 -D_PSP=1" ++ ++/* Get rid of the .pdr section. */ ++#undef SUBTARGET_ASM_SPEC ++#define SUBTARGET_ASM_SPEC "-mno-pdr" +--- gcc-4.0.2.orig/gcc/config/mips/t-allegrex 1969-12-31 16:00:00.000000000 -0800 ++++ gcc-psp/gcc/config/mips/t-allegrex 2005-06-19 18:09:38.000000000 -0700 +@@ -0,0 +1,29 @@ ++# Suppress building libgcc1.a, since the MIPS compiler port is complete ++# and does not need anything from libgcc1.a. ++LIBGCC1 = ++CROSS_LIBGCC1 = ++ ++EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o crti.o crtn.o ++# Don't let CTOR_LIST end up in sdata section. ++CRTSTUFF_T_CFLAGS = -G 0 ++ ++# Assemble startup files. ++$(T)crti.o: $(srcdir)/config/mips/crti.asm $(GCC_PASSES) ++ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ ++ -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/mips/crti.asm ++ ++$(T)crtn.o: $(srcdir)/config/mips/crtn.asm $(GCC_PASSES) ++ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \ ++ -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/mips/crtn.asm ++ ++# We must build libgcc2.a with -G 0, in case the user wants to link ++# without the $gp register. ++TARGET_LIBGCC2_CFLAGS = -G 0 ++ ++# Build the libraries for both hard and soft floating point ++ ++MULTILIB_OPTIONS = ++MULTILIB_DIRNAMES = ++ ++LIBGCC = stmp-multilib ++INSTALL_LIBGCC = install-multilib +--- gcc-4.0.2.orig/gcc/hwint.h 2004-11-23 20:31:57.000000000 -0800 ++++ gcc-psp/gcc/hwint.h 2005-07-22 21:50:31.000000000 -0700 +@@ -80,7 +80,7 @@ + # define HOST_WIDE_INT_PRINT_DOUBLE_HEX "0x%lx%08lx" + # endif + #else +-# define HOST_WIDE_INT_PRINT "ll" ++# define HOST_WIDE_INT_PRINT HOST_LONG_LONG_FORMAT + # define HOST_WIDE_INT_PRINT_C "LL" + /* We can assume that 'long long' is at least 64 bits. */ + # define HOST_WIDE_INT_PRINT_DOUBLE_HEX \ +--- gcc-4.0.2.orig/gcc/version.c 2005-10-22 14:38:17.000000000 -0700 ++++ gcc-psp/gcc/version.c 2005-10-22 14:44:30.000000000 -0700 +@@ -5,7 +5,7 @@ + please modify this string to indicate that, e.g. by putting your + organization's name in parentheses at the end of the string. */ + +-const char version_string[] = "4.0.2"; ++const char version_string[] = "4.0.2 (PSPDEV 20051022)"; + + /* This is the location of the online document giving instructions for + reporting bugs. If you distribute a modified version of GCC, +@@ -14,4 +14,4 @@ + forward us bugs reported to you, if you determine that they are + not bugs in your modifications.) */ + +-const char bug_report_url[] = ""; ++const char bug_report_url[] = ""; diff --git a/dkpsp/patches/newlib-1.13.0.patch b/dkpsp/patches/newlib-1.13.0.patch index fbc8d83..6ab9dd2 100644 --- a/dkpsp/patches/newlib-1.13.0.patch +++ b/dkpsp/patches/newlib-1.13.0.patch @@ -1,4447 +1,5642 @@ ---- 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/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-10-02 20:55:44.000000000 -0400 -@@ -0,0 +1,22 @@ -+## 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 -+ -+lib_a_SOURCES = libcglue.c pspcwd.c -+lib_a_LIBADD = $(LIBCGLUE_MULT_OBJS) -+ -+all: crt0.o -+ -+$(LIBCGLUE_MULT_OBJS): libcglue.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-10-02 20:55:42.000000000 -0400 -@@ -0,0 +1,344 @@ -+# 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 -+ -+ -+lib_a_SOURCES = libcglue.c pspcwd.c -+lib_a_LIBADD = $(LIBCGLUE_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 -+lib_a_OBJECTS = libcglue.o pspcwd.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 $@ -+ -+# 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 ---- 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 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 <&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 <&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 <> confdefs.h <&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 <&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 </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 < 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 <> $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 <> $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-10-17 17:53:39.000000000 -0400 -@@ -0,0 +1,667 @@ -+/* -+ * 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 -+ * Copyright (c) 2005 James Forshaw -+ * Copyright (c) 2005 John Kelley -+ * Copyright (c) 2005 Jim Paris -+ * -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* These functions aren't exposed in any public headers, and they probably don't need to be. */ -+int sceKernelStdin(void); -+int sceKernelStdout(void); -+int sceKernelStderr(void); -+ -+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]; -+ -+#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 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 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 fd; -+} -+#endif -+ -+#ifdef F__close -+int _close(int fd) -+{ -+ if (fd < 0) { -+ return -EBADF; -+ } -+ -+ if ((fd >= 0) && (fd < __PSP_FILENO_MAX)) { -+ if (__psp_filename_map[fd] != NULL) { -+ free(__psp_filename_map[fd]); -+ __psp_filename_map[fd] = NULL; -+ } -+ } -+ -+ return sceIoClose(fd); -+} -+#endif -+ -+#ifdef F__read -+int _read(int fd, void *buf, size_t size) -+{ -+ if (fd < 0) { -+ return -EBADF; -+ } -+ -+ return sceIoRead(fd, buf, size); -+} -+#endif -+ -+#ifdef F__write -+int _write(int fd, const void *buf, size_t size) -+{ -+ if (fd < 0) { -+ return -EBADF; -+ } -+ -+ return sceIoWrite(fd, buf, size); -+} -+#endif -+ -+#ifdef F__lseek -+off_t _lseek(int fd, off_t offset, int whence) -+{ -+ if (fd < 0) { -+ return -EBADF; -+ } -+ -+ /* We don't have to do anything with the whence argument because SEEK_* == PSP_SEEK_*. */ -+ return (off_t) 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 sceIoRemove(dest); -+} -+#endif -+ -+#ifdef F__link -+int _link(const char *name1, const char *name2) -+{ -+ 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); -+ return NULL; -+ } -+ -+ dirp->uid = uid; -+ -+ return dirp; -+} -+#endif -+ -+#ifdef F_readdir -+struct dirent *readdir(DIR *dirp) -+{ -+ SceIoDirent *de; -+ -+ de = (SceIoDirent *)malloc(sizeof(SceIoDirent)); -+ -+ if (sceIoDread(dirp->uid, de) <= 0) -+ { -+ free(de); -+ return NULL; -+ } -+ -+ return (struct dirent *)de; -+} -+#endif -+ -+#ifdef F_closedir -+int closedir(DIR *dirp) -+{ -+ if (dirp != NULL) -+ { -+ int uid; -+ uid = dirp->uid; -+ free (dirp); -+ return sceIoDclose(uid); -+ } -+ 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 sceKernelLibcGettimeofday(tp, tzp); -+} -+ -+#endif -+ -+/* If we're being built for PSPSDK's libc this function isn't defined. */ -+#ifdef F_glue_gettimeofday -+int gettimeofday(struct timeval *tp, struct timezone *tzp) -+{ -+ return sceKernelLibcGettimeofday(tp, tzp); -+} -+#endif -+ -+#if defined(F_clock) || defined(F_glue_clock) -+clock_t clock(void) -+{ -+ return sceKernelLibcClock(); -+} -+#endif -+ -+#if defined(F_time) || defined(F_glue_time) -+time_t time(time_t *t) -+{ -+ return 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 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]; -+ -+ if(__psp_path_absolute(filename, dest, MAXPATHLEN) < 0) { -+ errno = ENAMETOOLONG; -+ return -1; -+ } -+ -+ memset(buf, '\0', sizeof(struct stat)); -+ if(sceIoGetstat(dest, &psp_stat) < 0) -+ return -1; -+ -+ 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 sceIoChstat(dest, &psp_stat, FIO_CST_SIZE); -+} -+#endif -+ -+/* Unsupported newlib system calls. */ -+#ifdef F__fork -+pid_t fork(void) -+{ -+ return (pid_t) -1; -+} -+#endif -+ -+#ifdef F__getpid -+pid_t _getpid(void) -+{ -+ return (pid_t) -1; -+} -+#endif -+ -+#ifdef F__kill -+int _kill(int unused, int unused2) -+{ -+ return -1; -+} -+#endif -+ -+#ifdef F__wait -+pid_t _wait(int *unused) -+{ -+ 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; -+ return -1; -+ } -+ return 0; -+} -+#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"); -+ } -+ -+ /* 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; -+ static char tz[10]; -+ sprintf(tz, "GMT%s%02i:%02i", tzOffset < 0 ? "+" : "-", hours, minutes); -+ setenv("TZ", tz, 1); -+ tzset(); -+} -+ -+#endif /* F__exit */ -+ -+/* newlib's errno.h wants a function that returns a pointer to errno. */ -+#ifdef F_glue___errno -+#undef errno -+ -+int errno; -+ -+/* TODO: Should this be made reentrant (wrapping interrupt disable/enable -+ around it should do it)? */ -+int * __errno(void) -+{ -+ return &errno; -+} -+#endif ---- 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 -+ * Copyright (c) 2005 James Forshaw -+ * Copyright (c) 2005 John Kelley -+ * Copyright (c) 2005 Jim Paris -+ * -+ */ -+#include -+#include -+#include -+ -+#include -+#include -+ -+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-09-29 21:21:33.000000000 -0400 -@@ -0,0 +1,35 @@ -+#ifndef _SYS_DIRENT_H -+#define _SYS_DIRENT_H -+ -+/* PSP dirent.h, based on pspiofilemgr_dirent.h -+ by Jim Paris */ -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* Defines DIR */ -+#include -+ -+#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; -+}; -+ -+DIR *opendir (const char *); -+struct dirent *readdir (DIR *); -+int closedir (DIR *); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif +--- 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 +--- 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 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 <&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 <&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 <> confdefs.h <&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 <&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 </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 < 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 <> $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 <> $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 ++ * Copyright (c) 2005 James Forshaw ++ * Copyright (c) 2005 John Kelley ++ * Copyright (c) 2005 Jim Paris ++ * ++ */ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++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 ++ * Copyright (c) 2005 James Forshaw ++ * Copyright (c) 2005 John Kelley ++ * Copyright (c) 2005 Jim Paris ++ * ++ */ ++#include ++#include ++#include ++ ++#include ++#include ++ ++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 */ ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#include ++ ++#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 ++ ++#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 ++ * Copyright (c) 2005 James Forshaw ++ * Copyright (c) 2005 John Kelley ++ * ++ * $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 ++#include ++#include ++ ++#include ++#include ++ ++/* ++** 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; idxtype; ++ } ++ ++ /* ++ ** 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 && precision3 || (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+precision0 || 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=0 && precision=0x7f ){ ++ buf[i++] = '^'; ++ buf[i] = (c&0x1f)+0x40; ++ }else{ ++ buf[i] = c; ++ } ++ } ++ bufpt = buf; ++ length = i; ++ if( precision>=0 && precision0 ){ ++ 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 && head0 ) *(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 diff --git a/dkpsp/scripts/build-gcc.sh b/dkpsp/scripts/build-gcc.sh index 4edc884..fbbd0d6 100644 --- a/dkpsp/scripts/build-gcc.sh +++ b/dkpsp/scripts/build-gcc.sh @@ -53,9 +53,9 @@ cd $BUILDSCRIPTDIR svn checkout svn://svn.pspdev.org/psp/trunk/pspsdk || { echo "ERROR GETTING PSPSDK"; exit 1; } cd pspsdk -./bootstrap || { echo "ERROR RUNNING PSPSDK BOOSTRAP"; exit 1; } -./configure || { echo "ERROR RUNNING PSPSDK CONFIGURE"; exit 1; } -$MAKE install-data || { echo "ERROR INSTALLING PSPSDK HEADERS"; exit 1; } +./bootstrap || { echo "ERROR RUNNING PSPSDK BOOTSTRAP"; exit 1; } +./configure || { echo "ERROR RUNNING PSPSDK CONFIGURE"; exit 1; } +$MAKE install-data || { echo "ERROR INSTALLING PSPSDK HEADERS"; exit 1; } #---------------------------------------------------------------------------------