Revision: 41120
          http://brlcad.svn.sourceforge.net/brlcad/?rev=41120&view=rev
Author:   starseeker
Date:     2010-10-21 17:35:02 +0000 (Thu, 21 Oct 2010)

Log Message:
-----------
Generalize the tcl/tk logic a bit, and try hooking it up to src/other.  It's 
not functional yet, and won't be without a fair number of tests being 
implemented to define variables correctly, but techniques developed for BRL-CAD 
are mapping to that problem fairly well.

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

Modified: brlcad/branches/cmake/src/other/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/CMakeLists.txt      2010-10-21 05:51:39 UTC 
(rev 41119)
+++ brlcad/branches/cmake/src/other/CMakeLists.txt      2010-10-21 17:35:02 UTC 
(rev 41120)
@@ -97,36 +97,21 @@
        OPTION(BRLCAD_BUILD_LOCAL_TK "Build the local versions of Tcl/Tk" ON)
        SET(BRLCAD_BUILD_LOCAL_TK ON CACHE STRING "local tk build" FORCE)
 ENDIF(BRLCAD-ENABLE_ALL_LOCAL_LIBS)
-IF(MSVC)
-   THIRD_PARTY_NMAKE_EXTERNAL_PROJECT(TCL tcl src/other/tcl win "")
-ELSE(MSVC)
-       THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT(TCL tcl src/other/tcl unix "")
-ENDIF(MSVC)
 IF(BRLCAD_BUILD_LOCAL_TCL OR BRLCAD-ENABLE_ALL_LOCAL_LIBS)
-       IF(MSVC)
-               SET(TCL_LIBRARY "${BRLCAD_PREFIX}/lib/tcl85.lib" CACHE STRING 
"TCL_LIBRARY" FORCE)
-       ELSE(MSVC)
-               SET(TCL_LIBRARY 
"${BRLCAD_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}tcl8.5${CMAKE_SHARED_LIBRARY_SUFFIX}"
 CACHE STRING "TCL_LIBRARY" FORCE)
-       ENDIF(MSVC)
-       SET(TCL_INCLUDE_PATH "${BRLCAD_PREFIX}/include" CACHE STRING 
"TCL_INCLUDE_PATH" FORCE)
-       SET(TCL_CONF_PREFIX "${BRLCAD_PREFIX}/lib" CACHE STRING 
"TCL_CONF_PREFIX" FORCE)
+       ADD_SUBDIRECTORY(tcl)
+       SET(TCL_LIBRARY tcl CACHE STRING "TCL_LIBRARY" FORCE)
+       get_directory_property(TCL_INCLUDE_PATH DIRECTORY tcl DEFINITION 
TCL_INCLUDE_PATH)
+       SET(TCL_INCLUDE_PATH "${TCL_INCLUDE_PATH}" CACHE STRING "Tcl include 
paths" FORCE)
        FILE(APPEND  ${CONFIG_H_FILE} "#define HAVE_TCL_H 1\n")
 ELSE(BRLCAD_BUILD_LOCAL_TCL OR BRLCAD-ENABLE_ALL_LOCAL_LIBS)
        BRLCAD_INCLUDE_FILE(tcl.h HAVE_TCL_H)
 ENDIF(BRLCAD_BUILD_LOCAL_TCL OR BRLCAD-ENABLE_ALL_LOCAL_LIBS)
-IF(MSVC)
-   THIRD_PARTY_NMAKE_EXTERNAL_PROJECT(TK tk src/other/tk win 
"TCLDIR=${CMAKE_CURRENT_SOURCE_DIR}/tcl")
-ELSE(MSVC)
-        THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT(TK tk src/other/tk unix 
"--with-tcl=${TCL_CONF_PREFIX}")
-ENDIF(MSVC) 
+
 IF(BRLCAD_BUILD_LOCAL_TK OR BRLCAD-ENABLE_ALL_LOCAL_LIBS)
-        IF(MSVC)
-               SET(TK_LIBRARY "${BRLCAD_PREFIX}/lib/tk85.lib" CACHE STRING 
"TK_LIBRARY" FORCE)
-       ELSE(MSVC)
-               SET(TK_LIBRARY 
"${BRLCAD_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}tk8.5${CMAKE_SHARED_LIBRARY_SUFFIX}"
 CACHE STRING "TK_LIBRARY" FORCE)
-       ENDIF(MSVC)
-       SET(TK_INCLUDE_PATH "${BRLCAD_PREFIX}/include" CACHE STRING 
"TK_INCLUDE_PATH" FORCE)
-       SET(TK_CONF_PREFIX "${BRLCAD_PREFIX}/lib" CACHE STRING "TK_CONF_PREFIX" 
FORCE)
+       ADD_SUBDIRECTORY(tk)
+       SET(TK_LIBRARY tk CACHE STRING "TK_LIBRARY" FORCE)
+       get_directory_property(TK_INCLUDE_PATH DIRECTORY tk DEFINITION 
TK_INCLUDE_PATH)
+       SET(TK_INCLUDE_PATH "${TK_INCLUDE_PATH}" CACHE STRING "Tk include 
paths" FORCE)
        FILE(APPEND  ${CONFIG_H_FILE} "#define HAVE_TK_H 1\n")
        ADD_DEPENDENCIES(tk tcl)
 ELSE(BRLCAD_BUILD_LOCAL_TK OR BRLCAD-ENABLE_ALL_LOCAL_LIBS)

Modified: brlcad/branches/cmake/src/other/tcl/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/tcl/CMakeLists.txt  2010-10-21 05:51:39 UTC 
(rev 41119)
+++ brlcad/branches/cmake/src/other/tcl/CMakeLists.txt  2010-10-21 17:35:02 UTC 
(rev 41120)
@@ -168,10 +168,10 @@
 
 
 TCL_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
-TCL_INCLUDE_FILE(sys/statfs.h HAVE_SYS_STAT_H)
-IF(NOT HAVE_SYS_STAT_H)
+TCL_INCLUDE_FILE(sys/statfs.h HAVE_SYS_STATFS_H)
+IF(NOT HAVE_SYS_STATFS_H)
        FILE(APPEND ${CONFIG_H_FILE} "#define NO_FSTATFS 1\n")
-ENDIF(NOT HAVE_SYS_STAT_H)
+ENDIF(NOT HAVE_SYS_STATFS_H)
 TCL_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H)
 TCL_INCLUDE_FILE(string.h HAVE_STRING_H)
 TCL_INCLUDE_FILE(memory.h HAVE_MEMORY_H)
@@ -477,12 +477,25 @@
        unix/tclLoadShl.c
 )
 
