Commit d49ec2f4 authored by Geert Stappers's avatar Geert Stappers

Import Upstream version 2.6.0

parent aa380a8d
2006-07-28 Borut Razem <borut.razem AT siol.net>
* support/scripts/sdcc.nsi: remove $INSTDIR\include\asm\pic16\*.h
* doc/INSTALL.txt: updated
2006-07-27 Borut Razem <borut.razem AT siol.net>
* device/lib/pic/Makefile.in, device/lib/pic/Makefile.subdir,
device/lib/pic/libdev/Makefile.in: fixed bug
[ 1438354 ] pic libsdcc: distclean doesn't work
* device/lib/pic16/Makefile.in, device/lib/pic16/Makefile.subdir,
device/lib/pic16/libio/Makefile.in: fixed bug
[ 1438344 ] pic16 lib: clean doesn't work properly
* doc/knownbugs.html removed [ 1438354 ] and [ 1438344 ] from the list
2006-07-26 Maarten Brock <sourceforge.brock AT dse.nl>
* device/lib/pic/libsdcc/fsdiv.c,
* device/lib/pic/libsdcc/fsmul.c,
* device/lib/pic16/libsdcc/float/fsdiv.c,
* device/lib/pic16/libsdcc/float/fsmul.c,
* device/lib/_fsdiv.c,
* device/lib/_fsmul.c: bugfix, handle too large and too small numbers
* support/regression/tests/bug1520966.c: added
* doc/knownbugs.html: removed [ 1520966 ] from the list
2006-07-25 Borut Razem <borut.razem AT siol.net>
* configure.in, configure, sdccconf_in.h: fixed bug
[ 1519095 ] regression test onebyte.c fails on ppc64 host
* doc/knownbugs.html: removed [ 1519095 ] from the list
2006-07-25 Maarten Brock <sourceforge.brock AT dse.nl>
* doc/knownbugs.html: added, contains list of known bugs at release
* device/include/mcs51/compiler.h: fixed SFR32 for SDCC
2006-07-23 Maarten Brock <sourceforge.brock AT dse.nl>
* device/include/mcs51/compiler.h: added SFRX for xdata based special
function registers and corrected defaults with additional warning
* device/lib/malloc.c: cosmetic changes
* device/lib/realloc.c: bugfix for bug #1496907, Thanks Efim Monyak
* src/ds390/ralloc.c (getRegBitNoSpil): reenabled,
(fillGaps): and used it
2006-07-20 Raphael Neider <rneider AT web.de>
* src/pic/device.c (addMemRange,assignRegister): suppress verbose
output unless SDCCPICDEBUG is set
* device/lib/pic16/Makefile.rules (%.lib target): suppress verbose
output if SILENT is set
2006-07-11 Borut Razem <borut.razem AT siol.net>
* doc/README.txt: updated
......@@ -13,7 +66,7 @@
2006-07-08 Maarten Brock <sourceforge.brock AT dse.nl>
* device/include/mcs51/XC866.h: added sbit definitions for Px_x, P1_x, P2_x
* src/pic16/glue.c (initPointer), fixed bug 1496419 for pic16
* src/pic16/glue.c (initPointer): fixed bug 1496419 for pic16
2006-07-06 Maarten Brock <sourceforge.brock AT dse.nl>
......@@ -11954,4 +12007,4 @@
* as/mcs51/lklex.c: accept everything as symbol name in rel-files, bug fix ID 452601
* as/mcs51/lksym.c: accept everything as symbol name in rel-files, bug fix ID 452601
$Revision: 4290 $
$Revision: 4309 $
......@@ -6281,30 +6281,99 @@ _ACEOF
echo "$as_me:$LINENO: checking whether char is unsigned" >&5
echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6
if test "${ac_cv_c_char_unsigned+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
int
main ()
{
static int test_array [1 - 2 * !(((char) -1) < 0)];
test_array [0] = 0
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest.$ac_objext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_c_char_unsigned=no
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_c_char_unsigned=yes
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
fi
echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5
echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6
if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then
cat >>confdefs.h <<\_ACEOF
#define __CHAR_UNSIGNED__ 1
_ACEOF
fi
ac_cv_c_char_unsigned=yes
type_name()
{
if expr "$ac_cv_sizeof_char" '>=' "$1" >/dev/null; then
echo "char"
exit
fi
if expr "$ac_cv_sizeof_short" '>=' "$1" >/dev/null; then
echo "short"
exit
fi
if expr "$ac_cv_sizeof_int" '>=' "$1" >/dev/null; then
echo "int"
exit
fi
if expr "$ac_cv_sizeof_long" '>=' "$1" >/dev/null; then
echo "long"
exit
fi
if expr "$ac_cv_sizeof_char" '>=' "$1" >/dev/null; then
echo "char"
exit
fi
if expr "$ac_cv_sizeof_short" '>=' "$1" >/dev/null; then
echo "short"
exit
fi
if expr "$ac_cv_sizeof_int" '>=' "$1" >/dev/null; then
echo "int"
exit
fi
if expr "$ac_cv_sizeof_long" '>=' "$1" >/dev/null; then
echo "long"
exit
fi
echo "long"
}
echo "$as_me:$LINENO: checking type name for byte" >&5
echo $ECHO_N "checking type name for byte... $ECHO_C" >&6
TYPE_BYTE=`type_name 1`
TYPE_CHAR=`type_name 1`
if test "$ac_cv_c_char_unsigned" = "yes"; then
TYPE_BYTE="signed $TYPE_CHAR"
else
TYPE_BYTE=$TYPE_CHAR
fi
echo "$as_me:$LINENO: result: $TYPE_BYTE" >&5
echo "${ECHO_T}$TYPE_BYTE" >&6
echo "$as_me:$LINENO: checking type name for word" >&5
......@@ -6317,6 +6386,7 @@ echo $ECHO_N "checking type name for dword... $ECHO_C" >&6
TYPE_DWORD=`type_name 4`
echo "$as_me:$LINENO: result: $TYPE_DWORD" >&5
echo "${ECHO_T}$TYPE_DWORD" >&6
cat >>confdefs.h <<_ACEOF
#define TYPE_BYTE $TYPE_BYTE
_ACEOF
......@@ -6330,6 +6400,19 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
cat >>confdefs.h <<_ACEOF
#define TYPE_UBYTE unsigned $TYPE_CHAR
_ACEOF
cat >>confdefs.h <<_ACEOF
#define TYPE_UWORD unsigned $TYPE_WORD
_ACEOF
cat >>confdefs.h <<_ACEOF
#define TYPE_UDWORD unsigned $TYPE_DWORD
_ACEOF
echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6
if test "${ac_cv_c_bigendian+set}" = set; then
......
......@@ -344,30 +344,36 @@ AC_CHECK_SIZEOF(char)
AC_CHECK_SIZEOF(short)
AC_CHECK_SIZEOF(int)
AC_CHECK_SIZEOF(long)
AC_C_CHAR_UNSIGNED
type_name()
{
if expr "$ac_cv_sizeof_char" '>=' "$1" >/dev/null; then
echo "char"
exit
fi
if expr "$ac_cv_sizeof_short" '>=' "$1" >/dev/null; then
echo "short"
exit
fi
if expr "$ac_cv_sizeof_int" '>=' "$1" >/dev/null; then
echo "int"
exit
fi
if expr "$ac_cv_sizeof_long" '>=' "$1" >/dev/null; then
echo "long"
exit
fi
if expr "$ac_cv_sizeof_char" '>=' "$1" >/dev/null; then
echo "char"
exit
fi
if expr "$ac_cv_sizeof_short" '>=' "$1" >/dev/null; then
echo "short"
exit
fi
if expr "$ac_cv_sizeof_int" '>=' "$1" >/dev/null; then
echo "int"
exit
fi
if expr "$ac_cv_sizeof_long" '>=' "$1" >/dev/null; then
echo "long"
exit
fi
echo "long"
}
AC_MSG_CHECKING(type name for byte)
TYPE_BYTE=`type_name 1`
TYPE_CHAR=`type_name 1`
if test "$ac_cv_c_char_unsigned" = "yes"; then
TYPE_BYTE="signed $TYPE_CHAR"
else
TYPE_BYTE=$TYPE_CHAR
fi
AC_MSG_RESULT($TYPE_BYTE)
AC_MSG_CHECKING(type name for word)
TYPE_WORD=`type_name 2`
......@@ -375,10 +381,15 @@ AC_MSG_RESULT($TYPE_WORD)
AC_MSG_CHECKING(type name for dword)
TYPE_DWORD=`type_name 4`
AC_MSG_RESULT($TYPE_DWORD)
AC_DEFINE_UNQUOTED(TYPE_BYTE, $TYPE_BYTE)
AC_DEFINE_UNQUOTED(TYPE_WORD, $TYPE_WORD)
AC_DEFINE_UNQUOTED(TYPE_DWORD, $TYPE_DWORD)
AC_DEFINE_UNQUOTED(TYPE_UBYTE, unsigned $TYPE_CHAR)
AC_DEFINE_UNQUOTED(TYPE_UWORD, unsigned $TYPE_WORD)
AC_DEFINE_UNQUOTED(TYPE_UDWORD, unsigned $TYPE_DWORD)
AC_C_BIGENDIAN
# Set standard installation paths
......
......@@ -30,6 +30,8 @@
* prerequisite byte order or adjacency. None of these multi-byte sfr
* combinations will guarantee the order in which they are accessed when read
* or written.
* SFR16X and SFR32X for 16 bit and 32 bit xdata registers are not defined
* to avoid portability issues because of compiler endianness.
* This file is to be included in every microcontroller specific header file.
* Example:
*
......@@ -40,6 +42,8 @@
*
* SFR (P0, 0x80); // Port 0
*
* SFRX (CPUCS, 0xE600); // Cypress FX2 Control and Status register in xdata memory at 0xE600
*
* SFR16 (TMR2, 0xCC); // Timer 2, lsb at 0xCC, msb at 0xCD
*
* SFR16E(TMR0, 0x8C8A); // Timer 0, lsb at 0x8A, msb at 0x8C
......@@ -47,6 +51,7 @@
* SFR32 (MAC0ACC, 0x93); // SiLabs C8051F120 32 bits MAC0 Accumulator, lsb at 0x93, msb at 0x96
*
* SFR32E(SUMR, 0xE5E4E3E2); // TI MSC1210 SUMR 32 bits Summation register, lsb at 0xE2, msb at 0xE5
*
*/
#ifndef COMPILER_H
......@@ -56,12 +61,13 @@
* http://sdcc.sf.net
*/
#if defined SDCC
# define SBIT(name, addr, bit) __sbit __at(addr+bit) name
# define SFR(name, addr) __sfr __at(addr) name
# define SFR16(name, addr) __sfr16 __at(((addr+1)<<8) | addr) name
# define SFR16E(name, fulladdr) __sfr16 __at(fulladdr) name
# define SFR32(name, addr) __sfr32 __at(((addr+3)<<24) | ((addr+2)<<16) | ((addr+1)<<8) | addr) name
# define SFR32E(name, fulladdr) __sfr32 __at(fulladdr) name
# define SBIT(name, addr, bit) __sbit __at(addr+bit) name
# define SFR(name, addr) __sfr __at(addr) name
# define SFRX(name, addr) xdata volatile unsigned char __at(addr) name
# define SFR16(name, addr) __sfr16 __at(((addr+1U)<<8) | addr) name
# define SFR16E(name, fulladdr) __sfr16 __at(fulladdr) name
# define SFR32(name, addr) __sfr32 __at(((addr+3UL)<<24) | ((addr+2UL)<<16) | ((addr+1UL)<<8) | addr) name
# define SFR32E(name, fulladdr) __sfr32 __at(fulladdr) name
/** Keil C51
* http://www.keil.com
......@@ -69,6 +75,7 @@
#elif defined __CX51__
# define SBIT(name, addr, bit) sbit name = addr^bit
# define SFR(name, addr) sfr name = addr
# define SFRX(name, addr) volatile unsigned char xdata name _at_ addr
# define SFR16(name, addr) sfr16 name = addr
# define SFR16E(name, fulladdr) /* not supported */
# define SFR32(name, fulladdr) /* not supported */
......@@ -78,9 +85,10 @@
* http://www.raisonance.com
*/
#elif defined __RC51__
# define SBIT(name, addr, bit) at (addr+bit) sbit name
# define SFR(name, addr) sfr at addr name
# define SFR16(name, addr) sfr16 at addr name
# define SBIT(name, addr, bit) at (addr+bit) sbit name
# define SFR(name, addr) sfr at addr name
# define SFRX(name, addr) xdata at addr volatile unsigned char name
# define SFR16(name, addr) sfr16 at addr name
# define SFR16E(name, fulladdr) /* not supported */
# define SFR32(name, fulladdr) /* not supported */
# define SFR32E(name, fulladdr) /* not supported */
......@@ -91,6 +99,7 @@
#elif defined __ICC8051__
# define SBIT(name, addr, bit) __bit __no_init volatile bool name @ (addr+bit)
# define SFR(name, addr) __sfr __no_init volatile unsigned char name @ addr
# define SFRX(name, addr) __xdata __no_init volatile unsigned char name @ addr
# define SFR16(name, addr) __sfr __no_init volatile unsigned int name @ addr
# define SFR16E(name, fulladdr) /* not supported */
# define SFR32(name, fulladdr) __sfr __no_init volatile unsigned long name @ addr
......@@ -102,6 +111,7 @@
#elif defined _CC51
# define SBIT(name, addr, bit) _sfrbit name _at(addr+bit)
# define SFR(name, addr) _sfrbyte name _at(addr)
# define SFRX(name, addr) _xdat volatile unsigned char name _at(addr)
# define SFR16(name, addr) /* not supported */
# define SFR16E(name, fulladdr) /* not supported */
# define SFR32(name, fulladdr) /* not supported */
......@@ -113,6 +123,7 @@
#elif defined HI_TECH_C
# define SBIT(name, addr, bit) volatile bit name @ (addr+bit)
# define SFR(name, addr) volatile unsigned char name @ addr
# define SFRX(name, addr) volatile far unsigned char name @ addr
# define SFR16(name, addr) /* not supported */
# define SFR16E(name, fulladdr) /* not supported */
# define SFR32(name, fulladdr) /* not supported */
......@@ -124,6 +135,7 @@
#elif defined _XC51_VER
# define SBIT(name, addr, bit) _sfrbit name = (addr+bit)
# define SFR(name, addr) _sfr name = addr
# define SFRX(name, addr) volatile unsigned char _xdata name _at addr
# define SFR16(name, addr) _sfrword name = addr
# define SFR16E(name, fulladdr) /* not supported */
# define SFR32(name, fulladdr) /* not supported */
......@@ -135,6 +147,7 @@
#elif defined __UC__
# define SBIT(name, addr, bit) unsigned char bit name @ (addr+bit)
# define SFR(name, addr) near unsigned char name @ addr
# define SFRX(name, addr) xdata volatile unsigned char name @ addr
# define SFR16(name, addr) /* not supported */
# define SFR16E(name, fulladdr) /* not supported */
# define SFR32(name, fulladdr) /* not supported */
......@@ -144,12 +157,14 @@
* unknown compiler
*/
#elif
# define SBIT(name, addr, bit) volatile bool
# define SFR(name, addr) volatile unsigned char
# define SFR16(name, addr) volatile short
# define SFR16E(name, fulladdr) volatile short
# define SFR32(name, fulladdr) volatile int
# define SFR32E(name, fulladdr) volatile int
# warning unknown compiler
# define SBIT(name, addr, bit) volatile bool name
# define SFR(name, addr) volatile unsigned char name
# define SFRX(name, addr) volatile unsigned char name
# define SFR16(name, addr) volatile unsigned short name
# define SFR16E(name, fulladdr) volatile unsigned short name
# define SFR32(name, fulladdr) volatile unsigned long name
# define SFR32E(name, fulladdr) volatile unsigned long name
#endif
......
......@@ -42,20 +42,52 @@ ___fsdiv:
cpl sign_a
00001$:
// if divisor is zero, return infinity
cjne r7, #0, 00002$
ljmp fs_return_inf
// if divisor is zero, ...
cjne r7, #0, 00003$
// if dividend is also zero, return NaN
cjne r4, #0, 00002$
ljmp fs_return_nan
00002$:
// but dividend is non-zero, return infinity
ljmp fs_return_inf
00003$:
// if dividend is zero, return zero
cjne r4, #0, 00003$
cjne r4, #0, 00004$
ljmp fs_return_zero
00003$:
00004$:
// if divisor is infinity, ...
mov a, exp_b
cjne a, #0xFF, 00006$
// and dividend is also infinity, return NaN
mov a, exp_a
cjne a, #0xFF, 00005$
ljmp fs_return_nan
00005$:
// but dividend is not infinity, return zero
ljmp fs_return_zero
00006$:
// if dividend is infinity, return infinity
mov a, exp_a
cjne a, #0xFF, 00007$
ljmp fs_return_inf
00007$:
// subtract exponents
clr c
mov a, exp_a
subb a, exp_b
// if no carry then no underflow
jnc 00008$
add a, #127
jc 00009$
ljmp fs_return_zero
00008$:
add a, #128
dec a
jnc 00009$
ljmp fs_return_inf
00009$:
mov exp_a, a
// need extra bits on a's mantissa
......@@ -67,7 +99,7 @@ ___fsdiv:
subb a, r3
mov a, r7
subb a, r4
jc 00005$
jc 00010$
dec exp_a
clr c
mov a, r2
......@@ -82,15 +114,15 @@ ___fsdiv:
clr a
rlc a
mov r4, a
sjmp 00006$
00005$:
sjmp 00011$
00010$:
#endif
clr a
xch a, r4
xch a, r3
xch a, r2
mov r1, a
00006$:
00011$:
// begin long division
push exp_a
......@@ -99,7 +131,7 @@ ___fsdiv:
#else
mov b, #24
#endif
00010$:
00012$:
// compare
clr c
mov a, r1
......@@ -112,11 +144,11 @@ ___fsdiv:
subb a, #0 // carry==0 if mant1 >= mant2
#ifdef FLOAT_FULL_ACCURACY
djnz b, 00011$
djnz b, 00013$
sjmp 00015$
00011$:
00013$:
#endif
jc 00012$
jc 00014$
// subtract
mov a, r1
subb a, r5
......@@ -132,7 +164,7 @@ ___fsdiv:
mov r4, a
clr c
00012$:
00014$:
// shift result
cpl c
mov a, r0
......@@ -161,10 +193,10 @@ ___fsdiv:
mov r4, a
#ifdef FLOAT_FULL_ACCURACY
sjmp 00010$
sjmp 00012$
00015$:
#else
djnz b, 00010$
djnz b, 00012$
#endif
// now we've got a division result, so all we need to do
......@@ -185,6 +217,7 @@ ___fsdiv:
pop exp_a
jnc 00016$
inc exp_a
// incrementing exp_a without checking carry is dangerous
mov r4, #0x80
00016$:
#else
......@@ -238,7 +271,7 @@ float __fsdiv (float a1, float a2)
volatile long result;
volatile unsigned long mask;
volatile long mant1, mant2;
volatile int exp ;
volatile int exp;
char sign;
fl1.f = a1;
......@@ -254,8 +287,10 @@ float __fsdiv (float a1, float a2)
/* divide by zero??? */
if (!fl2.l)
/* return NaN or -NaN */
return (-1.0);
{/* return NaN or -NaN */
fl2.l = 0x7FC00000;
return (fl2.f);
}
/* numerator zero??? */
if (!fl1.l)
......@@ -296,7 +331,12 @@ float __fsdiv (float a1, float a2)
result &= ~HIDDEN;
/* pack up and go home */
fl1.l = PACK (sign ? 1ul<<31 : 0, (unsigned long) exp, result);
if (exp >= 0x100)
fl1.l = (sign ? SIGNBIT : 0) | 0x7F800000;
else if (exp < 0)
fl1.l = 0;
else
fl1.l = PACK (sign ? SIGNBIT : 0 , exp, result);
return (fl1.f);
}
......
......@@ -51,12 +51,32 @@ ___fsmul:
cpl sign_a
00003$:
// add the exponents
// check if either input is infinity
mov a, exp_b
cjne a, #0xFF, 00004$
ljmp fs_return_inf
00004$:
mov a, exp_a
cjne a, #0xFF, 00005$
ljmp fs_return_inf
00005$:
// add the exponents
add a, exp_b
// if carry then no underflow
jc 00006$
add a, #130
mov exp_a, a
jc 00007$
ljmp fs_return_zero
00006$:
add a, #131
dec a
jnc 00007$
ljmp fs_return_inf
00007$:
mov exp_a, a
// now we need to multipy r4/r3/r2 * r7/r6/r5
// ------------------------------------------
......@@ -215,7 +235,7 @@ float __fsmul (float a1, float a2) {
volatile unsigned long result;
volatile int exp;
char sign;
fl1.f = a1;
fl2.f = a2;
......@@ -252,7 +272,12 @@ float __fsmul (float a1, float a2) {
result &= ~HIDDEN;
/* pack up and go home */
fl1.l = PACK (sign ? SIGNBIT : 0 , (unsigned long)exp, result);
if (exp >= 0x100)
fl1.l = (sign ? SIGNBIT : 0) | 0x7F800000;
else if (exp < 0)
fl1.l = 0;
else
fl1.l = PACK (sign ? SIGNBIT : 0 , exp, result);
return (fl1.f);
}
......
......@@ -102,27 +102,27 @@ malloc (unsigned int size)
if (ret)
{
if (!current_header->len)
{ //This code works only for first_header in the list and only
current_header->len = size; //for first allocation
}
else
{
//else create new header at the begin of spare
new_header = (MEMHEADER * )((char *)current_header + current_header->len);
new_header->next = current_header->next; //and plug it into the chain
new_header->prev = current_header;
current_header->next = new_header;
if (new_header->next)
{
new_header->next->prev = new_header;
if (!current_header->len)
{ //This code works only for first_header in the list and only
current_header->len = size; //for first allocation
}
new_header->len = size; //mark as used
else
{
//else create new header at the begin of spare
new_header = (MEMHEADER * )((char *)current_header + current_header->len);
new_header->next = current_header->next; //and plug it into the chain
new_header->prev = current_header;
current_header->next = new_header;
if (new_header->next)
{
new_header->next->prev = new_header;
}
new_header->len = size; //mark as used
ret = &new_header->mem;
}
}
}
}
return ret;
return ret;
}
#else
......
......@@ -9,7 +9,7 @@
### This file may be distributed under the terms of the the
### GNU General Public License (GPL). See GPL for details.
###
### $Id: Makefile.in 4250 2006-06-25 22:17:57Z tecodev $
### $Id: Makefile.in 4305 2006-07-27 14:24:33Z borutr $
###
top_builddir = @top_builddir@
......@@ -48,7 +48,8 @@ clean : recurse
$(Q)-$(RMDIR) "$(top_builddir)$(builddir)"
distclean: clean
rm -f Makefile
$(Q)-$(RM) config.cache config.log config.status Makefile Makefile.common
$(Q)-$(RMDIR) bin
clean-intermediate : recurse
......
......@@ -9,7 +9,7 @@
### This file may be distributed under the terms of the the
### GNU General Public License (GPL). See GPL for details.
###
### $Id: Makefile.subdir 4148 2006-05-01 20:47:12Z tecodev $
### $Id: Makefile.subdir 4305 2006-07-27 14:24:33Z borutr $
###
include $(top_builddir)Makefile.common
......@@ -61,6 +61,9 @@ clean : recurse
$(Q)-$(RM) $(addprefix $(top_builddir)$(installdir)/,$(notdir $(TARGETS)))
$(Q)-[ ! -d "$(top_builddir)$(builddir)" ] || $(RMDIR) "$(top_builddir)$(builddir)"
distclean : clean
$(Q)-$(RM) Makefile
clean-intermediate : recurse
@-echo "dummy" > .dummy
$(Q)-$(RM) .dummy $(foreach suf,p lst hex cod sym,$(OBJS:.o=.$(suf)))
......
......@@ -39,6 +39,9 @@ clean : clean-intermediate
$(Q)-$(RM) $(OBJS) $(LIBS)
$(Q)-$(RMDIR) ../build/libdev
distclean: clean
$(Q)-$(RM) Makefile
clean-intermediate :
$(Q)-$(RM) *.lst *.d *.adb
/*
** libgcc support for software floating point.
** Copyright (C) 1991 by Pipeline Associates, Inc. All rights reserved.
** Permission is granted to do *anything* you want with this file,
** commercial or otherwise, provided this message remains intact. So there!
** I would appreciate receiving any updates/patches/changes that anyone
** makes, and am willing to be the repository for said changes (am I
** making a big mistake?).
**
** Pat Wood
** Pipeline Associates, Inc.
** pipeline!phw@motown.com or
** sun!pipeline!phw or
** uunet!motown!pipeline!phw
*/