I see, Bill, thank you for the clarification on mingw support specifics.
Brian, is there any equivalent of --enable-fat in Visual Studio build of MPIR? Thank you. Pavel Holoborodko -- Multiprecision Computing Toolbox for MATLAB. http://www.advanpix.com/ On Sat, May 26, 2012 at 11:17 AM, Bill Hart <goodwillh...@googlemail.com>wrote: > I don't even know if building a fat binary with MinGW64 is even > possible, even in theory. > > My guess is 2.5.0 was simply ignoring the --enable-fat flag. > > As far as I know, building with the 32 bit version of MinGW supports > --enable-fat though. But that is no use to you as you want a 64 bit > binary. > > To build a binary that runs on a wide range of processors, you could try > > ./configure --build=x86_64-w64-mingw32 > > This should run on all x86_64 processors. This won't be as fast as a > true fat binary though. It just selects lowest common denominator > assembly files. > > Bill. > > On 26 May 2012 00:22, Pavel Holoborodko <pa...@holoborodko.com> wrote: > > 2.5.0 compiles fine with --enable-fat with all tests passing. > > > > Then how I can compile mpir so that binaries will work on wide range > > of CPUs? Generic C build, --march, else? Could you teach me? > > > > Thanks in advance. > > Pavel. > > > > On May 25, 2012, at 22:06, Bill Hart <goodwillh...@googlemail.com> > wrote: > > > >> It looks like you supplied --enable-fat when configuring MPIR. > >> > >> This is not supported under MinGW. > >> > >> Bill. > >> > >> On 25 May 2012 04:03, Pavel Holoborodko <pa...@holoborodko.com> wrote: > >>> Thank you for taking this problem under consideration. > >>> > >>> To see the full picture I've tried to compile MPIR from SVN\trunk. > >>> There are many errors coming from Assembler (as was anticipated by > Brian). > >>> Cause seems to be simple enough to fix, but I have little experience > with > >>> Assembler. > >>> > >>> Hope this report will help somehow. Please see error messages at the > end of > >>> the mail. > >>> > >>> *** > >>> On a very different topic. > >>> > >>> I've been using MPIR (through MPFR and MPC) to develop special plugin > for > >>> MATLAB, which provides numerical methods in arbitrary precision for the > >>> system. > >>> It covers basic math, linear algebra, optimization, ODE, integration, > >>> special functions, etc. > >>> > >>> Product is commercial, full name is Multiprecision Computing Toolbox > for > >>> MATLAB, website: http://advanpix.com. > >>> MPIR library is acknowledged on the main page of the project, as well > as in > >>> "Info" section (shipped with plugin): > >>> http://www.advanpix.com/documentation/mp-info/ > >>> > >>> I have no idea if this is appropriate, but can I ask you to reference > my > >>> toolbox from MPIR page? > >>> *** > >>> > >>> Errors coming from Assembler: > >>> > >>> libtool: compile: x86_64-w64-mingw32-gcc -std=gnu99 -DHAVE_CONFIG_H > -I. > >>> -I.. -D__GMP_WITHIN_GMP -I.. -DOPERATION_fat_divrem_1 -O2 -m64 -c > >>> fat_divrem_1.c -DDLL > >>> _EXPORT -DPIC -o .libs/fat_divrem_1.o > >>> C:\Users\Pavel\AppData\Local\Temp\ccHSijVV.s: Assembler messages: > >>> C:\Users\Pavel\AppData\Local\Temp\ccHSijVV.s:25: Error: incorrect > register > >>> `C%:e\sUis'e russ\ePda vweilt\hA p`pq' suDfaftiax\ > >>> ocal\Temp\ccpHqXIY.s: Assembler messages: > >>> C:\Users\Pavel\AppData\Local\Temp\ccpHqXIY.s:23: Erromake[2]: r:*** > >>> [fat_divexact_byfobm1.lo] Error 1 > >>> ncorrect register `%ebx' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccj23bx2.s: Assembler messages: > >>> C:\Users\Pavel\AppData\Local\Temp\ccj23bx2.s:31: Error: register type > >>> mismatch for `bsf' > >>> C:\Users\Pavel\AppData\Local\Temp\ccj23bx2.s:82: Error: incorrect > register > >>> `%r9d' used with `q'C :s\uUfsfeirxs\P > >>> vel\ACp:p\DUastae\rLso\cPaalv\eTle\mApp\pcDcaXt0aE\aLQo5c.asl:\ > >>> ATsesmepm\bclcejr2 3mbexs2s.asg:make[2]: e1s1*** [fat_divexact_by3c.lo] > >>> Error 1:0 > >>> : > >>> CE:\Ursreorrs:\ Pavienlc\oArprpeDcatt ar\eLgoicsatle\rT e`m%pr\9cdc'X > >>> 0uEsaeQd5 .wsi:t5h3 :` q' Esurfrfoirx: > >>> ncorrect register `%ecx' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:67: Error: incorrect > register > >>> `%r8d' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:113: Error: incorrect > register > >>> `%edx' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:120: Error: operand type > >>> mismatch for `add' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:121: Error: operand type > >>> mismatch for `make[2]: ad*** [fat_divexact_1.lo] Error 1c' > >>> > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:128: Error: incorrect > register > >>> `%r9d' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:131: Error: operand type > >>> mismatch for `add' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:132: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:161: Error: incorrect > register > >>> `%edx' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:168: Error: operand type > >>> mismatch for `add' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:169: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:176: Error: incorrect > register > >>> `%r9d' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:179: Error: operand type > >>> mismatch for `add' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:180: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:195: Error: incorrect > register > >>> `%ecx' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:209: Error: incorrect > register > >>> `%r8d' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:225: Error: incorrect > register > >>> `%esi' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:232: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:239: Error: incorrect > register > >>> `%r9d' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:243: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:290: Error: incorrect > register > >>> `%ebp' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:311: Error: incorrect > register > >>> `%edx' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:318: Error: operand type > >>> mismatch for `add' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:319: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:326: Error: incorrect > register > >>> `%r10d' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:329: Error: operand type > >>> mismatch for `add' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:330: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:355: Error: incorrect > register > >>> `%esi' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:362: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:369: Error: incorrect > register > >>> `%r10d' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:373: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:394: Error: incorrect > register > >>> `%ecx' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:410: Error: incorrect > register > >>> `%r8d' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:432: Error: register type > >>> mismatch for `bsf' > >>> C:\Users\Pavel\AppData\Local\Temp\ccX0EaQ5.s:451: Error: incorrect > register > >>> `%ebp'libtool: compile: x86_64-w64-mingw32-gcc -std=gnu99 > -DHAVE_CONFIG_H > >>> -I. -I.. > >>> -D__GMP_WITHIN_GMP -I.. -DOPERATION_fat_divrem_2 -O2 -m64 -c > fat_divrem_2.c > >>> -DDLL_EXPORT -DPIC -o .libs/fat_divrem_2.o u > >>> d with `q' suffix > >>> make[2]: *** [fat_divrem_1.lo] Error 1 > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s: Assembler messages: > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:42: Error: operand type > >>> mismatch for `sub' > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:43: Error: operand type > >>> mismatch for `sbb' > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:88: Error: incorrect > register > >>> `%edx' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:95: Error: operand type > >>> mismatch for `add' > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:96: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:103: Error: incorrect > register > >>> `%r14d' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:109: Error: operand type > >>> mismatch for `add' > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:110: Error: operand type > >>> mismatch for `adc' > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:121: Error: incorrect > register > >>> `%r9d' used with `q' suffix > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:137: Error: operand type > >>> mismatch for `sub' > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:148: Error: operand type > >>> mismatch for `sub' > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:149: Error: operand type > >>> mismatch for `sbb' > >>> C:\Users\Pavel\AppData\Local\Temp\ccG16MSv.s:185: Error: operand type > >>> mismatch for `add' > >>> make[2]: *** [fat_divrem_2.lo] Error 1 > >>> > >>> > >>> > >>> > >>> On Thu, May 24, 2012 at 10:19 PM, Bill Hart < > goodwillh...@googlemail.com> > >>> wrote: > >>>> > >>>> This does look like a real live bug. Hopefully someone will fix it > >>>> soon. Thanks for the report, and sorry for the delay in replying. > >>>> > >>>> Bill. > >>>> > >>>> On May 14, 3:45 am, Pavel Holoborodko <pa...@holoborodko.com> wrote: > >>>>> Dear All, > >>>>> > >>>>> This is my first mail to the group. I want to thank developers for > >>>>> creating > >>>>> this beautiful and very helpful library. > >>>>> I've been using it for several years (relying on MSVC build - special > >>>>> thanks to Brian Gladman) in my projects. > >>>>> > >>>>> Now I'm transferring to mingw64 environment, and have encountered > >>>>> problem > >>>>> in building shared library of MPIR-2.5.1. > >>>>> > >>>>> I've tried to compile the latest stable version MPIR.2.5.1 using > mingw64 > >>>>> with following configuration: > >>>>> > >>>>> ./configure --prefix=/mingw --host=x86_64-w64-mingw32 --enable-fat > >>>>> --disable-static --enable-shared --enable-gmpcompat > >>>>> > >>>>> After that compilation went fine, but linker choked up with: > >>>>> > >>>>> libtool: link: x86_64-w64-mingw32-gcc -std=gnu99 -shared > >>>>> .libs\\libmpir.la.lnkscript -O2 -m64 -Wl,--export-all-symbols > >>>>> -Wl,--output-def -Wl,.libs/libmpir-3.dll.def > >>>>> -o .libs/libmpir-7.dll -Wl,--enable-auto-image-base -Xlinker > >>>>> --out-implib > >>>>> -Xlinker .libs/libmpir.dll.a > >>>>> Creating library file: .libs/libmpir.dll.a > >>>>> *mpn\\.libs\\addmul_2.o:addmul_2.as:(.text+0x0): multiple > definition of > >>>>> `__gmpn_addmul_2'* > >>>>> *mpn\\.libs\\redc_2.o:redc_2.c:(.text+0x0): first defined here* > >>>>> collect2: ld returned 1 exit status > >>>>> > >>>>> *** > >>>>> Interestingly, 2.5.0 compiles fine under the same settings. > >>>>> > >>>>> I would appreciate any help in this regard. > >>>>> > >>>>> Pavel Holoborodko. > >>>>> > >>>>> -- > >>>>> Multiprecision Computing Toolbox for MATLABhttp://www.advanpix.com/ > >>>> > >>>> -- > >>>> You received this message because you are subscribed to the Google > Groups > >>>> "mpir-devel" group. > >>>> To post to this group, send email to mpir-devel@googlegroups.com. > >>>> To unsubscribe from this group, send email to > >>>> mpir-devel+unsubscr...@googlegroups.com. > >>>> For more options, visit this group at > >>>> http://groups.google.com/group/mpir-devel?hl=en. > >>>> > >>> > >>> -- > >>> You received this message because you are subscribed to the Google > Groups > >>> "mpir-devel" group. > >>> To post to this group, send email to mpir-devel@googlegroups.com. > >>> To unsubscribe from this group, send email to > >>> mpir-devel+unsubscr...@googlegroups.com. > >>> For more options, visit this group at > >>> http://groups.google.com/group/mpir-devel?hl=en. > >> > >> -- > >> You received this message because you are subscribed to the Google > Groups "mpir-devel" group. > >> To post to this group, send email to mpir-devel@googlegroups.com. > >> To unsubscribe from this group, send email to > mpir-devel+unsubscr...@googlegroups.com. > >> For more options, visit this group at > http://groups.google.com/group/mpir-devel?hl=en. > >> > > > > -- > > You received this message because you are subscribed to the Google > Groups "mpir-devel" group. > > To post to this group, send email to mpir-devel@googlegroups.com. > > To unsubscribe from this group, send email to > mpir-devel+unsubscr...@googlegroups.com. > > For more options, visit this group at > http://groups.google.com/group/mpir-devel?hl=en. > > > > -- > You received this message because you are subscribed to the Google Groups > "mpir-devel" group. > To post to this group, send email to mpir-devel@googlegroups.com. > To unsubscribe from this group, send email to > mpir-devel+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/mpir-devel?hl=en. > > -- You received this message because you are subscribed to the Google Groups "mpir-devel" group. To post to this group, send email to mpir-devel@googlegroups.com. To unsubscribe from this group, send email to mpir-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/mpir-devel?hl=en.