-SET(TCL_SRCS ${TCL_GENERIC_SRCS} ${TCL_TOMMATH_SRCS} ${TCL_UNIX_SRCS} 
${TCL_NOTIFY_SRCS} ${TCL_STUB_SRCS} unix/tclLoadDyld.c ${TCL_OSX_SRCS})
+SET(TCL_SRCS ${TCL_GENERIC_SRCS} ${TCL_TOMMATH_SRCS} ${TCL_NOTIFY_SRCS} 
${TCL_STUB_SRCS}) 
+IF(WIN32)
+       SET(TCL_SRCS ${TCL_SRCS} ${TCL_WIN_SRCS})
+ELSE(WIN32)
+       IF(APPLE)
+               SET(TCL_SRCS ${TCL_SRCS} ${TCL_OSX_SRCS})
+       ENDIF(APPLE)
+       SET(TCL_SRCS ${TCL_SRCS} ${TCL_UNIX_SRCS} unix/tclLoadDyld.c)
+ENDIF(WIN32)
+
+SET(TCL_INCLUDE_PATH ${TCL_SOURCE_DIR}/generic ${TCL_SOURCE_DIR}/libtommath 
${TCL_BINARY_DIR}/include)
+IF(WIN32)
+       SET(TCL_INCLUDE_PATH ${TCL_INCLUDE_PATH} ${TCL_SOURCE_DIR}/win)
+ELSE(WIN32)
+       SET(TCL_INCLUDE_PATH ${TCL_INCLUDE_PATH} ${TCL_SOURCE_DIR}/unix)
+ENDIF(WIN32)
+
 include_directories(
-       ${TCL_SOURCE_DIR}/generic
-       ${TCL_SOURCE_DIR}/unix
-       ${TCL_SOURCE_DIR}/libtommath
-       ${TCL_BINARY_DIR}/include
+       ${TCL_INCLUDE_PATH}
 )
 
 IF(WIN32)
@@ -493,6 +506,10 @@
 
 add_library(tcl ${TCL_SRCS})
 target_link_libraries(tcl ${CMAKE_THREAD_LIBS_INIT} 
${COREFOUNDATION_FRAMEWORK})
+install(TARGETS tcl DESTINATION lib)
+SET(TCL_LIBRARY tcl)
 
 add_executable(tclsh ${TCLSH_SRCS})
 target_link_libraries(tclsh tcl)
+install(TARGETS tclsh DESTINATION bin)
+SET(TCL_TCLSH tclsh)

Modified: brlcad/branches/cmake/src/other/tk/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/tk/CMakeLists.txt   2010-10-21 05:51:39 UTC 
(rev 41119)
+++ brlcad/branches/cmake/src/other/tk/CMakeLists.txt   2010-10-21 17:35:02 UTC 
(rev 41120)
@@ -161,10 +161,10 @@
 FIND_PACKAGE(X11)
 
 TK_INCLUDE_FILE(sys/types.h HAVE_SYS_TYPES_H)
