Revision: 41149
          http://brlcad.svn.sourceforge.net/brlcad/?rev=41149&view=rev
Author:   starseeker
Date:     2010-10-28 02:00:36 +0000 (Thu, 28 Oct 2010)

Log Message:
-----------
Sigh.  No way around it - we are really going to need most of the complex tests 
and options of the Tcl macros, so start getting systematic about it.

Modified Paths:
--------------
    brlcad/branches/cmake/src/other/tcl/CMakeLists.txt

Modified: brlcad/branches/cmake/src/other/tcl/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/tcl/CMakeLists.txt  2010-10-27 21:52:36 UTC 
(rev 41148)
+++ brlcad/branches/cmake/src/other/tcl/CMakeLists.txt  2010-10-28 02:00:36 UTC 
(rev 41149)
@@ -84,6 +84,13 @@
 
 
 #-----------------------------------------------------------------------------
+# If compiling on macosx, need to do something with tclConfig.h.in - figure
+# out what
+
+
+
+
+#-----------------------------------------------------------------------------
 # Check if the compiler supports pipe - if so, use it
 INCLUDE(CheckCCompilerFlag)
 CHECK_C_COMPILER_FLAG(-pipe PIPE_COMPILER_FLAG)
@@ -127,12 +134,7 @@
 SET(TCL_CFLAGS "${TCL_CFLAGS} 
-DTCL_LIBRARY=\"${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}tcl${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}\"")
 SET(TCL_CFLAGS "${TCL_CFLAGS} 
-DTCL_PACKAGE_PATH=\"${CMAKE_INSTALL_PREFIX}/lib\"")
 
-IF(NOT TCL_CFGVAL_ENCODING)
-       SET(TCL_CFGVAL_ENCODING "iso8859-1")
-ENDIF(NOT TCL_CFGVAL_ENCODING)
-SET(TCL_CFLAGS "${TCL_CFLAGS} 
-DTCL_CFGVAL_ENCODING=\"${TCL_CFGVAL_ENCODING}\"")
 
-
 IF(APPLE)
        SET(TCL_CFLAGS "${TCL_CFLAGS} -DMAC_OSX_TCL=1")
        find_library(COREFOUNDATION_FRAMEWORK CoreFoundation)
@@ -143,87 +145,163 @@
 #----------------------------------------------------------------------------
 # Define a number of variables to be controlled by options
 OPTION(TCL_THREADS "Enable Tcl Thread support" ON)
-IF(TCL_THREADS)
-   SET(TCL_CFLAGS "${TCL_CFLAGS} -DTCL_THREADS=1")
-       SET(TCL_CFLAGS "${TCL_CFLAGS} -DUSE_THREAD_ALLOC=1")
-       SET(TCL_CFLAGS "${TCL_CFLAGS} -D_REENTRANT=1")
-       SET(TCL_CFLAGS "${TCL_CFLAGS} -D_THREAD_SAFE=1")
-       IF(${CMAKE_SYSTEM_NAME} MATCHES "^SunOS$")
-               SET(TCL_CFLAGS "${TCL_CFLAGS} -D_POSIX_PTHREAD_SEMANTICS=1")
-       ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "^SunOS$")
-ENDIF(TCL_THREADS)
 
-
-# Tom's math library
+# Tom's math library - should MP_PREC be an option?
 OPTION(TCL_TOMMATH "Enable Tcl Tom's Math Library" ON)
 IF(TCL_TOMMMATH)
-       SET(TCL_TOMMATH "${TCL_CFLAGS} -DTCL_TOMMATH=1")
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -DTCL_TOMMATH=1")
+   SET(TCL_CFLAGS "${TCL_CFLAGS} -DMP_PREC=4")
 ENDIF(TCL_TOMMMATH)
 
 #----------------------------------------------------------------------------
