From: Thomas W. <tho...@us...> - 2007-12-22 22:03:53
|
Update of /cvsroot/octaviz/octaviz/Common In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv2044/Common Modified Files: CMakeLists.txt Log Message: Revamped build system Interface to the WRAP macro simplified. Parallel builds should work now; out-of-source build should work as well. A pre-compiled header file can be used (alas, it doesn't seem to speed the build up that much). Index: CMakeLists.txt =================================================================== RCS file: /cvsroot/octaviz/octaviz/Common/CMakeLists.txt,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- CMakeLists.txt 12 Oct 2007 10:09:32 -0000 1.11 +++ CMakeLists.txt 22 Dec 2007 22:03:54 -0000 1.12 @@ -1,27 +1,46 @@ -SET(KIT_WRAP_DEPS) - ADD_LIBRARY( octaviz SHARED octaviz.cc ) -OCTAVE_WRAP_VTK(Common "${KIT_WRAP_DEPS}") +OCTAVE_WRAP_VTK(Common) +# This sets INCLUDE_FLAGS and LINK_FLAGS also for the .cc files below + INCLUDE_DIRECTORIES(${OCTINCLUDEDIR} "${OCTINCLUDEDIR}/octave" ) LINK_LIBRARIES(octinterp octave cruft vtkCommon) LINK_DIRECTORIES(${OCTLIBDIR}) -ADD_CUSTOM_COMMAND( OUTPUT vtk_init.oct COMMAND ${MKOCTFILE} ${oct_flags} ${oct_link_flags} -Wno-deprecated -loctaviz -L. vtk_init.cc ) -ADD_CUSTOM_COMMAND( OUTPUT vtkInitializeInteractor.oct COMMAND ${MKOCTFILE} ${oct_flags} ${oct_link_flags} -Wno-deprecated -loctaviz -L. vtkInitializeInteractor.cc) -ADD_CUSTOM_COMMAND( OUTPUT vtkRaiseWindow.oct COMMAND ${MKOCTFILE} ${oct_flags} ${oct_link_flags} -Wno-deprecated -loctaviz -lvtkRendering -L. vtkRaiseWindow.cc ) -ADD_CUSTOM_COMMAND( OUTPUT vtk_print_ref_table.oct COMMAND ${MKOCTFILE} ${oct_flags} ${oct_link_flags} -Wno-deprecated -loctaviz -L. vtk_print_ref_table.cc ) -ADD_CUSTOM_COMMAND( OUTPUT vtk_get_pointer.oct COMMAND ${MKOCTFILE} ${oct_flags} ${oct_link_flags} -Wno-deprecated -loctaviz -L. vtk_get_pointer.cc ) - -ADD_CUSTOM_TARGET( Common ALL COMMAND touch Common DEPENDS octaviz ${all_oct} vtk_init.oct vtkInitializeInteractor.oct vtkRaiseWindow.oct vtk_print_ref_table.oct vtk_get_pointer.oct ) +SET (common_octs) + # track the .oct files for shorter DEPENDS lines -#ADD_CUSTOM_TARGET(vtkWindow.oct ALL mkoctfile ${oct_flags} ${oct_link_flags} vtkWindow.cc) +# How to build the .oct files in this directory +FOREACH(class vtk_init vtkInitializeInteractor vtk_print_ref_table vtk_get_pointer vtkRaiseWindow) -INSTALL_PROGRAMS(${OCT_INST_DIR}/octaviz vtkInitializeInteractor.oct vtk_init.oct vtkRaiseWindow.oct vtk_get_pointer.oct vtk_print_ref_table.oct) -INSTALL_PROGRAMS(${OCT_INST_DIR}/octaviz ${all_oct}) -#MESSAGE(${all_oct}) + # FIXME: vtkRaiseWindow needs vtkRendering on Apple?! + IF(${class} STREQUAL "vtkRaiseWindow") + SET(APPLE_FLAG "-lvtkRendering") + ELSE(${class} STREQUAL "vtkRaiseWindow") + SET(APPLE_FLAG) + ENDIF(${class} STREQUAL "vtkRaiseWindow") + + ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${class}.oct + COMMAND ${CMAKE_COMMAND} + ARGS -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/${class}.cc + ${CMAKE_CURRENT_BINARY_DIR}/${class}.cc + # mkoctfile leaves .o files in the directory where it is called, so we + # must call it in the binary build directory + COMMAND ${MKOCTFILE} + ARGS --verbose ${WNODEPRECATED} ${INCLUDE_FLAGS} -I${CMAKE_CURRENT_SOURCE_DIR} + ${LINK_FLAGS} ${APPLE_FLAG} + -Wl,-rpath=${OCTAVIZ_RPATH} + --output ${CMAKE_CURRENT_BINARY_DIR}/${class}.oct + ${CMAKE_CURRENT_BINARY_DIR}/${class}.cc + DEPENDS octaviz + COMMENT "Building Octaviz' ${class}.oct from ${class}.cc" + ) + SET (common_octs ${common_octs} ${CMAKE_CURRENT_BINARY_DIR}/${class}.oct) +ENDFOREACH(class) -# Remove prefix from octave lib install dir -STRING(REGEX REPLACE "${CMAKE_INSTALL_PREFIX}" "" OUT_MTCH ${OCTLIBDIR}) -INSTALL_TARGETS(${OUT_MTCH} octaviz) +# Build the few .oct files as part of a "OctavizCommonFiles" target +ADD_CUSTOM_TARGET( OctavizCommonFiles ALL DEPENDS octaviz ${common_octs} ) +# Install the .oct files and the shared library +INSTALL(PROGRAMS ${common_octs} DESTINATION ${OCTAVIZ_OCT_DIR}) +INSTALL(TARGETS octaviz LIBRARY DESTINATION ${OCTAVIZ_SHARED_DIR}) |