In ptw32_InterlockedCompareExchange.c, I've added a section for | |
Borland's compiler; it's identical to that for the MS compiler except | |
that it uses /* ... */ comments instead of ; comments. | |
[RPJ: need to define HAVE_TASM32 in config.h to use the above.] | |
The other file is a makefile suitable for use with Borland's compiler | |
(run "make -fBmakefile" in the directory). It builds a single version | |
of the library, pthreadBC.dll and the corresponding pthreadBC.lib | |
import library, which is comparable to the pthreadVC version; I can't | |
personally see any demand for the versions that include structured or | |
C++ exception cancellation handling so I haven't attempted to build | |
those versions of the library. (I imagine a static version might be | |
of use to some, but we can't legally use that on my commercial | |
projects so I can't try that out, unfortunately.) | |
[RPJ: Added tests\Bmakefile as well.] | |
Borland C++ doesn't define the ENOSYS constant used by pthreads-win32; | |
rather than make more extensive patches to the pthreads-win32 source I | |
have a mostly-arbitrary constant for it in the makefile. However this | |
doesn't make it visible to the application using the library, so if | |
anyone actually wants to use this constant in their apps (why?) | |
someone might like to make a seperate NEED_BCC_something define to add | |
this stuff. | |
The makefile also #defines EDEADLK as EDEADLOCK, _timeb as timeb, and | |
_ftime as ftime, to deal with the minor differences between the two | |
RTLs' naming conventions, and sets the compiler flags as required to | |
get a normal compile of the library. | |
[RPJ: Moved errno values and _timeb etc to pthread.h, so apps will also | |
use them.] | |
(While I'm on the subject, the reason Borland users should recompile | |
the library, rather than using the impdef/implib technique suggested | |
previously on the mailing list, is that a) the errno constants are | |
different, so the results returned by the pthread_* functions can be | |
meaningless, and b) the errno variable/pseudo-variable itself is | |
different in the MS & BCC runtimes, so you can't access the | |
pthreadVC's errno from a Borland C++-compiled host application | |
correctly - I imagine there are other potential problems from the RTL | |
mismatch too.) | |
[RPJ: Make sure you use the same RTL in both dll and application builds. | |
The dll and tests Bmakefiles use cw32mti.lib. Having some trouble with | |
memory read exceptions running the test suite using BCC55.] | |
Best regards, | |
Will | |
-- | |
Will Bryant | |
Systems Architect, eCOSM Limited | |
Cell +64 21 655 443, office +64 3 365 4176 | |
http://www.ecosm.com/ |