-# Run tests for system headers and functionality
-CHECK_INCLUDE_FILE_D(sys/types.h HAVE_SYS_TYPES_H)
-CHECK_INCLUDE_FILE_D(sys/stat.h HAVE_SYS_STAT_H)
-CHECK_INCLUDE_FILE_D(sys/fstatfs.h HAVE_SYS_FSTATFS_H)
-IF(NOT HAVE_SYS_FSTATFS_H)
-   SET(TCL_CFLAGS "${TCL_CFLAGS} -DNO_FSTATFS=1")
-ENDIF(NOT HAVE_SYS_FSTATFS_H)
-CHECK_INCLUDE_FILE_D(stdlib.h HAVE_STDLIB_H)
-CHECK_INCLUDE_FILE_D(string.h HAVE_STRING_H)
-CHECK_INCLUDE_FILE_D(memory.h HAVE_MEMORY_H)
-CHECK_INCLUDE_FILE_D(strings.h HAVE_STRINGS_H)
-CHECK_INCLUDE_FILE_D(inttypes.h HAVE_INTTYPES_H)
-CHECK_INCLUDE_FILE_D(stdint.h HAVE_STDINT_H)
-CHECK_INCLUDE_FILE_D(unistd.h HAVE_UNISTD_H)
+# Run tests for system headers and functionality.  Start with the tests
+# corresponding to SC_MISSING_POSIX_HEADERS
 
 CHECK_INCLUDE_FILE_D(dirent.h HAVE_DIRENT_H)
 IF(NOT HAVE_DIRENT_H)
        SET(TCL_CFLAGS "${TCL_CFLAGS} -DNO_DIRENT_H=1")
 ENDIF(NOT HAVE_DIRENT_H)
-
 CHECK_INCLUDE_FILE_USABILITY_D(float.h FLOAT_H)
 CHECK_INCLUDE_FILE_USABILITY_D(values.h VALUES_H)
 CHECK_INCLUDE_FILE_USABILITY_D(limits.h LIMITS_H)
+CHECK_INCLUDE_FILE_D(stdlib.h HAVE_STDLIB_H)
+CHECK_INCLUDE_FILE_D(string.h HAVE_STRING_H)
+IF(NOT HAVE_STRING_H)
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -DNO_STRING_H=1")
+ENDIF(NOT HAVE_STRING_H)
 CHECK_INCLUDE_FILE_USABILITY_D(sys/wait.h SYS_WAIT_H)
 CHECK_INCLUDE_FILE_USABILITY_D(dlfcn.h DLFCN_H)
 CHECK_INCLUDE_FILE_USABILITY_D(sys/param.h SYS_PARAM_H)
 
+# Next comes the thread check
+IF(TCL_THREADS)
+   SET(TCL_CFLAGS "${TCL_CFLAGS} -DTCL_THREADS=1")
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -DUSE_THREAD_ALLOC=1")
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -D_REENTRANT=1")
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -D_THREAD_SAFE=1")
+       IF(${CMAKE_SYSTEM_NAME} MATCHES "^SunOS$")
+               SET(TCL_CFLAGS "${TCL_CFLAGS} -D_POSIX_PTHREAD_SEMANTICS=1")
+       ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "^SunOS$")
+   FIND_PACKAGE(Threads)
+       CHECK_FUNCTION_EXISTS_D(pthread_attr_setstacksize 
HAVE_PTHREAD_ATTR_SETSTACKSIZE)
+       CHECK_FUNCTION_EXISTS(pthread_attr_get_np HAVE_PTHREAD_ATTR_GET_NP)
+       CHECK_FUNCTION_EXISTS(pthread_getattr_np HAVE_PTHREAD_GETATTR_NP)
+       IF(HAVE_PTHREAD_ATTR_GET_NP)
+               SET(TCL_CFLAGS "${TCL_CFLAGS} -DHAVE_PTHREAD_ATTR_GET_NP=1")
+       ELSEIF(HAVE_PTHREAD_GETATTR_NP)
+               SET(TCL_CFLAGS "${TCL_CFLAGS} -DHAVE_PTHREAD_GETATTR_NP=1")
+       ENDIF(HAVE_PTHREAD_ATTR_GET_NP)
+       CHECK_FUNCTION_EXISTS(pthread_get_stacksize_np 
HAVE_PTHREAD_GET_STACKSIZE_NP)
+ENDIF(TCL_THREADS)
 
