Revision: 40484
          http://brlcad.svn.sourceforge.net/brlcad/?rev=40484&view=rev
Author:   starseeker
Date:     2010-09-06 16:18:08 +0000 (Mon, 06 Sep 2010)

Log Message:
-----------
Thanks to some excellent help from the CMake list, implement a way to ensure 
that the timestamp comes at the beginning of the build.  This same mechanism of 
redefining/wrapping add_library and add_executable may help with a make noprod 
rule, although that is likely to be more complex.

Modified Paths:
--------------
    brlcad/branches/cmake/CMakeLists.txt

Modified: brlcad/branches/cmake/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/CMakeLists.txt        2010-09-06 05:15:35 UTC (rev 
40483)
+++ brlcad/branches/cmake/CMakeLists.txt        2010-09-06 16:18:08 UTC (rev 
40484)
@@ -99,6 +99,20 @@
 # build shared libs by default
 OPTION(BUILD_SHARED_LIBS "Build shared libraries" ON)
 
+# Will need our own add_executable and add_library
+# versions in order to keep track of targets and
+# define rules for all products.
+function(add_library name)
+   SET(CMAKE_LIBRARY_TARGET_LIST "${CMAKE_LIBRARY_TARGET_LIST};${name}" CACHE 
STRING "list of lib targets" FORCE)
+   _add_library(${name} ${ARGN})
+endfunction(add_library)
+
+function(add_executable name)
+   SET(CMAKE_EXEC_TARGET_LIST "${CMAKE_EXEC_TARGET_LIST};${name}" CACHE STRING 
"list of exec targets" FORCE)
+   _add_executable(${name} ${ARGN})
+endfunction(add_executable)
+
+
 # See HACKING for details on how to properly update the version
 FILE(READ ${BRLCAD_SOURCE_DIR}/include/conf/MAJOR BRLCAD_MAJOR_VERSION)
 STRING(STRIP ${BRLCAD_MAJOR_VERSION} BRLCAD_MAJOR_VERSION)
@@ -790,6 +804,7 @@
        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
@@ -810,6 +825,7 @@
        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)
@@ -856,6 +872,8 @@
                        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 ""
@@ -871,6 +889,7 @@
                        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})
@@ -911,6 +930,7 @@
                        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)
@@ -947,6 +967,7 @@
                        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)
@@ -984,6 +1005,7 @@
                        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)
@@ -1021,6 +1043,7 @@
                        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)
@@ -1308,14 +1331,33 @@
 ADD_EXECUTABLE(printtimestamp ${BRLCAD_CMAKE_DIR}/test_srcs/print_timestamp.c)
 ADD_CUSTOM_TARGET(timestamp ALL        COMMAND printtimestamp)
 
+# 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)
+FOREACH(libtarget ${CMAKE_LIBRARY_TARGET_LIST})
+  if(libtarget)
+    ADD_DEPENDENCIES(${libtarget} timestamp)
+  endif(libtarget)
+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)
+ENDFOREACH(exectarget ${CMAKE_EXEC_TARGET_LIST})
+FOREACH(externaltarget ${CMAKE_EXTERNAL_TARGET_LIST})
+  if(externaltarget)
+    ADD_DEPENDENCIES(${externaltarget} timestamp)
+  endif(externaltarget)
+ENDFOREACH(externaltarget ${CMAKE_EXTERNAL_TARGET_LIST})
 
 if(BRLCAD_BUILD_LOCAL_TCL)
-       ADD_DEPENDENCIES(tcl timestamp)
-       ADD_DEPENDENCIES(tk 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})
 endif(BRLCAD_BUILD_LOCAL_TCL)
-ADD_DEPENDENCIES(bu timestamp ${TCL_DEP} ${TK_DEP})
-ADD_DEPENDENCIES(sysv timestamp ${TCL_DEP} ${TK_DEP})
-ADD_DEPENDENCIES(librt timestamp ${TCL_DEP} ${TK_DEP})
 
 # Generate the include/conf files
 


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

------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to