summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile7
-rw-r--r--Rules.mak4
-rw-r--r--extra/Configs/Config.m68k.coff11
-rw-r--r--ldso/Makefile6
-rw-r--r--libc/sysdeps/linux/m68k/Makefile11
-rw-r--r--libc/sysdeps/linux/m68k/float.h96
6 files changed, 127 insertions, 8 deletions
diff --git a/Makefile b/Makefile
index 4c95a4830..7516209e8 100644
--- a/Makefile
+++ b/Makefile
@@ -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 \
diff --git a/Rules.mak b/Rules.mak
index 4d9c8660d..f44ea8d9b 100644
--- a/Rules.mak
+++ b/Rules.mak
@@ -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_ */