summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog21
-rw-r--r--macosx/tkMacOSXNotify.c362
-rw-r--r--unix/Makefile.in3
-rwxr-xr-xunix/configure430
-rw-r--r--unix/tcl.m438
5 files changed, 459 insertions, 395 deletions
diff --git a/ChangeLog b/ChangeLog
index 87c1113..9c01f4b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2005-04-25 Daniel Steffen <das@users.sourceforge.net>
+
+ * macosx/tkMacOSXNotify.c: syncd with tclUnixNotfy.c changes since
+ 2004-06-22, added compile time check for threaded tcl core, removed
+ unthreaded code paths as they are never used anyway, fixed
+ TkMacOSXAlertNotifier() implementation.
+
+ * unix/Makefile.in: added TCL_STUB_LIB_FILE, needed for unexporting of
+ symbols from libtclstub to avoid duplicate symbol warnings.
+
+ * unix/tcl.m4 (Darwin): added configure checks for recently added linker
+ flags -single_module and -search_paths_first to allow building with
+ older tools (and on Mac OS X 10.1), use -single_module in SHLIB_LD and
+ not just T{CL,K}_SHLIB_LD_EXTRAS, added unexporting from Tk of symbols
+ from libtclstub to avoid duplicate symbol warnings, added PLAT_SRCS
+ definition for Mac OS X.
+ (SC_MISSING_POSIX_HEADERS): added caching of dirent.h check.
+ (SC_TCL_64BIT_FLAGS): fixed 'checking for off64_t' message output.
+
+ * unix/configure: autoconf-2.13
+
2005-04-12 Jeff Hobbs <jeffh@ActiveState.com>
* unix/tkUnixFont.c (FontMapLoadPage): reorder char[] decls to
diff --git a/macosx/tkMacOSXNotify.c b/macosx/tkMacOSXNotify.c
index 57a8b2f..09fcc91 100644
--- a/macosx/tkMacOSXNotify.c
+++ b/macosx/tkMacOSXNotify.c
@@ -12,7 +12,7 @@
* See the file "license.terms" for information on usage and redistribution
* of this file, and for a DISCLAIMER OF ALL WARRANTIES.
*
- * RCS: @(#) $Id: tkMacOSXNotify.c,v 1.5.2.2 2005/02/24 00:41:08 das Exp $
+ * RCS: @(#) $Id: tkMacOSXNotify.c,v 1.5.2.3 2005/04/26 00:49:50 das Exp $
*/
#include "tclInt.h"
@@ -21,7 +21,9 @@
#include <signal.h>
-extern TclStubs tclStubs;
+#ifndef TCL_THREADS
+#error Mac OS X notifier requires tcl threads!
+#endif
/*
* This structure is used to keep track of the notifier info for a
@@ -57,6 +59,18 @@ typedef struct FileHandlerEvent {
} FileHandlerEvent;
/*
+ *
+ * The following structure contains a set of select() masks to track
+ * readable, writable, and exceptional conditions.
+ */
+
+typedef struct SelectMasks {
+ fd_set readable;
+ fd_set writable;
+ fd_set exceptional;
+} SelectMasks;
+
+/*
* The following static structure contains the state information for the
* select based implementation of the Tcl notifier. One of these structures
* is created for each thread that is using the notifier.
@@ -65,13 +79,12 @@ typedef struct FileHandlerEvent {
typedef struct ThreadSpecificData {
FileHandler *firstFileHandlerPtr;
/* Pointer to head of file handler list. */
- fd_mask checkMasks[3*MASK_SIZE];
- /* This array is used to build up the masks
+
+ SelectMasks checkMasks; /* This structure is used to build up the masks
* to be used in the next call to select.
* Bits are set in response to calls to
* Tcl_CreateFileHandler. */
- fd_mask readyMasks[3*MASK_SIZE];
- /* This array reflects the readable/writable
+ SelectMasks readyMasks; /* This array reflects the readable/writable
* conditions that were found to exist by the
* last call to select. */
int numFdBits; /* Number of valid bits in checkMasks
@@ -79,7 +92,6 @@ typedef struct ThreadSpecificData {
* Tcl_WatchFile has been called). */
int isMainLoop; /* Is this the main Carbon Loop (in which case
* we will call RNE in the actual wait... */
-#ifdef TCL_THREADS
int onList; /* True if it is in this list */
unsigned int pollState; /* pollState is used to implement a polling
* handshake between each thread and the
@@ -97,12 +109,10 @@ typedef struct ThreadSpecificData {
int eventReady; /* True if an event is ready to be processed.
* Used as condition flag together with
* waitCV above. */
-#endif
} ThreadSpecificData;
static Tcl_ThreadDataKey dataKey;
-#ifdef TCL_THREADS
/*
* The following static indicates the number of threads that have
* initialized notifiers.
@@ -170,15 +180,11 @@ static Tcl_Condition notifierCV;
*/
static Tcl_ThreadId notifierThread;
-#endif
-
/*
* Static routines defined in this file.
*/
-#ifdef TCL_THREADS
static void NotifierThreadProc _ANSI_ARGS_((ClientData clientData));
-#endif
static int FileHandlerEventProc _ANSI_ARGS_((Tcl_Event *evPtr,
int flags));
@@ -194,7 +200,7 @@ EventRef TkMacOSXCreateFakeEvent ();
/*
*----------------------------------------------------------------------
*
- * TkMacOSXSetupTkNotifier --
+ * Tk_MacOSXSetupTkNotifier --
*
* Replaces the Tcl notifier (from tclUnixNotfy.c) with
* the Mac notifier that melds the Unix select based notifer
@@ -273,7 +279,6 @@ TkMacOSXInitNotifier()
{
ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
-#ifdef TCL_THREADS
tsdPtr->eventReady = 0;
/*
@@ -304,7 +309,6 @@ TkMacOSXInitNotifier()
}
Tcl_MutexUnlock(&notifierMutex);
-#endif
return (ClientData) tsdPtr;
}
@@ -330,7 +334,6 @@ void
TkMacOSXFinalizeNotifier(clientData)
ClientData clientData; /* Not used. */
{
-#ifdef TCL_THREADS
ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
Tcl_MutexLock(&notifierMutex);
@@ -369,7 +372,6 @@ TkMacOSXFinalizeNotifier(clientData)
Tcl_ConditionFinalize(&(tsdPtr->waitCV));
Tcl_MutexUnlock(&notifierMutex);
-#endif
}
/*
@@ -397,13 +399,23 @@ void
TkMacOSXAlertNotifier(clientData)
ClientData clientData;
{
-#ifdef TCL_THREADS
ThreadSpecificData *tsdPtr = (ThreadSpecificData *) clientData;
Tcl_MutexLock(&notifierMutex);
tsdPtr->eventReady = 1;
- Tcl_ConditionNotify(&tsdPtr->waitCV);
+ if (tsdPtr->isMainLoop) {
+ OSErr err;
+
+ /* We need to wake up the main loop, and let it have the event. */
+ EventRef fakeEvent = TkMacOSXCreateFakeEvent();
+ EventQueueRef mainEventQueue = GetMainEventQueue();
+
+ err = PostEventToQueue(mainEventQueue, fakeEvent,
+ kEventPriorityHigh);
+ ReleaseEvent(fakeEvent);
+ } else {
+ Tcl_ConditionNotify(&tsdPtr->waitCV);
+ }
Tcl_MutexUnlock(&notifierMutex);
-#endif
}
/*
@@ -488,7 +500,6 @@ TkMacOSXCreateFileHandler(fd, mask, proc, clientData)
{
ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
FileHandler *filePtr;
- int index, bit;
for (filePtr = tsdPtr->firstFileHandlerPtr; filePtr != NULL;
filePtr = filePtr->nextPtr) {
@@ -511,22 +522,20 @@ TkMacOSXCreateFileHandler(fd, mask, proc, clientData)
* Update the check masks for this file.
*/
- index = fd/(NBBY*sizeof(fd_mask));
- bit = 1 << (fd%(NBBY*sizeof(fd_mask)));
- if (mask & TCL_READABLE) {
- tsdPtr->checkMasks[index] |= bit;
+ if ( mask & TCL_READABLE ) {
+ FD_SET( fd, &(tsdPtr->checkMasks.readable) );
} else {
- tsdPtr->checkMasks[index] &= ~bit;
- }
- if (mask & TCL_WRITABLE) {
- (tsdPtr->checkMasks+MASK_SIZE)[index] |= bit;
+ FD_CLR( fd, &(tsdPtr->checkMasks.readable) );
+ }
+ if ( mask & TCL_WRITABLE ) {
+ FD_SET( fd, &(tsdPtr->checkMasks.writable) );
} else {
- (tsdPtr->checkMasks+MASK_SIZE)[index] &= ~bit;
+ FD_CLR( fd, &(tsdPtr->checkMasks.writable) );
}
- if (mask & TCL_EXCEPTION) {
- (tsdPtr->checkMasks+2*(MASK_SIZE))[index] |= bit;
+ if ( mask & TCL_EXCEPTION ) {
+ FD_SET( fd, &(tsdPtr->checkMasks.exceptional) );
} else {
- (tsdPtr->checkMasks+2*(MASK_SIZE))[index] &= ~bit;
+ FD_CLR( fd, &(tsdPtr->checkMasks.exceptional) );
}
if (tsdPtr->numFdBits <= fd) {
tsdPtr->numFdBits = fd+1;
@@ -555,8 +564,7 @@ TkMacOSXDeleteFileHandler(fd)
int fd; /* Stream id for which to remove callback procedure. */
{
FileHandler *filePtr, *prevPtr;
- int index, bit, i;
- unsigned long flags;
+ int i;
ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
/*
@@ -577,17 +585,14 @@ TkMacOSXDeleteFileHandler(fd)
* Update the check masks for this file.
*/
- index = fd/(NBBY*sizeof(fd_mask));
- bit = 1 << (fd%(NBBY*sizeof(fd_mask)));
-
if (filePtr->mask & TCL_READABLE) {
- tsdPtr->checkMasks[index] &= ~bit;
+ FD_CLR( fd, &(tsdPtr->checkMasks.readable) );
}
if (filePtr->mask & TCL_WRITABLE) {
- (tsdPtr->checkMasks+MASK_SIZE)[index] &= ~bit;
+ FD_CLR( fd, &(tsdPtr->checkMasks.writable) );
}
if (filePtr->mask & TCL_EXCEPTION) {
- (tsdPtr->checkMasks+2*(MASK_SIZE))[index] &= ~bit;
+ FD_CLR( fd, &(tsdPtr->checkMasks.exceptional) );
}
/*
@@ -595,17 +600,12 @@ TkMacOSXDeleteFileHandler(fd)
*/
if (fd+1 == tsdPtr->numFdBits) {
- for (tsdPtr->numFdBits = 0; index >= 0; index--) {
- flags = tsdPtr->checkMasks[index]
- | (tsdPtr->checkMasks+MASK_SIZE)[index]
- | (tsdPtr->checkMasks+2*(MASK_SIZE))[index];
- if (flags) {
- for (i = (NBBY*sizeof(fd_mask)); i > 0; i--) {
- if (flags & (((unsigned long)1) << (i-1))) {
- break;
- }
- }
- tsdPtr->numFdBits = index * (NBBY*sizeof(fd_mask)) + i;
+ tsdPtr->numFdBits = 0;
+ for (i = fd-1; i >= 0; i--) {
+ if ( FD_ISSET( i, &(tsdPtr->checkMasks.readable) )
+ || FD_ISSET( i, &(tsdPtr->checkMasks.writable) )
+ || FD_ISSET( i, &(tsdPtr->checkMasks.exceptional ) ) ) {
+ tsdPtr->numFdBits = i+1;
break;
}
}
@@ -696,31 +696,6 @@ FileHandlerEventProc(evPtr, flags)
return 1;
}
-void
-DoActualWait(timePtr)
- Tcl_Time *timePtr; /* Maximum block time, or NULL. */
-{
- ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
- OSErr err;
-
- if (!tsdPtr->isMainLoop) {
- Tcl_ConditionWait(&tsdPtr->waitCV, &notifierMutex, timePtr);
- } else {
- EventRef eventRef;
- EventTime waitTime;
- Tcl_MutexUnlock(&notifierMutex);
-
- if (timePtr == NULL) {
- waitTime = kEventDurationForever;
- } else {
- waitTime = timePtr->sec * kEventDurationSecond
- + timePtr->usec * kEventDurationMicrosecond;
- }
- err = ReceiveNextEvent(0, NULL, waitTime, false, &eventRef);
- Tcl_MutexLock(&notifierMutex);
- }
-}
-
/*
*----------------------------------------------------------------------
*
@@ -746,44 +721,11 @@ TkMacOSXWaitForEvent(timePtr)
{
FileHandler *filePtr;
FileHandlerEvent *fileEvPtr;
- struct timeval timeout, *timeoutPtr;
- int bit, index, mask;
-#ifdef TCL_THREADS
+ int mask;
int waitForFiles;
-#else
- int numFound;
-#endif
-
ThreadSpecificData *tsdPtr = TCL_TSD_INIT(&dataKey);
/*
- * Set up the timeout structure. Note that if there are no events to
- * check for, we return with a negative result rather than blocking
- * forever.
- */
-
- if (timePtr) {
- timeout.tv_sec = timePtr->sec;
- timeout.tv_usec = timePtr->usec;
- timeoutPtr = &timeout;
-#ifndef TCL_THREADS
- } else if (tsdPtr->numFdBits == 0) {
- /*
- * If there are no threads, no timeout, and no fds registered,
- * then there are no events possible and we must avoid deadlock.
- * Note that this is not entirely correct because there might
- * be a signal that could interrupt the select call, but we
- * don't handle that case if we aren't using threads.
- */
-
- return -1;
-#endif
- } else {
- timeoutPtr = NULL;
- }
-
-#ifdef TCL_THREADS
- /*
* Place this thread on the list of interested threads, signal the
* notifier thread, and wait for a response or a timeout.
*/
@@ -826,10 +768,28 @@ TkMacOSXWaitForEvent(timePtr)
write(triggerPipe, "", 1);
}
- memset((VOID *) tsdPtr->readyMasks, 0, 3*MASK_SIZE*sizeof(fd_mask));
+ FD_ZERO( &(tsdPtr->readyMasks.readable) );
+ FD_ZERO( &(tsdPtr->readyMasks.writable) );
+ FD_ZERO( &(tsdPtr->readyMasks.exceptional) );
if (!tsdPtr->eventReady) {
- DoActualWait(timePtr);
+ if (!tsdPtr->isMainLoop) {
+ Tcl_ConditionWait(&tsdPtr->waitCV, &notifierMutex, timePtr);
+ } else {
+ OSErr err;
+ EventRef eventRef;
+ EventTime waitTime;
+
+ if (timePtr == NULL) {
+ waitTime = kEventDurationForever;
+ } else {
+ waitTime = timePtr->sec * kEventDurationSecond
+ + timePtr->usec * kEventDurationMicrosecond;
+ }
+ Tcl_MutexUnlock(&notifierMutex);
+ err = ReceiveNextEvent(0, NULL, waitTime, false, &eventRef);
+ Tcl_MutexLock(&notifierMutex);
+ }
}
tsdPtr->eventReady = 0;
@@ -855,41 +815,21 @@ TkMacOSXWaitForEvent(timePtr)
}
-#else
- memcpy((VOID *) tsdPtr->readyMasks, (VOID *) tsdPtr->checkMasks,
- 3*MASK_SIZE*sizeof(fd_mask));
- numFound = select(tsdPtr->numFdBits,
- (SELECT_MASK *) &tsdPtr->readyMasks[0],
- (SELECT_MASK *) &tsdPtr->readyMasks[MASK_SIZE],
- (SELECT_MASK *) &tsdPtr->readyMasks[2*MASK_SIZE], timeoutPtr);
-
- /*
- * Some systems don't clear the masks after an error, so
- * we have to do it here.
- */
-
- if (numFound == -1) {
- memset((VOID *) tsdPtr->readyMasks, 0, 3*MASK_SIZE*sizeof(fd_mask));
- }
-#endif
-
/*
* Queue all detected file events before returning.
*/
for (filePtr = tsdPtr->firstFileHandlerPtr; (filePtr != NULL);
filePtr = filePtr->nextPtr) {
- index = filePtr->fd / (NBBY*sizeof(fd_mask));
- bit = 1 << (filePtr->fd % (NBBY*sizeof(fd_mask)));
- mask = 0;
- if (tsdPtr->readyMasks[index] & bit) {
+ mask = 0;
+ if ( FD_ISSET( filePtr->fd, &(tsdPtr->readyMasks.readable) ) ) {
mask |= TCL_READABLE;
}
- if ((tsdPtr->readyMasks+MASK_SIZE)[index] & bit) {
+ if ( FD_ISSET( filePtr->fd, &(tsdPtr->readyMasks.writable) ) ) {
mask |= TCL_WRITABLE;
}
- if ((tsdPtr->readyMasks+2*(MASK_SIZE))[index] & bit) {
+ if ( FD_ISSET( filePtr->fd, &(tsdPtr->readyMasks.exceptional) ) ) {
mask |= TCL_EXCEPTION;
}
@@ -911,15 +851,11 @@ TkMacOSXWaitForEvent(timePtr)
}
filePtr->readyMask = mask;
}
+ Tcl_MutexUnlock(&notifierMutex);
/*
* Also queue the Mac Events found...
*/
-
-#ifdef TCL_THREADS
- Tcl_MutexUnlock(&notifierMutex);
-#endif
-
if (tsdPtr->isMainLoop) {
TkMacOSXCountAndProcessMacEvents();
}
@@ -927,7 +863,6 @@ TkMacOSXWaitForEvent(timePtr)
return 0;
}
-#ifdef TCL_THREADS
/*
*----------------------------------------------------------------------
*
@@ -958,12 +893,13 @@ NotifierThreadProc(clientData)
ClientData clientData; /* Not used. */
{
ThreadSpecificData *tsdPtr;
- fd_mask masks[3*MASK_SIZE];
- long *maskPtr = (long *)masks; /* masks[] cast to type long[] */
+ fd_set readableMask;
+ fd_set writableMask;
+ fd_set exceptionalMask;
int fds[2];
- int i, status, index, bit, numFdBits, found, receivePipe, word;
+ int i, status, numFdBits = 0, receivePipe;
+ long found;
struct timeval poll = {0., 0.}, *timePtr;
- int maskSize = 3 * ((MASK_SIZE) / sizeof(long)) * sizeof(fd_mask);
char buf[2];
if (pipe(fds) != 0) {
@@ -972,7 +908,6 @@ NotifierThreadProc(clientData)
receivePipe = fds[0];
-#ifndef USE_FIONBIO
status = fcntl(receivePipe, F_GETFL);
status |= O_NONBLOCK;
if (fcntl(receivePipe, F_SETFL, status) < 0) {
@@ -983,14 +918,6 @@ NotifierThreadProc(clientData)
if (fcntl(fds[1], F_SETFL, status) < 0) {
panic("NotifierThreadProc: could not make trigger pipe non blocking.");
}
-#else
- if (ioctl(receivePipe, (int) FIONBIO, &status) < 0) {
- panic("NotifierThreadProc: could not make receive pipe non blocking.");
- }
- if (ioctl(fds[1], (int) FIONBIO, &status) < 0) {
- panic("NotifierThreadProc: could not make trigger pipe non blocking.");
- }
-#endif
/*
* Install the write end of the pipe into the global variable.
@@ -1011,29 +938,33 @@ NotifierThreadProc(clientData)
*/
while (1) {
- /*
- * Set up the select mask to include the receive pipe.
- */
- memset((VOID *)masks, 0, 3*MASK_SIZE*sizeof(fd_mask));
- numFdBits = receivePipe + 1;
- index = receivePipe / (NBBY*sizeof(fd_mask));
- bit = 1 << (receivePipe % (NBBY*sizeof(fd_mask)));
- masks[index] |= bit;
+ FD_ZERO( &readableMask );
+ FD_ZERO( &writableMask );
+ FD_ZERO( &exceptionalMask );
/*
- * Add in the check masks from all of the waiting notifiers.
+ * Compute the logical OR of the select masks from all the
+ * waiting notifiers.
*/
-
+
Tcl_MutexLock(&notifierMutex);
timePtr = NULL;
for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) {
- for (i = 0; i < maskSize; i++) {
- maskPtr[i] |= ((long*)tsdPtr->checkMasks)[i];
- }
- if (tsdPtr->numFdBits > numFdBits) {
- numFdBits = tsdPtr->numFdBits;
- }
+ for ( i = tsdPtr->numFdBits-1; i >= 0; --i ) {
+ if ( FD_ISSET( i, &(tsdPtr->checkMasks.readable) ) ) {
+ FD_SET( i, &readableMask );
+ }
+ if ( FD_ISSET( i, &(tsdPtr->checkMasks.writable) ) ) {
+ FD_SET( i, &writableMask );
+ }
+ if ( FD_ISSET( i, &(tsdPtr->checkMasks.exceptional) ) ) {
+ FD_SET( i, &exceptionalMask );
+ }
+ }
+ if ( tsdPtr->numFdBits > numFdBits ) {
+ numFdBits = tsdPtr->numFdBits;
+ }
if (tsdPtr->pollState & POLL_WANT) {
/*
* Here we make sure we go through select() with the same
@@ -1043,14 +974,20 @@ NotifierThreadProc(clientData)
tsdPtr->pollState |= POLL_DONE;
timePtr = &poll;
}
- }
+ }
Tcl_MutexUnlock(&notifierMutex);
- maskSize = 3 * ((MASK_SIZE) / sizeof(long)) * sizeof(fd_mask);
+ /*
+ * Set up the select mask to include the receive pipe.
+ */
+
+ if ( receivePipe >= numFdBits ) {
+ numFdBits = receivePipe + 1;
+ }
+ FD_SET( receivePipe, &readableMask );
- if (select(numFdBits, (SELECT_MASK *) &masks[0],
- (SELECT_MASK *) &masks[MASK_SIZE],
- (SELECT_MASK *) &masks[2*MASK_SIZE], timePtr) == -1) {
+ if ( select( numFdBits, &readableMask, &writableMask,
+ &exceptionalMask, timePtr) == -1 ) {
/*
* Try again immediately on an error.
*/
@@ -1066,33 +1003,46 @@ NotifierThreadProc(clientData)
for (tsdPtr = waitingListPtr; tsdPtr; tsdPtr = tsdPtr->nextPtr) {
found = 0;
- for (i = 0; i < maskSize; i++) {
- word = maskPtr[i] & ((long*)tsdPtr->checkMasks)[i];
- found |= word;
- (((long*)(tsdPtr->readyMasks))[i]) = word;
+ for ( i = tsdPtr->numFdBits-1; i >= 0; --i ) {
+ if ( FD_ISSET( i, &(tsdPtr->checkMasks.readable) )
+ && FD_ISSET( i, &readableMask ) ) {
+ FD_SET( i, &(tsdPtr->readyMasks.readable) );
+ found = 1;
+ }
+ if ( FD_ISSET( i, &(tsdPtr->checkMasks.writable) )
+ && FD_ISSET( i, &writableMask ) ) {
+ FD_SET( i, &(tsdPtr->readyMasks.writable) );
+ found = 1;
+ }
+ if ( FD_ISSET( i, &(tsdPtr->checkMasks.exceptional) )
+ && FD_ISSET( i, &exceptionalMask ) ) {
+ FD_SET( i, &(tsdPtr->readyMasks.exceptional) );
+ found = 1;
+ }
}
+
if (found || (tsdPtr->pollState & POLL_DONE)) {
- if (tsdPtr->onList) {
- /*
- * Remove the ThreadSpecificData structure of this
- * thread from the waiting list. This prevents us from
- * continuously spining on select until the other
- * threads runs and services the file event.
- */
-
- if (tsdPtr->prevPtr) {
- tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr;
- } else {
- waitingListPtr = tsdPtr->nextPtr;
- }
- if (tsdPtr->nextPtr) {
- tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr;
- }
- tsdPtr->nextPtr = tsdPtr->prevPtr = NULL;
- tsdPtr->onList = 0;
- tsdPtr->pollState = 0;
- }
tsdPtr->eventReady = 1;
+ if (tsdPtr->onList) {
+ /*
+ * Remove the ThreadSpecificData structure of this
+ * thread from the waiting list. This prevents us from
+ * continuously spining on select until the other
+ * threads runs and services the file event.
+ */
+
+ if (tsdPtr->prevPtr) {
+ tsdPtr->prevPtr->nextPtr = tsdPtr->nextPtr;
+ } else {
+ waitingListPtr = tsdPtr->nextPtr;
+ }
+ if (tsdPtr->nextPtr) {
+ tsdPtr->nextPtr->prevPtr = tsdPtr->prevPtr;
+ }
+ tsdPtr->nextPtr = tsdPtr->prevPtr = NULL;
+ tsdPtr->onList = 0;
+ tsdPtr->pollState = 0;
+ }
if (tsdPtr->isMainLoop) {
OSErr err;
@@ -1109,15 +1059,16 @@ NotifierThreadProc(clientData)
}
}
Tcl_MutexUnlock(&notifierMutex);
-
+
/*
* Consume the next byte from the notifier pipe if the pipe was
* readable. Note that there may be multiple bytes pending, but
* to avoid a race condition we only read one at a time.
*/
- if (masks[index] & bit) {
+ if ( FD_ISSET( receivePipe, &readableMask ) ) {
i = read(receivePipe, buf, 1);
+
if ((i == 0) || ((i == 1) && (buf[0] == 'q'))) {
/*
* Someone closed the write end of the pipe or sent us a
@@ -1140,8 +1091,9 @@ NotifierThreadProc(clientData)
triggerPipe = -1;
Tcl_ConditionNotify(&notifierCV);
Tcl_MutexUnlock(&notifierMutex);
+
+ Tcl_ExitThread (0);
}
-#endif
EventRef
TkMacOSXCreateFakeEvent ()
diff --git a/unix/Makefile.in b/unix/Makefile.in
index b5a208d..696e7c4 100644
--- a/unix/Makefile.in
+++ b/unix/Makefile.in
@@ -5,7 +5,7 @@
# "autoconf" program (constructs like "@foo@" will get replaced in the
# actual Makefile.
#
-# RCS: @(#) $Id: Makefile.in,v 1.87.2.7 2005/02/10 23:42:01 hobbs Exp $
+# RCS: @(#) $Id: Makefile.in,v 1.87.2.8 2005/04/26 00:49:50 das Exp $
# Current Tk version; used in various names.
@@ -219,6 +219,7 @@ TK_LIB_FLAG = @TK_LIB_FLAG@
TCL_LIB_SPEC = @TCL_LIB_SPEC@
TCL_STUB_LIB_SPEC = @TCL_STUB_LIB_SPEC@
TCL_STUB_LIB_FLAG = @TCL_STUB_LIB_FLAG@
+TCL_STUB_LIB_FILE = @TCL_STUB_LIB_FILE@
TK_EXP_FILE = @TK_EXP_FILE@
TK_BUILD_EXP_FILE = @TK_BUILD_EXP_FILE@
diff --git a/unix/configure b/unix/configure
index e1674da..ce43001 100755
--- a/unix/configure
+++ b/unix/configure
@@ -1955,6 +1955,7 @@ fi
STLIB_LD='${AR} cr'
LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
PLAT_OBJS=""
+ PLAT_SRCS=""
case $system in
AIX-*)
if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
@@ -2032,7 +2033,7 @@ fi
# known GMT value.
echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
-echo "configure:2036: checking for gettimeofday in -lbsd" >&5
+echo "configure:2037: checking for gettimeofday in -lbsd" >&5
ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2040,7 +2041,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lbsd $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2044 "configure"
+#line 2045 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2051,7 +2052,7 @@ int main() {
gettimeofday()
; return 0; }
EOF
-if { (eval echo configure:2055: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2094,7 +2095,7 @@ EOF
# is always linked to, for compatibility.
#-----------------------------------------------------------
echo $ac_n "checking for inet_ntoa in -lbind""... $ac_c" 1>&6
-echo "configure:2098: checking for inet_ntoa in -lbind" >&5
+echo "configure:2099: checking for inet_ntoa in -lbind" >&5
ac_lib_var=`echo bind'_'inet_ntoa | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2102,7 +2103,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lbind $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2106 "configure"
+#line 2107 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2113,7 +2114,7 @@ int main() {
inet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:2117: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2118: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2179,7 +2180,7 @@ EOF
SHLIB_SUFFIX=".sl"
echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:2183: checking for shl_load in -ldld" >&5
+echo "configure:2184: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2187,7 +2188,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldld $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2191 "configure"
+#line 2192 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2198,7 +2199,7 @@ int main() {
shl_load()
; return 0; }
EOF
-if { (eval echo configure:2202: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2266,7 +2267,7 @@ fi
HP-UX-*.08.*|HP-UX-*.09.*|HP-UX-*.10.*)
SHLIB_SUFFIX=".sl"
echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:2270: checking for shl_load in -ldld" >&5
+echo "configure:2271: checking for shl_load in -ldld" >&5
ac_lib_var=`echo dld'_'shl_load | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2274,7 +2275,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldld $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2278 "configure"
+#line 2279 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2285,7 +2286,7 @@ int main() {
shl_load()
; return 0; }
EOF
-if { (eval echo configure:2289: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2290: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2409,17 +2410,17 @@ fi
else
ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dld.h""... $ac_c" 1>&6
-echo "configure:2413: checking for dld.h" >&5
+echo "configure:2414: checking for dld.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2418 "configure"
+#line 2419 "configure"
#include "confdefs.h"
#include <dld.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2423: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2424: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2483,17 +2484,17 @@ EOF
else
ac_safe=`echo "dld.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dld.h""... $ac_c" 1>&6
-echo "configure:2487: checking for dld.h" >&5
+echo "configure:2488: checking for dld.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2492 "configure"
+#line 2493 "configure"
#include "confdefs.h"
#include <dld.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2497: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2498: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2549,17 +2550,17 @@ fi
# Not available on all versions: check for include file.
ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:2553: checking for dlfcn.h" >&5
+echo "configure:2554: checking for dlfcn.h" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2558 "configure"
+#line 2559 "configure"
#include "confdefs.h"
#include <dlfcn.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2563: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2564: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -2586,9 +2587,9 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
CC_SEARCH_FLAGS='-Wl,-rpath,${LIB_RUNTIME_DIR}'
LD_SEARCH_FLAGS='-rpath ${LIB_RUNTIME_DIR}'
echo $ac_n "checking for ELF""... $ac_c" 1>&6
-echo "configure:2590: checking for ELF" >&5
+echo "configure:2591: checking for ELF" >&5
cat > conftest.$ac_ext <<EOF
-#line 2592 "configure"
+#line 2593 "configure"
#include "confdefs.h"
#ifdef __ELF__
@@ -2662,9 +2663,9 @@ fi
LD_SEARCH_FLAGS=${CC_SEARCH_FLAGS}
SHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}\$\{DBGX\}.so.1.0'
echo $ac_n "checking for ELF""... $ac_c" 1>&6
-echo "configure:2666: checking for ELF" >&5
+echo "configure:2667: checking for ELF" >&5
cat > conftest.$ac_ext <<EOF
-#line 2668 "configure"
+#line 2669 "configure"
#include "confdefs.h"
#ifdef __ELF__
@@ -2719,20 +2720,88 @@ rm -f conftest*
esac
;;
Darwin-*)
+ CFLAGS_OPTIMIZE="-Os"
SHLIB_CFLAGS="-fno-common"
SHLIB_LD="cc -dynamiclib \${LDFLAGS}"
- TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr 0xa000000 -Wl,-single_module"
- TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TK_LIB_FILE} -prebind -seg1addr 0xb000000 -Wl,-single_module"
+ echo $ac_n "checking if ld accepts -single_module flag""... $ac_c" 1>&6
+echo "configure:2728: checking if ld accepts -single_module flag" >&5
+if eval "test \"`echo '$''{'tcl_cv_ld_single_module'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ hold_ldflags=$LDFLAGS
+ LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
+ cat > conftest.$ac_ext <<EOF
+#line 2736 "configure"
+#include "confdefs.h"
+
+int main() {
+int i;
+; return 0; }
+EOF
+if { (eval echo configure:2743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ tcl_cv_ld_single_module=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ tcl_cv_ld_single_module=no
+fi
+rm -f conftest*
+ LDFLAGS=$hold_ldflags
+fi
+
+echo "$ac_t""$tcl_cv_ld_single_module" 1>&6
+ if test $tcl_cv_ld_single_module = yes; then
+ SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
+ fi
SHLIB_LD_LIBS='${LIBS}'
SHLIB_SUFFIX=".dylib"
DL_OBJS="tclLoadDyld.o"
- PLAT_OBJS=\$\(MAC\_OSX_OBJS\)
DL_LIBS=""
- LDFLAGS="$LDFLAGS -prebind -Wl,-search_paths_first"
+ LDFLAGS="$LDFLAGS -prebind"
+ echo $ac_n "checking if ld accepts -search_paths_first flag""... $ac_c" 1>&6
+echo "configure:2766: checking if ld accepts -search_paths_first flag" >&5
+if eval "test \"`echo '$''{'tcl_cv_ld_search_paths_first'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ hold_ldflags=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ cat > conftest.$ac_ext <<EOF
+#line 2774 "configure"
+#include "confdefs.h"
+
+int main() {
+int i;
+; return 0; }
+EOF
+if { (eval echo configure:2781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+ rm -rf conftest*
+ tcl_cv_ld_search_paths_first=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ tcl_cv_ld_search_paths_first=no
+fi
+rm -f conftest*
+ LDFLAGS=$hold_ldflags
+fi
+
+echo "$ac_t""$tcl_cv_ld_search_paths_first" 1>&6
+ if test $tcl_cv_ld_search_paths_first = yes; then
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ fi
CC_SEARCH_FLAGS=""
LD_SEARCH_FLAGS=""
- CFLAGS_OPTIMIZE="-Os"
LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
+ PLAT_OBJS=\$\(MAC\_OSX_OBJS\)
+ PLAT_SRCS=\$\(MAC\_OSX_SRCS\)
+ TCL_SHLIB_LD_EXTRAS='-compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000'
+ TK_SHLIB_LD_EXTRAS=' -compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TK_LIB_FILE} -seg1addr 0xb000000 -unexported_symbols_list $$(f=$(TCL_STUB_LIB_FILE).E && nm -gjp $(TCL_BIN_DIR)/$(TCL_STUB_LIB_FILE) | tail +3 > $$f && echo $$f)'
+ LIBS="$LIBS -framework CoreFoundation"
cat >> confdefs.h <<\EOF
#define MAC_OSX_TCL 1
EOF
@@ -2749,7 +2818,6 @@ EOF
#define TCL_DEFAULT_ENCODING "utf-8"
EOF
- LIBS="$LIBS -framework CoreFoundation"
;;
NEXTSTEP-*)
SHLIB_CFLAGS=""
@@ -3030,17 +3098,17 @@ EOF
# that don't grok the -Bexport option. Test that it does.
hold_ldflags=$LDFLAGS
echo $ac_n "checking for ld accepts -Bexport flag""... $ac_c" 1>&6
-echo "configure:3034: checking for ld accepts -Bexport flag" >&5
+echo "configure:3102: checking for ld accepts -Bexport flag" >&5
LDFLAGS="$LDFLAGS -Wl,-Bexport"
cat > conftest.$ac_ext <<EOF
-#line 3037 "configure"
+#line 3105 "configure"
#include "confdefs.h"
int main() {
int i;
; return 0; }
EOF
-if { (eval echo configure:3044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
found=yes
else
@@ -3081,9 +3149,9 @@ rm -f conftest*
if test "x$DL_OBJS" = "xtclLoadAout.o" ; then
echo $ac_n "checking sys/exec.h""... $ac_c" 1>&6
-echo "configure:3085: checking sys/exec.h" >&5
+echo "configure:3153: checking sys/exec.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 3087 "configure"
+#line 3155 "configure"
#include "confdefs.h"
#include <sys/exec.h>
int main() {
@@ -3101,7 +3169,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:3105: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3173: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_ok=usable
else
@@ -3119,9 +3187,9 @@ EOF
else
echo $ac_n "checking a.out.h""... $ac_c" 1>&6
-echo "configure:3123: checking a.out.h" >&5
+echo "configure:3191: checking a.out.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 3125 "configure"
+#line 3193 "configure"
#include "confdefs.h"
#include <a.out.h>
int main() {
@@ -3139,7 +3207,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:3143: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3211: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_ok=usable
else
@@ -3157,9 +3225,9 @@ EOF
else
echo $ac_n "checking sys/exec_aout.h""... $ac_c" 1>&6
-echo "configure:3161: checking sys/exec_aout.h" >&5
+echo "configure:3229: checking sys/exec_aout.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 3163 "configure"
+#line 3231 "configure"
#include "confdefs.h"
#include <sys/exec_aout.h>
int main() {
@@ -3177,7 +3245,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:3181: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3249: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_ok=usable
else
@@ -3303,6 +3371,7 @@ fi
+
@@ -3327,7 +3396,7 @@ fi
echo $ac_n "checking for build with symbols""... $ac_c" 1>&6
-echo "configure:3331: checking for build with symbols" >&5
+echo "configure:3400: checking for build with symbols" >&5
# Check whether --enable-symbols or --disable-symbols was given.
if test "${enable_symbols+set}" = set; then
enableval="$enable_symbols"
@@ -3388,21 +3457,21 @@ TK_DBGX=${DBGX}
echo $ac_n "checking for required early compiler flags""... $ac_c" 1>&6
-echo "configure:3392: checking for required early compiler flags" >&5
+echo "configure:3461: checking for required early compiler flags" >&5
tcl_flags=""
if eval "test \"`echo '$''{'tcl_cv_flag__isoc99_source'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3399 "configure"
+#line 3468 "configure"
#include "confdefs.h"
#include <stdlib.h>
int main() {
char *p = (char *)strtoll; char *q = (char *)strtoull;
; return 0; }
EOF
-if { (eval echo configure:3406: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3475: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_cv_flag__isoc99_source=no
else
@@ -3410,7 +3479,7 @@ else
cat conftest.$ac_ext >&5
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 3414 "configure"
+#line 3483 "configure"
#include "confdefs.h"
#define _ISOC99_SOURCE 1
#include <stdlib.h>
@@ -3418,7 +3487,7 @@ int main() {
char *p = (char *)strtoll; char *q = (char *)strtoull;
; return 0; }
EOF
-if { (eval echo configure:3422: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3491: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_cv_flag__isoc99_source=yes
else
@@ -3444,14 +3513,14 @@ EOF
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3448 "configure"
+#line 3517 "configure"
#include "confdefs.h"
#include <sys/stat.h>
int main() {
struct stat64 buf; int i = stat64("/", &buf);
; return 0; }
EOF
-if { (eval echo configure:3455: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3524: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_cv_flag__largefile64_source=no
else
@@ -3459,7 +3528,7 @@ else
cat conftest.$ac_ext >&5
rm -rf conftest*
cat > conftest.$ac_ext <<EOF
-#line 3463 "configure"
+#line 3532 "configure"
#include "confdefs.h"
#define _LARGEFILE64_SOURCE 1
#include <sys/stat.h>
@@ -3467,7 +3536,7 @@ int main() {
struct stat64 buf; int i = stat64("/", &buf);
; return 0; }
EOF
-if { (eval echo configure:3471: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_cv_flag__largefile64_source=yes
else
@@ -3496,7 +3565,7 @@ EOF
echo $ac_n "checking for 64-bit integer type""... $ac_c" 1>&6
-echo "configure:3500: checking for 64-bit integer type" >&5
+echo "configure:3569: checking for 64-bit integer type" >&5
if eval "test \"`echo '$''{'tcl_cv_type_64bit'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -3504,14 +3573,14 @@ else
tcl_cv_type_64bit=none
# See if the compiler knows natively about __int64
cat > conftest.$ac_ext <<EOF
-#line 3508 "configure"
+#line 3577 "configure"
#include "confdefs.h"
int main() {
__int64 value = (__int64) 0;
; return 0; }
EOF
-if { (eval echo configure:3515: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3584: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_type_64bit=__int64
else
@@ -3525,7 +3594,7 @@ rm -f conftest*
# type that is our current guess for a 64-bit type inside this check
# program, so it should be modified only carefully...
cat > conftest.$ac_ext <<EOF
-#line 3529 "configure"
+#line 3598 "configure"
#include "confdefs.h"
int main() {
@@ -3534,7 +3603,7 @@ switch (0) {
}
; return 0; }
EOF
-if { (eval echo configure:3538: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3607: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_cv_type_64bit=${tcl_type_64bit}
else
@@ -3559,13 +3628,13 @@ EOF
# Now check for auxiliary declarations
echo $ac_n "checking for struct dirent64""... $ac_c" 1>&6
-echo "configure:3563: checking for struct dirent64" >&5
+echo "configure:3632: checking for struct dirent64" >&5
if eval "test \"`echo '$''{'tcl_cv_struct_dirent64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3569 "configure"
+#line 3638 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/dirent.h>
@@ -3573,7 +3642,7 @@ int main() {
struct dirent64 p;
; return 0; }
EOF
-if { (eval echo configure:3577: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3646: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_cv_struct_dirent64=yes
else
@@ -3594,13 +3663,13 @@ EOF
echo "$ac_t""${tcl_cv_struct_dirent64}" 1>&6
echo $ac_n "checking for struct stat64""... $ac_c" 1>&6
-echo "configure:3598: checking for struct stat64" >&5
+echo "configure:3667: checking for struct stat64" >&5
if eval "test \"`echo '$''{'tcl_cv_struct_stat64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3604 "configure"
+#line 3673 "configure"
#include "confdefs.h"
#include <sys/stat.h>
int main() {
@@ -3608,7 +3677,7 @@ struct stat64 p;
; return 0; }
EOF
-if { (eval echo configure:3612: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3681: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tcl_cv_struct_stat64=yes
else
@@ -3628,42 +3697,15 @@ EOF
fi
echo "$ac_t""${tcl_cv_struct_stat64}" 1>&6
- echo $ac_n "checking for off64_t""... $ac_c" 1>&6
-echo "configure:3633: checking for off64_t" >&5
- if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
-
- cat > conftest.$ac_ext <<EOF
-#line 3639 "configure"
-#include "confdefs.h"
-#include <sys/types.h>
-int main() {
-off64_t offset;
-
-; return 0; }
-EOF
-if { (eval echo configure:3647: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
- rm -rf conftest*
- tcl_cv_type_off64_t=yes
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- tcl_cv_type_off64_t=no
-fi
-rm -f conftest*
-fi
-
for ac_func in open64 lseek64
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:3662: checking for $ac_func" >&5
+echo "configure:3704: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3667 "configure"
+#line 3709 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -3686,7 +3728,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:3690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -3710,6 +3752,33 @@ else
fi
done
+ echo $ac_n "checking for off64_t""... $ac_c" 1>&6
+echo "configure:3757: checking for off64_t" >&5
+ if eval "test \"`echo '$''{'tcl_cv_type_off64_t'+set}'`\" = set"; then
+ echo $ac_n "(cached) $ac_c" 1>&6
+else
+
+ cat > conftest.$ac_ext <<EOF
+#line 3763 "configure"
+#include "confdefs.h"
+#include <sys/types.h>
+int main() {
+off64_t offset;
+
+; return 0; }
+EOF
+if { (eval echo configure:3771: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+ rm -rf conftest*
+ tcl_cv_type_off64_t=yes
+else
+ echo "configure: failed program was:" >&5
+ cat conftest.$ac_ext >&5
+ rm -rf conftest*
+ tcl_cv_type_off64_t=no
+fi
+rm -f conftest*
+fi
+
if test "x${tcl_cv_type_off64_t}" = "xyes" && \
test "x${ac_cv_func_lseek64}" = "xyes" && \
test "x${ac_cv_func_open64}" = "xyes" ; then
@@ -3749,12 +3818,12 @@ fi
MATH_LIBS=""
echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:3753: checking for sin" >&5
+echo "configure:3822: checking for sin" >&5
if eval "test \"`echo '$''{'ac_cv_func_sin'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 3758 "configure"
+#line 3827 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char sin(); below. */
@@ -3777,7 +3846,7 @@ sin();
; return 0; }
EOF
-if { (eval echo configure:3781: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3850: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_sin=yes"
else
@@ -3798,7 +3867,7 @@ MATH_LIBS="-lm"
fi
echo $ac_n "checking for main in -lieee""... $ac_c" 1>&6
-echo "configure:3802: checking for main in -lieee" >&5
+echo "configure:3871: checking for main in -lieee" >&5
ac_lib_var=`echo ieee'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3806,14 +3875,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lieee $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3810 "configure"
+#line 3879 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:3817: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3886: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3844,7 +3913,7 @@ fi
libbsd=no
if test "`uname -s`" = "AIX" ; then
echo $ac_n "checking for gettimeofday in -lbsd""... $ac_c" 1>&6
-echo "configure:3848: checking for gettimeofday in -lbsd" >&5
+echo "configure:3917: checking for gettimeofday in -lbsd" >&5
ac_lib_var=`echo bsd'_'gettimeofday | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -3852,7 +3921,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lbsd $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 3856 "configure"
+#line 3925 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -3863,7 +3932,7 @@ int main() {
gettimeofday()
; return 0; }
EOF
-if { (eval echo configure:3867: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3936: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -3894,9 +3963,9 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking stdlib.h""... $ac_c" 1>&6
-echo "configure:3898: checking stdlib.h" >&5
+echo "configure:3967: checking stdlib.h" >&5
cat > conftest.$ac_ext <<EOF
-#line 3900 "configure"
+#line 3969 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -3911,7 +3980,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3915 "configure"
+#line 3984 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -3925,7 +3994,7 @@ fi
rm -f conftest*
cat > conftest.$ac_ext <<EOF
-#line 3929 "configure"
+#line 3998 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -3957,16 +4026,16 @@ echo "$ac_t""$tk_ok" 1>&6
#--------------------------------------------------------------------
echo $ac_n "checking fd_set and sys/select""... $ac_c" 1>&6
-echo "configure:3961: checking fd_set and sys/select" >&5
+echo "configure:4030: checking fd_set and sys/select" >&5
cat > conftest.$ac_ext <<EOF
-#line 3963 "configure"
+#line 4032 "configure"
#include "confdefs.h"
#include <sys/types.h>
int main() {
fd_set readMask, writeMask;
; return 0; }
EOF
-if { (eval echo configure:3970: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4039: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tk_ok=yes
else
@@ -3978,7 +4047,7 @@ fi
rm -f conftest*
if test $tk_ok = no; then
cat > conftest.$ac_ext <<EOF
-#line 3982 "configure"
+#line 4051 "configure"
#include "confdefs.h"
#include <sys/select.h>
EOF
@@ -4010,12 +4079,12 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:4014: checking for ANSI C header files" >&5
+echo "configure:4083: checking for ANSI C header files" >&5
if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4019 "configure"
+#line 4088 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@@ -4023,7 +4092,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4027: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4096: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4040,7 +4109,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 4044 "configure"
+#line 4113 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@@ -4058,7 +4127,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
-#line 4062 "configure"
+#line 4131 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@@ -4079,7 +4148,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 4083 "configure"
+#line 4152 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -4090,7 +4159,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
-if { (eval echo configure:4094: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:4163: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
:
else
@@ -4114,12 +4183,12 @@ EOF
fi
echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:4118: checking for mode_t" >&5
+echo "configure:4187: checking for mode_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_mode_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4123 "configure"
+#line 4192 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4147,12 +4216,12 @@ EOF
fi
echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:4151: checking for pid_t" >&5
+echo "configure:4220: checking for pid_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4156 "configure"
+#line 4225 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4180,12 +4249,12 @@ EOF
fi
echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:4184: checking for size_t" >&5
+echo "configure:4253: checking for size_t" >&5
if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4189 "configure"
+#line 4258 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS
@@ -4213,12 +4282,12 @@ EOF
fi
echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:4217: checking for uid_t in sys/types.h" >&5
+echo "configure:4286: checking for uid_t in sys/types.h" >&5
if eval "test \"`echo '$''{'ac_cv_type_uid_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4222 "configure"
+#line 4291 "configure"
#include "confdefs.h"
#include <sys/types.h>
EOF
@@ -4255,17 +4324,17 @@ for ac_hdr in sys/time.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:4259: checking for $ac_hdr" >&5
+echo "configure:4328: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4264 "configure"
+#line 4333 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4338: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4292,12 +4361,12 @@ fi
done
echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:4296: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:4365: checking whether time.h and sys/time.h may both be included" >&5
if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4301 "configure"
+#line 4370 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/time.h>
@@ -4306,7 +4375,7 @@ int main() {
struct tm *tp;
; return 0; }
EOF
-if { (eval echo configure:4310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4379: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_header_time=yes
else
@@ -4332,16 +4401,16 @@ fi
#-------------------------------------------
echo $ac_n "checking pw_gecos in struct pwd""... $ac_c" 1>&6
-echo "configure:4336: checking pw_gecos in struct pwd" >&5
+echo "configure:4405: checking pw_gecos in struct pwd" >&5
cat > conftest.$ac_ext <<EOF
-#line 4338 "configure"
+#line 4407 "configure"
#include "confdefs.h"
#include <pwd.h>
int main() {
struct passwd pwd; pwd.pw_gecos;
; return 0; }
EOF
-if { (eval echo configure:4345: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4414: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
tk_ok=yes
else
@@ -4374,7 +4443,7 @@ fi
# Uses ac_ vars as temps to allow command line to override cache and checks.
# --without-x overrides everything else, but does not touch the cache.
echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:4378: checking for X" >&5
+echo "configure:4447: checking for X" >&5
# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
@@ -4436,12 +4505,12 @@ if test "$ac_x_includes" = NO; then
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
-#line 4440 "configure"
+#line 4509 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4445: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4514: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4510,14 +4579,14 @@ if test "$ac_x_libraries" = NO; then
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4514 "configure"
+#line 4583 "configure"
#include "confdefs.h"
int main() {
${x_direct_test_function}()
; return 0; }
EOF
-if { (eval echo configure:4521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4590: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
LIBS="$ac_save_LIBS"
# We can link X programs with no special library path.
@@ -4607,12 +4676,12 @@ fi
if test "$no_x" = ""; then
if test "$x_includes" = ""; then
cat > conftest.$ac_ext <<EOF
-#line 4611 "configure"
+#line 4680 "configure"
#include "confdefs.h"
#include <X11/XIntrinsic.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4616: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4685: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -4632,15 +4701,15 @@ rm -f conftest*
fi
if test "$no_x" = "yes" -o "$not_really_there" = "yes"; then
echo $ac_n "checking for X11 header files""... $ac_c" 1>&6
-echo "configure:4636: checking for X11 header files" >&5
+echo "configure:4705: checking for X11 header files" >&5
found_xincludes="no"
cat > conftest.$ac_ext <<EOF
-#line 4639 "configure"
+#line 4708 "configure"
#include "confdefs.h"
#include <X11/Intrinsic.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:4644: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4713: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -4676,7 +4745,7 @@ rm -f conftest*
if test "$no_x" = yes; then
echo $ac_n "checking for X11 libraries""... $ac_c" 1>&6
-echo "configure:4680: checking for X11 libraries" >&5
+echo "configure:4749: checking for X11 libraries" >&5
XLIBSW=nope
dirs="/usr/unsupported/lib /usr/local/lib /usr/X386/lib /usr/X11R6/lib /usr/X11R5/lib /usr/lib/X11R5 /usr/lib/X11R4 /usr/openwin/lib /usr/X11/lib /usr/sww/X11/lib"
for i in $dirs ; do
@@ -4696,7 +4765,7 @@ echo "configure:4680: checking for X11 libraries" >&5
fi
if test "$XLIBSW" = nope ; then
echo $ac_n "checking for XCreateWindow in -lXwindow""... $ac_c" 1>&6
-echo "configure:4700: checking for XCreateWindow in -lXwindow" >&5
+echo "configure:4769: checking for XCreateWindow in -lXwindow" >&5
ac_lib_var=`echo Xwindow'_'XCreateWindow | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4704,7 +4773,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXwindow $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4708 "configure"
+#line 4777 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -4715,7 +4784,7 @@ int main() {
XCreateWindow()
; return 0; }
EOF
-if { (eval echo configure:4719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4789,7 +4858,7 @@ eval "LD_SEARCH_FLAGS=\"$TCL_LD_SEARCH_FLAGS\""
#--------------------------------------------------------------------
echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:4793: checking for main in -lXbsd" >&5
+echo "configure:4862: checking for main in -lXbsd" >&5
ac_lib_var=`echo Xbsd'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4797,14 +4866,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXbsd $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4801 "configure"
+#line 4870 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:4808: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4827,12 +4896,12 @@ fi
tk_checkBoth=0
echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:4831: checking for connect" >&5
+echo "configure:4900: checking for connect" >&5
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4836 "configure"
+#line 4905 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
@@ -4855,7 +4924,7 @@ connect();
; return 0; }
EOF
-if { (eval echo configure:4859: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4928: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_connect=yes"
else
@@ -4877,7 +4946,7 @@ fi
if test "$tk_checkSocket" = 1; then
echo $ac_n "checking for main in -lsocket""... $ac_c" 1>&6
-echo "configure:4881: checking for main in -lsocket" >&5
+echo "configure:4950: checking for main in -lsocket" >&5
ac_lib_var=`echo socket'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -4885,14 +4954,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 4889 "configure"
+#line 4958 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:4896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4965: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -4918,12 +4987,12 @@ if test "$tk_checkBoth" = 1; then
tk_oldLibs=$LIBS
LIBS="$LIBS -lsocket -lnsl"
echo $ac_n "checking for accept""... $ac_c" 1>&6
-echo "configure:4922: checking for accept" >&5
+echo "configure:4991: checking for accept" >&5
if eval "test \"`echo '$''{'ac_cv_func_accept'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4927 "configure"
+#line 4996 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char accept(); below. */
@@ -4946,7 +5015,7 @@ accept();
; return 0; }
EOF
-if { (eval echo configure:4950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5019: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_accept=yes"
else
@@ -4968,12 +5037,12 @@ fi
fi
echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:4972: checking for gethostbyname" >&5
+echo "configure:5041: checking for gethostbyname" >&5
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 4977 "configure"
+#line 5046 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostbyname(); below. */
@@ -4996,7 +5065,7 @@ gethostbyname();
; return 0; }
EOF
-if { (eval echo configure:5000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5069: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_gethostbyname=yes"
else
@@ -5014,7 +5083,7 @@ if eval "test \"`echo '$ac_cv_func_'gethostbyname`\" = yes"; then
else
echo "$ac_t""no" 1>&6
echo $ac_n "checking for main in -lnsl""... $ac_c" 1>&6
-echo "configure:5018: checking for main in -lnsl" >&5
+echo "configure:5087: checking for main in -lnsl" >&5
ac_lib_var=`echo nsl'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -5022,14 +5091,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 5026 "configure"
+#line 5095 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:5033: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -5065,13 +5134,13 @@ fi
if test -d /usr/include/mit ; then
echo $ac_n "checking MIT X libraries""... $ac_c" 1>&6
-echo "configure:5069: checking MIT X libraries" >&5
+echo "configure:5138: checking MIT X libraries" >&5
tk_oldCFlags=$CFLAGS
CFLAGS="$CFLAGS -I/usr/include/mit"
tk_oldLibs=$LIBS
LIBS="$LIBS -lX11-mit"
cat > conftest.$ac_ext <<EOF
-#line 5075 "configure"
+#line 5144 "configure"
#include "confdefs.h"
#include <X11/Xlib.h>
@@ -5082,7 +5151,7 @@ int main() {
; return 0; }
EOF
-if { (eval echo configure:5086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5155: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
echo "$ac_t""yes" 1>&6
@@ -5106,14 +5175,14 @@ fi
#--------------------------------------------------------------------
echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6
-echo "configure:5110: checking whether char is unsigned" >&5
+echo "configure:5179: checking whether char is unsigned" >&5
if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
if test "$GCC" = yes; then
# GCC predefines this symbol on systems where it applies.
cat > conftest.$ac_ext <<EOF
-#line 5117 "configure"
+#line 5186 "configure"
#include "confdefs.h"
#ifdef __CHAR_UNSIGNED__
yes
@@ -5135,7 +5204,7 @@ if test "$cross_compiling" = yes; then
{ echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; }
else
cat > conftest.$ac_ext <<EOF
-#line 5139 "configure"
+#line 5208 "configure"
#include "confdefs.h"
/* volatile prevents gcc2 from optimizing the test away on sparcs. */
#if !defined(__STDC__) || __STDC__ != 1
@@ -5145,7 +5214,7 @@ main() {
volatile char c = 255; exit(c < 0);
}
EOF
-if { (eval echo configure:5149: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
ac_cv_c_char_unsigned=yes
else
@@ -5178,12 +5247,12 @@ fi
echo $ac_n "checking for strtod""... $ac_c" 1>&6
-echo "configure:5182: checking for strtod" >&5
+echo "configure:5251: checking for strtod" >&5
if eval "test \"`echo '$''{'ac_cv_func_strtod'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 5187 "configure"
+#line 5256 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char strtod(); below. */
@@ -5206,7 +5275,7 @@ strtod();
; return 0; }
EOF
-if { (eval echo configure:5210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_strtod=yes"
else
@@ -5228,7 +5297,7 @@ fi
if test "$tcl_strtod" = 1; then
echo $ac_n "checking for Solaris2.4/Tru64 strtod bugs""... $ac_c" 1>&6
-echo "configure:5232: checking for Solaris2.4/Tru64 strtod bugs" >&5
+echo "configure:5301: checking for Solaris2.4/Tru64 strtod bugs" >&5
if eval "test \"`echo '$''{'tcl_cv_strtod_buggy'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -5237,7 +5306,7 @@ else
tcl_cv_strtod_buggy=0
else
cat > conftest.$ac_ext <<EOF
-#line 5241 "configure"
+#line 5310 "configure"
#include "confdefs.h"
extern double strtod();
@@ -5260,7 +5329,7 @@ else
exit(0);
}
EOF
-if { (eval echo configure:5264: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:5333: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
then
tcl_cv_strtod_buggy=1
else
@@ -5553,6 +5622,7 @@ s%@AR@%$AR%g
s%@DL_LIBS@%$DL_LIBS%g
s%@DL_OBJS@%$DL_OBJS%g
s%@PLAT_OBJS@%$PLAT_OBJS%g
+s%@PLAT_SRCS@%$PLAT_SRCS%g
s%@CFLAGS_DEBUG@%$CFLAGS_DEBUG%g
s%@CFLAGS_OPTIMIZE@%$CFLAGS_OPTIMIZE%g
s%@CFLAGS_WARNING@%$CFLAGS_WARNING%g
diff --git a/unix/tcl.m4 b/unix/tcl.m4
index ccd9946..5eb6c72 100644
--- a/unix/tcl.m4
+++ b/unix/tcl.m4
@@ -887,6 +887,7 @@ dnl AC_CHECK_TOOL(AR, ar)
STLIB_LD='${AR} cr'
LD_LIBRARY_PATH_VAR="LD_LIBRARY_PATH"
PLAT_OBJS=""
+ PLAT_SRCS=""
case $system in
AIX-*)
if test "${TCL_THREADS}" = "1" -a "$GCC" != "yes" ; then
@@ -1357,25 +1358,42 @@ dnl AC_CHECK_TOOL(AR, ar)
esac
;;
Darwin-*)
+ CFLAGS_OPTIMIZE="-Os"
SHLIB_CFLAGS="-fno-common"
SHLIB_LD="cc -dynamiclib \${LDFLAGS}"
- TCL_SHLIB_LD_EXTRAS="-compatibility_version ${TCL_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TCL_LIB_FILE} -prebind -seg1addr 0xa000000 -Wl,-single_module"
- TK_SHLIB_LD_EXTRAS="-compatibility_version ${TK_VERSION} -current_version \${VERSION} -install_name \${DYLIB_INSTALL_DIR}/\${TK_LIB_FILE} -prebind -seg1addr 0xb000000 -Wl,-single_module"
+ AC_CACHE_CHECK([if ld accepts -single_module flag], tcl_cv_ld_single_module, [
+ hold_ldflags=$LDFLAGS
+ LDFLAGS="$LDFLAGS -dynamiclib -Wl,-single_module"
+ AC_TRY_LINK(, [int i;], tcl_cv_ld_single_module=yes, tcl_cv_ld_single_module=no)
+ LDFLAGS=$hold_ldflags])
+ if test $tcl_cv_ld_single_module = yes; then
+ SHLIB_LD="${SHLIB_LD} -Wl,-single_module"
+ fi
SHLIB_LD_LIBS='${LIBS}'
SHLIB_SUFFIX=".dylib"
DL_OBJS="tclLoadDyld.o"
- PLAT_OBJS=\$\(MAC\_OSX_OBJS\)
DL_LIBS=""
- LDFLAGS="$LDFLAGS -prebind -Wl,-search_paths_first"
+ LDFLAGS="$LDFLAGS -prebind"
+ AC_CACHE_CHECK([if ld accepts -search_paths_first flag], tcl_cv_ld_search_paths_first, [
+ hold_ldflags=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ AC_TRY_LINK(, [int i;], tcl_cv_ld_search_paths_first=yes, tcl_cv_ld_search_paths_first=no)
+ LDFLAGS=$hold_ldflags])
+ if test $tcl_cv_ld_search_paths_first = yes; then
+ LDFLAGS="$LDFLAGS -Wl,-search_paths_first"
+ fi
CC_SEARCH_FLAGS=""
LD_SEARCH_FLAGS=""
- CFLAGS_OPTIMIZE="-Os"
LD_LIBRARY_PATH_VAR="DYLD_LIBRARY_PATH"
+ PLAT_OBJS=\$\(MAC\_OSX_OBJS\)
+ PLAT_SRCS=\$\(MAC\_OSX_SRCS\)
+ TCL_SHLIB_LD_EXTRAS='-compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TCL_LIB_FILE} -seg1addr 0xa000000'
+ TK_SHLIB_LD_EXTRAS=' -compatibility_version ${VERSION} -current_version ${VERSION} -install_name ${DYLIB_INSTALL_DIR}/${TK_LIB_FILE} -seg1addr 0xb000000 -unexported_symbols_list $$(f=$(TCL_STUB_LIB_FILE).E && nm -gjp $(TCL_BIN_DIR)/$(TCL_STUB_LIB_FILE) | tail +3 > $$f && echo $$f)'
+ LIBS="$LIBS -framework CoreFoundation"
AC_DEFINE(MAC_OSX_TCL)
AC_DEFINE(HAVE_CFBUNDLE)
AC_DEFINE(USE_VFORK)
AC_DEFINE(TCL_DEFAULT_ENCODING,"utf-8")
- LIBS="$LIBS -framework CoreFoundation"
;;
NEXTSTEP-*)
SHLIB_CFLAGS=""
@@ -1837,6 +1855,7 @@ dnl esac
AC_SUBST(DL_OBJS)
AC_SUBST(PLAT_OBJS)
+ AC_SUBST(PLAT_SRCS)
AC_SUBST(CFLAGS)
AC_SUBST(CFLAGS_DEBUG)
AC_SUBST(CFLAGS_OPTIMIZE)
@@ -2016,6 +2035,7 @@ int main() {
AC_DEFUN(SC_MISSING_POSIX_HEADERS, [
AC_MSG_CHECKING(dirent.h)
+ AC_CACHE_VAL(tcl_cv_dirent_h,
AC_TRY_LINK([#include <sys/types.h>
#include <dirent.h>], [
#ifndef _POSIX_SOURCE
@@ -2035,9 +2055,9 @@ d = opendir("foobar");
entryPtr = readdir(d);
p = entryPtr->d_name;
closedir(d);
-], tcl_ok=yes, tcl_ok=no)
+], tcl_cv_dirent_h=yes, tcl_cv_dirent_h=no))
- if test $tcl_ok = no; then
+ if test $tcl_cv_dirent_h = no; then
AC_DEFINE(NO_DIRENT_H)
fi
@@ -2545,12 +2565,12 @@ AC_DEFUN(SC_TCL_64BIT_FLAGS, [
fi
AC_MSG_RESULT(${tcl_cv_struct_stat64})
+ AC_CHECK_FUNCS(open64 lseek64)
AC_MSG_CHECKING([for off64_t])
AC_CACHE_VAL(tcl_cv_type_off64_t,[
AC_TRY_COMPILE([#include <sys/types.h>],[off64_t offset;
],
tcl_cv_type_off64_t=yes,tcl_cv_type_off64_t=no)])
- AC_CHECK_FUNCS(open64 lseek64)
dnl Define HAVE_TYPE_OFF64_T only when the off64_t type and the
dnl functions lseek64 and open64 are defined.
if test "x${tcl_cv_type_off64_t}" = "xyes" && \