+# SC_TCL_CFG_ENCODING
+IF(NOT TCL_CFGVAL_ENCODING)
+       SET(TCL_CFGVAL_ENCODING "iso8859-1")
+ENDIF(NOT TCL_CFGVAL_ENCODING)
+SET(TCL_CFLAGS "${TCL_CFLAGS} 
-DTCL_CFGVAL_ENCODING=\"${TCL_CFGVAL_ENCODING}\"")
+
+# SC_TCL_LINK_LIBS
 CHECK_LIBRARY(M m sin)
 CHECK_LIBRARY(IEEE ieee main)
 CHECK_LIBRARY(INET inet main)
-
+SET(TCL_LINK_LIBS ${IEEE_LIBRARY} ${M_LIBRARY} ${INET_LIBRARY})
 CHECK_INCLUDE_FILE_USABILITY_D(net/errno.h NET_ERRNO_H)
-
 CHECK_FUNCTION_EXISTS(connect HAVE_CONNECT)
+IF(NOT HAVE_CONNECT)
+       CHECK_FUNCTION_EXISTS(setsockopt HAVE_SETSOCKOPT)
+       IF(NOT HAVE_SETSOCKOPT)
+               CHECK_LIBRARY(SOCKET socket setsocket)
+               SET(TCL_LINK_LIBS ${TCL_LINK_LIBS} ${SOCKET_LIBRARY})
+       ENDIF(NOT HAVE_SETSOCKOPT)
+ENDIF(NOT HAVE_CONNECT)
 CHECK_FUNCTION_EXISTS(gethostbyname HAVE_GETHOSTBYNAME)
 IF(NOT HAVE_GETHOSTBYNAME)
-       CHECK_LIBRARY(GHBN lnsl gethostbyname)
-       SET(HAVE_GETHOSTBYNAME ${GHBN})
+       CHECK_LIBRARY(NLS nls gethostbyname)
+       SET(TCL_LINK_LIBS ${TCL_LINK_LIBS} ${NLS_LIBRARY})
 ENDIF(NOT HAVE_GETHOSTBYNAME)
 
-CHECK_COMPILER_SUPPORTS_HIDDEN_D()
+# Need to detect and set up 64 bit here
 
-CHECK_LIBRARY(DL dl dlopen)
 
+# Test endianness
 INCLUDE(TestBigEndian)
 TEST_BIG_ENDIAN(IS_BIGENDIAN)
 
-CHECK_FUNCTION_EXISTS_D(getcwd HAVE_GETCWD)
+# POSIX substitutes
+CHECK_FUNCTION_EXISTS(getcwd HAVE_GETCWD)
+IF(NOT HAVE_GETCW)
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -DUSEGETWD=1") 
+ENDIF(NOT HAVE_GETCW)
+CHECK_FUNCTION_EXISTS(getwd HAVE_GETWD)
+IF(NOT HAVE_GETWD)
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -DNO_GETWD=1") 
+ENDIF(NOT HAVE_GETWD)
 CHECK_FUNCTION_EXISTS_D(opendir HAVE_OPENDIR)
 CHECK_FUNCTION_EXISTS_D(strtol HAVE_STRTOL)
 CHECK_FUNCTION_EXISTS_D(waitpid HAVE_WAITPID)
 CHECK_FUNCTION_EXISTS_D(strerror HAVE_STRERROR)
-CHECK_FUNCTION_EXISTS_D(getwd HAVE_GETWD)
+IF(NOT HAVE_STRERROR)
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -DNO_STRERROR=1") 
+ENDIF(NOT HAVE_STRERROR)
 CHECK_FUNCTION_EXISTS_D(wait3 HAVE_WAIT3)
+IF(NOT HAVE_WAIT3)
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -DNO_WAIT3=1") 
+ENDIF(NOT HAVE_WAIT3)
 CHECK_FUNCTION_EXISTS_D(uname HAVE_UNAME)
