Revision: 7960 http://playerstage.svn.sourceforge.net/playerstage/?rev=7960&view=rev Author: robotos Date: 2009-07-09 13:40:24 +0000 (Thu, 09 Jul 2009)
Log Message: ----------- Ruby bindings for libgazebo Modified Paths: -------------- code/gazebo/trunk/CMakeLists.txt code/gazebo/trunk/examples/libgazebo/stereo/CMakeLists.txt code/gazebo/trunk/libgazebo/CMakeLists.txt Added Paths: ----------- code/gazebo/trunk/libgazebo/bindings/CMakeLists.txt code/gazebo/trunk/libgazebo/bindings/ruby/ code/gazebo/trunk/libgazebo/bindings/ruby/CMakeLists.txt code/gazebo/trunk/libgazebo/bindings/ruby/gazeboc.i Modified: code/gazebo/trunk/CMakeLists.txt =================================================================== --- code/gazebo/trunk/CMakeLists.txt 2009-07-08 19:46:17 UTC (rev 7959) +++ code/gazebo/trunk/CMakeLists.txt 2009-07-09 13:40:24 UTC (rev 7960) @@ -46,9 +46,9 @@ ##################################### # Build type cflags -SET (CMAKE_C_FLAGS_RELEASE " -O3 -DNDEBUG -Wall " CACHE INTERNAL "C Flags for release" FORCE) -SET (CMAKE_C_FLAGS_DEBUG " -ggdb " CACHE INTERNAL "C Flags fro debug" FORCE) -SET (CMAKE_C_FLAGS_PROFILE " -ggdb -pg " CACHE INTERNAL "C Flags for profile" FORCE) +SET (CMAKE_C_FLAGS_RELEASE " -O2 -DNDEBUG -Wall " CACHE INTERNAL "C Flags for release" FORCE) +SET (CMAKE_C_FLAGS_DEBUG " -ggdb -Wall " CACHE INTERNAL "C Flags for debug" FORCE) +SET (CMAKE_C_FLAGS_PROFILE " -ggdb -pg -Wall " CACHE INTERNAL "C Flags for profile" FORCE) ##################################### # Build type link flags Modified: code/gazebo/trunk/examples/libgazebo/stereo/CMakeLists.txt =================================================================== --- code/gazebo/trunk/examples/libgazebo/stereo/CMakeLists.txt 2009-07-08 19:46:17 UTC (rev 7959) +++ code/gazebo/trunk/examples/libgazebo/stereo/CMakeLists.txt 2009-07-09 13:40:24 UTC (rev 7960) @@ -28,4 +28,4 @@ add_executable(stereo ${sources}) -target_link_libraries(stereo ${LINK_LIBS} ) +target_link_libraries(stereo ${LINK_LIBS} gazebo_server ogre3d) Modified: code/gazebo/trunk/libgazebo/CMakeLists.txt =================================================================== --- code/gazebo/trunk/libgazebo/CMakeLists.txt 2009-07-08 19:46:17 UTC (rev 7959) +++ code/gazebo/trunk/libgazebo/CMakeLists.txt 2009-07-09 13:40:24 UTC (rev 7960) @@ -12,6 +12,8 @@ ${boost_include_dirs} ) +ADD_SUBDIRECTORY(bindings) + LINK_DIRECTORIES(${boost_library_dirs}) ADD_LIBRARY(gazeboshm SHARED ${sources}) Added: code/gazebo/trunk/libgazebo/bindings/CMakeLists.txt =================================================================== --- code/gazebo/trunk/libgazebo/bindings/CMakeLists.txt (rev 0) +++ code/gazebo/trunk/libgazebo/bindings/CMakeLists.txt 2009-07-09 13:40:24 UTC (rev 7960) @@ -0,0 +1 @@ +ADD_SUBDIRECTORY(ruby) Added: code/gazebo/trunk/libgazebo/bindings/ruby/CMakeLists.txt =================================================================== --- code/gazebo/trunk/libgazebo/bindings/ruby/CMakeLists.txt (rev 0) +++ code/gazebo/trunk/libgazebo/bindings/ruby/CMakeLists.txt 2009-07-09 13:40:24 UTC (rev 7960) @@ -0,0 +1,58 @@ +FIND_PACKAGE (Ruby) + +if(RUBY_LIBRARY AND RUBY_INCLUDE_PATH) + SET(RUBY_FOUND TRUE) +endif (RUBY_LIBRARY AND RUBY_INCLUDE_PATH) + + IF(RUBY_FOUND) + OPTION (BUILD_RUBY_BINDINGS "Build the Ruby bindings for libgazebo " ON) + + IF (BUILD_RUBY_BINDINGS) + FIND_PACKAGE (SWIG) + IF (SWIG_FOUND) + MESSAGE (STATUS "Ruby bindings for Gazebo will be built") + + INCLUDE (${SWIG_USE_FILE}) + + SET (RUBY_INTERFACE_FILE "${CMAKE_CURRENT_SOURCE_DIR}/gazeboc.i") + SET (RUBY_MODULE_NAME gazeboc) + SET (LIBGAZEBO_DIR ${PROJECT_SOURCE_DIR}/libgazebo) + + INCLUDE_DIRECTORIES (${RUBY_INCLUDE_PATH}) + INCLUDE_DIRECTORIES (${PROJECT_SOURCE_DIR}) + INCLUDE_DIRECTORIES (${PROJECT_BINARY_DIR}) + INCLUDE_DIRECTORIES (${LIBGAZEBO_DIR}) + INCLUDE_DIRECTORIES( ${boost_include_dirs} ) + + LINK_DIRECTORIES(${boost_library_dirs}) + + SET (CMAKE_SWIG_FLAGS "-w801 -c++ -I$LIBGAZEBO_DIR") + + SET_SOURCE_FILES_PROPERTIES(${RUBY_INTERFACE_FILE} PROPERTIES CPLUSPLUS ON) + + SWIG_ADD_MODULE (${RUBY_MODULE_NAME} ruby ${RUBY_INTERFACE_FILE} ) + SWIG_LINK_LIBRARIES (${RUBY_MODULE_NAME} ${RUBY_LIBRARY}) + + ADD_DEPENDENCIES (${RUBY_MODULE_NAME} ${RUBY_INTERFACE_FILE}) + TARGET_LINK_LIBRARIES (${RUBY_MODULE_NAME} gazebo) + + #TODO: find ruby in windows, check install dir is correct + STRING(REPLACE "/usr/" "" ruby_relative_sitelib_dir ${RUBY_SITELIB_DIR}) + STRING(REPLACE "local/" "" ruby_relative_sitelib_dir ${ruby_relative_sitelib_dir}) + SET (RUBY_BINDINGS_INSTALL_DIR ${ruby_relative_sitelib_dir} CACHE PATH "Ruby bindings installation directory under $RUBY_SITELIB_DIR") + MARK_AS_ADVANCED (RUBY_BINDINGS_INSTALL_DIR) + + INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/gazeboc.so + DESTINATION ${RUBY_BINDINGS_INSTALL_DIR} ) + + ELSE (SWIG_FOUND) + MESSAGE (STATUS "Ruby bindings for Gazebo will not be built - could not find Swig") + ENDIF (SWIG_FOUND) + ELSE (BUILD_RUBY_BINDINGS) + MESSAGE (STATUS "Ruby bindings for Gazebo will not be built - disabled by user") + ENDIF (BUILD_RUBY_BINDINGS) +ELSE (RUBY_FOUND) + MESSAGE (STATUS "Ruby bindings for Gazebo will not be built - could not find Ruby") +ENDIF (RUBY_FOUND) + + Added: code/gazebo/trunk/libgazebo/bindings/ruby/gazeboc.i =================================================================== --- code/gazebo/trunk/libgazebo/bindings/ruby/gazeboc.i (rev 0) +++ code/gazebo/trunk/libgazebo/bindings/ruby/gazeboc.i 2009-07-09 13:40:24 UTC (rev 7960) @@ -0,0 +1,77 @@ +%module gazeboc + + +//including these types to automatically have them converted +%include "std_vector.i" +%include "std_string.i" +%include "std_map.i" + + +%exception { + try { + $action + } + catch (std::string er) { + rb_raise(rb_eRuntimeError,er.c_str()); + } +} + +%apply const std::string& {std::string* id}; + + + + +#define TESTING 1 + +/****************************************** + + C++ to RUBY (Ruby reads) + $1 C++ types + $result Ruby types + +******************************************/ + +/* + + + +// C to RUBY (ruby reads) basic types +//TODO: the unsigned long long stuff is correct? +%typemap(out) uint8_t +{ + $result = UINT2NUM((unsigned char) $1); +} + +%typemap(out) uint16_t +{ + $result = UINT2NUM((unsigned long) $1); +} + +%typemap(out) uint32_t +{ + $result = UINT2NUM((long) (unsigned long long) $1); +} + +//used by fiducial id (signed as -1 can be used) +%typemap(out) int32_t +{ + $result = INT2NUM((long) (long long) $1); +} + +*/ + + + + +//The files we are wrapping. Must come last +%{ +#include "gazebo.h" +#include "IfaceFactory.hh" + +%} + +//this is what we are going to wrap +%include "gazebo.h" +%include "IfaceFactory.hh" + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge _______________________________________________ Playerstage-commit mailing list Playerstage-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/playerstage-commit