Text archives Help
- 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.