Revision: 40550
http://brlcad.svn.sourceforge.net/brlcad/?rev=40550&view=rev
Author: starseeker
Date: 2010-09-13 19:06:40 +0000 (Mon, 13 Sep 2010)
Log Message:
-----------
Wrap the external project logic in a couple macros to avoid verbose duplicate
logic. Also have FindTclPackage set options to avoid the necessity of doing it
for each package in CMakeLists.txt
Modified Paths:
--------------
brlcad/branches/cmake/CMakeLists.txt
brlcad/branches/cmake/misc/CMake/FindTclPackage.cmake
brlcad/branches/cmake/misc/CMake/ThirdParty.cmake
Modified: brlcad/branches/cmake/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/CMakeLists.txt 2010-09-13 17:25:42 UTC (rev
40549)
+++ brlcad/branches/cmake/CMakeLists.txt 2010-09-13 19:06:40 UTC (rev
40550)
@@ -732,86 +732,34 @@
# use THIRD_PARTY_OPTION here, we will instead provide the option manually and
ensure
# that BRL-CAD's own FindTCL.cmake file is loaded.
-include(ExternalProject)
-
# 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)
ELSE(BRLCAD_BUILD_LOCAL_TCL AND TCL_REQUIRE_TK)
OPTION(BRLCAD_BUILD_LOCAL_TK "Build the local versions of Tcl/Tk" OFF)
ENDIF(BRLCAD_BUILD_LOCAL_TCL AND TCL_REQUIRE_TK)
-IF(NOT BRLCAD_BUILD_LOCAL_TCL OR BRLCAD_SYSTEM_LIBS_ONLY)
- SET(TCL_DEP "")
- SET(TK_DEP "")
- ExternalProject_Add(
- tcl
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/tcl/unix
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- )
- ExternalProject_Add(
- tk
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/tk/unix
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- )
-ENDIF(NOT BRLCAD_BUILD_LOCAL_TCL OR BRLCAD_SYSTEM_LIBS_ONLY)
-IF(BRLCAD_BUILD_LOCAL_TCL OR BRLCAD_BUILD_LOCAL_LIBS)
+IF(BRLCAD_BUILD_LOCAL_LIBS)
SET(BRLCAD_BUILD_LOCAL_TK ON)
-
- ExternalProject_Add(
- tcl
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/tcl/unix
- CONFIGURE_COMMAND autoconf -I
${BRLCAD_SOURCE_DIR}/src/other/tcl/unix -o
- ${BRLCAD_SOURCE_DIR}/src/other/tcl/unix/configure
- ${BRLCAD_SOURCE_DIR}/src/other/tcl/unix/configure.in && mkdir -p
- ${BRLCAD_BINARY_DIR}/src/other/tcl/ && cd
- ${BRLCAD_BINARY_DIR}/src/other/tcl/ &&
- <SOURCE_DIR>/configure --prefix=${BRLCAD_PREFIX}
--mandir=${BRLCAD_INSTALL_MAN_DIR}
- BUILD_COMMAND cd ${BRLCAD_BINARY_DIR}/src/other/tcl/ && $(MAKE)
- INSTALL_COMMAND cd ${BRLCAD_BINARY_DIR}/src/other/tcl/ &&
$(MAKE) install
- )
+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}")
SET(TCL_INCLUDE_PATH "${BRLCAD_PREFIX}/include")
- SET(TCL_PRIVATE_HDRS
"${BRLCAD_SOURCE_DIR}/src/other/tcl/generic;${BRLCAD_SOURCE_DIR}/src/other/tcl/unix")
SET(TCL_CONF_PREFIX "${BRLCAD_PREFIX}/lib")
- MESSAGE("TCL_LIBRARY: ${TCL_LIBRARY}")
- SET(CMAKE_EXTERNAL_TARGET_LIST "${CMAKE_EXTERNAL_TARGET_LIST};tcl")
-
- ExternalProject_Add(
- tk
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/tk/unix
- CONFIGURE_COMMAND autoconf -I
${BRLCAD_SOURCE_DIR}/src/other/tk/unix -o
- ${BRLCAD_SOURCE_DIR}/src/other/tk/unix/configure
- ${BRLCAD_SOURCE_DIR}/src/other/tk/unix/configure.in && mkdir -p
- ${BRLCAD_BINARY_DIR}/src/other/tk/ && cd
- ${BRLCAD_BINARY_DIR}/src/other/tk/ &&
- <SOURCE_DIR>/configure --prefix=${BRLCAD_PREFIX}
--with-tcl=${BRLCAD_PREFIX}/lib --mandir=${BRLCAD_INSTALL_MAN_DIR}
- BUILD_COMMAND cd ${BRLCAD_BINARY_DIR}/src/other/tk/ && $(MAKE)
- INSTALL_COMMAND cd ${BRLCAD_BINARY_DIR}/src/other/tk/ &&
$(MAKE) install
- )
+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}")
SET(TK_INCLUDE_PATH "${BRLCAD_PREFIX}/include")
- SET(TK_PRIVATE_HDRS
"${BRLCAD_SOURCE_DIR}/src/other/tk/generic;${BRLCAD_SOURCE_DIR}/src/other/tk/unix")
SET(TK_CONF_PREFIX "${BRLCAD_PREFIX}/lib")
- MESSAGE("TK_LIBRARY: ${TK_LIBRARY}")
- SET(CMAKE_EXTERNAL_TARGET_LIST "${CMAKE_EXTERNAL_TARGET_LIST};tk")
- SET(TCL_DEP "tcl")
- SET(TK_DEP "tk")
-ENDIF(BRLCAD_BUILD_LOCAL_TCL OR BRLCAD_BUILD_LOCAL_LIBS)
+ 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")
@@ -835,218 +783,61 @@
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)
+ IF(BRLCAD_BUILD_LOCAL_TK)
+ OPTION(BRLCAD_BUILD_LOCAL_ITK "Build the local ITK package" ON)
+ OPTION(BRLCAD_BUILD_LOCAL_IWIDGETS "Build the local IWIDGETS
package" ON)
+ OPTION(BRLCAD_BUILD_LOCAL_TKHTML "Build the local TKHTML
package" ON)
+ OPTION(BRLCAD_BUILD_LOCAL_TKPNG "Build the local TKPNG package"
ON)
+ OPTION(BRLCAD_BUILD_LOCAL_TKTABLE "Build the local TKTABLE
package" ON)
+ ENDIF(BRLCAD_BUILD_LOCAL_TK)
ENDIF(NOT BRLCAD_BUILD_LOCAL_TCL)
# Handle Tcl/Tk packages
-IF(NOT ITCL_FOUND OR NOT ITK_FOUND OR BRLCAD_BUILD_LOCAL_ITCL)
- IF(NOT BRLCAD_SYSTEM_LIBS_ONLY)
- ExternalProject_Add(
- itcl
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/incrTcl/itcl
- CONFIGURE_COMMAND autoconf -I
${BRLCAD_SOURCE_DIR}/src/other/incrTcl/itcl -o
- ${BRLCAD_SOURCE_DIR}/src/other/incrTcl/itcl/configure
-
${BRLCAD_SOURCE_DIR}/src/other/incrTcl/itcl/configure.in && mkdir -p
- ${BRLCAD_BINARY_DIR}/src/other/incrTcl/itcl/ && cd
- ${BRLCAD_BINARY_DIR}/src/other/incrTcl/itcl/ &&
- <SOURCE_DIR>/configure --prefix=${BRLCAD_PREFIX}
--exec-prefix=${BRLCAD_PREFIX}
- --with-tcl=${TCL_CONF_PREFIX}
--with-tk=${TK_CONF_PREFIX} --mandir=${BRLCAD_INSTALL_MAN_DIR}
- BUILD_COMMAND cd
${BRLCAD_BINARY_DIR}/src/other/incrTcl/itcl && $(MAKE)
- INSTALL_COMMAND cd
${BRLCAD_BINARY_DIR}/src/other/incrTcl/itcl && $(MAKE) install
- )
-
- SET(CMAKE_EXTERNAL_TARGET_LIST
"${CMAKE_EXTERNAL_TARGET_LIST};itcl")
- ExternalProject_Add(
- itk
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/incrTcl/itk
- CONFIGURE_COMMAND autoconf -I
${BRLCAD_SOURCE_DIR}/src/other/incrTcl/itk -o
- ${BRLCAD_SOURCE_DIR}/src/other/incrTcl/itk/configure
- ${BRLCAD_SOURCE_DIR}/src/other/incrTcl/itk/configure.in
&& mkdir -p
- ${BRLCAD_BINARY_DIR}/src/other/incrTcl/itk/ && cd
- ${BRLCAD_BINARY_DIR}/src/other/incrTcl/itk/ &&
- <SOURCE_DIR>/configure --prefix=${BRLCAD_PREFIX}
--exec-prefix=${BRLCAD_PREFIX}
- --with-tcl=${TCL_CONF_PREFIX}
--with-tk=${TK_CONF_PREFIX} --mandir=${BRLCAD_INSTALL_MAN_DIR}
- BUILD_COMMAND cd
${BRLCAD_BINARY_DIR}/src/other/incrTcl/itk && $(MAKE)
- INSTALL_COMMAND cd
${BRLCAD_BINARY_DIR}/src/other/incrTcl/itk && $(MAKE) install
- )
- SET(CMAKE_EXTERNAL_TARGET_LIST
"${CMAKE_EXTERNAL_TARGET_LIST};itk")
-
- IF(TCL_DEP OR TK_DEP)
- ADD_DEPENDENCIES(itcl ${TCL_DEP} ${TK_DEP})
- ENDIF(TCL_DEP OR TK_DEP)
- ADD_DEPENDENCIES(itk itcl ${TCL_DEP} ${TK_DEP})
- SET(BRLCAD_BUILD_LOCAL_INCRTCL ON)
- SET(ITCL_DEP "itcl")
- SET(ITK_DEP "itk")
- SET(ITCL_VERSION "3.4")
- SET(ITK_VERSION "3.3")
- ELSE(NOT BRLCAD_SYSTEM_LIBS_ONLY)
- SET(BRLCAD_BUILD_LOCAL_INCRTCL OFF)
- ENDIF(NOT BRLCAD_SYSTEM_LIBS_ONLY)
-ELSE(NOT ITCL_FOUND OR NOT ITK_FOUND OR BRLCAD_BUILD_LOCAL_ITCL)
- SET(BRLCAD_BUILD_LOCAL_INCRTCL OFF)
- SET(ITCL_VERSION ${ITCL_PACKAGE_VERSION})
- SET(ITK_VERSION ${ITK_PACKAGE_VERSION})
-ENDIF(NOT ITCL_FOUND OR NOT ITK_FOUND OR BRLCAD_BUILD_LOCAL_ITCL)
+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(NOT IWIDGETS_FOUND OR BRLCAD_BUILD_LOCAL_IWIDGETS)
- IF(NOT BRLCAD_SYSTEM_LIBS_ONLY)
- ExternalProject_Add(
- iwidgets
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR
${BRLCAD_SOURCE_DIR}/src/other/incrTcl/iwidgets
- CONFIGURE_COMMAND autoconf -I
${BRLCAD_SOURCE_DIR}/src/other/incrTcl/iwidgets -o
-
${BRLCAD_SOURCE_DIR}/src/other/incrTcl/iwidgets/configure
-
${BRLCAD_SOURCE_DIR}/src/other/incrTcl/iwidgets/configure.in && mkdir -p
- ${BRLCAD_BINARY_DIR}/src/other/incrTcl/iwidgets/ && cd
- ${BRLCAD_BINARY_DIR}/src/other/incrTcl/iwidgets/ &&
- <SOURCE_DIR>/configure --prefix=${BRLCAD_PREFIX}
--exec-prefix=${BRLCAD_PREFIX}
- --with-tcl=${TCL_CONF_PREFIX}
- --with-tk=${TK_CONF_PREFIX}
--mandir=${BRLCAD_INSTALL_MAN_DIR}
- --with-itcl=${BRLCAD_SOURCE_DIR}/src/other/incrTcl
- BUILD_COMMAND ""
- INSTALL_COMMAND cd
${BRLCAD_BINARY_DIR}/src/other/incrTcl/iwidgets && $(MAKE) install
- )
- SET(CMAKE_EXTERNAL_TARGET_LIST
"${CMAKE_EXTERNAL_TARGET_LIST};iwidgets")
- IF(TCL_DEP OR TK_DEP OR ITCL_DEP OR ITK_DEP)
- ADD_DEPENDENCIES(iwidgets ${TCL_DEP} ${TK_DEP}
${ITCL_DEP} ${ITK_DEP})
- ENDIF(TCL_DEP OR TK_DEP OR ITCL_DEP OR ITK_DEP)
- SET(BRLCAD_BUILD_LOCAL_IWIDGETS ON)
- ELSE(NOT BRLCAD_SYSTEM_LIBS_ONLY)
- SET(BRLCAD_BUILD_LOCAL_IWIDGETS OFF)
- ENDIF(NOT BRLCAD_SYSTEM_LIBS_ONLY)
-ELSE(NOT IWIDGETS_FOUND OR BRLCAD_BUILD_LOCAL_IWIDGETS)
- ExternalProject_Add(
- iwidgets
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/incrTcl/iwidgets
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- )
- SET(BRLCAD_BUILD_LOCAL_IWIDGETS OFF)
-ENDIF(NOT IWIDGETS_FOUND OR BRLCAD_BUILD_LOCAL_IWIDGETS)
-FILE(APPEND ${CONFIG_H_FILE} "#define IWIDGETS_VERSION \"4.0.1\"\n")
+IF(BRLCAD_BUILD_LOCAL_ITCL OR BRLCAD_BUILD_LOCAL_ITK)
+ SET(BRLCAD_BUILD_LOCAL_INCRTCL ON)
+ENDIF(BRLCAD_BUILD_LOCAL_ITCL OR BRLCAD_BUILD_LOCAL_ITK)
-IF(NOT TKHTML_FOUND OR BRLCAD_BUILD_LOCAL_TKHTML)
- IF(NOT BRLCAD_SYSTEM_LIBS_ONLY)
- ExternalProject_Add(
- tkhtml
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/tkhtml
- CONFIGURE_COMMAND cd
${BRLCAD_SOURCE_DIR}/src/other/tkhtml && autoreconf -i -f && mkdir -p
- ${BRLCAD_BINARY_DIR}/src/other/tkhtml/ && cd
- ${BRLCAD_BINARY_DIR}/src/other/tkhtml/ &&
- <SOURCE_DIR>/configure --prefix=${BRLCAD_PREFIX}
--exec-prefix=${BRLCAD_PREFIX}
- --with-tcl=${TCL_CONF_PREFIX}
--with-tk=${TK_CONF_PREFIX}
- BUILD_COMMAND cd ${BRLCAD_BINARY_DIR}/src/other/tkhtml
&& $(MAKE)
- INSTALL_COMMAND cd
${BRLCAD_BINARY_DIR}/src/other/tkhtml && $(MAKE) install
- )
- SET(CMAKE_EXTERNAL_TARGET_LIST
"${CMAKE_EXTERNAL_TARGET_LIST};tkhtml")
- IF(TCL_DEP OR TK_DEP)
- ADD_DEPENDENCIES(tkhtml ${TCL_DEP} ${TK_DEP})
- ENDIF(TCL_DEP OR TK_DEP)
- SET(BRLCAD_BUILD_LOCAL_TKHTML ON)
- ELSE(NOT BRLCAD_SYSTEM_LIBS_ONLY)
- SET(BRLCAD_BUILD_LOCAL_TKHTML OFF)
- ENDIF(NOT BRLCAD_SYSTEM_LIBS_ONLY)
-ELSE(NOT TKHTML_FOUND OR BRLCAD_BUILD_LOCAL_TKHTML)
- ExternalProject_Add(
- tkhtml
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/tkhtml
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- )
- SET(BRLCAD_BUILD_LOCAL_TKHTML OFF)
-ENDIF(NOT TKHTML_FOUND OR BRLCAD_BUILD_LOCAL_TKHTML)
+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")
-IF(NOT TKPNG_FOUND OR BRLCAD_BUILD_LOCAL_TKPNG)
- IF(NOT BRLCAD_SYSTEM_LIBS_ONLY)
- ExternalProject_Add(
- tkpng
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/tkpng
- CONFIGURE_COMMAND autoconf -I
${BRLCAD_SOURCE_DIR}/src/other/tkpng -o
- ${BRLCAD_SOURCE_DIR}/src/other/tkpng/configure
- ${BRLCAD_SOURCE_DIR}/src/other/tkpng/configure.in &&
mkdir -p
- ${BRLCAD_BINARY_DIR}/src/other/tkpng/ && cd
- ${BRLCAD_BINARY_DIR}/src/other/tkpng/ &&
- <SOURCE_DIR>/configure --prefix=${BRLCAD_PREFIX}
--exec-prefix=${BRLCAD_PREFIX}
- --with-tcl=${TCL_CONF_PREFIX}
--with-tk=${TK_CONF_PREFIX}
- BUILD_COMMAND cd ${BRLCAD_BINARY_DIR}/src/other/tkpng
&& $(MAKE)
- INSTALL_COMMAND cd
${BRLCAD_BINARY_DIR}/src/other/tkpng && $(MAKE) install
- )
- SET(CMAKE_EXTERNAL_TARGET_LIST
"${CMAKE_EXTERNAL_TARGET_LIST};tkpng")
- IF(TCL_DEP OR TK_DEP)
- ADD_DEPENDENCIES(tkpng ${TCL_DEP} ${TK_DEP})
- ENDIF(TCL_DEP OR TK_DEP)
- SET(BRLCAD_BUILD_LOCAL_TKPNG ON)
- ELSE(NOT BRLCAD_SYSTEM_LIBS_ONLY)
- SET(BRLCAD_BUILD_LOCAL_TKPNG OFF)
- ENDIF(NOT BRLCAD_SYSTEM_LIBS_ONLY)
-ELSE(NOT TKPNG_FOUND OR BRLCAD_BUILD_LOCAL_TKPNG)
- ExternalProject_Add(
- tkpng
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/tkpng
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- )
- SET(BRLCAD_BUILD_LOCAL_TKPNG OFF)
-ENDIF(NOT TKPNG_FOUND OR BRLCAD_BUILD_LOCAL_TKPNG)
+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)
-IF(NOT TKTABLE_FOUND OR BRLCAD_BUILD_LOCAL_TKTABLE)
- IF(NOT BRLCAD_SYSTEM_LIBS_ONLY)
- ExternalProject_Add(
- tktable
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/tktable
- CONFIGURE_COMMAND autoconf -I
${BRLCAD_SOURCE_DIR}/src/other/tktable -o
- ${BRLCAD_SOURCE_DIR}/src/other/tktable/configure
- ${BRLCAD_SOURCE_DIR}/src/other/tktable/configure.in &&
mkdir -p
- ${BRLCAD_BINARY_DIR}/src/other/tktable/ && cd
- ${BRLCAD_BINARY_DIR}/src/other/tktable/ &&
- <SOURCE_DIR>/configure --prefix=${BRLCAD_PREFIX}
--exec-prefix=${BRLCAD_PREFIX}
- --with-tcl=${TCL_CONF_PREFIX}
--with-tk=${TK_CONF_PREFIX}
- BUILD_COMMAND cd ${BRLCAD_BINARY_DIR}/src/other/tktable
&& $(MAKE)
- INSTALL_COMMAND cd
${BRLCAD_BINARY_DIR}/src/other/tktable && $(MAKE) install
- )
- SET(CMAKE_EXTERNAL_TARGET_LIST
"${CMAKE_EXTERNAL_TARGET_LIST};tktable")
- IF(TCL_DEP OR TK_DEP)
- ADD_DEPENDENCIES(tktable ${TCL_DEP} ${TK_DEP})
- ENDIF(TCL_DEP OR TK_DEP)
- SET(BRLCAD_BUILD_LOCAL_TKTABLE ON)
- ELSE(NOT BRLCAD_SYSTEM_LIBS_ONLY)
- SET(BRLCAD_BUILD_LOCAL_TKTABLE OFF)
- ENDIF(NOT BRLCAD_SYSTEM_LIBS_ONLY)
-ELSE(NOT TKTABLE_FOUND OR BRLCAD_BUILD_LOCAL_TKTABLE)
- ExternalProject_Add(
- tktable
- DOWNLOAD_COMMAND ""
- PREFIX ${BRLCAD_BINARY_DIR}
- SOURCE_DIR ${BRLCAD_SOURCE_DIR}/src/other/tktable
- CONFIGURE_COMMAND ""
- BUILD_COMMAND ""
- INSTALL_COMMAND ""
- )
- SET(BRLCAD_BUILD_LOCAL_TKTABLE OFF)
-ENDIF(NOT TKTABLE_FOUND OR BRLCAD_BUILD_LOCAL_TKTABLE)
+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
@@ -1339,6 +1130,9 @@
# We want the timestamp to come first, so make ALL library,
# exec and external targets depend on timestamp (except for
# the exec target printtimestamp, which is needed by timestamp)
+LIST(REMOVE_DUPLICATES CMAKE_LIBRARY_TARGET_LIST)
+LIST(REMOVE_DUPLICATES CMAKE_EXEC_TARGET_LIST)
+LIST(REMOVE_DUPLICATES CMAKE_EXTERNAL_TARGET_LIST)
FOREACH(libtarget ${CMAKE_LIBRARY_TARGET_LIST})
get_target_property(target_location ${libtarget} LOCATION)
if(target_location)
@@ -1354,23 +1148,26 @@
endif(target_location)
ENDFOREACH(exectarget ${CMAKE_EXEC_TARGET_LIST})
FOREACH(externaltarget ${CMAKE_EXTERNAL_TARGET_LIST})
- get_target_property(target_location ${externaltarget} LOCATION)
- if(target_location)
+ get_target_property(target_confcmd ${externaltarget}
_EP_CONFIGURE_COMMAND)
+ if(target_confcmd)
ADD_DEPENDENCIES(${externaltarget} timestamp)
- endif(target_location)
+ endif(target_confcmd)
ENDFOREACH(externaltarget ${CMAKE_EXTERNAL_TARGET_LIST})
-
+# Some of the BRL-CAD targets need to depend on the local
+# tcl/tk targets if they are present
+SET(TCL_DEPLIBS "bu;sysv;librt")
if(BRLCAD_BUILD_LOCAL_TCL)
- ADD_DEPENDENCIES(tk tcl)
- ADD_DEPENDENCIES(bu ${TCL_DEP} ${TK_DEP})
- ADD_DEPENDENCIES(sysv ${TCL_DEP} ${TK_DEP})
- ADD_DEPENDENCIES(librt ${TCL_DEP} ${TK_DEP})
+ FOREACH(target ${TCL_DEPLIBS})
+ ADD_DEPENDENCIES(${target} tcl)
+ ENDFOREACH(target ${TCL_DEPLIBS})
endif(BRLCAD_BUILD_LOCAL_TCL)
+if(BRLCAD_BUILD_LOCAL_TK)
+ FOREACH(target ${TCL_DEPLIBS})
+ ADD_DEPENDENCIES(${target} tk)
+ ENDFOREACH(target ${TCL_DEPLIBS})
+endif(BRLCAD_BUILD_LOCAL_TK)
-
-
-
# Set up the noprod rule. Currently this is an "all or nothing"
# command that will clear ALL products for lib or exec targets,
# not just those in a particular subdirectory.
Modified: brlcad/branches/cmake/misc/CMake/FindTclPackage.cmake
===================================================================
--- brlcad/branches/cmake/misc/CMake/FindTclPackage.cmake 2010-09-13
17:25:42 UTC (rev 40549)
+++ brlcad/branches/cmake/misc/CMake/FindTclPackage.cmake 2010-09-13
19:06:40 UTC (rev 40550)
@@ -17,6 +17,11 @@
#Need to handle multiple returned versions - this regex is wrong, fix
#STRING(REGEX REPLACE "([0-9]+\.?[0-9]*)" "\\1" ${pkgversion} ${pkgversion})
STRING(REGEX REPLACE "\n" "" ${PKGNAME_UPPER}_PACKAGE_VERSION ${pkgversion})
+ IF(${PKGNAME_UPPER}_PACKAGE_VERSION)
+ OPTION(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${PKGNAME_UPPER}
"Build the local ${packagename} library" ON)
+ ELSE(${PKGNAME_UPPER}_PACKAGE_VERSION)
+ OPTION(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${PKGNAME_UPPER}
"Build the local ${packagename} library" OFF)
+ ENDIF(${PKGNAME_UPPER}_PACKAGE_VERSION)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(${PKGNAME_UPPER} DEFAULT_MSG
${PKGNAME_UPPER}_PACKAGE_VERSION)
MARK_AS_ADVANCED(
${PKGNAME_UPPER}_PACKAGE_VERSION
Modified: brlcad/branches/cmake/misc/CMake/ThirdParty.cmake
===================================================================
--- brlcad/branches/cmake/misc/CMake/ThirdParty.cmake 2010-09-13 17:25:42 UTC
(rev 40549)
+++ brlcad/branches/cmake/misc/CMake/ThirdParty.cmake 2010-09-13 19:06:40 UTC
(rev 40550)
@@ -34,38 +34,78 @@
ENDMACRO(THIRD_PARTY_OPTION)
#-----------------------------------------------------------------------------
-MACRO(THIRD_PARTY_INCLUDE upper lower)
- IF(NOT ${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper})
- IF(${upper}_INCLUDE_DIR)
- SET(${CMAKE_PROJECT_NAME}_INCLUDE_DIRS_SYSTEM
${${CMAKE_PROJECT_NAME}_INCLUDE_DIRS_SYSTEM} ${${upper}_INCLUDE_DIR})
- ENDIF(${upper}_INCLUDE_DIR)
- ELSE(NOT ${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper})
- SET(${CMAKE_PROJECT_NAME}_INCLUDE_DIRS_SOURCE_TREE
${${CMAKE_PROJECT_NAME}_INCLUDE_DIRS_SOURCE_TREE}
- ${${CMAKE_PROJECT_NAME}_BINARY_DIR}/Utilities/${lower}
- ${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/Utilities/${lower}
- )
- ENDIF(NOT ${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper})
-ENDMACRO(THIRD_PARTY_INCLUDE)
-
-MACRO(THIRD_PARTY_INCLUDE2 upper)
- IF(NOT ${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper})
- IF(${upper}_INCLUDE_DIR)
- SET(${CMAKE_PROJECT_NAME}_INCLUDE_DIRS_SYSTEM
${${CMAKE_PROJECT_NAME}_INCLUDE_DIRS_SYSTEM} ${${upper}_INCLUDE_DIR})
- ENDIF(${upper}_INCLUDE_DIR)
- ENDIF(NOT ${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper})
-ENDMACRO(THIRD_PARTY_INCLUDE2)
-
-#-----------------------------------------------------------------------------
MACRO(THIRD_PARTY_SUBDIR upper lower)
- IF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${upper}_SYSTEM_LIBS_ONLY)
+ IF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
ADD_SUBDIRECTORY(${lower})
SET(${upper}_INCLUDE_DIR
${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/${lower} CACHE STRING "set by
THIRD_PARTY_SUBDIR macro" FORCE)
SET(${CMAKE_PROJECT_NAME}_${upper}_INCLUDE_DIR
${${upper}_INCLUDE_DIR} CACHE STRING "set by THIRD_PARTY_SUBDIR macro" FORCE)
- ENDIF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${upper}_SYSTEM_LIBS_ONLY)
- MESSAGE("BRLCAD-THIRD-PARTY_${upper}:
${${CMAKE_PROJECT_NAME}_${upper}_INCLUDE_DIR}
${${CMAKE_PROJECT_NAME}_${upper}_LIBRARY}")
+ ENDIF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
ENDMACRO(THIRD_PARTY_SUBDIR)
#-----------------------------------------------------------------------------
+
+include(ExternalProject)
+
+MACRO(THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT upper projname projpath srcpath
extraopts)
+ IF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
+ ExternalProject_Add(
+ ${projname}
+ DOWNLOAD_COMMAND ""
+ PREFIX ${${CMAKE_PROJECT_NAME}_BINARY_DIR}
+ SOURCE_DIR
${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/${projpath}/${srcpath}
+ CONFIGURE_COMMAND autoconf -I <SOURCE_DIR> -o
+ <SOURCE_DIR>/configure <SOURCE_DIR>/configure.in &&
mkdir -p
+ ${${CMAKE_PROJECT_NAME}_BINARY_DIR}/${projpath}/ && cd
+ ${${CMAKE_PROJECT_NAME}_BINARY_DIR}/${projpath}/ &&
+ <SOURCE_DIR>/configure
--prefix=${${CMAKE_PROJECT_NAME}_PREFIX}
--exec-prefix=${${CMAKE_PROJECT_NAME}_PREFIX}
--mandir=${${CMAKE_PROJECT_NAME}_INSTALL_MAN_DIR} ${extraopts}
+ BUILD_COMMAND cd
${${CMAKE_PROJECT_NAME}_BINARY_DIR}/${projpath}/ && $(MAKE)
+ INSTALL_COMMAND cd
${${CMAKE_PROJECT_NAME}_BINARY_DIR}/${projpath}/ && $(MAKE) install
+ )
+ SET(CMAKE_EXTERNAL_TARGET_LIST
"${CMAKE_EXTERNAL_TARGET_LIST};${projname}" CACHE STRING "external target list"
FORCE)
+ ELSE(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
+ ExternalProject_Add(
+ ${projname}
+ DOWNLOAD_COMMAND ""
+ PREFIX ${${CMAKE_PROJECT_NAME}_BINARY_DIR}
+ SOURCE_DIR
${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/${projpath}/${srcpath}
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ )
+ ENDIF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
+ENDMACRO(THIRD_PARTY_AUTOCONF_EXTERNAL_PROJECT)
+
+
+MACRO(THIRD_PARTY_AUTORECONF_EXTERNAL_PROJECT upper projname projpath srcpath
extraopts)
+ IF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
+ ExternalProject_Add(
+ ${projname}
+ DOWNLOAD_COMMAND ""
+ PREFIX ${${CMAKE_PROJECT_NAME}_BINARY_DIR}
+ SOURCE_DIR
${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/${projpath}/${srcpath}
+ CONFIGURE_COMMAND cd <SOURCE_DIR> && autoreconf -i -f
&& mkdir -p
+ ${${CMAKE_PROJECT_NAME}_BINARY_DIR}/${projpath}/ && cd
+ ${${CMAKE_PROJECT_NAME}_BINARY_DIR}/${projpath}/ &&
+ <SOURCE_DIR>/configure
--prefix=${${CMAKE_PROJECT_NAME}_PREFIX}
--exec-prefix=${${CMAKE_PROJECT_NAME}_PREFIX}
--mandir=${${CMAKE_PROJECT_NAME}_INSTALL_MAN_DIR} ${extraopts}
+ BUILD_COMMAND cd
${${CMAKE_PROJECT_NAME}_BINARY_DIR}/${projpath}/ && $(MAKE)
+ INSTALL_COMMAND cd
${${CMAKE_PROJECT_NAME}_BINARY_DIR}/${projpath}/ && $(MAKE) install
+ )
+ SET(CMAKE_EXTERNAL_TARGET_LIST
"${CMAKE_EXTERNAL_TARGET_LIST};${projname}" CACHE STRING "external target list"
FORCE)
+ ELSE(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
+ ExternalProject_Add(
+ ${projname}
+ DOWNLOAD_COMMAND ""
+ PREFIX ${${CMAKE_PROJECT_NAME}_BINARY_DIR}
+ SOURCE_DIR
${${CMAKE_PROJECT_NAME}_SOURCE_DIR}/${projpath}/${srcpath}
+ CONFIGURE_COMMAND ""
+ BUILD_COMMAND ""
+ INSTALL_COMMAND ""
+ )
+ ENDIF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
+ENDMACRO(THIRD_PARTY_AUTORECONF_EXTERNAL_PROJECT)
+
+
+#-----------------------------------------------------------------------------
MACRO(THIRD_PARTY_WARNING_SUPPRESS upper lang)
IF(NOT ${upper}_WARNINGS_ALLOW)
# MSVC uses /w to suppress warnings. It also complains if another
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