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.

Reply via email to