# This file directs the generation of boost.python wrapping code for modules # SimTKcommon, SimTKmath, and Simbody ################################################################ ### Generate C++ wrapper source for simtk.std python module ### ################################################################ # Create file generate_std.stamp to indicate successful completion of # generate step. Because it is possible that no generated sources will be updated. set(STDGEN_STAMP "${CMAKE_CURRENT_SOURCE_DIR}/external/std/generated_code/generate_std.stamp") file(GLOB SIMTKSTD_OTHER_SOURCES "external/std/*.cpp" "external/std/*.hpp" "external/std/*.h") file(GLOB SIMTKSTD_OTHER_HEADERS "external/std/*.hpp" "external/std/*.h") add_custom_command( COMMAND "${PYTHON_EXECUTABLE}" generate_std_source.py > "${CMAKE_CURRENT_BINARY_DIR}/generate_std_source.log" 2> "${CMAKE_CURRENT_BINARY_DIR}/generate_std_source.err" OUTPUT "${STDGEN_STAMP}" DEPENDS generate_std_source.py simtk_wrap_utils.py doxygen_doc_extractor.py ${SIMTKSTD_OTHER_HEADERS} ${SIMTKSTD_HEADERS} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Creating SimTKstd wrapper source files. Examine generate_std_source.err file for details" ) add_custom_target(Generate1SimTKstdWrapperSources DEPENDS "${STDGEN_STAMP}" SOURCES generate_std_source.py simtk_wrap_utils.py doxygen_doc_extractor.py ${SIMTKSTD_OTHER_SOURCES} ${SIMTKSTD_HEADERS} ) ################################################################# ### Generate C++ wrapper source for SimTK "vecs" python module ### ################################################################# file(GLOB_RECURSE SIMTKVECS_HEADERS "${SimTK_INCLUDE_DIR}/SimTKcommon/Scalar.h" "${SimTK_INCLUDE_DIR}/SimTKcommon/SmallMatrix.h" "${SimTK_INCLUDE_DIR}/SimTKcommon/Orientation.h") # Create file generate_simtkvecs.stamp to indicate successful completion of # generate step. Because it is possible that no generated sources will be updated. set(VECSGEN_STAMP "${CMAKE_CURRENT_SOURCE_DIR}/simtkvecs/generated_code/generate_simtkvecs.stamp") file(GLOB SIMTKVECS_OTHER_SOURCES "simtkvecs/*.cpp" "simtkvecs/*.hpp" "simtkvecs/*.h") file(GLOB SIMTKVECS_OTHER_HEADERS "simtkvecs/*.hpp" "simtkvecs/*.h") add_custom_command( COMMAND "${PYTHON_EXECUTABLE}" generate_vecs_source.py > "${CMAKE_CURRENT_BINARY_DIR}/generate_simtkvecs_source.log" 2> "${CMAKE_CURRENT_BINARY_DIR}/generate_simtkvecs_source.err" OUTPUT "${VECSGEN_STAMP}" DEPENDS generate_vecs_source.py simtk_wrap_utils.py doxygen_doc_extractor.py indexing_helpers.hpp simtk_indexing_helpers.hpp "${STDGEN_STAMP}" # Changes in std trigger rebuild of common ${SIMTKVECS_OTHER_HEADERS} ${SIMTKVECS_HEADERS} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Creating SimTKVecs wrapper source files. Examine generate_simtkvecs_source.err file for details" ) add_custom_target(Generate2SimTKVecsWrapperSources DEPENDS "${VECSGEN_STAMP}" SOURCES generate_vecs_source.py simtk_wrap_utils.py doxygen_doc_extractor.py indexing_helpers.hpp simtk_indexing_helpers.hpp ${SIMTKVECS_OTHER_SOURCES} ${SIMTKVECS_HEADERS} ) ################################################################# ### Generate C++ wrapper source for SimTKcommon python module ### ################################################################# file(GLOB_RECURSE SIMTKCOMMON_HEADERS "${SimTK_INCLUDE_DIR}/SimTKcommon/*.h" "${SimTK_INCLUDE_DIR}/SimTKcommon.h" "${SimTK_INCLUDE_DIR}/lapack/*.h" "${SimTK_INCLUDE_DIR}/SimTKlapack.h" "${SimTK_INCLUDE_DIR}/pthread.h") # Create file generate_simtkcommon.stamp to indicate successful completion of # generate step. Because it is possible that no generated sources will be updated. set(COMMONGEN_STAMP "${CMAKE_CURRENT_SOURCE_DIR}/simtkcommon/generated_code/generate_simtkcommon.stamp") file(GLOB SIMTKCOMMON_OTHER_SOURCES "simtkcommon/*.cpp" "simtkcommon/*.hpp" "simtkcommon/*.h") file(GLOB SIMTKCOMMON_OTHER_HEADERS "simtkcommon/*.hpp" "simtkcommon/*.h") add_custom_command( COMMAND "${PYTHON_EXECUTABLE}" generate_simtkcommon_source.py > "${CMAKE_CURRENT_BINARY_DIR}/generate_simtkcommon_source.log" 2> "${CMAKE_CURRENT_BINARY_DIR}/generate_simtkcommon_source.err" OUTPUT "${COMMONGEN_STAMP}" DEPENDS generate_simtkcommon_source.py simtk_wrap_utils.py doxygen_doc_extractor.py indexing_helpers.hpp simtk_indexing_helpers.hpp "${VECSGEN_STAMP}" # Changes in vecs trigger rebuild of common ${SIMTKCOMMON_OTHER_HEADERS} ${SIMTKCOMMON_HEADERS} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Creating SimTKcommon wrapper source files. Examine generate_simtkcommon_source.err file for details" ) add_custom_target(Generate3SimTKcommonWrapperSources DEPENDS "${COMMONGEN_STAMP}" SOURCES generate_simtkcommon_source.py simtk_wrap_utils.py doxygen_doc_extractor.py indexing_helpers.hpp simtk_indexing_helpers.hpp ${SIMTKCOMMON_OTHER_SOURCES} ${SIMTKCOMMON_HEADERS} ) ############################################################### ### Generate C++ wrapper source for SimTKmath python module ### ############################################################### file(GLOB_RECURSE SIMTKMATH_HEADERS "${SimTK_INCLUDE_DIR}/simmath/*.h" "${SimTK_INCLUDE_DIR}/SimTKmath.h" "${SimTK_INCLUDE_DIR}/SimTKcpodes/*.h" "${SimTK_INCLUDE_DIR}/SimTKcpodes.h") set(MATHGEN_STAMP "${CMAKE_CURRENT_SOURCE_DIR}/simtkmath/generated_code/generate_simtkmath.stamp") file(GLOB SIMTKMATH_OTHER_SOURCES "simtkmath/*.cpp" "simtkmath/*.hpp" "simtkmath/*.h") file(GLOB SIMTKMATH_OTHER_HEADERS "simtkmath/*.hpp" "simtkmath/*.h") add_custom_command( COMMAND "${PYTHON_EXECUTABLE}" generate_simtkmath_source.py > "${CMAKE_CURRENT_BINARY_DIR}/generate_simtkmath_source.log" 2> "${CMAKE_CURRENT_BINARY_DIR}/generate_simtkmath_source.err" OUTPUT "${MATHGEN_STAMP}" DEPENDS generate_simtkmath_source.py simtk_wrap_utils.py doxygen_doc_extractor.py indexing_helpers.hpp simtk_indexing_helpers.hpp "${COMMONGEN_STAMP}" # Changes in common trigger rebuild of math ${SIMTKMATH_HEADERS} ${SIMTKMATH_OTHER_HEADERS} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Creating SimTKmath wrapper source files. Examine generate_simtkmath_source.err file for details" ) add_custom_target(Generate4SimTKmathWrapperSources DEPENDS "${MATHGEN_STAMP}" SOURCES generate_simtkmath_source.py simtk_wrap_utils.py doxygen_doc_extractor.py indexing_helpers.hpp simtk_indexing_helpers.hpp ${SIMTKMATH_HEADERS} ${SIMTKMATH_OTHER_SOURCES} ) ############################################################# ### Generate C++ wrapper source for Simbody python module ### ############################################################# file(GLOB_RECURSE SIMBODY_HEADERS "${SimTK_INCLUDE_DIR}/simbody/*.h" "${SimTK_INCLUDE_DIR}/SimTKsimbody.h" "${SimTK_INCLUDE_DIR}/SimTKsimbody_aux.h") set(SIMBODYGEN_STAMP "${CMAKE_CURRENT_SOURCE_DIR}/simbody/generated_code/generate_simbody.stamp") file(GLOB SIMBODY_OTHER_SOURCES "simbody/*.cpp" "simbody/*.hpp" "simbody/*.h") file(GLOB SIMBODY_OTHER_HEADERS "simbody/*.hpp" "simbody/*.h") add_custom_command( COMMAND "${PYTHON_EXECUTABLE}" generate_simbody_source.py > "${CMAKE_CURRENT_BINARY_DIR}/generate_simbody_source.log" 2> "${CMAKE_CURRENT_BINARY_DIR}/generate_simbody_source.err" OUTPUT "${SIMBODYGEN_STAMP}" DEPENDS generate_simbody_source.py simtk_wrap_utils.py doxygen_doc_extractor.py indexing_helpers.hpp simtk_indexing_helpers.hpp "${MATHGEN_STAMP}" # Changes in math trigger rebuild of simbody ${SIMBODY_HEADERS} ${SIMBODY_OTHER_HEADERS} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Creating Simbody wrapper source files. Examine generate_simbody_source.err file for details" ) add_custom_target(Generate5SimbodyWrapperSources DEPENDS "${SIMBODYGEN_STAMP}" SOURCES generate_simbody_source.py doxygen_doc_extractor.py simtk_wrap_utils.py indexing_helpers.hpp simtk_indexing_helpers.hpp ${SIMBODY_HEADERS} ${SIMBODY_OTHER_SOURCES} ) ############################################################## ### Generate C++ wrapper source for Molmodel python module ### ############################################################## file(GLOB_RECURSE MOLMODEL_HEADERS "${SimTK_INCLUDE_DIR}/molmodel/*.h" "${SimTK_INCLUDE_DIR}/SimTKmolmodel.h") set(MOLMODELGEN_STAMP "${CMAKE_CURRENT_SOURCE_DIR}/molmodel/generated_code/generate_molmodel.stamp") file(GLOB MOLMODEL_OTHER_SOURCES "molmodel/*.cpp" "molmodel/*.hpp" "molmodel/*.h") file(GLOB MOLMODEL_OTHER_HEADERS "molmodel/*.hpp" "molmodel/*.h") add_custom_command( COMMAND "${PYTHON_EXECUTABLE}" generate_molmodel_source.py > "${CMAKE_CURRENT_BINARY_DIR}/generate_molmodel_source.log" 2> "${CMAKE_CURRENT_BINARY_DIR}/generate_molmodel_source.err" OUTPUT "${MOLMODELGEN_STAMP}" DEPENDS generate_molmodel_source.py simtk_wrap_utils.py indexing_helpers.hpp simtk_indexing_helpers.hpp "${SIMBODYGEN_STAMP}" # Changes in simbody and upstream trigger rebuild of molmodel ${MOLMODEL_HEADERS} ${MOLMODEL_OTHER_HEADERS} doxygen_doc_extractor.py WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Creating Molmodel wrapper source files. Examine generate_molmodel_source.err file for details" ) add_custom_target(Generate6MolmodelWrapperSources DEPENDS "${MOLMODELGEN_STAMP}" SOURCES generate_molmodel_source.py simtk_wrap_utils.py indexing_helpers.hpp simtk_indexing_helpers.hpp ${MOLMODEL_HEADERS} ${MOLMODEL_OTHER_SOURCES} doxygen_doc_extractor.py ) ############################################################## ### Generate C++ wrapper source for OpenMM python module ### ############################################################## file(GLOB_RECURSE OPENMM_HEADERS "${OpenMM_INCLUDE_DIR}/*.h") set(OPENMMGEN_STAMP "${CMAKE_CURRENT_SOURCE_DIR}/openmm/generated_code/generate_openmm.stamp") file(GLOB OPENMM_OTHER_SOURCES "openmm/*.cpp" "openmm/*.hpp" "openmm/*.h") file(GLOB OPENMM_OTHER_HEADERS "openmm/*.hpp" "openmm/*.h") add_custom_command( COMMAND "${PYTHON_EXECUTABLE}" generate_openmm_source.py > "${CMAKE_CURRENT_BINARY_DIR}/generate_openmm_source.log" 2> "${CMAKE_CURRENT_BINARY_DIR}/generate_openmm_source.err" OUTPUT "${OPENMMGEN_STAMP}" DEPENDS "${STDGEN_STAMP}" # Changes in std trigger rebuild of openmm generate_openmm_source.py simtk_wrap_utils.py doxygen_doc_extractor.py indexing_helpers.hpp ${OPENMM_HEADERS} ${OPENMM_OTHER_HEADERS} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" COMMENT "Creating OpenMM wrapper source files. Examine generate_openmm_source.err file for details" ) add_custom_target(Generate7OpenMMWrapperSources DEPENDS "${OPENMMGEN_STAMP}" SOURCES generate_openmm_source.py doxygen_doc_extractor.py simtk_wrap_utils.py indexing_helpers.hpp ${OPENMM_HEADERS} ${OPENMM_OTHER_SOURCES} ) ##################################################### ### Tie module construction to wrapper generation ### ##################################################### # Uncomment different target dependencies to control how far wrapper generation proceeds add_dependencies(BuildPySimTKModules Generate6MolmodelWrapperSources) # add_dependencies(BuildPySimTKModules Generate5SimbodyWrapperSources) # add_dependencies(BuildPySimTKModules Generate4SimTKmathWrapperSources) # add_dependencies(BuildPySimTKModules Generate3SimTKcommonWrapperSources) # add_dependencies(BuildPySimTKModules Generate2SimTKVecsWrapperSources) # add_dependencies(BuildPySimTKModules Generate1SimTKstdWrapperSources) add_dependencies(BuildPySimTKModules Generate7OpenMMWrapperSources)