58 lines
2.5 KiB
Text
58 lines
2.5 KiB
Text
|
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/
|