# This is a CMake example for Ruby

cmake_minimum_required(VERSION 2.8)

FIND_PACKAGE(SWIG 2.0 REQUIRED)
INCLUDE(${SWIG_USE_FILE})

FIND_PROGRAM(RUBY_EXECUTABLE REQUIRED NAMES ruby)
EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['MAJOR']" OUTPUT_VARIABLE RBCONFIG_MAJOR)
EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['MINOR']" OUTPUT_VARIABLE RBCONFIG_MINOR)
EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['TEENY']" OUTPUT_VARIABLE RBCONFIG_TEENY)
EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['rubyhdrdir']" OUTPUT_VARIABLE RBCONFIG_RUBYHDRDIR)
EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['includedir']" OUTPUT_VARIABLE RBCONFIG_INCLUDEDIR)
EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['libdir']" OUTPUT_VARIABLE RBCONFIG_LIBDIR)
EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['LIBRUBY']" OUTPUT_VARIABLE RBCONFIG_LIBRUBY)
EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print RbConfig::CONFIG['archdir']" OUTPUT_VARIABLE RBCONFIG_ARCHDIR)

IF (RBCONFIG_MAJOR EQUAL 1 AND RBCONFIG_MINOR EQUAL 8)

  SET(RUBY_INCLUDE_PATH "${RBCONFIG_ARCHDIR}")
  SET(RUBY_LIBRARY "${RBCONFIG_LIBDIR}/${RBCONFIG_LIBRUBY}")
  INCLUDE_DIRECTORIES(${RUBY_INCLUDE_PATH})

  INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
  INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/libsbmlsim ${LIBSBML_INCLUDE_DIR})

  SET(CMAKE_SWIG_FLAGS "")

  SET_SOURCE_FILES_PROPERTIES(libsbmlsim.i PROPERTIES CPLUSPLUS OFF)
  SET_SOURCE_FILES_PROPERTIES(libsbmlsim.i PROPERTIES SWIG_FLAGS "-includeall")
  IF(${CMAKE_VERSION} VERSION_LESS "3.8.0")
    SWIG_ADD_MODULE(libsbmlsim_ruby ruby libsbmlsim.i ${SOURCES_LIB})
  ELSE()
    SWIG_ADD_LIBRARY(libsbmlsim_ruby
      LANGUAGE ruby
      SOURCES libsbmlsim.i ${SOURCES_LIB})
  ENDIF()
  SWIG_LINK_LIBRARIES(libsbmlsim_ruby ${RUBY_LIBRARY} ${LIBSBML_LIBRARIES})


  set_target_properties (libsbmlsim_ruby PROPERTIES OUTPUT_NAME "libsbmlsim")
  if (UNIX)
    set_target_properties (libsbmlsim_ruby PROPERTIES PREFIX "")
    if (APPLE)
      set_target_properties (libsbmlsim_ruby PROPERTIES SUFFIX ".bundle")
    endif()
  endif()

  file(COPY ${PROJECT_SOURCE_DIR}/examples/ruby/Test.rb DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
  file(COPY ${PROJECT_SOURCE_DIR}/examples/ruby/README.txt DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
  file(COPY ${PROJECT_SOURCE_DIR}/examples/sample.xml DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/../)

  # Install targets
  INSTALL(FILES ${PROJECT_SOURCE_DIR}/examples/ruby/Test.rb ${PROJECT_SOURCE_DIR}/examples/ruby/README.txt DESTINATION share/libsbmlsim/ruby)
  INSTALL(TARGETS libsbmlsim_ruby
    LIBRARY DESTINATION share/libsbmlsim/ruby
    ARCHIVE DESTINATION share/libsbmlsim/ruby
    )

ELSE()

  MESSAGE(STATUS "only ruby-1.8.* is supported")

ENDIF()
