Revision: 4461
          http://playerstage.svn.sourceforge.net/playerstage/?rev=4461&view=rev
Author:   gbiggs
Date:     2008-03-30 19:37:30 -0700 (Sun, 30 Mar 2008)

Log Message:
-----------
Fixed building python bindings.

Modified Paths:
--------------
    code/player/branches/cmake/CMakeLists.txt
    code/player/branches/cmake/CMake_Todo.txt
    
code/player/branches/cmake/client_libs/libplayerc/bindings/python/CMakeLists.txt
    code/player/branches/cmake/client_libs/libplayerc/bindings/python/playerc.i

Modified: code/player/branches/cmake/CMakeLists.txt
===================================================================
--- code/player/branches/cmake/CMakeLists.txt   2008-03-29 02:30:52 UTC (rev 
4460)
+++ code/player/branches/cmake/CMakeLists.txt   2008-03-31 02:37:30 UTC (rev 
4461)
@@ -4,7 +4,7 @@
 PROJECT (Player)
 # Set the package version
 SET (PLAYER_VERSION 2.1.0 CACHE STRING "Player distribution version")
-SET (PLAYER_API_VERSION 2.1.0 CACHE STRING "Player API version")
+SET (PLAYER_API_VERSION 2.1 CACHE STRING "Player API version")
 MESSAGE (STATUS "${PROJECT_NAME} version ${PLAYER_VERSION}")
 
 # Set where to find our internal CMake scripts

Modified: code/player/branches/cmake/CMake_Todo.txt
===================================================================
--- code/player/branches/cmake/CMake_Todo.txt   2008-03-29 02:30:52 UTC (rev 
4460)
+++ code/player/branches/cmake/CMake_Todo.txt   2008-03-31 02:37:30 UTC (rev 
4461)
@@ -1,4 +1,4 @@
-- Python bindings for libplayerc (or c++?)
+- Fix installation of python bindings to install to a less-generic location 
(use distutils to install if possible)
 - Java bindings for core, xdr, tcp, etc
 - Make sure all the various package searches are actually performed and 
options are available to change install paths of them
 - Get CMake book, read it, go through all cmake files and clean up the mess 
I've made

Modified: 
code/player/branches/cmake/client_libs/libplayerc/bindings/python/CMakeLists.txt
===================================================================
--- 
code/player/branches/cmake/client_libs/libplayerc/bindings/python/CMakeLists.txt
    2008-03-29 02:30:52 UTC (rev 4460)
+++ 
code/player/branches/cmake/client_libs/libplayerc/bindings/python/CMakeLists.txt
    2008-03-31 02:37:30 UTC (rev 4461)
@@ -11,24 +11,38 @@
 
             FIND_PACKAGE (PythonLibs)
             INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_PATH})
+            INCLUDE_DIRECTORIES (${PROJECT_SOURCE_DIR})
+            INCLUDE_DIRECTORIES (${PROJECT_BINARY_DIR})
+            INCLUDE_DIRECTORIES (${PROJECT_SOURCE_DIR}/client_libs/libplayerc)
 
-            INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR})
-
             SET (CMAKE_SWIG_FLAGS "")
 
             # Generate player_oo.i from playerc.h
