From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tom Date: Tue, 29 May 2007 20:07:48 -0700 Subject: [Buildroot] mpfr error on cygwin for arm In-Reply-To: <20070526094801.GC15885@aon.at> References: <4656F77D.30303@teamboyce.co.uk> <465737B9.8070008@gmail.com> <20070525200333.GT24585@aon.at> <4657D933.8060109@gmail.com> <20070526094801.GC15885@aon.at> Message-ID: <465CEA84.70700@gmail.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: buildroot@busybox.net Hi Bernhard, All Enclosed is cygwin-1.patch for buildroot-20050524.tar.bz2. - requires cygwin 1.5.24 with development package - configure buildroot for arm, arm-generic, eabi, "pc-cygwin", uclibc-0.9.29, buildroot toolchain with gcc 4.1.2 - FIRST do one build attempt (will fail, just to get and extract uclibc) - apply cygwin-1.patch with p1 (it is at very bottom of this email) - THEN do another build attempt, which will build gmp, mpfr, newlib and arm-linux-uclibcgnueabi-gcc-4.1.2.exe before failing (*). Thanks Tom PS: if someone could take care of the apple part, that would be great. Also, the one fix belongs to uclibc and not to buildroot... (*) it fails when cross compiling uclibc, maybe my UCLIBC options? Hints appreciated, need this to test on target. make MAKE="make -j1" -C /tw/buildroot/toolchain_build_arm/uClibc-0.9.29 \ PREFIX= \ DEVEL_PREFIX=/ \ RUNTIME_PREFIX=/ \ HOSTCC="gcc" \ all arm-linux-uclibcgnueabi-gcc: n: No such file or directory make[1]: Entering directory `/tw/buildroot/toolchain_build_arm/uClibc-0.9.29' arm-linux-uclibcgnueabi-gcc: n: No such file or directory make[2]: `conf' is up to date. arm-linux-uclibcgnueabi-gcc: n: No such file or directory CC ldso/ldso/ldso.oS arm-linux-uclibcgnueabi-gcc: n: No such file or directory make[1]: *** [ldso/ldso/ldso.oS] Error 1 make[1]: Leaving directory `/tw/buildroot/toolchain_build_arm/uClibc-0.9.29' make: *** [/tw/buildroot/toolchain_build_arm/uClibc-0.9.29/lib/libc.a] Error 2 Bernhard Fischer wrote: > On Fri, May 25, 2007 at 11:52:35PM -0700, Tom wrote: >> Hi Bernhard and all, >> >> sorry if this thread is a little out of sequence, had problems with text >> attachment. >> >> Bernhard Fischer wrote: >>> Before you report it to the mpfr folks, please paste the error here, >>> since i suspect that it could have to do something with the >>> binary/library name extensions, which (IIRC) we currently do not handle >>> at all (there's a bug somewhere about this, if memory serves me right). >>> >> You were right about extensions, below is the error as produced by >> buildroot-20050516 built, I just added -verbose for ld. >> It can not resolve the depency to libgmp.so, because cygwin ld assumes >> libs to end in .a, .lib or .dll, and will append them to .so libs, which >> thus can never be found. >> Can I help to add support for this? > > Yes, you can. > > Depending on the target, set > ifneq $($(findstring linux,$(BR2_GNU_BUILD_SUFFIX)),) > EXEEXT:= > LIBEXT:=.a > SHREXT:=.so > endif > ifneq $($(findstring apple,$(BR2_GNU_BUILD_SUFFIX)),) > EXEEXT:=.pear > LIBEXT:=.dunno > SHREXT:=.dylib > endif > ifneq $($(findstring cygwin,$(BR2_GNU_BUILD_SUFFIX)),) > EXEEXT:=.exe > LIBEXT:=.dunno > SHREXT:=.dll > endif > ifneq $($(findstring mingw,$(BR2_GNU_BUILD_SUFFIX)),) > EXEEXT:=.exe > LIBEXT:=.dunno > SHREXT:=.dll > endif > > in the toplevel Makefile, before the > all: world > target, and use them accordingly. > > > While you're at it, it would be awesome if you could deal with this too: > We want to be able to select which flavour of lib is built (shared or > static) with a single config-option. > So, instead of changing all ".so" blindly to $(SHREXT), change it to > $(LIBTGTEXT) which is set either to > > ifeq $($(BR2_DEFAULT_LIB_TARGET),shared) > LIBTGTEXT=$(SHREXT) > else > LIBTGTEXT=$(LIBEXT) > endif > > below the newly added block i mentioned above. > > TIA and cheers, > cygwin-1.patch: --- buildroot.orig/Makefile 2007-05-29 11:55:38.025317600 -0700 +++ buildroot/Makefile 2007-05-29 19:54:26.130869700 -0700 @@ -66,7 +66,32 @@ # ############################################################# +ifneq (,$(findstring linux,$(BR2_GNU_BUILD_SUFFIX))) +EXEEXT:= +LIBEXT:=.a +SHREXT:=.so +endif +ifneq (,$(findstring apple,$(BR2_GNU_BUILD_SUFFIX))) +EXEEXT:=.pear +LIBEXT:=.dunno +SHREXT:=.dylib +endif +ifneq (,$(findstring cygwin,$(BR2_GNU_BUILD_SUFFIX))) +EXEEXT:=.exe +LIBEXT:=.lib +SHREXT:=.dll +endif +ifneq (,$(findstring mingw,$(BR2_GNU_BUILD_SUFFIX))) +EXEEXT:=.exe +LIBEXT:=.lib +SHREXT:=.dll +endif +ifeq ($(BR2_PREFER_STATIC_LIB),y) +LIBTGTEXT=$(LIBEXT) +else +LIBTGTEXT=$(SHREXT) +endif all: world --- buildroot.orig/Config.in 2007-05-29 11:54:55.651131200 -0700 +++ buildroot/Config.in 2007-05-29 19:39:05.976662000 -0700 @@ -373,6 +373,19 @@ help This option hides outdated/obsolete versions of packages. +config BR2_PREFER_STATIC_LIB + bool "prefer static libraries" + default n + help + Where possible, use static libraries. + This increases your code size a lot and should only be + used with a good reason why not use the default, which + is dynamic libraries. + + If unsure, say No. + + WARNING: This is highly experimental at the moment. + endmenu source "toolchain/Config.in" --- buildroot.orig/package/gmp/gmp.mk 2007-05-29 11:56:19.118278600 -0700 +++ buildroot/package/gmp/gmp.mk 2007-05-29 19:34:47.184755900 -0700 @@ -18,6 +18,18 @@ GMP_BE:=no endif +ifeq ($(BR2_PREFER_STATIC_LIB),y) +GMP_LIB_FLAGS:=--enable-static --disable-shared +else +GMP_LIB_FLAGS:=--disable-static --enable-shared +endif + +ifeq ($(EXEEXT),".exe") +GMP_CPP_FLAGS:=-DDLL_EXPORT +else +GMP_CPP_FLAGS:=-DDLL_EXPORT +endif + $(DL_DIR)/$(GMP_SOURCE): $(WGET) -P $(DL_DIR) $(GMP_SITE)/$(GMP_SOURCE) @@ -35,6 +47,7 @@ $(TARGET_CONFIGURE_OPTS) \ CFLAGS="$(TARGET_CFLAGS)" \ LDFLAGS="$(TARGET_LDFLAGS)" \ + CPPFLAGS="$(GMP_CPP_FLAGS)" \ ac_cv_c_bigendian=$(GMP_BE) \ $(GMP_DIR)/configure \ --target=$(GNU_TARGET_NAME) \ @@ -52,7 +65,7 @@ --includedir=/include \ --mandir=/usr/man \ --infodir=/usr/info \ - --enable-shared \ + $(GMP_LIB_FLAGS) \ $(DISABLE_NLS) \ ); touch $@ @@ -105,12 +118,12 @@ CC_FOR_BUILD="$(HOSTCC)" \ CC="$(HOSTCC)" \ CFLAGS="$(HOST_CFLAGS)" \ + CPPFLAGS="$(GMP_CPP_FLAGS)" \ $(GMP_DIR)/configure \ --prefix="$(GMP_HOST_DIR)" \ --build=$(GNU_HOST_NAME) \ --host=$(GNU_HOST_NAME) \ - --enable-shared \ - --enable-static \ + $(GMP_LIB_FLAGS) \ $(DISABLE_NLS) \ ); touch $@ --- buildroot.orig/toolchain_build_arm/uClibc-0.9.29/extra/config/Makefile 2007-04-17 04:38:21.000000000 -0700 +++ buildroot/toolchain_build_arm/uClibc-0.9.29/extra/config/Makefile 2007-05-29 19:34:47.200380600 -0700 @@ -21,7 +21,7 @@ $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(HOST_LOADLIBES) $< -o $@ $(host-cmulti): %: $(host-cobjs) $(host-cshlib) - $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(HOST_LOADLIBES) $($@-objs) -o $@ + $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) $(HOST_LOADLIBES) $($@-objs) -lintl -o $@ $(host-cobjs): %.o: %.c $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOSTCFLAGS) $(HOSTCFLAGS_$@) -c $< -o $@