-TK_INCLUDE_FILE(sys/statfs.h HAVE_SYS_STAT_H)
-IF(NOT HAVE_SYS_STAT_H)
+TK_INCLUDE_FILE(sys/statfs.h HAVE_SYS_STATFS_H)
+IF(NOT HAVE_SYS_STATFS_H)
        FILE(APPEND ${CONFIG_H_FILE} "#define NO_FSTATFS 1\n")
-ENDIF(NOT HAVE_SYS_STAT_H)
+ENDIF(NOT HAVE_SYS_STATFS_H)
 TK_INCLUDE_FILE(stdlib.h HAVE_STDLIB_H)
 TK_INCLUDE_FILE(string.h HAVE_STRING_H)
 TK_INCLUDE_FILE(memory.h HAVE_MEMORY_H)
@@ -458,15 +458,59 @@
 SET(TK_WIN_SRCS
 )
 
-SET(TK_SRCS ${TK_GENERIC_SRCS} ${TK_X11_SRCS} ${TTK_SRCS} ${TTK_STUB_SRCS})
+SET(TK_SRCS ${TK_GENERIC_SRCS} ${TTK_SRCS} ${TTK_STUB_SRCS})
+
+IF(WIN32)
+       SET(TK_SRCS ${TK_SRCS} ${TK_WIN_SRCS})
+ELSE(WIN32)
+       IF(ENABLE_AQUA)
+               SET(TK_SRCS ${TK_SRCS} ${TK_AQUA_SRCS})
+       ELSE(ENABLE_AQUA)
+               SET(TK_SRCS ${TK_SRCS} ${TK_X11_SRCS})
+       ENDIF(ENABLE_AQUA)
+ENDIF(WIN32)
+
+# When it comes to identification of the location of the Tcl
+# sources, the convention is as follows:
+#
+# 1.  If TCL_INCLUDE_PATH is defined, use it
+# 2.  Else, if TCL_PREFIX is defined build include paths from it
+# 3.  If TCL_INCLUDE_PATH is not defined and TCL_BIN_PREFIX is,
+#     add include directories based on the presumption of the
+#     binary build dir (and hence tclConfig.h) being in a non-src
+#     location.
+#
+# It's still possible, depending on how Tcl was built, to 
+# have a situation where TCL_INCLUDE_PATH has to be augmented
+# manually.  However, the logic below should cover the most common cases.
+
+IF(NOT TCL_INCLUDE_PATH)
+       IF(TCL_PREFIX)
+               SET(TCL_INCLUDE_PATH ${TCL_PREFIX}/generic 
${TCL_PREFIX}/libtommath)
+               IF(WIN32)
+                       SET(TCL_INCLUDE_PATH ${TCL_INCLUDE_PATH} 
${TCL_PREFIX}/win)
+               ELSE(WIN32)
+                       SET(TCL_INCLUDE_PATH ${TCL_INCLUDE_PATH} 
${TCL_PREFIX}/unix)
+               ENDIF(WIN32)
+       ENDIF(TCL_PREFIX)
+       IF(TCL_BIN_PREFIX)
+               SET(TCL_INCLUDE_PATH ${TCL_INCLUDE_PATH} 
${TCL_BIN_PREFIX}/include)
+       ENDIF(TCL_BIN_PREFIX)
+ENDIF(NOT TCL_INCLUDE_PATH)
+
+SET(TK_INCLUDE_PATH ${TK_SOURCE_DIR}/generic ${TK_SOURCE_DIR}/bitmaps 
${TK_BINARY_DIR}/include)
+IF(WIN32)
+       SET(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${TK_SOURCE_DIR}/win)
+ELSE(WIN32)
+       SET(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${TK_SOURCE_DIR}/unix)
+       IF(APPLE)
+               SET(TK_INCLUDE_PATH ${TK_INCLUDE_PATH} ${TK_SOURCE_DIR}/macosx)
+       ENDIF(APPLE)
+ENDIF(WIN32)
+
 include_directories(
-       ${TK_SOURCE_DIR}/../tcl/generic
-       ${TK_SOURCE_DIR}/../tcl/unix
-       ${TK_SOURCE_DIR}/generic
-       ${TK_SOURCE_DIR}/unix
-       ${TK_SOURCE_DIR}/macosx
-       ${TK_SOURCE_DIR}/bitmaps
-       ${TK_BINARY_DIR}/include
+   ${TCL_INCLUDE_PATH} 
+   ${TK_INCLUDE_PATH}  
        ${FREETYPE_INCLUDE_DIRS}
 )
 


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