-            SET (player_oo_i "${CMAKE_CURRENT_BINARY_DIR}/player_oo.i")
-            ADD_CUSTOM_COMMAND (OUTPUT ${player_oo_i}
-                COMMAND python 
${CMAKE_CURRENT_SOURCE_DIR}/playerc_swig_parse.py 
${PROJECT_SOURCE_DIR}/client_libs/libplayerc/playerc.h ${player_oo_i}
+            SET (playerc_oo_i "${CMAKE_CURRENT_BINARY_DIR}/playerc_oo.i")
+            ADD_CUSTOM_COMMAND (OUTPUT ${playerc_oo_i}
+                COMMAND ${PYTHON_EXECUTABLE} 
${CMAKE_CURRENT_SOURCE_DIR}/playerc_swig_parse.py 
${PROJECT_SOURCE_DIR}/client_libs/libplayerc/playerc.h ${playerc_oo_i}
                 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
                 VERBATIM
             )
+            # Empty target to ensure playerc_oo.i gets created
+            ADD_CUSTOM_TARGET (playerc_oo_i_target ALL
+                DEPENDS ${playerc_oo_i})
+            # Copy playerc.i to the build directory
+            SET (playerc_i_in "${CMAKE_CURRENT_SOURCE_DIR}/playerc.i")
+            SET (playerc_i "${CMAKE_CURRENT_BINARY_DIR}/playerc.i")
+            CONFIGURE_FILE (${playerc_i_in} ${playerc_i} COPYONLY)
 
-            SWIG_ADD_MODULE (playerc python ${player_oo_i})
+            SWIG_ADD_MODULE (playerc python ${playerc_i})
             SWIG_LINK_LIBRARIES (playerc ${PYTHON_LIBRARIES})
+            ADD_DEPENDENCIES (${SWIG_MODULE_playerc_REAL_NAME} 
playerc_oo_i_target)
+            TARGET_LINK_LIBRARIES (${SWIG_MODULE_playerc_REAL_NAME} playerxdr 
playerc playerjpeg jpeg playererror)
 
             # Generate the set up script
-            CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/setup.py.cmake 
${CMAKE_CURRENT_BINARY_DIR}/setup.py)
+#             CONFIGURE_FILE (${CMAKE_CURRENT_SOURCE_DIR}/setup.py.cmake 
${CMAKE_CURRENT_BINARY_DIR}/setup.py)
+#             INSTALL (SCRIPT 
${PLAYER_CMAKE_DIR}/internal/InstallPythonModule.cmake)
+
+            INSTALL (FILES ${CMAKE_CURRENT_BINARY_DIR}/playerc.py 
${CMAKE_CURRENT_BINARY_DIR}/_playerc.so
+                DESTINATION lib/python/site-packages)
         ELSE (SWIG_FOUND)
             MESSAGE (STATUS "Python bindings for C client library will not be 
built - could not find Swig")
         ENDIF (SWIG_FOUND)

Modified: 
code/player/branches/cmake/client_libs/libplayerc/bindings/python/playerc.i
===================================================================
--- code/player/branches/cmake/client_libs/libplayerc/bindings/python/playerc.i 
2008-03-29 02:30:52 UTC (rev 4460)
+++ code/player/branches/cmake/client_libs/libplayerc/bindings/python/playerc.i 
2008-03-31 02:37:30 UTC (rev 4461)
@@ -28,7 +28,7 @@
     memset(buffer, 0, blength );
 
     //result is of type playerc_rfidtag_t
-    unsigned int j;    
+    unsigned int j;
     unsigned int guid_count=$1[i].guid_count;
 
     //copy the bytes into the buffer
@@ -392,8 +392,8 @@
 
 // Include Player header so we can pick up some constants and generate
 // wrapper code for structs
-%include "../../../../libplayercore/player.h"
-%include "../../../../libplayercore/player_interfaces.h"
+%include "libplayercore/player.h"
+%include "libplayercore/player_interfaces.h"
 
 
 // Use this for regular c-bindings;
@@ -436,7 +436,7 @@
        PyDict_SetItem(dict, PyString_FromString("subtype"), 
PyLong_FromLong(entry.subtype));
        PyDict_SetItem(dict, PyString_FromString("timestamp_sec"), 
PyLong_FromLong(entry.timestamp_sec));
        PyDict_SetItem(dict, PyString_FromString("timestamp_usec"), 
PyLong_FromLong(entry.timestamp_usec));
-       
+
        data = NULL;
     switch(entry.subtype)
     {
@@ -489,7 +489,7 @@
        {
                PyList_Append(copy, PyList_GetItem(list, i));
        }
-       
+
        Py_DECREF(list);
        list = NULL;
        return copy;
@@ -521,7 +521,7 @@
        PyDict_SetItem(dict, PyString_FromString("subtype"), 
PyLong_FromLong(entry->subtype));
        PyDict_SetItem(dict, PyString_FromString("timestamp_sec"), 
PyLong_FromLong(entry->timestamp_sec));
        PyDict_SetItem(dict, PyString_FromString("timestamp_usec"), 
PyLong_FromLong(entry->timestamp_usec));
-    
+
     switch(entry->subtype)
     {
        case PLAYERC_BLACKBOARD_DATA_SUBTYPE_NONE:
@@ -549,17 +549,17 @@
        default:
                data = Py_None;
        break;
-       
+
     }
-    
-    PyDict_SetItem(dict, PyString_FromString("data"), data);    
+
+    PyDict_SetItem(dict, PyString_FromString("data"), data);
     free(entry->key);
     free(entry->group);
     free(entry->data);
     free(entry);
     return dict;
   }
-  
+
   PyObject *set_entry(PyObject *dict)
   {
        PyObject *key;
@@ -573,7 +573,7 @@
        int i, result;
        double d;
        int length;
-       
+
        if (!PyDict_Check(dict))
        {
                printf("Expected a dictionary object.\n");
@@ -582,7 +582,7 @@
 
     player_blackboard_entry_t entry;
     memset(&entry, 0, sizeof(entry));
-    
+
     key = PyDict_GetItem(dict, PyString_FromString("key"));
     group = PyDict_GetItem(dict, PyString_FromString("group"));
        type = PyDict_GetItem(dict, PyString_FromString("type"));
@@ -590,49 +590,49 @@
        timestamp_sec = PyDict_GetItem(dict, 
PyString_FromString("timestamp_sec"));
        timestamp_usec = PyDict_GetItem(dict, 
PyString_FromString("timestamp_usec"));
        data = PyDict_GetItem(dict, PyString_FromString("data"));
-       
+
        if (key == NULL || group == NULL || type == NULL || subtype == NULL || 
timestamp_sec == NULL || timestamp_usec == NULL || data == NULL)
        {
                printf("Dictionary object missing keys.\n");
                return PyLong_FromLong(-1);
        }
-       
+
        if (!PyString_Check(key))
        {
                printf("key should be a string type.\n");
                return PyLong_FromLong(-1);
        }
-       
+
        if (!PyString_Check(group))
        {
                printf("group should be a string type.\n");
                return PyLong_FromLong(-1);
        }
-       
+
        if (!PyLong_Check(type))
        {
                printf("type should be a long type.\n");
                return PyLong_FromLong(-1);
        }
-       
+
        if (!PyLong_Check(subtype))
        {
                printf("subtype should be a long type.\n");
                return PyLong_FromLong(-1);
        }
-       
+
        if (!PyLong_Check(timestamp_sec))
        {
                printf("timestamp_sec should be a long type.\n");
                return PyLong_FromLong(-1);
        }
-       
+
        if (!PyLong_Check(timestamp_usec))
        {
                printf("timestamp_usec should be a long type.\n");
                return PyLong_FromLong(-1);
        }
-       
+
        entry.key = PyString_AsString(key);
        entry.key_count = strlen(entry.key) + 1;
        entry.group = PyString_AsString(key);
@@ -641,7 +641,7 @@
        entry.subtype = PyInt_AsLong(subtype);
        entry.timestamp_sec = PyInt_AsLong(timestamp_sec);
        entry.timestamp_usec = PyInt_AsLong(timestamp_usec);
-    
+
     switch (entry.subtype)
     {
        case PLAYERC_BLACKBOARD_DATA_SUBTYPE_NONE:
@@ -713,14 +713,14 @@
        return PyLong_FromLong(-1);
     }
     free(entry.data);
-    
+
     return PyLong_FromLong(0);
   }
 }
 
 %{
 // This code overrides the default swig wrapper. We use a different callback 
function for the python interface.
-// It performs the same functionality, but points the callback function to the 
new python one. 
+// It performs the same functionality, but points the callback function to the 
new python one.
 playerc_blackboard_t *python_playerc_blackboard_create(playerc_client_t 
*client, int index)
 {
       playerc_blackboard_t *device= playerc_blackboard_create(client, index);
@@ -728,10 +728,10 @@
       {
         return NULL;
       }
-      
+
       device->on_blackboard_event = 
playerc_blackboard_python_on_blackboard_event;
       return device;
-       
+
 }
 #undef new_playerc_blackboard
 #define new_playerc_blackboard python_playerc_blackboard_create
@@ -744,7 +744,7 @@
   {
        Py_DECREF((PyObject*)device->py_private);
   }
-  free(device);     
+  free(device);
 }
 #undef del_playerc_blackboard
 #define del_playerc_blackboard python_playerc_blackboard_destroy


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit

Reply via email to