Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[MANTA] r1188 - trunk/SwigInterface/test


Chronological Thread 
  • From: bigler@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [MANTA] r1188 - trunk/SwigInterface/test
  • Date: Tue, 22 Aug 2006 16:33:43 -0600 (MDT)

Author: bigler
Date: Tue Aug 22 16:33:43 2006
New Revision: 1188

Modified:
   trunk/SwigInterface/test/MantaUseSWIG.cmake
   trunk/SwigInterface/test/depend.mk
   trunk/SwigInterface/test/make2cmake.py
Log:

MantaUseSWIG.cmake

  Cleaned things up a bit by reducing common expressions into a single
  variable and removing debugging comments.

  Made a chain of rules that build the swig dependency file, then the
  cmake version, then the wrapper.  This will do what I want and still
  work in CMake version 2.2 and 2.4.

depend.mk

  Some more structure to build swig wrappers and dependency files.
  Seems to work.

make2cmake.py

  Don't look at the modification times of the files.  Always generate
  the output file.


Modified: trunk/SwigInterface/test/MantaUseSWIG.cmake
==============================================================================
--- trunk/SwigInterface/test/MantaUseSWIG.cmake (original)
+++ trunk/SwigInterface/test/MantaUseSWIG.cmake Tue Aug 22 16:33:43 2006
@@ -106,7 +106,6 @@
 # file has disappeared or moved.
 
 MACRO(MANTA_INCLUDE_SWIG_DEPENDENCIES dependency_file)
-#  MESSAGE("MANTA_INCLUDE_SWIG_DEPENDENCIES, ${dependency_file}")
   SET(MANTA_SWIG_DEPEND)
   SET(MANTA_SWIG_DEPEND_REGENERATE)
 
@@ -114,13 +113,8 @@
   # for make files except for IDEs (see below).
   IF(${CMAKE_MAKE_PROGRAM} MATCHES "make")
     IF(EXISTS ${dependency_file})
-    ELSE(EXISTS ${dependency_file})
-#      MESSAGE("GENERATING stub dependency file")
-      CONFIGURE_FILE(
-        ${CMAKE_SOURCE_DIR}/empty.depend.in
-        ${dependency_file} IMMEDIATE)
+      INCLUDE(${dependency_file})
     ENDIF(EXISTS ${dependency_file})
-    INCLUDE(${dependency_file})
   ELSE(${CMAKE_MAKE_PROGRAM} MATCHES "make")
     # for IDE generators like MS dev only include the depend files
     # if they exist.   This is to prevent ecessive reloading of
@@ -152,9 +146,6 @@
   # rule to re-run.
   IF(MANTA_SWIG_DEPEND_REGENERATE)
     SET(MANTA_SWIG_DEPEND ${dependency_file})
-    CONFIGURE_FILE(
-      ${CMAKE_SOURCE_DIR}/empty.depend.in
-      ${dependency_file} IMMEDIATE)
   ENDIF(MANTA_SWIG_DEPEND_REGENERATE)
       
 ENDMACRO(MANTA_INCLUDE_SWIG_DEPENDENCIES)
@@ -243,61 +234,59 @@
   MANTA_INCLUDE_SWIG_DEPENDENCIES(${cmake_dependency_file})
   SET(swig_generated_dependency_file
     "${swig_generated_file_fullname}.swig-depend")
