On 2010-9-21 10:26, Dongsheng Song wrote:
>  On 2010-9-21 10:11, Hradec wrote:
>> I got tbb.dll to build properly, but its failling when building tbbmalloc:
>>
>>
>> ../../src/tbbmalloc/MemoryAllocator.cpp:42:0: warning: "_WIN32_WINNT" 
>> redefined
>> /media/MyBook2TB_2/Mirror/cortex4all/trunk/compilers/linux.mingw32.4.6.0_20100411/bin/../lib/gcc/i686-w64-mingw32/4.6.0/../../../../i686-w64-mingw32/include/_mingw.h:171:0:
>> note: this is the location of the previous definition
>> ../../src/tbbmalloc/MemoryAllocator.cpp: In function 'uintptr_t 
>> rml::internal::cleanupCacheIfNeed()':
>> ../../src/tbbmalloc/MemoryAllocator.cpp:1384:70: error: invalid 
>> initialization of reference of type 'volatile uintptr_t&' from expression of
>> type 'size_t'
>> ../../src/tbbmalloc/Customize.h:97:18: error: in passing argument 1 of 
>> 'uintptr_t AtomicAdd(volatile uintptr_t&, uintptr_t)'
>> ../../src/tbbmalloc/MemoryAllocator.cpp:1385:68: error: invalid 
>> initialization of reference of type 'volatile uintptr_t&' from expression of
>> type 'size_t'
>> ../../src/tbbmalloc/Customize.h:97:18: error: in passing argument 1 of 
>> 'uintptr_t AtomicAdd(volatile uintptr_t&, uintptr_t)'
>> ../../src/tbbmalloc/MemoryAllocator.cpp: In function 'void* 
>> rml::internal::allocateCachedLargeObject(size_t)':
>> ../../src/tbbmalloc/MemoryAllocator.cpp:1402:51: error: invalid 
>> initialization of reference of type 'volatile uintptr_t&' from expression of
>> type 'size_t'
>> ../../src/tbbmalloc/Customize.h:97:18: error: in passing argument 1 of 
>> 'uintptr_t AtomicAdd(volatile uintptr_t&, uintptr_t)'
>> ../../src/tbbmalloc/MemoryAllocator.cpp: In function 'void* 
>> rml::internal::mallocLargeObject(size_t, size_t)':
>> ../../src/tbbmalloc/MemoryAllocator.cpp:1419:54: error: invalid 
>> initialization of reference of type 'volatile uintptr_t&' from expression of
>> type 'size_t'
>> ../../src/tbbmalloc/Customize.h:97:18: error: in passing argument 1 of 
>> 'uintptr_t AtomicAdd(volatile uintptr_t&, uintptr_t)'
>> ../../src/tbbmalloc/MemoryAllocator.cpp: In function 'bool 
>> rml::internal::freeLargeObjectToCache(rml::internal::LargeObjectHeader*)':
>> ../../src/tbbmalloc/MemoryAllocator.cpp:1450:50: error: invalid 
>> initialization of reference of type 'volatile uintptr_t&' from expression of
>> type 'size_t'
>> ../../src/tbbmalloc/Customize.h:97:18: error: in passing argument 1 of 
>> 'uintptr_t AtomicAdd(volatile uintptr_t&, uintptr_t)'
>> ../../src/tbbmalloc/MemoryAllocator.cpp:1456:51: error: invalid 
>> initialization of reference of type 'volatile uintptr_t&' from expression of
>> type 'size_t'
>> ../../src/tbbmalloc/Customize.h:97:18: error: in passing argument 1 of 
>> 'uintptr_t AtomicAdd(volatile uintptr_t&, uintptr_t)'
>> ../../src/tbbmalloc/MemoryAllocator.cpp: In function 'void 
>> rml::internal::freeLargeObject(void*)':
>> ../../src/tbbmalloc/MemoryAllocator.cpp:1468:62: error: invalid 
>> initialization of reference of type 'volatile uintptr_t&' from expression of
>> type 'size_t'
>> ../../src/tbbmalloc/Customize.h:97:18: error: in passing argument 1 of 
>> 'uintptr_t AtomicAdd(volatile uintptr_t&, uintptr_t)'
>> make[2]: *** [MemoryAllocator.o] Error 1
>> make[2]: Leaving directory
>> `/media/MyBook2TB_2/Mirror/cortex4all/trunk/OIIO/externals/build/mingw/obj/tbb22_004oss/build/windows_ia32_gcc_mingw_debug'
>> make[1]: *** [tbbmalloc] Error 2
>> make[1]: Leaving directory 
>> `/media/MyBook2TB_2/Mirror/cortex4all/trunk/OIIO/externals/build/mingw/obj/tbb22_004oss'
>>
>>
>> I'm using the automated build:
>>
>> i686-w64-mingw32-gcc (GCC) 4.6.0 20100411 (experimental)
>>
>> should I try with a newer one?
>>
>> -- 
>> Hradec
>>
> No, This is TBB bug, the following code in MemoryAllocator.cpp:
>
> #if USE_PTHREAD
>     // Some pthreads documentation says that <pthreads.h> must be first 
> header.
>     #include <pthread.h>
>     #define TlsSetValue_func pthread_setspecific
>     #define TlsGetValue_func pthread_getspecific
>     typedef pthread_key_t tls_key_t;
>     #include <sched.h>
>     inline void do_yield() {sched_yield();}
>
> #elif USE_WINTHREAD
>     #define _WIN32_WINNT 0x0400
>     #include <windows.h>
>     #define TlsSetValue_func TlsSetValue
>     #define TlsGetValue_func TlsGetValue
>     typedef DWORD tls_key_t;
>     inline void do_yield() {SwitchToThread();}
>
> #else
>     #error Must define USE_PTHREAD or USE_WINTHREAD
>
> #endif
>
> Should be changed to:
>
> #if USE_PTHREAD
>     // Some pthreads documentation says that <pthreads.h> must be first 
> header.
>     #include <pthread.h>
>     #define TlsSetValue_func pthread_setspecific
>     #define TlsGetValue_func pthread_getspecific
>     typedef pthread_key_t tls_key_t;
>     #include <sched.h>
>     inline void do_yield() {sched_yield();}
>
> #elif USE_WINTHREAD
>     #ifndef _WIN32_WINNT
>     #define _WIN32_WINNT 0x0400
>     #endif
>
>     #include <windows.h>
>     #define TlsSetValue_func TlsSetValue
>     #define TlsGetValue_func TlsGetValue
>     typedef DWORD tls_key_t;
>     inline void do_yield() {SwitchToThread();}
>
> #else
>     #error Must define USE_PTHREAD or USE_WINTHREAD
>
> #endif
>
> --
> Dongsheng
>
Sorry, _WIN32_WINNT only caused a warn, the error caused by:

#define __TBB_QV(EXP) #EXP

__TBB_QV(CRT_VER ##.dll)

Please see the following thread, only .dll => .so:
http://old.nabble.com/pasting-x-amd-x-does-not-give-a-valid-preprocessing-token-td8296218.html

--
Dongsheng


Attachment: signature.asc
Description: OpenPGP digital signature

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to