Browse Source

enable cross-compile of gcc

- fix asm issue for mips mpfr (reported upstream)
- enable gcc build (not tested, yet, but at least compiles)
Waldemar Brodkorb 16 years ago
parent
commit
1298200f89
4 changed files with 63 additions and 5 deletions
  1. 1 1
      package/Config.in
  2. 1 1
      package/gcc/Config.in
  3. 13 3
      package/gcc/Makefile
  4. 48 0
      package/mpfr/patches/patch-mpfr-longlong_h

+ 1 - 1
package/Config.in

@@ -352,7 +352,7 @@ endmenu
 menu "Programming"
 source "package/binutils/Config.in"
 source "package/cxxtools/Config.in"
-#source "package/gcc/Config.in"
+source "package/gcc/Config.in"
 source "package/haserl/Config.in"
 source "package/jamvm/Config.in"
 source "package/lua/Config.in"

+ 1 - 1
package/gcc/Config.in

@@ -1,5 +1,5 @@
 config ADK_PACKAGE_GCC
-	prompt "gcc.......................... GNU Compiler Collection"
+	prompt "gcc............................... GNU Compiler Collection"
 	tristate
 	default n
 	select ADK_PACKAGE_LIBGMP

+ 13 - 3
package/gcc/Makefile

@@ -9,22 +9,32 @@ include ${TOPDIR}/mk/package.mk
 
 $(eval $(call PKG_template,GCC,gcc,${PKG_VERSION}-${PKG_RELEASE}))
 
+TCFLAGS:=		''
+TCPPFLAGS:=		''
 CONFIGURE_STYLE=	gnu
+ifeq ($(ADK_LINUX_MIPS64_LEMOTE),y)
+CONFIGURE_ARGS+=	--with-abi=64
+endif
 CONFIGURE_ARGS+=	--enable-languages=c \
-			--enable-shared \
+			--host=$(REAL_GNU_TARGET_NAME) \
+			--target=$(REAL_GNU_TARGET_NAME) \
 			--disable-__cxa_atexit \
+			--without-headers \
 			--with-gnu-ld \
 			--disable-libssp \
 			--disable-nls \
 			--disable-libmudflap \
 			--disable-libgomp \
 			--disable-multilib
-BUILD_STYLE=		auto
-INSTALL_STYLE=		auto
+BUILD_STYLE:=		auto
+ALL_TARGET:=		all-gcc all-target-libgcc
+INSTALL_STYLE:=		auto
+INSTALL_TARGET:=	install-gcc install-target-libgcc
 
 post-install:
 	${INSTALL_DIR} ${IDIR_GCC}/usr/lib
 	${INSTALL_DIR} ${IDIR_GCC}/usr/bin
 	${INSTALL_BIN} ${WRKINST}/usr/bin/gcc ${IDIR_GCC}/usr/bin/
+	${INSTALL_BIN} ${WRKINST}/usr/bin/ccp ${IDIR_GCC}/usr/bin/
 
 include ${TOPDIR}/mk/pkg-bottom.mk

+ 48 - 0
package/mpfr/patches/patch-mpfr-longlong_h

@@ -0,0 +1,48 @@
+$Id: update-patches 24 2008-08-31 14:56:13Z wbx $
+--- mpfr-2.4.1.orig/mpfr-longlong.h	2009-02-20 10:43:17.000000000 +0100
++++ mpfr-2.4.1/mpfr-longlong.h	2009-05-29 15:11:21.000000000 +0200
+@@ -1011,10 +1011,19 @@ extern UWtype __MPN(udiv_qrnnd) _PROTO (
+ #endif /* __m88000__ */
+ 
+ #if defined (__mips) && W_TYPE_SIZE == 32
+-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
++#if __GMP_GNUC_PREREQ (4,4)
++#define umul_ppmm(w1, w0, u, v) \
++  do {									\
++    UDItype __ll = (UDItype)(u) * (v);					\
++    w1 = __ll >> 32;							\
++    w0 = __ll;								\
++  } while (0)
++#endif
++#if !defined (umul_ppmm) && __GMP_GNUC_PREREQ (2,7)
+ #define umul_ppmm(w1, w0, u, v) \
+   __asm__ ("multu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v))
+-#else
++#endif
++#if !defined (umul_ppmm)
+ #define umul_ppmm(w1, w0, u, v) \
+   __asm__ ("multu %2,%3\n\tmflo %0\n\tmfhi %1"				\
+ 	   : "=d" (w0), "=d" (w1) : "d" (u), "d" (v))
+@@ -1024,10 +1033,20 @@ extern UWtype __MPN(udiv_qrnnd) _PROTO (
+ #endif /* __mips */
+ 
+ #if (defined (__mips) && __mips >= 3) && W_TYPE_SIZE == 64
+-#if __GNUC__ > 2 || __GNUC_MINOR__ >= 7
++#if __GMP_GNUC_PREREQ (4,4)
++#define umul_ppmm(w1, w0, u, v) \
++  do {									\
++    typedef unsigned int __ll_UTItype __attribute__((mode(TI)));	\
++    __ll_UTItype __ll = (__ll_UTItype)(u) * (v);			\
++    w1 = __ll >> 64;							\
++    w0 = __ll;								\
++  } while (0)
++#endif
++#if !defined (umul_ppmm) && __GMP_GNUC_PREREQ (2,7)
+ #define umul_ppmm(w1, w0, u, v) \
+   __asm__ ("dmultu %2,%3" : "=l" (w0), "=h" (w1) : "d" (u), "d" (v))
+-#else
++#endif
++#if !defined (umul_ppmm)
+ #define umul_ppmm(w1, w0, u, v) \
+   __asm__ ("dmultu %2,%3\n\tmflo %0\n\tmfhi %1"				\
+ 	   : "=d" (w0), "=d" (w1) : "d" (u), "d" (v))