diff options
-rw-r--r-- | Makefile | 7 | ||||
-rw-r--r-- | Rules.mak | 4 | ||||
-rw-r--r-- | extra/Configs/Config.m68k.coff | 11 | ||||
-rw-r--r-- | ldso/Makefile | 6 | ||||
-rw-r--r-- | libc/sysdeps/linux/m68k/Makefile | 11 | ||||
-rw-r--r-- | libc/sysdeps/linux/m68k/float.h | 96 |
6 files changed, 127 insertions, 8 deletions
@@ -82,7 +82,7 @@ headers: dummy (cd include/bits; ln -sf ../../../../../uClibc_config.h uClibc_config.h) $(MAKE) -C libc/sysdeps/linux/$(TARGET_ARCH) headers -uClibc_config.h: Config +uClibc_config.h: Makefile Config @echo "/* WARNING!!! AUTO-GENERATED FILE!!! DO NOT EDIT!!! */" > uClibc_config.h @echo "#if !defined __FEATURES_H && !defined __need_uClibc_config_h" >> uClibc_config.h @echo "#error Never include <bits/uClibc_config.h> directly; use <features.h> instead." >> uClibc_config.h @@ -130,6 +130,11 @@ uClibc_config.h: Config else \ echo "#define HAVE_ELF 1" >> uClibc_config.h ; \ fi + @if [ "$(HAVE_SHARED)" = "false" ] ; then \ + echo "#undef HAVE_SHARED" >> uClibc_config.h ; \ + else \ + echo "#define HAVE_SHARED 1" >> uClibc_config.h ; \ + fi @if [ "$(TARGET_ARCH)" = "sh" ] ; then \ echo "#define NO_UNDERSCORES 1" >> uClibc_config.h ; \ else \ @@ -71,8 +71,8 @@ endif NATIVE_ARCH = $(shell uname -m | sed -e 's/i.86/i386/' -e 's/sparc.*/sparc/' -e 's/arm.*/arm/g' -e 's/m68k.*/m68k/' -e 's/ppc/powerpc/g') -ifeq ($(strip $(HAS_MMU)),true) - DO_SHARED=shared +ifeq ($(strip $(HAVE_SHARED)),true) + DO_SHARED=shared endif LDSO_PRESENT=$(strip $(shell cd $(TOPDIR)/ldso/d-link; ls -d $(TARGET_ARCH) 2>/dev/null)) diff --git a/extra/Configs/Config.m68k.coff b/extra/Configs/Config.m68k.coff index bb9fc3369..32473466e 100644 --- a/extra/Configs/Config.m68k.coff +++ b/extra/Configs/Config.m68k.coff @@ -66,19 +66,19 @@ HAS_MMU = false # Set this to `false' if you don't have/need basic floating point support # support in libc (strtod, printf, scanf). Set it to `true' otherwise. # Note: If not true, Rules.mak disables libm as well. -HAS_FLOATING_POINT = false +HAS_FLOATING_POINT = true # Set this to `false' if you don't have/need float functions in libm. # Set it to `true' otherwise, and make sure HAS_FLOATING_POINT is true as well. -HAS_LIBM_FLOAT = false +HAS_LIBM_FLOAT = true # Set this to `false' if you don't have/need double functions in libm. # Set it to `true' otherwise, and make sure HAS_FLOATING_POINT is true as well. -HAS_LIBM_DOUBLE = false +HAS_LIBM_DOUBLE = true # Set this to `false' if you don't have/need long double functions in libm. # Set it to `true' otherwise, and make sure HAS_FLOATING_POINT is true as well. -HAS_LIBM_LONG_DOUBLE = false +HAS_LIBM_LONG_DOUBLE = true # Set this to `false' if you don't have/need "(unsigned) long long int" support. # Set it to `true' otherwise. @@ -165,3 +165,6 @@ OPTIMIZATION = $(DEBUG_CFLAGS) # This is a COFF compiler (ick), so disable all the cool stuff HAVE_ELF = false + +# We can't properly do shared libraries on m68k (at least, not yet ;-) +HAVE_SHARED = false diff --git a/ldso/Makefile b/ldso/Makefile index aa37d2ea4..0337ab90a 100644 --- a/ldso/Makefile +++ b/ldso/Makefile @@ -4,15 +4,21 @@ include $(TOPDIR)Rules.mak SUBDIRS = libdl ALL_SUBDIRS = util libdl d-link + + all: +ifeq ($(strip $(HAVE_SHARED)),true) @if [ -d $(TOPDIR)ldso/d-link/$(TARGET_ARCH) ] ; then \ $(MAKE) -C d-link; \ fi; +endif shared: +ifeq ($(strip $(HAVE_SHARED)),true) @if [ -d $(TOPDIR)ldso/d-link/$(TARGET_ARCH) ] ; then \ set -e ; for d in $(SUBDIRS) ; do $(MAKE) -C $$d ; done \ fi; +endif clean: set -e ; for d in $(ALL_SUBDIRS) ; do $(MAKE) -C $$d $@ ; done diff --git a/libc/sysdeps/linux/m68k/Makefile b/libc/sysdeps/linux/m68k/Makefile index 5f2b73581..3ca165344 100644 --- a/libc/sysdeps/linux/m68k/Makefile +++ b/libc/sysdeps/linux/m68k/Makefile @@ -60,8 +60,17 @@ $(COBJS): %.o : %.c $(STRIPTOOL) -x -R .note -R .comment $*.o headers: - # no arch-specific headers +ifeq ($(strip $(HAVE_ELF)),false) + echo "Working around compiler bug in the m68k-pic-coff toolchain" + cd $(TOPDIR)/include;ln -fs ../libc/sysdeps/linux/m68k/float.h . +else + # no arch-specific headers +endif + clean: rm -f *.[oa] *~ core +ifeq ($(strip $(HAVE_ELF)),false) + rm -f $(TOPDIR)/include/float.h +endif diff --git a/libc/sysdeps/linux/m68k/float.h b/libc/sysdeps/linux/m68k/float.h new file mode 100644 index 000000000..7dbe4e92a --- /dev/null +++ b/libc/sysdeps/linux/m68k/float.h @@ -0,0 +1,96 @@ +/* float.h for target with IEEE 32 bit and 64 bit floating point formats */ +#ifndef _FLOAT_H_ +#define _FLOAT_H_ +/* Produced by enquire version 4.3, CWI, Amsterdam */ + + /* Radix of exponent representation */ +#undef FLT_RADIX +#define FLT_RADIX 2 + /* Number of base-FLT_RADIX digits in the significand of a float */ +#undef FLT_MANT_DIG +#define FLT_MANT_DIG 24 + /* Number of decimal digits of precision in a float */ +#undef FLT_DIG +#define FLT_DIG 6 + /* Addition rounds to 0: zero, 1: nearest, 2: +inf, 3: -inf, -1: unknown */ +#undef FLT_ROUNDS +#define FLT_ROUNDS 1 + /* Difference between 1.0 and the minimum float greater than 1.0 */ +#undef FLT_EPSILON +#define FLT_EPSILON 1.19209290e-07F + /* Minimum int x such that FLT_RADIX**(x-1) is a normalised float */ +#undef FLT_MIN_EXP +#define FLT_MIN_EXP (-125) + /* Minimum normalised float */ +#undef FLT_MIN +#define FLT_MIN 1.17549435e-38F + /* Minimum int x such that 10**x is a normalised float */ +#undef FLT_MIN_10_EXP +#define FLT_MIN_10_EXP (-37) + /* Maximum int x such that FLT_RADIX**(x-1) is a representable float */ +#undef FLT_MAX_EXP +#define FLT_MAX_EXP 128 + /* Maximum float */ +#undef FLT_MAX +#define FLT_MAX 3.40282347e+38F + /* Maximum int x such that 10**x is a representable float */ +#undef FLT_MAX_10_EXP +#define FLT_MAX_10_EXP 38 + + /* Number of base-FLT_RADIX digits in the significand of a double */ +#undef DBL_MANT_DIG +#define DBL_MANT_DIG 53 + /* Number of decimal digits of precision in a double */ +#undef DBL_DIG +#define DBL_DIG 15 + /* Difference between 1.0 and the minimum double greater than 1.0 */ +#undef DBL_EPSILON +#define DBL_EPSILON 2.2204460492503131e-16 + /* Minimum int x such that FLT_RADIX**(x-1) is a normalised double */ +#undef DBL_MIN_EXP +#define DBL_MIN_EXP (-1021) + /* Minimum normalised double */ +#undef DBL_MIN +#define DBL_MIN 2.2250738585072014e-308 + /* Minimum int x such that 10**x is a normalised double */ +#undef DBL_MIN_10_EXP +#define DBL_MIN_10_EXP (-307) + /* Maximum int x such that FLT_RADIX**(x-1) is a representable double */ +#undef DBL_MAX_EXP +#define DBL_MAX_EXP 1024 + /* Maximum double */ +#undef DBL_MAX +#define DBL_MAX 1.7976931348623157e+308 + /* Maximum int x such that 10**x is a representable double */ +#undef DBL_MAX_10_EXP +#define DBL_MAX_10_EXP 308 + + /* Number of base-FLT_RADIX digits in the significand of a long double */ +#undef LDBL_MANT_DIG +#define LDBL_MANT_DIG 53 + /* Number of decimal digits of precision in a long double */ +#undef LDBL_DIG +#define LDBL_DIG 15 + /* Difference between 1.0 and the minimum long double greater than 1.0 */ +#undef LDBL_EPSILON +#define LDBL_EPSILON 2.2204460492503131e-16L + /* Minimum int x such that FLT_RADIX**(x-1) is a normalised long double */ +#undef LDBL_MIN_EXP +#define LDBL_MIN_EXP (-1021) + /* Minimum normalised long double */ +#undef LDBL_MIN +#define LDBL_MIN 2.2250738585072014e-308L + /* Minimum int x such that 10**x is a normalised long double */ +#undef LDBL_MIN_10_EXP +#define LDBL_MIN_10_EXP (-307) + /* Maximum int x such that FLT_RADIX**(x-1) is a representable long double */ +#undef LDBL_MAX_EXP +#define LDBL_MAX_EXP 1024 + /* Maximum long double */ +#undef LDBL_MAX +#define LDBL_MAX 1.7976931348623157e+308L + /* Maximum int x such that 10**x is a representable long double */ +#undef LDBL_MAX_10_EXP +#define LDBL_MAX_10_EXP 308 + +#endif /* _FLOAT_H_ */ |