+IF(NOT HAVE_UNAME)
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -DNO_UNAME=1") 
+ENDIF(NOT HAVE_UNAME)
+# Should be checking for early Darwin version here - realpath
+# is not threadsafe prior to Darwin 7
 CHECK_FUNCTION_EXISTS_D(realpath HAVE_REALPATH)
+IF(NOT HAVE_REALPATH)
+       SET(TCL_CFLAGS "${TCL_CFLAGS} -DNO_REALPATH=1") 
+ENDIF(NOT HAVE_REALPATH)
+
 CHECK_FUNCTION_EXISTS(getaddrinfo HAVE_GETADDRINFO)
 IF(HAVE_GETADDRINFO)
                  CHECK_GETADDERINFO_WORKING_D()
 ENDIF(HAVE_GETADDRINFO)
 
 
+# Thread safe tests - need to go over macros and
+# get the right logic going here
+IF(TCL_THREADS)
+CHECK_FUNCTION_EXISTS_D(getpwuid HAVE_GETPWUID_R)
+CHECK_FUNCTION_EXISTS_D(getpwnam HAVE_GETPWNAM_R)
+CHECK_FUNCTION_EXISTS_D(getgrgid HAVE_GETGRGID_R)
+CHECK_FUNCTION_EXISTS_D(getgrnam HAVE_GETGRNAM_R)
+IF(NOT HAVE_GETHOSTBYNAME)
+       CHECK_LIBRARY(GHBN lnsl gethostbyname)
+       SET(HAVE_GETHOSTBYNAME ${GHBN})
+ENDIF(NOT HAVE_GETHOSTBYNAME)
+#CHECK_FUNCTION_EXISTS_D( HAVE_MTSAFE_GETHOSTBYNAME)
+#CHECK_FUNCTION_EXISTS_D( HAVE_MTSAFE_GETHOSTBYADDR)
+
+ENDIF(TCL_THREADS)
+
+CHECK_INCLUDE_FILE_D(sys/types.h HAVE_SYS_TYPES_H)
+CHECK_INCLUDE_FILE_D(sys/stat.h HAVE_SYS_STAT_H)
+CHECK_INCLUDE_FILE_D(sys/fstatfs.h HAVE_SYS_FSTATFS_H)
+IF(NOT HAVE_SYS_FSTATFS_H)
+   SET(TCL_CFLAGS "${TCL_CFLAGS} -DNO_FSTATFS=1")
+ENDIF(NOT HAVE_SYS_FSTATFS_H)
+CHECK_INCLUDE_FILE_D(memory.h HAVE_MEMORY_H)
+CHECK_INCLUDE_FILE_D(strings.h HAVE_STRINGS_H)
+CHECK_INCLUDE_FILE_D(inttypes.h HAVE_INTTYPES_H)
+CHECK_INCLUDE_FILE_D(stdint.h HAVE_STDINT_H)
+CHECK_INCLUDE_FILE_D(unistd.h HAVE_UNISTD_H)
+
+
+
+
+
+CHECK_COMPILER_SUPPORTS_HIDDEN_D()
+
+CHECK_LIBRARY(DL dl dlopen)
+
+
+
 CHECK_INCLUDE_FILE_USABILITY_D(sys/modem.h SYS_MODEM_H)
 
 TERMIOS_TERMIO_SGTTY()
@@ -248,10 +326,6 @@
 
 
 
-CHECK_FUNCTION_EXISTS_D(getpwuid HAVE_GETPWUID_R)
-CHECK_FUNCTION_EXISTS_D(getpwnam HAVE_GETPWNAM_R)
-CHECK_FUNCTION_EXISTS_D(getgrgid HAVE_GETGRGID_R)
-CHECK_FUNCTION_EXISTS_D(getgrnam HAVE_GETGRNAM_R)
 CHECK_TYPE_SIZE_D(blkcnt_t HAVE_BLKCNT_T)
 CHECK_TYPE_SIZE_D(intptr_t HAVE_INTPTR_T)
 CHECK_TYPE_SIZE_D(uintptr_t HAVE_UINTPTR_T)
