2010/1/27 Török Edwin <[email protected]>:
> On 01/27/2010 01:27 PM, Renato Botelho wrote:
>> 2010/1/27 Török Edwin <[email protected]>:
>>
>>> On 01/27/2010 12:48 PM, Renato Botelho wrote:
>>>
>>>> 2010/1/26 Török Edwin <[email protected]>:
>>>>
>>>>
>>>>> On 12/22/2009 02:39 PM, Renato Botelho wrote:
>>>>>
>>>>>
>>>>>> 2009/12/22 Török Edwin <[email protected]>:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Yes, I opened a bug about that now:
>>>>>>> https://wwws.clamav.net/bugzilla/show_bug.cgi?id=1781
>>>>>>>
>>>>>>> For now the workaround for the user is to set the CPU for the build to
>>>>>>> at least i486.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> OK, i'll mark clamav-devel port as BROKEN on FreeBSD i386 for now.
>>>>>>
>>>>>>
>>>>> Hi Renato,
>>>>>
>>>>> I have added the mutex workaround when building on i386, sorry for
>>>>> taking so long to fix.
>>>>> Also removed the Perl dependency from LLVM's configure, which would be
>>>>> needed only if we'd use LLVM's buildsystem.
>>>>> We don't use that, I've written a Makefile.am for LLVM.
>>>>>
>>>>> ClamAV should now build again on i386/FreeBSD, please test and report if
>>>>> you still have any build problems.
>>>>>
>>>>> The fix is in the git master repository (if you use git). If you are
>>>>> using a snapshot, then it will be in tomorrow's snapshot.
>>>>>
>>>>>
>>>> I had started the tests, but i was thinking something, i think we just have
>>>> a "name" problem here, FreeBSD call 32-bit arch as i386, but it doesn't
>>>> mean that is i386, looking at FreeBSD kernel config file we have 3
>>>> possibilities of CPU:
>>>>
>>>> cpu             I486_CPU
>>>> cpu             I586_CPU
>>>> cpu             I686_CPU
>>>>
>>>> As you can see, it's not really i386, so, i think we can build llvm thread 
>>>> safe.
>>>>
>>>>
>>> Would this solve it in your ports makefile (or is it too late to override?):
>>> CPUTYPE?=i586
>>>
>>
>> The problem is I cannot set this var under ports Makefile
>>
>
> Can you detect whether CPUTYPE was set or not?
> If variable was not set, then add -march=i486 to CFLAGS and CXXFLAGS.
> If variable is set then I assume CFLAGS/CXXFLAGS are already setup by
> the ports system?
>
>>
>>> That way the user can still set the CPUTYPE explicitly in /etc/make.conf
>>> to something better,
>>> and we'd get a good default (i586 instead of i386).
>>> LLVM JIT generates code for pentium and above only, so if you really run
>>> it on a i386/i486 ClamAV won't
>>> use LLVM's JIT (but fallback to an interpreter).
>>>
>>
>> If user choose to set it on make.conf ports will respect.
>>
>>
>>> Please add back this code to libclamav/c++/bytecode2llvm.cpp while
>>> testing if CPUTYPE override works:
>>> #if !defined(LLVM_MULTITHREADED) || !LLVM_MULTITHREADED
>>> #error "Multithreading not available for llvm?"
>>> #endif
>>>
>>>
>>>> What do you think about it?
>>>>
>>>>
>>> I think the problem is how FreeBSD's gcc is built.
>>> If gcc is built with i386-* triple, it will generate i386 code by
>>> default. Debian's is built as i486-linux-gnu.
>>> Anyway I don't think we can do anything about how gcc is built for old
>>> versions of FreeBSD.
>>>
>>
>> The oldest supported FreeBSD version is 6.x, and on this version we just
>> support i486+ CPUs on kernel. Based on this, when FreeBSD say you
>> i386-freebsd it just try to say it's running x86 arch, but cpu supported
>> is 486+
>>
>
> Yes, I understand that. But for gcc i386-* means generate code that runs
> on i386,
> i486-* means generate code that runs on i486 by default (and gcc itself
> is compiled in such a way).
> IMHO it would make sense to do this:
>  - for official FreeBSD packages build with CPUTYPE/-march set to the
> oldest CPU supported (i486 in this case)
>  - for ports built by users, it should default to -march=native to get
> best performance
>
> But this is getting offtopic, I don't want to change how FreeBSD builds
> its packages by default.
>
>
>> I'll try to contact someone directly from freebsd gcc team.
>>
>> Anyway, clamav built fine on FreeBSD 6, 7 and 8 i386 and amd64. If you
>> have some time, take a look at build logs here:
>>
>> http://freebsd1.asmallorange.com/index.php?action=describe_port&id=566
>>
>
> 7.2 and 8.0 buildlogs look fine.
> 6.4 has this:
>
> checking for supported C++ compiler version... configure: error: C++ compiler 
> too old (3.4.6)
>
>
> BTW you can add --enable-llvm to configure.
> That way it will fail at configure time if LLVM is not supported.
>
>> http://freebsd2.asmallorange.com/index.php?action=describe_port&id=365
>>
>
> ====================<phase 5: make test>====================
>
> make: don't know how to make regression-test(continuing)
>
>
> You can run it: "make check" (needs the "check" package to be really useful).

Hey, good news, Roman Divacky show me a way to use march=i486 on
ports, and now everything is building with atomic builtin. About FreeBSD
6.4, I set it to use gcc 4.2+ and it's ok too. If you can check the
buildlogs again,
they are in the same place.

I'll test make check now.

Thank you for all your help.

-- 
Renato Botelho
_______________________________________________
http://lurker.clamav.net/list/clamav-devel.html
Please submit your patches to our Bugzilla: http://bugs.clamav.net

Reply via email to