Revision: 40552
          http://brlcad.svn.sourceforge.net/brlcad/?rev=40552&view=rev
Author:   starseeker
Date:     2010-09-13 20:04:42 +0000 (Mon, 13 Sep 2010)

Log Message:
-----------
Oh yeah, might want to add the file itself.

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

Added: brlcad/branches/cmake/src/other/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/other/CMakeLists.txt                              
(rev 0)
+++ brlcad/branches/cmake/src/other/CMakeLists.txt      2010-09-13 20:04:42 UTC 
(rev 40552)
@@ -0,0 +1,242 @@
+#-----------------------------------------------------------------------------
+# Load some CMake macros to handle the special case of third party libraries.
+INCLUDE(${BRLCAD_CMAKE_DIR}/ThirdParty.cmake)
+
+
+#---------------------------------------------------------------------------------
+# Optionally Building Local Copies of External Libraries 
+#
+# Need to get a bit fancy here - since we want to be able to turn local libs
+# on/off at will, need to be careful about how we handle key variables. 
Approach
+# is to stash values in BRLCAD_* prefixed versions, then restore them after
+# the various Find*.cmake commands do their thing.  If NOT doing local build,
+# then the BRLCAD_* and standard variables will be the same.  It remains to be
+# seen if there will be enough consistency for a macro - the variables that
+# need to be overridden will vary depending on the particular tests made by 
each
+# subdirectory's CMake logic.
+#---------------------------------------------------------------------------------
+
+# This is our "heavy hammer" flag - if this is set, assume system for
+# everything.  As yet, there is no "automatic" logic to toggle specific
+# libraries on if detection fails, but that may be possible.
+OPTION(BRLCAD_SYSTEM_LIBS_ONLY "Use the system's libraries." OFF)
+OPTION(BRLCAD_BUILD_LOCAL_LIBS "Build all the local copies of libraries." OFF)
+IF(BRLCAD_BUILD_LOCAL_LIBS)
+       SET(BRLCAD_SYSTEM_LIBS_ONLY OFF CACHE BOOL "Use the system's 
libraries." FORCE)
+ENDIF(BRLCAD_BUILD_LOCAL_LIBS)
+
+# zlib Library
+THIRD_PARTY_OPTION(ZLIB zlib)
+THIRD_PARTY_SUBDIR(ZLIB libz)
+
+# libtermlib Library
+THIRD_PARTY_OPTION(TERMLIB termlib)
+THIRD_PARTY_SUBDIR(TERMLIB libtermlib)
+
+# libpng Library - Checks for ZLIB, so need to handle libpng AFTER zlib to set 
the variables
+# if using a local copy of zlib.  If not using a local copy of zlib, FindZLIB 
results will 
+# be identical in both cases so there is no danger of harming the libpng 
setup.  The PNG
+# CMake system needs some options set and some variables translated to fit 
BRL-CAD's
+# standard assumptions, so handle that here as well.
+THIRD_PARTY_OPTION(PNG png)
+# BRL-CAD needs PNG's IO - turn it on (i.e. turn off the disabling flags)
+SET(PNG_NO_CONSOLE_IO OFF CACHE BOOL "Option to disable Console IO in PNG" 
FORCE)
+MARK_AS_ADVANCED(PNG_NO_CONSOLE_IO)
+SET(PNG_NO_STDIO OFF CACHE BOOL "Option to disable STDIO in PNG" FORCE)
+MARK_AS_ADVANCED(PNG_NO_STDIO)
+THIRD_PARTY_SUBDIR(PNG libpng)
+IF(BRLCAD_BUILD_LOCAL_PNG)
+       # PNG_LIB_NAME doesn't automatically propogate to toplevel due to 
scoping of CMake variables - 
+       # use get_directory_property to recover the value and place it in the 
CACHE
+       get_directory_property(PNG_LIBRARY DIRECTORY libpng DEFINITION 
PNG_LIB_NAME)
+       SET(BRLCAD_PNG_LIBRARY "${PNG_LIBRARY}" CACHE STRING "libpng name for 
targets" FORCE)
+ELSE(BRLCAD_BUILD_LOCAL_PNG)
+       # The PNG CMake file seems to set PNG_PNG_INCLUDE_DIR rather than 
PNG_INCLUDE_DIR, so
+       # a generic macro won't pick up the setting - handle it here
+       SET(PNG_INCLUDE_DIR ${PNG_PNG_INCLUDE_DIR} CACHE STRING "PNG include 
directory" FORCE)
+       SET(BRLCAD_PNG_INCLUDE_DIR ${PNG_INCLUDE_DIR} CACHE STRING "PNG include 
directory" FORCE)
+ENDIF(BRLCAD_BUILD_LOCAL_PNG)
+
+# libregex Library
+THIRD_PARTY_OPTION(REGEX regex)
+THIRD_PARTY_SUBDIR(REGEX libregex)
+
+# libutahrle Library - The directory to perform ADD_SUBDIRECTORY on and the
+# include directory for utahrle are different, so override the macro's setting
+# of UTAHRLE_INCLUDE_DIR here.
+THIRD_PARTY_OPTION(UTAHRLE utahrle)
+THIRD_PARTY_SUBDIR(UTAHRLE libutahrle)
+IF(BRLCAD_BUILD_LOCAL_UTAHRLE)
+       SET(UTAHRLE_INCLUDE_DIR 
"${BRLCAD_SOURCE_DIR}/src/other/libutahrle/include" CACHE STRING "directory 
with rle.h header" FORCE)
+       SET(BRLCAD_UTAHRLE_INCLUDE_DIR "${UTAHRLE_INCLUDE_DIR}" CACHE STRING 
"directory with rle.h header" FORCE)
+ENDIF(BRLCAD_BUILD_LOCAL_UTAHRLE)
+
+# URTToolkit
+# Programs, not a library - needs libutahrle, but the "check for system 
install" logic
+# will be different here.  Ignore for now, revisit later.
+ADD_SUBDIRECTORY(URToolkit)
+
+
+# Tcl/Tk presents a number of complexities for BRL-CAD and CMake - BRL-CAD 
requires
+# far more knowledge of the details of a Tcl/Tk installation than most 
programs,
+# which unfortunately means the standard FindTCL.cmake is not sufficient.  
Rather than
+# use THIRD_PARTY_OPTION here, we will instead provide the option manually and 
ensure
+# that BRL-CAD's own FindTCL.cmake file is loaded.  
+
+# Set Tcl/Tk requirements for BRL-CAD so FindTCL.cmake knows what to reject
+SET(TCL_PATH_NOMATCH_PATTERNS 
"/usr/brlcad;brlcad-install;${CMAKE_INSTALL_PREFIX}" CACHE STRING "Paths to 
avoid when looking for tcl/tk" FORCE)
+SET(TCL_MIN_VERSION "8.5" CACHE STRING "Minimum acceptable Tcl/Tk version" 
FORCE)
+
+THIRD_PARTY_OPTION(TCL tcl)
+IF(BRLCAD_BUILD_LOCAL_TCL AND TCL_REQUIRE_TK)
+       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)
+ELSE(BRLCAD_BUILD_LOCAL_TCL AND TCL_REQUIRE_TK)
+       OPTION(BRLCAD_BUILD_LOCAL_TK "Build the local versions of Tcl/Tk" OFF)
+       SET(BRLCAD_BUILD_LOCAL_TK OFF CACHE STRING "local tk build" FORCE)
+ENDIF(BRLCAD_BUILD_LOCAL_TCL AND TCL_REQUIRE_TK)
+IF(BRLCAD_BUILD_LOCAL_LIBS)
+       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_BUILD_LOCAL_LIBS)
+THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT(TCL tcl src/other/tcl unix "")
+IF(BRLCAD_BUILD_LOCAL_TCL OR BRLCAD_BUILD_LOCAL_LIBS)
+       SET(TCL_LIBRARY 
"${BRLCAD_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}tcl8.5${CMAKE_SHARED_LIBRARY_SUFFIX}"
 CACHE STRING "TCL_LIBRARY" FORCE)
+       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)
+ENDIF(BRLCAD_BUILD_LOCAL_TCL OR BRLCAD_BUILD_LOCAL_LIBS)
+THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT(TK tk src/other/tk unix 
"--with-tcl=${TCL_CONF_PREFIX}")
+IF(BRLCAD_BUILD_LOCAL_TK OR BRLCAD_BUILD_LOCAL_LIBS)
+       SET(TK_LIBRARY 
"${BRLCAD_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}tk8.5${CMAKE_SHARED_LIBRARY_SUFFIX}"
 CACHE STRING "TK_LIBRARY" FORCE)
+       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_DEPENDENCIES(tk tcl)
+ENDIF(BRLCAD_BUILD_LOCAL_TK OR BRLCAD_BUILD_LOCAL_LIBS)
+
+# Now that Tcl/Tk is settled, define the HAVE_TK flag for the config.h file
+IF(TK_LIBRARY)
+       SET(HAVE_TK 1)
+       FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine HAVE_TK 1\n")
+ENDIF(TK_LIBRARY)
+
+# Depending on the Tcl/Tk results, look for packages required by BRL-CAD.  If
+# building local Tcl/Tk, go ahead and enable all the packages as well - 
otherwise,
+# check the found Tcl/Tk and enable what it doesn't supply.  If doing a 
non-graphical
+# build, only compile extensions that don't use Tk.
+INCLUDE(${BRLCAD_CMAKE_DIR}/FindTclPackage.cmake)
+IF(NOT BRLCAD_BUILD_LOCAL_TCL)
+       IF(TCL_TCLSH)
+               FIND_TCL_PACKAGE(${TCL_TCLSH} Itcl)
+       ENDIF(TCL_TCLSH)
+       IF(NOT BRLCAD_BUILD_LOCAL_TK)
+               IF(TK_WISH)
+                       FIND_TCL_PACKAGE(${TK_WISH} Itk)
+                       FIND_TCL_PACKAGE(${TK_WISH} Iwidgets)
+                       FIND_TCL_PACKAGE(${TK_WISH} Tkhtml)
+                       FIND_TCL_PACKAGE(${TK_WISH} tkpng)
+                       FIND_TCL_PACKAGE(${TK_WISH} Tktable)
+               ENDIF(TK_WISH)
+       ENDIF(NOT BRLCAD_BUILD_LOCAL_TK)
+ELSE(NOT BRLCAD_BUILD_LOCAL_TCL)
+       OPTION(BRLCAD_BUILD_LOCAL_ITCL "Build the local ITCL package" ON)
+       SET(BRLCAD_BUILD_LOCAL_ITCL ON CACHE BOOL "Build the local ITCL 
package" FORCE)
+       IF(BRLCAD_BUILD_LOCAL_TK)
+               OPTION(BRLCAD_BUILD_LOCAL_ITK "Build the local ITK package" ON)
+               SET(BRLCAD_BUILD_LOCAL_ITK ON CACHE BOOL "Build the local ITK 
package" FORCE)
+               OPTION(BRLCAD_BUILD_LOCAL_IWIDGETS "Build the local IWIDGETS 
package" ON)
+               SET(BRLCAD_BUILD_LOCAL_IWIDGETS ON CACHE BOOL "Build the local 
IWIDGETS package" FORCE)
+               OPTION(BRLCAD_BUILD_LOCAL_TKHTML "Build the local TKHTML 
package" ON)
+               SET(BRLCAD_BUILD_LOCAL_TKHTML ON CACHE BOOL "Build the local 
TKHTML package" FORCE)
+               OPTION(BRLCAD_BUILD_LOCAL_TKPNG "Build the local TKPNG package" 
ON)
+               SET(BRLCAD_BUILD_LOCAL_TKPNG ON CACHE BOOL "Build the local 
TKPNG package" FORCE)
+               OPTION(BRLCAD_BUILD_LOCAL_TKTABLE "Build the local TKTABLE 
package" ON)
+               SET(BRLCAD_BUILD_LOCAL_TKTABLE ON CACHE BOOL "Build the local 
TKTABLE package" FORCE)
+       ENDIF(BRLCAD_BUILD_LOCAL_TK)
+ENDIF(NOT BRLCAD_BUILD_LOCAL_TCL)
+
+# Handle Tcl/Tk packages
+THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT(ITCL itcl src/other/incrTcl/itcl "" 
"--with-tcl=${TCL_CONF_PREFIX}")
+IF(BRLCAD_BUILD_LOCAL_TCL)
+       ADD_DEPENDENCIES(itcl tcl)
+ENDIF(BRLCAD_BUILD_LOCAL_TCL)
+IF(BRLCAD_BUILD_LOCAL_ITCL)
+       SET(ITCL_VERSION "3.4")
+ENDIF(BRLCAD_BUILD_LOCAL_ITCL)
+FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine ITCL_VERSION        
\"${ITCL_VERSION}\"\n")
+
+THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT(ITK itk src/other/incrTcl/itk "" 
"--with-tcl=${TCL_CONF_PREFIX};--with-tk=${TK_CONF_PREFIX}")
+IF(BRLCAD_BUILD_LOCAL_TK)
+       ADD_DEPENDENCIES(itk itcl tcl tk)
+ENDIF(BRLCAD_BUILD_LOCAL_TK)
+IF(BRLCAD_BUILD_LOCAL_ITK)
+       SET(ITK_VERSION "3.3")
+ENDIF(BRLCAD_BUILD_LOCAL_ITK)
+FILE(APPEND ${CONFIG_H_FILE} "#cmakedefine ITK_VERSION \"${ITK_VERSION}\"\n")
+
+IF(BRLCAD_BUILD_LOCAL_ITCL OR BRLCAD_BUILD_LOCAL_ITK)
+       SET(BRLCAD_BUILD_LOCAL_INCRTCL ON CACHE STRING "incrtcl build status" 
FORCE)
+ELSE(BRLCAD_BUILD_LOCAL_ITCL OR BRLCAD_BUILD_LOCAL_ITK)
+       SET(BRLCAD_BUILD_LOCAL_INCRTCL OFF CACHE STRING "incrtcl build status" 
FORCE)
+ENDIF(BRLCAD_BUILD_LOCAL_ITCL OR BRLCAD_BUILD_LOCAL_ITK)
+
+THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT(IWIDGETS iwidgets 
src/other/incrTcl/iwidgets "" 
"--with-tcl=${TCL_CONF_PREFIX};--with-tk=${TK_CONF_PREFIX};--with-itcl=${BRLCAD_SOURCE_DIR}/src/other/incrTcl")
+IF(BRLCAD_BUILD_LOCAL_ITK)
+       ADD_DEPENDENCIES(iwidgets tcl tk itcl itk)
+       SET(IWIDGETS_VERSION "4.0.1")
+ENDIF(BRLCAD_BUILD_LOCAL_ITK)
+FILE(APPEND ${CONFIG_H_FILE} "#define IWIDGETS_VERSION 
\"${IWIDGETS_VERSION}\"\n")
+
+THIRD_PARTY_AUTORECONF_EXTERNAL_PROJECT(TKHTML tkhtml src/other/tkhtml "" 
"--with-tcl=${TCL_CONF_PREFIX};--with-tk=${TK_CONF_PREFIX}")
+IF(BRLCAD_BUILD_LOCAL_TK)
+       ADD_DEPENDENCIES(tkhtml tk tcl)
+ENDIF(BRLCAD_BUILD_LOCAL_TK)
+
+THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT(TKPNG tkpng src/other/tkpng "" 
"--with-tcl=${TCL_CONF_PREFIX};--with-tk=${TK_CONF_PREFIX}")
+IF(BRLCAD_BUILD_LOCAL_TK)
+       ADD_DEPENDENCIES(tkpng tk tcl)
+ENDIF(BRLCAD_BUILD_LOCAL_TK)
+
+THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT(TKTABLE tktable src/other/tktable "" 
"--with-tcl=${TCL_CONF_PREFIX};--with-tk=${TK_CONF_PREFIX}")
+IF(BRLCAD_BUILD_LOCAL_TK)
+       ADD_DEPENDENCIES(tktable tk tcl)
+ENDIF(BRLCAD_BUILD_LOCAL_TK)
+
+
+# OpenNURBS Library
+THIRD_PARTY_OPTION(OPENNURBS openNURBS)
+THIRD_PARTY_SUBDIR(OPENNURBS openNURBS)
+
+# STEP Class Libraries
+THIRD_PARTY_OPTION(SCL scl)
+THIRD_PARTY_SUBDIR(SCL step)
+IF(BRLCAD_BUILD_LOCAL_SCL)
+       SET(BRLCAD_SCL_INCLUDE_DIR 
"${BRLCAD_SOURCE_DIR}/src/other/step/include" CACHE STRING "Directory 
containing SCL headers" FORCE)
+       SET(BRLCAD_SCL_EXPRESS_EXECUTABLE "express" CACHE STRING "SCL express 
binary" FORCE)
+       SET(BRLCAD_SCL_SYMLINK_EXECUTABLE "symlink" CACHE STRING "SCL symlink 
binary" FORCE)
+       SET(BRLCAD_SCL_EXPPP_EXECUTABLE "exppp" CACHE STRING "SCL exppp binary" 
FORCE)
+       SET(BRLCAD_SCL_FEDEX_OS_EXECUTABLE "fedex_os" CACHE STRING "SCL 
fedex_os binary" FORCE)
+       SET(BRLCAD_SCL_FEDEX_IDL_EXECUTABLE "fedex_idl" CACHE STRING "SCL 
fedex_idl binary" FORCE)
+       SET(BRLCAD_SCL_FEDEX_PLUS_EXECUTABLE "fedex_plus" CACHE STRING "SCL 
fedex_plus binary" FORCE)
+       SET(BRLCAD_SCL_EXPPP_LIB "libexppp" CACHE STRING "SCL exppp library" 
FORCE)
+       SET(BRLCAD_SCL_CORE_LIB "stepcore" CACHE STRING "SCL core library" 
FORCE)
+       SET(BRLCAD_SCL_UTILS_LIB "steputils" CACHE STRING "SCL utilities 
library" FORCE)
+       SET(BRLCAD_SCL_DAI_LIB "stepdai" CACHE STRING "SCL DAI library" FORCE)
+       SET(BRLCAD_SCL_EDITOR_LIB "stepeditor" CACHE STRING "SCL editor 
library" FORCE)
+ELSE(BRLCAD_BUILD_LOCAL_SCL)
+       SET(BRLCAD_SCL_INCLUDE_DIR "${SCL_INCLUDE_DIR}" CACHE STRING "Directory 
containing SCL headers" FORCE)
+       SET(BRLCAD_SCL_EXPRESS_EXECUTABLE "${SCL_EXPRESS_EXECUTABLE}" CACHE 
STRING "SCL express binary" FORCE)
+       SET(BRLCAD_SCL_SYMLINK_EXECUTABLE "${SCL_SYMLINK_EXECUTABLE}" CACHE 
STRING "SCL symlink binary" FORCE)
+       SET(BRLCAD_SCL_EXPPP_EXECUTABLE "${SCL_EXPPP_EXECUTABLE}" CACHE STRING 
"SCL exppp binary" FORCE)
+       SET(BRLCAD_SCL_FEDEX_OS_EXECUTABLE "${SCL_FEDEX_OS_EXECUTABLE}" CACHE 
STRING "SCL fedex_os binary" FORCE)
+       SET(BRLCAD_SCL_FEDEX_IDL_EXECUTABLE "${SCL_FEDEX_IDL_EXECUTABLE}" CACHE 
STRING "SCL fedex_idl binary" FORCE)
+       SET(BRLCAD_SCL_FEDEX_PLUS_EXECUTABLE "${SCL_FEDEX_PLUS_EXECUTABLE}" 
CACHE STRING "SCL fedex_plus binary" FORCE)
+       SET(BRLCAD_SCL_EXPPP_LIB "${SCL_EXPPP_LIB}" CACHE STRING "SCL exppp 
library" FORCE)
+       SET(BRLCAD_SCL_CORE_LIB "${SCL_CORE_LIB}" CACHE STRING "SCL core 
library" FORCE)
+       SET(BRLCAD_SCL_UTILS_LIB "${SCL_UTILS_LIB}" CACHE STRING "SCL utilities 
library" FORCE)
+       SET(BRLCAD_SCL_DAI_LIB "${SCL_DAI_LIB}" CACHE STRING "SCL DAI library" 
FORCE)
+       SET(BRLCAD_SCL_EDITOR_LIB "${SCL_EDITOR_LIB}" CACHE STRING "SCL editor 
library" FORCE)
+ENDIF(BRLCAD_BUILD_LOCAL_SCL)
+
+# The jama/tnt headers are installed by default - BRL-CAD requires the altered 
headers
+# to build (I think?)
+ADD_SUBDIRECTORY(tnt)


Property changes on: brlcad/branches/cmake/src/other/CMakeLists.txt
___________________________________________________________________
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native


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

------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to