Author: kkaempf Date: Fri May 16 13:37:56 2008 New Revision: 47608 URL: http://svn.opensuse.org/viewcvs/yast?rev=47608&view=rev Log: add support for Perl and Python Added: trunk/libyui-bindings/swig/perl/ trunk/libyui-bindings/swig/perl/CMakeLists.txt trunk/libyui-bindings/swig/perl/examples/ trunk/libyui-bindings/swig/perl/examples/loading.pl trunk/libyui-bindings/swig/python/ trunk/libyui-bindings/swig/python/CMakeLists.txt trunk/libyui-bindings/swig/python/examples/ trunk/libyui-bindings/swig/python/examples/loading.py Modified: trunk/libyui-bindings/swig/CMakeLists.txt trunk/libyui-bindings/swig/ruby/CMakeLists.txt trunk/libyui-bindings/swig/yui.i Modified: trunk/libyui-bindings/swig/CMakeLists.txt URL: http://svn.opensuse.org/viewcvs/yast/trunk/libyui-bindings/swig/CMakeLists.t... ============================================================================== --- trunk/libyui-bindings/swig/CMakeLists.txt (original) +++ trunk/libyui-bindings/swig/CMakeLists.txt Fri May 16 13:37:56 2008 @@ -1,7 +1,31 @@ +FIND_PACKAGE(SWIG) -ADD_SUBDIRECTORY(ruby) +MESSAGE(STATUS "Found SWIG version ${SWIG_VERSION}") -#ADD_SUBDIRECTORY(python) +# +# Generic setting for all generated bindings +# +SET( SWIG_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/yui.i" ) -#ADD_SUBDIRECTORY(perl5) +FIND_PACKAGE(Ruby) +FIND_PACKAGE(PythonLibs) + +# doesn't work yet :-( +# CMake problem, FindPerlLibs.cmake is in a _really_ bad, bad state :-(( +# see e.g. http://www.vtk.org/Bug/print_bug_page.php?bug_id=3665 +#FIND_PACKAGE(PerlLibs) +FIND_PACKAGE(Perl) + +IF (RUBY_LIBRARY AND RUBY_INCLUDE_PATH) + ADD_SUBDIRECTORY(ruby) +ENDIF(RUBY_LIBRARY AND RUBY_INCLUDE_PATH) + +IF (PYTHON_LIBRARY) + ADD_SUBDIRECTORY(python) +ENDIF(PYTHON_LIBRARY) + +IF (PERL_EXECUTABLE) + MESSAGE(STATUS "Perl executable: ${PERL_EXECUTABLE}") + ADD_SUBDIRECTORY(perl) +ENDIF (PERL_EXECUTABLE) Added: trunk/libyui-bindings/swig/perl/CMakeLists.txt URL: http://svn.opensuse.org/viewcvs/yast/trunk/libyui-bindings/swig/perl/CMakeLi... ============================================================================== --- trunk/libyui-bindings/swig/perl/CMakeLists.txt (added) +++ trunk/libyui-bindings/swig/perl/CMakeLists.txt Fri May 16 13:37:56 2008 @@ -0,0 +1,54 @@ +# +# cmake description for libyui Perl bindings +# +# !!Attn!!: This creates two files +# 1. _yui.so +# 2. yui.pm +# and the .pm file gets loaded. See bindings/perl/tests. +# + +# SWIG_OUPUT is per-target +SET( SWIG_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/yui_perl.cxx" ) + +EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -e "use Config; print $Config{ccflags}" OUTPUT_VARIABLE PERL_CCFLAGS) +EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -e "use Config; print $Config{archlib}."/CORE"" OUTPUT_VARIABLE PERL_CORE_DIR) +EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -e "use Config; print $Config{installvendorarch}" OUTPUT_VARIABLE PERL_VENDOR_ARCH) +EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -e "use Config; print $Config{installvendorlib}" OUTPUT_VARIABLE PERL_VENDOR_LIB) +EXECUTE_PROCESS(COMMAND ${PERL_EXECUTABLE} -e "use Config; print $Config{ccdlflags}" OUTPUT_VARIABLE PERL_LINK_FLAGS) + +MESSAGE(STATUS "Perl executable: ${PERL_EXECUTABLE}") +MESSAGE(STATUS "Perl core dir: ${PERL_CORE_DIR}") +MESSAGE(STATUS "Perl vendor arch dir: ${PERL_VENDOR_ARCH}") +MESSAGE(STATUS "Perl vendor lib dir: ${PERL_VENDOR_LIB}") + +ADD_DEFINITIONS( ${PERL_CCFLAGS} -Wno-unused -Wno-error ) +LINK_DIRECTORIES( ${PERL_CORE_DIR} ) + +if(COMMAND cmake_policy) + cmake_policy(SET CMP0003 NEW) +endif(COMMAND cmake_policy) + +ADD_CUSTOM_COMMAND ( + OUTPUT ${SWIG_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E echo_append "Creating wrapper code for Perl ..." + COMMAND ${SWIG_EXECUTABLE} -c++ -perl -features autodoc -o ${SWIG_OUTPUT} -I${LIBYUI_INCLUDE_DIR} ${SWIG_INPUT} + COMMAND ${CMAKE_COMMAND} -E echo "Done." + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../*.i +) + +SET(yui_perl_SRCS ${SWIG_OUTPUT} ) + +ADD_LIBRARY( yui_perl SHARED ${yui_perl_SRCS} ) +# name it 'yui.so' +# and don't prefix with 'lib' +SET_TARGET_PROPERTIES( yui_perl PROPERTIES PREFIX "" OUTPUT_NAME "yui") + +INCLUDE_DIRECTORIES( ${PERL_CORE_DIR} ${LIBYUI_INCLUDE_DIR}) + +TARGET_LINK_LIBRARIES( yui_perl ${LIBYUI_LIBRARY} ) +TARGET_LINK_LIBRARIES( yui_perl ${PERL_LIBRARY} ) + +INSTALL(TARGETS yui_perl LIBRARY DESTINATION ${PERL_VENDOR_ARCH} ) + +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/yui.pm DESTINATION ${PERL_VENDOR_LIB} ) Added: trunk/libyui-bindings/swig/perl/examples/loading.pl URL: http://svn.opensuse.org/viewcvs/yast/trunk/libyui-bindings/swig/perl/example... ============================================================================== --- trunk/libyui-bindings/swig/perl/examples/loading.pl (added) +++ trunk/libyui-bindings/swig/perl/examples/loading.pl Fri May 16 13:37:56 2008 @@ -0,0 +1,6 @@ +#!/usr/bin/perl + +use lib '../../../build/bindings/perl'; + +use yui; + Added: trunk/libyui-bindings/swig/python/CMakeLists.txt URL: http://svn.opensuse.org/viewcvs/yast/trunk/libyui-bindings/swig/python/CMake... ============================================================================== --- trunk/libyui-bindings/swig/python/CMakeLists.txt (added) +++ trunk/libyui-bindings/swig/python/CMakeLists.txt Fri May 16 13:37:56 2008 @@ -0,0 +1,44 @@ +# +# cmake description for libyui Python bindings +# +# !!Attn!!: This creates two files +# 1. yui.so +# 2. yui.py +# and the .py file gets imported. See bindings/python/tests. +# + +# SWIG_OUPUT is per-target +SET( SWIG_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/yui_python.cxx" ) + + +FIND_PACKAGE(PythonInterp) +EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} -c "import sys; sys.stdout.write(sys.path[2])" OUTPUT_VARIABLE PYTHON_LIB_DIR) + +MESSAGE(STATUS "Python executable: ${PYTHON_EXECUTABLE}") +MESSAGE(STATUS "Python lib dir: ${PYTHON_LIB_DIR}") +MESSAGE(STATUS "Python site dir: ${PYTHON_LIB_DIR}/site-packages") + +ADD_CUSTOM_COMMAND ( + OUTPUT ${SWIG_OUTPUT} + COMMAND ${CMAKE_COMMAND} -E echo_append "Creating wrapper code for Python ..." + COMMAND ${SWIG_EXECUTABLE} -c++ -python -features autodoc -o ${SWIG_OUTPUT} -I${LIBYUI_INCLUDE_DIR} ${SWIG_INPUT} + COMMAND ${CMAKE_COMMAND} -E echo "Done." + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../*.i +) + +SET(yui_python_SRCS ${SWIG_OUTPUT} ) + +ADD_LIBRARY( yui_python SHARED ${yui_python_SRCS} ) +# name it '_yui.so' +# and don't prefix with 'lib' +SET_TARGET_PROPERTIES( yui_python PROPERTIES PREFIX "" OUTPUT_NAME "_yui") + +INCLUDE_DIRECTORIES( ${PYTHON_INCLUDE_PATH} ${LIBYUI_INCLUDE_DIR} ) + +TARGET_LINK_LIBRARIES( yui_python ${LIBYUI_LIBRARY} ) +TARGET_LINK_LIBRARIES( yui_python ${PYTHON_LIBRARIES} ) + +INSTALL(TARGETS yui_python LIBRARY DESTINATION ${PYTHON_LIB_DIR}/site-packages) + +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/yui.py DESTINATION ${PYTHON_LIB_DIR}/site-packages ) Added: trunk/libyui-bindings/swig/python/examples/loading.py URL: http://svn.opensuse.org/viewcvs/yast/trunk/libyui-bindings/swig/python/examp... ============================================================================== --- trunk/libyui-bindings/swig/python/examples/loading.py (added) +++ trunk/libyui-bindings/swig/python/examples/loading.py Fri May 16 13:37:56 2008 @@ -0,0 +1,3 @@ +import sys +sys.path.append('../../../build/bindings/python') +import yui Modified: trunk/libyui-bindings/swig/ruby/CMakeLists.txt URL: http://svn.opensuse.org/viewcvs/yast/trunk/libyui-bindings/swig/ruby/CMakeLi... ============================================================================== --- trunk/libyui-bindings/swig/ruby/CMakeLists.txt (original) +++ trunk/libyui-bindings/swig/ruby/CMakeLists.txt Fri May 16 13:37:56 2008 @@ -1,38 +1,30 @@ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing") -FIND_PACKAGE(Ruby REQUIRED) - EXECUTE_PROCESS(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "print Config::CONFIG['vendorarchdir']" OUTPUT_VARIABLE RUBY_VENDOR_ARCH_DIR) MESSAGE(STATUS "Ruby executable: ${RUBY_EXECUTABLE}") MESSAGE(STATUS "Ruby vendor arch dir: ${RUBY_VENDOR_ARCH_DIR}") MESSAGE(STATUS "Ruby include path: ${RUBY_INCLUDE_PATH}") -SET( SWIG_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/yui_wrap.cxx" ) -SET( SWIG_INPUT "${CMAKE_CURRENT_SOURCE_DIR}/../yui.i" ) +SET( SWIG_OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/yui_ruby.cxx" ) ADD_CUSTOM_COMMAND ( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/yui_wrap.cxx + OUTPUT ${SWIG_OUTPUT} COMMAND ${CMAKE_COMMAND} -E echo_append "Creating wrapper code for ruby..." - COMMAND ${SWIG_EXECUTABLE} -c++ -ruby -autorename -xmlout ${CMAKE_CURRENT_BINARY_DIR}/parse.xml -o ${SWIG_OUTPUT} -I${LIBYUI_INCLUDE_DIR} ${SWIG_INPUT} + COMMAND ${SWIG_EXECUTABLE} -c++ -ruby -autorename -o ${SWIG_OUTPUT} -I${LIBYUI_INCLUDE_DIR} ${SWIG_INPUT} COMMAND ${CMAKE_COMMAND} -E echo "Done." WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/../*.i ) -ADD_CUSTOM_TARGET( glue - DEPENDS ${SWIG_OUTPUT} -) +ADD_LIBRARY( yui_ruby SHARED ${SWIG_OUTPUT} ) +INCLUDE_DIRECTORIES( ${RUBY_INCLUDE_PATH} ${LIBYUI_INCLUDE_DIR} ) + +SET_TARGET_PROPERTIES( yui_ruby PROPERTIES PREFIX "" OUTPUT_NAME "yui") -ADD_LIBRARY( yui SHARED ${SWIG_OUTPUT} ) -SET_TARGET_PROPERTIES( yui PROPERTIES PREFIX "" ) -ADD_DEPENDENCIES( yui glue ) - -INCLUDE_DIRECTORIES( ${RUBY_INCLUDE_PATH} ) -INCLUDE_DIRECTORIES( ${LIBYUI_INCLUDE_DIR} ) -TARGET_LINK_LIBRARIES( yui ${LIBYUI_LIBRARY} ) -TARGET_LINK_LIBRARIES( yui ${RUBY_LIBRARY} ) +TARGET_LINK_LIBRARIES( yui_ruby ${LIBYUI_LIBRARY} ) +TARGET_LINK_LIBRARIES( yui_ruby ${RUBY_LIBRARY} ) -INSTALL(TARGETS yui LIBRARY DESTINATION ${RUBY_VENDOR_ARCH_DIR}) +INSTALL(TARGETS yui_ruby LIBRARY DESTINATION ${RUBY_VENDOR_ARCH_DIR}) Modified: trunk/libyui-bindings/swig/yui.i URL: http://svn.opensuse.org/viewcvs/yast/trunk/libyui-bindings/swig/yui.i?rev=47... ============================================================================== --- trunk/libyui-bindings/swig/yui.i (original) +++ trunk/libyui-bindings/swig/yui.i Fri May 16 13:37:56 2008 @@ -91,6 +91,14 @@ return NULL; } +#if 0 +template < typename T > +class intrusive_ptr { + public: + T *operator->(); +}; +#endif + %} %define DEFINE_PTR_TYPE(name) @@ -103,21 +111,14 @@ %rename("==") "operator=="; -template < typename T > -class intrusive_ptr { - public: - T *operator->(); -}; - - %include "std_string.i" %include "std_list.i" +#ifdef SWIGPERL5 +/* %include "std/std_set.i" # doesn't compile ?! */ +#else %include "std_set.i" -%include "stl.i" - -#ifdef SWIGPYTHON -%include "python/callbacks.i" #endif +%include "stl.i" class Exception; %include YUI.h @@ -208,7 +209,9 @@ %include YWizard.h %extend YEvent { +#ifdef SWIGRUBY VALUE mywidget() { return INT2FIX( $self->widget() ); } +#endif } %extend YWidget { -- To unsubscribe, e-mail: yast-commit+unsubscribe@opensuse.org For additional commands, e-mail: yast-commit+help@opensuse.org