Commit 19266648 authored by peastman's avatar peastman
Browse files

Finished wrappers for main library

parent a27fd3dc
# INCLUDE(FindJava) find_package(Doxygen REQUIRED)
mark_as_advanced(CLEAR DOXYGEN_EXECUTABLE)
set(GCCXML_EXTRA_ARGS "" CACHE STRING "Additional arguments to gccxml, such as '--gccxml-compiler;msvc8'") # WRAPPER_DOXYGEN_DIR is a workspace directory where wrapper files will be created
SET(GCCXML_ARGS) # start empty set(WRAPPER_DOXYGEN_DIR "${CMAKE_CURRENT_BINARY_DIR}/doxygen")
FOREACH(subdir ${API_INCLUDE_DIRS}) file(MAKE_DIRECTORY "${WRAPPER_DOXYGEN_DIR}")
SET(GCCXML_ARGS ${GCCXML_ARGS} -I${subdir})
ENDFOREACH(subdir)
SET(GCCXML_ARGS ${GCCXML_ARGS} ${GCCXML_EXTRA_ARGS})
SET(SAXON_CMD ${JAVA_RUNTIME} -jar ${CMAKE_SOURCE_DIR}/wrappers/saxonb9-1-0-7j/saxon9.jar)
# find_program(GCCXML_PATH gccxml PATH # Step 1 - Create Doxyfile to point to OpenMM headers
# /usr/local/bin configure_file(
# "C:/Program Files/gccxml 0.9/bin" ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in
# ) ${WRAPPER_DOXYGEN_DIR}/Doxyfile
@ONLY
)
ADD_CUSTOM_COMMAND(OUTPUT OpenMMApi.xml # Step 2 - Run doxygen to analyze the headers
COMMAND ${GCCXML_PATH} ${GCCXML_ARGS} ${CMAKE_SOURCE_DIR}/openmmapi/include/OpenMM.h -fxml=OpenMMApi.xml add_custom_command(
DEPENDS ${CMAKE_SOURCE_DIR}/openmmapi/include/OpenMM.h) OUTPUT "${WRAPPER_DOXYGEN_DIR}/xml/index.xml"
ADD_CUSTOM_COMMAND(OUTPUT OpenMMCWrapper.h COMMAND "${DOXYGEN_EXECUTABLE}"
COMMAND ${SAXON_CMD} -t -s:OpenMMApi.xml -xsl:${CMAKE_CURRENT_SOURCE_DIR}/CWrapper_Header.xslt -o:OpenMMCWrapper.h DEPENDS "${WRAPPER_DOXYGEN_DIR}/Doxyfile"
DEPENDS OpenMMApi.xml ${CMAKE_CURRENT_SOURCE_DIR}/CWrapper_Header.xslt) WORKING_DIRECTORY "${WRAPPER_DOXYGEN_DIR}"
ADD_CUSTOM_COMMAND(OUTPUT OpenMMCWrapper.cpp COMMENT "Parsing OpenMM header files with Doxygen..."
COMMAND ${SAXON_CMD} -t -s:OpenMMApi.xml -xsl:${CMAKE_CURRENT_SOURCE_DIR}/CWrapper_Source.xslt -o:OpenMMCWrapper.cpp )
DEPENDS OpenMMApi.xml ${CMAKE_CURRENT_SOURCE_DIR}/CWrapper_Source.xslt)
ADD_CUSTOM_COMMAND(OUTPUT OpenMMFortranModule.f90
COMMAND ${SAXON_CMD} -t -s:OpenMMApi.xml -xsl:${CMAKE_CURRENT_SOURCE_DIR}/FortranWrapper_Header.xslt -o:OpenMMFortranModule.f90
DEPENDS OpenMMApi.xml ${CMAKE_CURRENT_SOURCE_DIR}/FortranWrapper_Header.xslt)
ADD_CUSTOM_COMMAND(OUTPUT OpenMMFortranWrapper.cpp
COMMAND ${SAXON_CMD} -t -s:OpenMMApi.xml -xsl:${CMAKE_CURRENT_SOURCE_DIR}/FortranWrapper_Source.xslt -o:OpenMMFortranWrapper.cpp
DEPENDS OpenMMApi.xml ${CMAKE_CURRENT_SOURCE_DIR}/FortranWrapper_Source.xslt)
ADD_CUSTOM_TARGET(ApiWrappers DEPENDS OpenMMCWrapper.h OpenMMCWrapper.cpp OpenMMFortranModule.f90 OpenMMFortranWrapper.cpp) # Step 3 - Generate the wrappers
ADD_CUSTOM_COMMAND(OUTPUT OpenMMCWrapper.h OpenMMCWrapper.cpp OpenMMFortranModule.f90 OpenMMFortranWrapper.cpp
COMMAND ${PYTHON_EXECUTABLE} "${CMAKE_CURRENT_SOURCE_DIR}/generateWrappers.py" "${WRAPPER_DOXYGEN_DIR}/xml" "${CMAKE_CURRENT_BINARY_DIR}"
DEPENDS "${WRAPPER_DOXYGEN_DIR}/xml/index.xml" "${CMAKE_CURRENT_SOURCE_DIR}/generateWrappers.py")
ADD_CUSTOM_TARGET(ApiWrappers DEPENDS OpenMMCWrapper.h OpenMMCWrapper.cpp OpenMMFortranModule.f90 OpenMMFortranWrapper.cpp)
INSTALL_FILES(/include FILES OpenMMCWrapper.h OpenMMFortranModule.f90) INSTALL_FILES(/include FILES OpenMMCWrapper.h OpenMMFortranModule.f90)
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment