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