From 6460f4d8e8ca25b1141f454fa93dee433c60cfb2 Mon Sep 17 00:00:00 2001 From: Andrew Stitcher Date: Wed, 4 Dec 2013 22:19:02 +0000 Subject: QPID-5394: Fix the binding dependencies so that we no longer keep on rebuilding the python swig bindings unnecessarily git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1547933 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/bindings/qmf2/python/CMakeLists.txt | 25 ++++++++++++----- qpid/cpp/bindings/qmf2/python/cqmf2.i | 41 ++++++++++++++++++++++++++++ qpid/cpp/bindings/qmf2/python/python.i | 41 ---------------------------- 3 files changed, 59 insertions(+), 48 deletions(-) create mode 100644 qpid/cpp/bindings/qmf2/python/cqmf2.i delete mode 100644 qpid/cpp/bindings/qmf2/python/python.i (limited to 'qpid/cpp/bindings/qmf2/python') diff --git a/qpid/cpp/bindings/qmf2/python/CMakeLists.txt b/qpid/cpp/bindings/qmf2/python/CMakeLists.txt index 851a33f4e4..b000937ee6 100644 --- a/qpid/cpp/bindings/qmf2/python/CMakeLists.txt +++ b/qpid/cpp/bindings/qmf2/python/CMakeLists.txt @@ -20,13 +20,25 @@ ##------------------------------------------------------ ## Use Swig to generate a literal binding to the C++ API ##------------------------------------------------------ -set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/python.i PROPERTIES CPLUSPLUS ON) -set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/python.i PROPERTIES SWIG_FLAGS "-I${qpid-cpp_SOURCE_DIR}/include;-I${qpid-cpp_SOURCE_DIR}/bindings") -swig_add_module(cqmf2_python python ${CMAKE_CURRENT_SOURCE_DIR}/python.i) -swig_link_libraries(cqmf2_python qmf2 ${PYTHON_LIBRARIES}) +# NB For python the SWIG module name must have the same name as the input .i file for CMake to generate the +# correct dependencies -set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-fno-strict-aliasing -I${PYTHON_INCLUDE_PATH} -I${qpid-cpp_SOURCE_DIR}/include") +set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/cqmf2.i PROPERTIES + CPLUSPLUS ON + SWIG_FLAGS "-I${qpid-cpp_SOURCE_DIR}/include;-I${qpid-cpp_SOURCE_DIR}/bindings") + +list(APPEND SWIG_MODULE_cqmf2_EXTRA_DEPS + ${CMAKE_SOURCE_DIR}/include/qmf/qmf2.i + ${CMAKE_SOURCE_DIR}/include/qpid/swig_python_typemaps.i +) +swig_add_module(cqmf2 python ${CMAKE_CURRENT_SOURCE_DIR}/cqmf2.i) +swig_link_libraries(cqmf2 qmf2 ${PYTHON_LIBRARIES}) + +set_source_files_properties(${swig_generated_file_fullname} PROPERTIES COMPILE_FLAGS "-fno-strict-aliasing") +include_directories(${PYTHON_INCLUDE_PATH} + ${qpid-cpp_SOURCE_DIR}/include + ${qpid-cpp_SOURCE_DIR}/bindings) # Move source into binary dir so compiled .pyc,pyo files will be in binary dir. # NOTE: not using the file(COPY) command as it is not available in cmake 2.6 @@ -55,8 +67,7 @@ install(FILES COMPONENT ${QPID_COMPONENT_CLIENT} ) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/_cqmf2_python.so - RENAME _cqmf2.so +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/_cqmf2.so DESTINATION ${PYTHON_SITEARCH_PACKAGES} COMPONENT ${QPID_COMPONENT_CLIENT} ) diff --git a/qpid/cpp/bindings/qmf2/python/cqmf2.i b/qpid/cpp/bindings/qmf2/python/cqmf2.i new file mode 100644 index 0000000000..6b5326f8cf --- /dev/null +++ b/qpid/cpp/bindings/qmf2/python/cqmf2.i @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +%module cqmf2 +%include "std_string.i" +%include "qpid/swig_python_typemaps.i" + +/* Define the general-purpose exception handling */ +%exception { + std::string error; + Py_BEGIN_ALLOW_THREADS; + try { + $action + } catch (qpid::types::Exception& ex) { + error = ex.what(); + } + Py_END_ALLOW_THREADS; + if (!error.empty()) { + PyErr_SetString(PyExc_RuntimeError, error.c_str()); + return NULL; + } +} + +%include "qmf/qmf2.i" + diff --git a/qpid/cpp/bindings/qmf2/python/python.i b/qpid/cpp/bindings/qmf2/python/python.i deleted file mode 100644 index 6b5326f8cf..0000000000 --- a/qpid/cpp/bindings/qmf2/python/python.i +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -%module cqmf2 -%include "std_string.i" -%include "qpid/swig_python_typemaps.i" - -/* Define the general-purpose exception handling */ -%exception { - std::string error; - Py_BEGIN_ALLOW_THREADS; - try { - $action - } catch (qpid::types::Exception& ex) { - error = ex.what(); - } - Py_END_ALLOW_THREADS; - if (!error.empty()) { - PyErr_SetString(PyExc_RuntimeError, error.c_str()); - return NULL; - } -} - -%include "qmf/qmf2.i" - -- cgit v1.2.1