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