-  
-
-  # CMake 2.4 introduced multiple output targets
-  IF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 2.2)
-    SET( OUTPUT_FILES "${swig_generated_file_fullname}"
-                      ${swig_generated_dependency_file}
-                      ${cmake_dependency_file}
-                      )
-  ELSE("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 2.2)
-    SET( OUTPUT_FILES "${swig_generated_file_fullname}" )
-  ENDIF("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" GREATER 2.2)
-      
-
-  MESSAGE("MANTA_SWIG_DEPEND =" ${MANTA_SWIG_DEPEND})
 
-  # If CMAKE_SWIG_OUTDIR was specified then pass it to -outdir
+  # Add this argument if we need to.
   IF(CMAKE_SWIG_OUTDIR)
-    ADD_CUSTOM_COMMAND(
-      OUTPUT ${OUTPUT_FILES}
-      COMMAND "${SWIG_EXECUTABLE}"
-      ARGS "-${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}"
-      -MD -MF "${swig_generated_dependency_file}"
-      ${swig_source_file_flags}
-      ${CMAKE_SWIG_FLAGS}
-      -outdir ${CMAKE_SWIG_OUTDIR}
-      ${swig_special_flags}
-      ${swig_extra_flags}
-      ${swig_include_dirs}
-      -o "${swig_generated_file_fullname}"
-      "${swig_source_file_fullname}"
-      COMMAND "${PYTHONINTERP}"
-      ARGS "${CMAKE_CURRENT_SOURCE_DIR}/make2cmake.py" 
${swig_generated_dependency_file} ${cmake_dependency_file}
-      MAIN_DEPENDENCY "${swig_source_file_fullname}"
-      DEPENDS ${MANTA_SWIG_DEPEND}
-      COMMENT "Swig source (${swig_generated_file_fullname})") 
+    SET(OUTDIR_ARG "-outdir ${CMAKE_SWIG_OUTDIR}")
   ELSE(CMAKE_SWIG_OUTDIR)
-    ADD_CUSTOM_COMMAND(
-      OUTPUT ${OUTPUT_FILES}
-      COMMAND "${SWIG_EXECUTABLE}"
-      ARGS "-${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}"
-      -MD -MF "${swig_generated_dependency_file}"
-      ${swig_source_file_flags}
-      ${CMAKE_SWIG_FLAGS}
-      ${swig_outdir_flags}
-      ${swig_special_flags}
-      ${swig_extra_flags}
-      ${swig_include_dirs}
-      -o "${swig_generated_file_fullname}"
-      "${swig_source_file_fullname}"
-      COMMAND "${PYTHON_EXECUTABLE}"
-      ARGS "${CMAKE_CURRENT_SOURCE_DIR}/make2cmake.py" 
${swig_generated_dependency_file} ${cmake_dependency_file}
-      MAIN_DEPENDENCY "${swig_source_file_fullname}"
-      DEPENDS ${MANTA_SWIG_DEPEND}
-      COMMENT "Swig source (${swig_generated_file_fullname})") 
+    SET(OUTDIR_ARG "")
   ENDIF(CMAKE_SWIG_OUTDIR)
+
+  # Put all the arguments in a single variable, so we can have a
+  # centralized location.
+  SET(ALL_SWIG_COMMAND_FLAGS
+    "-${SWIG_MODULE_${name}_SWIG_LANGUAGE_FLAG}"
+    ${swig_source_file_flags}
+    ${CMAKE_SWIG_FLAGS}
+    ${OUTDIR_ARG}
+    ${swig_special_flags}
+    ${swig_extra_flags}
+    ${swig_include_dirs}
+    -o ${swig_generated_file_fullname}
+    )
+
+  # Build the swig made dependency file
+  ADD_CUSTOM_COMMAND(
+    OUTPUT ${swig_generated_dependency_file}
+    COMMAND ${SWIG_EXECUTABLE}
+    ARGS ${ALL_SWIG_COMMAND_FLAGS}
+    -M -MF ${swig_generated_dependency_file}
+    ${swig_source_file_fullname}
+    MAIN_DEPENDENCY ${swig_source_file_fullname}
+    DEPENDS ${MANTA_SWIG_DEPEND}
+    COMMENT "Swig generated dependency file 
(${swig_generated_dependency_file})"
+    )
+
+  # Build the CMake readible dependency file
+  ADD_CUSTOM_COMMAND(
+    OUTPUT ${cmake_dependency_file}
+    COMMAND ${PYTHONINTERP}
+    ARGS "${CMAKE_CURRENT_SOURCE_DIR}/make2cmake.py" 
${swig_generated_dependency_file} ${cmake_dependency_file}
+    MAIN_DEPENDENCY ${swig_generated_dependency_file}
+    COMMENT "Converting swig dependency to CMake (${cmake_dependency_file})"
+    )
+  
+  # Build the wrapper file.  This depends on the
+  # cmake_dependency_file, so that stuff will get built too.
+  ADD_CUSTOM_COMMAND(
+    OUTPUT ${swig_generated_file_fullname}
+    COMMAND "${SWIG_EXECUTABLE}"
+    ARGS ${ALL_SWIG_COMMAND_FLAGS} ${swig_source_file_fullname}
+    MAIN_DEPENDENCY "${swig_source_file_fullname}"
+    DEPENDS ${MANTA_SWIG_DEPEND} ${cmake_dependency_file}
+    COMMENT "Swig source (${swig_generated_file_fullname})"
+    )
+  
   SET_SOURCE_FILES_PROPERTIES("${swig_generated_file_fullname}"
     PROPERTIES GENERATED 1)
   SET(${outfiles} "${swig_generated_file_fullname}")

Modified: trunk/SwigInterface/test/depend.mk
==============================================================================
--- trunk/SwigInterface/test/depend.mk  (original)
+++ trunk/SwigInterface/test/depend.mk  Tue Aug 22 16:33:43 2006
@@ -1,20 +1,49 @@
 CXXPATH = /home/sci/bigler/manta/trunk/SwigInterface/test
 
-default: child.o
+default: child.o childPYTHON_wrap.o
 
--include child-copy.d
+-include child.i.d.mkd
+-include child.d
+-include childPYTHON_wrap.d
 
-DEPENDS = $(CXXPATH)/child.cc $(MANTA_SWIG_DEPEND)
+DEPENDS := $(CXXPATH)/child.i $(MANTA_SWIG_DEPEND)
 
-child.d: $(DEPENDS)
-       g++ -c $< -o $@ -M
+# Generate the wrapper
+childPYTHON_wrap.cc: $(DEPENDS)
+       swig -python -c++ -outdir . -o $@ ../child.i
 
-child.o: $(DEPENDS)
-       g++ -c $< -o $@
+child.i.d: $(DEPENDS)
+       swig -python -c++ -outdir . -M -MF $@ ../child.i
 
-child-copy.d: child.d
-       python $(CXXPATH)/make2makevar.py child.d child-copy.d
+child.i.d.mkd: child.i.d
+       python $(CXXPATH)/make2makevar.py $< $@
+
+# Generate object code
+child.o: $(CXXPATH)/child.cc
+       g++ -c $< -o $@ -MD -I$(CXXPATH)
+
+%PYTHON_wrap.o: %PYTHON_wrap.cc
+       g++ -c $< -o $@ -MD -I$(CXXPATH) -I/usr/include/python2.4
+
+%.o: %.cc
+       g++ -c $< -o $@ -MD -I$(CXXPATH)
 
 clean:
-       rm -f child.o child.d child-copy.d
+       rm -f *.d *.o *.mkd *.py
+
+# -include child-copy.d
+
+# DEPENDS = $(CXXPATH)/child.cc $(MANTA_SWIG_DEPEND)
+
+# child.d: $(DEPENDS)
+#      g++ -c $< -o $@ -M
+
+# child.o: $(DEPENDS)
+#      g++ -c $< -o $@
+
+# child-copy.d: child.d
+#      python $(CXXPATH)/make2makevar.py child.d child-copy.d
+
+# clean:
+#      rm -f child.o child.d child-copy.d
 

Modified: trunk/SwigInterface/test/make2cmake.py
==============================================================================
--- trunk/SwigInterface/test/make2cmake.py      (original)
+++ trunk/SwigInterface/test/make2cmake.py      Tue Aug 22 16:33:43 2006
@@ -12,14 +12,6 @@
     infilename = sys.argv[1]
     outfilename = sys.argv[2]
 
-    # Only generate the output file if the input file is newer (bigger
-    # numbers are newer).
-    if (os.path.getmtime(infilename) <= os.path.getmtime(outfilename)):
-        print " ---------------------- Not generating" + outfilename
-        sys.exit(0)
-    else:
-        print " ++++++++++++++++++++++ Generating: " + outfilename
-    
     # U is the mode to open the file with universal newline support.
     infile = open(infilename, "rU")
     outfile = open(outfilename, "w")




  • [MANTA] r1188 - trunk/SwigInterface/test, bigler, 08/22/2006

Archive powered by MHonArc 2.6.16.

Top of page