##################################################################
# scripts provided by CERTI
# This directory contains some scripts 
# (shell, python, CMake, ...)
# which may be useful for working with CERTI.
##################################################################

########### Configure and install some scripts files #############
SET(prefix ${CMAKE_INSTALL_PREFIX})
SET(configure_input "Generated by CMake.")
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/myCERTI_env.sh.in
  ${CMAKE_CURRENT_BINARY_DIR}/myCERTI_env.sh @ONLY)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/myCERTI_env.csh.in
  ${CMAKE_CURRENT_BINARY_DIR}/myCERTI_env.csh @ONLY)

INSTALL(FILES
  ${CMAKE_CURRENT_BINARY_DIR}/myCERTI_env.sh
  ${CMAKE_CURRENT_BINARY_DIR}/myCERTI_env.csh
  FindCERTI.cmake
  UseCERTI.cmake
  FindRTI.cmake
  DESTINATION share/scripts)

########### Message Generator sources and input ##################
set(MESSAGE_GENERATOR_SRC
    GenerateMessages.py
    GenMsgBase.py
    GenMsgAST.py
    GenMsgCXX.py
    GenMsgJava.py
    GenMsgPython.py)    
    
set(MESSAGE_SPEC_FILES
    CERTI_Message.msg
    CERTI_NetworkMessage.msg)
  
############ Discover Python environment (if any) ################   
find_package(PythonInterp)
#find_package(PythonLibs)

# If we found python interpreter we may define some rules to:
#   - Re-Generate CERTI [Network]Message classes
#   - Generate epydoc documentation for the message generator 
if (PYTHONINTERP_FOUND)
    add_custom_target(RegenCERTIMsg   
       COMMAND ${PYTHON_EXECUTABLE} GenerateMessages.py --input=CERTI_NetworkMessage.msg --language=CXXCERTINetworkMessage --type=header --output=${PROJECT_SOURCE_DIR}/libCERTI/NM_Classes.hh
       COMMAND ${PYTHON_EXECUTABLE} GenerateMessages.py --input=CERTI_NetworkMessage.msg --language=CXXCERTINetworkMessage --type=body --output=${PROJECT_SOURCE_DIR}/libCERTI/NM_Classes.cc
       COMMAND ${PYTHON_EXECUTABLE} GenerateMessages.py --input=CERTI_Message.msg --language=CXXCERTIMessage --type=header --output=${PROJECT_SOURCE_DIR}/libCERTI/M_Classes.hh
       COMMAND ${PYTHON_EXECUTABLE} GenerateMessages.py --input=CERTI_Message.msg --language=CXXCERTIMessage --type=body --output=${PROJECT_SOURCE_DIR}/libCERTI/M_Classes.cc     
       DEPENDS ${MESSAGE_SPEC_FILES} ${MESSAGE_GENERATOR_SRC}  
       WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 
       COMMENT "Regenerate CERTI Message and Network Message classes from specification (CERTI must be recompiled just after that)"   
       )
   
    # add a rule for epydoc if it is found
    find_program(EPYDOC_EXECUTABLE epydoc)
    set(EPYDOC_COMMON_OPTS "--graph" "all" "--inheritance" "listed" "--parse-only" "-v" "--name" "CERTI")
    if (EPYDOC_EXECUTABLE)   
        add_custom_target(GenGenMessageDocPDF
           ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/doc/MsgGen/pdf
           COMMAND ${EPYDOC_EXECUTABLE} ${EPYDOC_COMMON_OPTS} --pdf --output=${PROJECT_BINARY_DIR}/doc/MsgGen/pdf ${MESSAGE_GENERATOR_SRC}           
           WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 
           COMMENT "Generate CERTI Message generator documentation (PDF) with epydoc"   
           )
        add_custom_target(GenGenMessageDocHTML
           ${CMAKE_COMMAND} -E make_directory ${PROJECT_BINARY_DIR}/doc/MsgGen/html
           COMMAND ${EPYDOC_EXECUTABLE} ${EPYDOC_COMMON_OPTS} --html --output=${PROJECT_BINARY_DIR}/doc/MsgGen/html ${MESSAGE_GENERATOR_SRC}           
           WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} 
           COMMENT "Generate CERTI Message generator documentation (PDF) with epydoc"   
           )        
    endif (EPYDOC_EXECUTABLE)
endif (PYTHONINTERP_FOUND)