@@ -259,38 +333,12 @@
 CHECK_INCLUDE_FILE_D(libkern/OSAtomic.h HAVE_LIBKERN_OSATOMIC_H)
 CHECK_FUNCTION_EXISTS_D(OSSpinLockLock HAVE_OSSPINLOCKLOCK)
 CHECK_FUNCTION_EXISTS_D(pthread_atfork HAVE_PTHREAD_ATFORK)
-#CHECK_FUNCTION_EXISTS_D( HAVE_MTSAFE_GETHOSTBYNAME)
-#CHECK_FUNCTION_EXISTS_D( HAVE_MTSAFE_GETHOSTBYADDR)
-#CHECK_FUNCTION_EXISTS_D( HAVE_STRUCT_STAT_ST_BLOCKS)
-#CHECK_FUNCTION_EXISTS_D( HAVE_STRUCT_STAT_ST_BLKSIZE)
-#CHECK_FUNCTION_EXISTS_D( HAVE_GETPWUID_R_5)
-#CHECK_FUNCTION_EXISTS_D( HAVE_GETPWNAM_R_5)
-#CHECK_FUNCTION_EXISTS_D( HAVE_GETGRGID_R_5)
-#CHECK_FUNCTION_EXISTS_D( HAVE_GETGRNAM_R_5)
-#CHECK_INCLUDE_FILE_D( USE_VFORK)
-#CHECK_INCLUDE_FILE_D( TCL_WIDE_INT_TYPE long\ long)
-#CHECK_INCLUDE_FILE_D( TCL_CFG_DEBUG)
-#CHECK_INCLUDE_FILE_D( USE_TERMIOS)
-#CHECK_INCLUDE_FILE_D( TIME_WITH_SYS_TIME)
-#CHECK_INCLUDE_FILE_D( HAVE_TM_GMTOFF)
-#CHECK_INCLUDE_FILE_D( HAVE_TIMEZONE_VAR)
-#CHECK_INCLUDE_FILE_D( HAVE_STRUCT_STAT64)
-#FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine M_PREC 4)
-#FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine TCL_DEFAULT_ENCODING \"utf-8\"")
-#FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine TCL_LOAD_FROM_MEMORY 1)
-#FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine TCL_WIDE_CLICKS 1)
-#FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine HAVE_AVAILABILITYMACROS_H 1)
-#FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine HAVE_WEAK_IMPORT 1)
-#FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine _DARWIN_C_SOURCE 1)
-#FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine HAVE_FTS 1)
-#FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine TCL_UNLOAD_DLLS 1)
-#FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine USE_DTRACE 1)
 
-FIND_PACKAGE(Threads)
+IF(APPLE)
+       # Now that all the tests are done, configure the tclConfig.h file:
+       configure_file(${CMAKE_CURRENT_SOURCE_DIR}/unix/tclConfig.h.in 
${TCL_BINARY_DIR}/include/tclConfig.h)
+ENDIF(APPLE)
 
-# Now that all the tests are done, configure the tclConfig.h file:
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/unix/tclConfig.h.in 
${TCL_BINARY_DIR}/include/tclConfig.h)
-
 SET(TCL_GENERIC_SRCS
        generic/regcomp.c
        generic/regexec.c
@@ -525,7 +573,7 @@
 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TCL_CFLAGS}")
 
 add_library(tcl ${TCL_SRCS})
-target_link_libraries(tcl ${COREFOUNDATION_FRAMEWORK} ${M_LIBRARY} 
${DL_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
+target_link_libraries(tcl ${COREFOUNDATION_FRAMEWORK} ${TCL_LINK_LIBS} 
${DL_LIBRARY} ${CMAKE_THREAD_LIBS_INIT})
 install(TARGETS tcl DESTINATION lib)
 SET_TARGET_PROPERTIES(tcl PROPERTIES VERSION ${TCL_VERSION} SOVERSION 
${TCL_MAJOR_VERSION}.${TCL_MINOR_VERSION})
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to