Revision: 40548
http://brlcad.svn.sourceforge.net/brlcad/?rev=40548&view=rev
Author: starseeker
Date: 2010-09-13 15:34:19 +0000 (Mon, 13 Sep 2010)
Log Message:
-----------
Not fully tested to build yet, but start reworking the third party logic to
handle more of the default settings. Also make the global dep on timestamp
robust to disappearing targets via hint from list:
http://www.cmake.org/pipermail/cmake/2007-April/013479.html
Modified Paths:
--------------
brlcad/branches/cmake/CMakeLists.txt
brlcad/branches/cmake/misc/CMake/ThirdParty.cmake
Modified: brlcad/branches/cmake/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/CMakeLists.txt 2010-09-13 14:55:38 UTC (rev
40547)
+++ brlcad/branches/cmake/CMakeLists.txt 2010-09-13 15:34:19 UTC (rev
40548)
@@ -674,38 +674,19 @@
ENDIF(BRLCAD_BUILD_LOCAL_LIBS)
# zlib Library
-THIRD_PARTY_OPTION(ZLIB)
+THIRD_PARTY_OPTION(ZLIB zlib)
THIRD_PARTY_SUBDIR(ZLIB src/other/libz)
-IF(BRLCAD_BUILD_LOCAL_ZLIB)
- SET(BRLCAD_ZLIB_INCLUDE_DIR "${BRLCAD_SOURCE_DIR}/src/other/libz" CACHE
STRING "Directory containing zlib headers" FORCE)
- SET(ZLIB_INCLUDE_DIR "${BRLCAD_ZLIB_INCLUDE_DIR}" CACHE STRING
"Directory containing zlib headers" FORCE)
- SET(BRLCAD_ZLIB_LIBRARY "zlib" CACHE STRING "zlib" FORCE)
-ELSE(BRLCAD_BUILD_LOCAL_ZLIB)
- SET(BRLCAD_ZLIB_INCLUDE_DIR "${ZLIB_INCLUDE_DIR}" CACHE STRING
"Directory containing zlib headers" FORCE)
- SET(BRLCAD_ZLIB_LIBRARY "${ZLIB_LIBRARY}" CACHE STRING "zlib library"
FORCE)
-ENDIF(BRLCAD_BUILD_LOCAL_ZLIB)
+MESSAGE("BRLCAD_BUILD_LOCAL_ZLIB: ${BRLCAD_ZLIB_INCLUDE_DIR}
${BRLCAD_ZLIB_LIBRARY}")
# libtermlib Library
-THIRD_PARTY_OPTION(TERMLIB)
+THIRD_PARTY_OPTION(TERMLIB termlib)
THIRD_PARTY_SUBDIR(TERMLIB src/other/libtermlib)
-IF(BRLCAD_BUILD_LOCAL_TERMLIB)
- SET(BRLCAD_TERMLIB_INCLUDE_DIR
"${BRLCAD_SOURCE_DIR}/src/other/libtermlib" CACHE STRING "Directory containing
termlib headers" FORCE)
- SET(TERMLIB_INCLUDE_DIR "${BRLCAD_TERMLIB_INCLUDE_DIR}" CACHE STRING
"Directory containing termlib headers" FORCE)
- SET(BRLCAD_TERMLIB_LIBRARY "termlib" CACHE STRING "termlib" FORCE)
-ELSE(BRLCAD_BUILD_LOCAL_TERMLIB)
- SET(BRLCAD_TERMLIB_INCLUDE_DIR "${TERMLIB_INCLUDE_DIR}" CACHE STRING
"Directory containing termlib headers" FORCE)
- SET(BRLCAD_TERMLIB_LIBRARY "${TERMLIB_LIBRARY}" CACHE STRING "termlib
library" FORCE)
-ENDIF(BRLCAD_BUILD_LOCAL_TERMLIB)
-
-
# libpng Library - Checks for ZLIB, so need to restore BRLCAD_ZLIB* settings -
a
# successful search by FindZLIB will reset the basic variables. If not using
local
# copy of zlib, FindZLIB results will be identical in both cases so there is no
# danger of harming the libpng setup by changing BRLCAD_ZLIB*.
-THIRD_PARTY_OPTION(PNG)
-SET(ZLIB_INCLUDE_DIR "${BRLCAD_ZLIB_INCLUDE_DIR}" CACHE STRING "Directory
containing zlib headers" FORCE)
-SET(ZLIB_LIBRARY "${BRLCAD_ZLIB_LIBRARY}" CACHE STRING "zlib library" FORCE)
+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)
@@ -713,39 +694,22 @@
MARK_AS_ADVANCED(PNG_NO_STDIO)
THIRD_PARTY_SUBDIR(PNG src/other/libpng)
IF(BRLCAD_BUILD_LOCAL_PNG)
- SET(BRLCAD_PNG_INCLUDE_DIR "${BRLCAD_SOURCE_DIR}/src/other/libpng"
CACHE STRING "Directory containing libpng headers" FORCE)
# 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(BRLCAD_PNG_LIB_NAME DIRECTORY src/other/libpng
DEFINITION PNG_LIB_NAME)
SET(BRLCAD_PNG_LIB_NAME "${BRLCAD_PNG_LIB_NAME}" CACHE STRING "libpng
name for targets" FORCE)
-ELSE(BRLCAD_BUILD_LOCAL_PNG)
- SET(BRLCAD_PNG_INCLUDE_DIR "${PNG_PNG_INCLUDE_DIR}" CACHE STRING
"Directory containing libpng headers" FORCE)
- SET(BRLCAD_PNG_LIB_NAME "${PNG_LIBRARY}" CACHE STRING "libpng name for
targets" FORCE)
ENDIF(BRLCAD_BUILD_LOCAL_PNG)
# libregex Library
-THIRD_PARTY_OPTION(REGEX)
+THIRD_PARTY_OPTION(REGEX regex)
THIRD_PARTY_SUBDIR(REGEX src/other/libregex)
-IF(BRLCAD_BUILD_LOCAL_REGEX)
- SET(BRLCAD_REGEX_INCLUDE_DIR "${BRLCAD_SOURCE_DIR}/src/other/libregex"
CACHE STRING "Directory containing libregex headers" FORCE)
- SET(REGEX_INCLUDE_DIR "${BRLCAD_REGEX_INCLUDE_DIR}" CACHE STRING
"Directory containing libregex headers" FORCE)
- SET(BRLCAD_REGEX_LIBRARY "regex" CACHE STRING "regex" FORCE)
-ELSE(BRLCAD_BUILD_LOCAL_REGEX)
- SET(BRLCAD_REGEX_INCLUDE_DIR "${REGEX_INCLUDE_DIR}" CACHE STRING
"Directory containing libregex headers" FORCE)
- SET(BRLCAD_REGEX_LIBRARY "${REGEX_LIBRARY}" CACHE STRING "libregex
library" FORCE)
-ENDIF(BRLCAD_BUILD_LOCAL_REGEX)
# libutahrle Library
-THIRD_PARTY_OPTION(UTAHRLE)
+THIRD_PARTY_OPTION(UTAHRLE utahrle)
THIRD_PARTY_SUBDIR(UTAHRLE src/other/libutahrle)
IF(BRLCAD_BUILD_LOCAL_UTAHRLE)
- SET(BRLCAD_UTAHRLE_INCLUDE_DIR
"${BRLCAD_SOURCE_DIR}/src/other/libutahrle/include" CACHE STRING "Directory
containing libutahrle headers" FORCE)
- SET(UTAHRLE_INCLUDE_DIR "${BRLCAD_UTAHRLE_INCLUDE_DIR}" CACHE STRING
"Directory containing libutahrle headers" FORCE)
- SET(BRLCAD_UTAHRLE_LIBRARY "utahrle" CACHE STRING "libutahrle" FORCE)
- SET(UTAHRLE_LIBRARY "utahrle" CACHE STRING "libutahrle" FORCE)
-ELSE(BRLCAD_BUILD_LOCAL_UTAHRLE)
- SET(BRLCAD_UTAHRLE_INCLUDE_DIR "${UTAHRLE_INCLUDE_DIR}" CACHE STRING
"Directory containing libutahrle headers" FORCE)
- SET(BRLCAD_UTAHRLE_LIBRARY "${UTAHRLE_LIBRARY}" CACHE STRING
"libutahrle library" FORCE)
+ 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
@@ -754,7 +718,6 @@
ADD_SUBDIRECTORY(src/other/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
@@ -766,7 +729,7 @@
# 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)
+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)
@@ -1079,21 +1042,11 @@
# OpenNURBS Library
-THIRD_PARTY_OPTION(OPENNURBS)
+THIRD_PARTY_OPTION(OPENNURBS openNURBS)
THIRD_PARTY_SUBDIR(OPENNURBS src/other/openNURBS)
-IF(BRLCAD_BUILD_LOCAL_OPENNURBS)
- SET(BRLCAD_OPENNURBS_INCLUDE_DIR
"${BRLCAD_SOURCE_DIR}/src/other/openNURBS" CACHE STRING "Directory containing
openNURBS headers" FORCE)
- SET(OPENNURBS_INCLUDE_DIR "${BRLCAD_OPENNURBS_INCLUDE_DIR}" CACHE
STRING "Directory containing openNURBS headers" FORCE)
- SET(BRLCAD_OPENNURBS_LIBRARY "openNURBS" CACHE STRING "openNURBS" FORCE)
- BRLCAD_INCLUDE_FILE(emmintrin.h HAVE_EMMINTRIN_H)
-ELSE(BRLCAD_BUILD_LOCAL_OPENNURBS)
- SET(BRLCAD_OPENNURBS_INCLUDE_DIR "${OPENNURBS_INCLUDE_DIR}" CACHE
STRING "Directory containing openNURBS headers" FORCE)
- SET(BRLCAD_OPENNURBS_LIBRARY "${OPENNURBS_LIBRARY}" CACHE STRING
"openNURBS library" FORCE)
-ENDIF(BRLCAD_BUILD_LOCAL_OPENNURBS)
-
# STEP Class Libraries
-THIRD_PARTY_OPTION(SCL)
+THIRD_PARTY_OPTION(SCL scl)
THIRD_PARTY_SUBDIR(SCL src/other/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)
@@ -1379,21 +1332,24 @@
# exec and external targets depend on timestamp (except for
# the exec target printtimestamp, which is needed by timestamp)
FOREACH(libtarget ${CMAKE_LIBRARY_TARGET_LIST})
- if(libtarget)
- ADD_DEPENDENCIES(${libtarget} timestamp)
- endif(libtarget)
+ get_target_property(target_location ${libtarget} LOCATION)
+ if(target_location)
+ ADD_DEPENDENCIES(${libtarget} timestamp)
+ endif(target_location)
ENDFOREACH(libtarget ${CMAKE_LIBRARY_TARGET_LIST})
FOREACH(exectarget ${CMAKE_EXEC_TARGET_LIST})
- if(exectarget)
- IF(NOT ${exectarget} MATCHES "printtimestamp")
- ADD_DEPENDENCIES(${exectarget} timestamp)
- ENDIF(NOT ${exectarget} MATCHES "printtimestamp")
- endif(exectarget)
+ get_target_property(target_location ${exectarget} LOCATION)
+ if(target_location)
+ IF(NOT ${exectarget} MATCHES "printtimestamp")
+ ADD_DEPENDENCIES(${exectarget} timestamp)
+ ENDIF(NOT ${exectarget} MATCHES "printtimestamp")
+ endif(target_location)
ENDFOREACH(exectarget ${CMAKE_EXEC_TARGET_LIST})
FOREACH(externaltarget ${CMAKE_EXTERNAL_TARGET_LIST})
- if(externaltarget)
- ADD_DEPENDENCIES(${externaltarget} timestamp)
- endif(externaltarget)
+ get_target_property(target_location ${externaltarget} LOCATION)
+ if(target_location)
+ ADD_DEPENDENCIES(${externaltarget} timestamp)
+ endif(target_location)
ENDFOREACH(externaltarget ${CMAKE_EXTERNAL_TARGET_LIST})
Modified: brlcad/branches/cmake/misc/CMake/ThirdParty.cmake
===================================================================
--- brlcad/branches/cmake/misc/CMake/ThirdParty.cmake 2010-09-13 14:55:38 UTC
(rev 40547)
+++ brlcad/branches/cmake/misc/CMake/ThirdParty.cmake 2010-09-13 15:34:19 UTC
(rev 40548)
@@ -1,7 +1,5 @@
#-----------------------------------------------------------------------------
-MACRO(THIRD_PARTY_OPTION upper)
- SET(${upper}_LIBRARY "${upper}-NOTFOUND")
- SET(${upper}_INCLUDE_DIR "${upper}-NOTFOUND")
+MACRO(THIRD_PARTY_OPTION upper lower)
IF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_LIBS)
OPTION(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} "Build the
local ${upper} library." ON)
SET(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} ON)
@@ -10,6 +8,9 @@
SET(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} OFF)
ENDIF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_LIBS)
IF(NOT ${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} OR
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
+ SET(${upper}_FOUND "${upper}-NOTFOUND")
+ SET(${upper}_LIBRARY "${upper}-NOTFOUND")
+ SET(${upper}_INCLUDE_DIR "${upper}-NOTFOUND")
IF(EXISTS ${${CMAKE_PROJECT_NAME}_CMAKE_DIR}/Find${upper}.cmake)
INCLUDE(${${CMAKE_PROJECT_NAME}_CMAKE_DIR}/Find${upper}.cmake)
ELSE(EXISTS
${${CMAKE_PROJECT_NAME}_CMAKE_DIR}/Find${upper}.cmake)
@@ -18,13 +19,22 @@
IF(${upper}_FOUND)
IF("${upper}" MATCHES "^PNG$")
SET(PNG_INCLUDE_DIR ${PNG_PNG_INCLUDE_DIR})
+ SET(${CMAKE_PROJECT_NAME}_${upper}_INCLUDE_DIR
${PNG_INCLUDE_DIR})
MARK_AS_ADVANCED(PNG_PNG_INCLUDE_DIR)
+ ELSE("${upper}" MATCHES "^PNG$")
+ SET(${CMAKE_PROJECT_NAME}_${upper}_INCLUDE_DIR
${${upper}_INCLUDE_DIR} CACHE STRING "set by THIRD_PARTY macro" FORCE)
ENDIF("${upper}" MATCHES "^PNG$")
+ SET(${CMAKE_PROJECT_NAME}_${upper}_LIBRARY
${${upper}_LIBRARY} CACHE STRING "set by THIRD_PARTY macro" FORCE)
ELSE(${upper}_FOUND)
IF(NOT ${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
SET(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper}
ON)
+ SET(${upper}_LIBRARY "${lower}" CACHE STRING
"set by THIRD_PARTY macro" FORCE)
+ SET(${CMAKE_PROJECT_NAME}_${upper}_LIBRARY
${${upper}_LIBRARY} CACHE STRING "set by THIRD_PARTY macro" FORCE)
ENDIF(NOT ${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
ENDIF(${upper}_FOUND)
+ ELSE(NOT ${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} OR
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
+ SET(${upper}_LIBRARY "${lower}" CACHE STRING "set by
THIRD_PARTY macro" FORCE)
+ SET(${CMAKE_PROJECT_NAME}_${upper}_LIBRARY ${${upper}_LIBRARY} CACHE
STRING "set by THIRD_PARTY macro" FORCE)
ENDIF(NOT ${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} OR
${CMAKE_PROJECT_NAME}_SYSTEM_LIBS_ONLY)
MARK_AS_ADVANCED(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper})
ENDMACRO(THIRD_PARTY_OPTION)
@@ -55,7 +65,10 @@
MACRO(THIRD_PARTY_SUBDIR upper lower)
IF(${CMAKE_PROJECT_NAME}_BUILD_LOCAL_${upper} AND NOT
${upper}_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}")
ENDMACRO(THIRD_PARTY_SUBDIR)
#-----------------------------------------------------------------------------
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