From 0eb0768a4c66543b4ce716869eea744cb09b55ad Mon Sep 17 00:00:00 2001 From: Johannes Huber Date: Thu, 30 Aug 2012 14:02:44 +0200 Subject: [PATCH] Use standard cmake module to find boost python. --- CMakeLists.txt | 34 ++++---- KigConfigureChecks.cmake | 4 +- cmake/COPYING-CMAKE-SCRIPTS | 22 ------ cmake/FindBoostPython.cmake | 153 ------------------------------------ cmake/modules/FindBoostPython.cmake | 134 ------------------------------- 5 Dateien geändert, 20 Zeilen hinzugefügt(+), 327 Zeilen entfernt(-) delete mode 100644 cmake/COPYING-CMAKE-SCRIPTS delete mode 100644 cmake/FindBoostPython.cmake delete mode 100644 cmake/modules/FindBoostPython.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index ba3e377..092fde3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,6 @@ project(kig) -# -# taken from kdeedu/CMakeList.txt -# from here... -set(CMAKE_MODULE_PATH ${kig_SOURCE_DIR}/cmake ) +option(WITH_SCRIPTING "Enable python scripting support" ON) # search packages used by KDE find_package(KDE4 4.3.80 REQUIRED) @@ -30,7 +27,14 @@ include_directories (${QDBUS_INCLUDE_DIRS} ${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_D # ...to here -find_package(BoostPython) +if(WITH_SCRIPTING) + find_package(PythonLibs) + find_package(Boost COMPONENTS python) +endif(WITH_SCRIPTING) + +if(Boost_PYTHON_FOUND AND PYTHONLIBS_FOUND) + set(KIG_ENABLE_PYTHON_SCRIPTING 1) +endif(Boost_PYTHON_FOUND AND PYTHONLIBS_FOUND) kde4_no_enable_final(kig) @@ -45,14 +49,14 @@ add_subdirectory( macros ) #add_subdirectory( kfile ) add_subdirectory( data ) add_subdirectory( pykig ) -if(BOOST_PYTHON_FOUND) +if(Boost_PYTHON_FOUND AND PYTHONLIBS_FOUND) add_subdirectory( scripting ) -endif(BOOST_PYTHON_FOUND) +endif(Boost_PYTHON_FOUND AND PYTHONLIBS_FOUND) macro_display_feature_log() include_directories( ${CMAKE_SOURCE_DIR}/modes ) -if(BOOST_PYTHON_FOUND) - include_directories(${BOOST_PYTHON_INCLUDES}) -endif(BOOST_PYTHON_FOUND) +if(Boost_PYTHON_FOUND AND PYTHONLIBS_FOUND) + include_directories(${Boost_INCLUDE_DIRS} ${PYTHON_INCLUDE_DIRS}) +endif(Boost_PYTHON_FOUND AND PYTHONLIBS_FOUND) # kigpart @@ -173,7 +177,7 @@ kde4_add_ui_files(kigpart_PART_SRCS misc/kigcoordinateprecisiondialog.ui ) -if(BOOST_PYTHON_FOUND) +if(Boost_PYTHON_FOUND AND PYTHONLIBS_FOUND) set(kigpart_PART_SRCS ${kigpart_PART_SRCS} scripting/newscriptwizard.cc scripting/python_scripter.cc @@ -183,15 +187,15 @@ if(BOOST_PYTHON_FOUND) ) set_source_files_properties(scripting/python_scripter.cc PROPERTIES COMPILE_FLAGS "${KDE4_ENABLE_EXCEPTIONS}") -endif(BOOST_PYTHON_FOUND) +endif(Boost_PYTHON_FOUND AND PYTHONLIBS_FOUND) kde4_add_plugin(kigpart ${kigpart_PART_SRCS}) target_link_libraries(kigpart ${KDE4_KPARTS_LIBS} ${KDE4_KUTILS_LIBS} ) -if(BOOST_PYTHON_FOUND) - target_link_libraries(kigpart ${BOOST_PYTHON_LIBS} ${KDE4_KTEXTEDITOR_LIBS}) -endif(BOOST_PYTHON_FOUND) +if(Boost_PYTHON_FOUND AND PYTHONLIBS_FOUND) + target_link_libraries(kigpart ${Boost_PYTHON_LIBRARY} ${PYTHON_LIBRARIES} ${KDE4_KTEXTEDITOR_LIBS}) +endif(Boost_PYTHON_FOUND AND PYTHONLIBS_FOUND) install(TARGETS kigpart DESTINATION ${PLUGIN_INSTALL_DIR}) diff --git a/KigConfigureChecks.cmake b/KigConfigureChecks.cmake index fed38b3..a53ea73 100644 --- a/KigConfigureChecks.cmake +++ b/KigConfigureChecks.cmake @@ -9,8 +9,6 @@ check_function_exists(trunc HAVE_TRUNC) set(CMAKE_REQUIRED_INCLUDES) set(CMAKE_REQUIRED_LIBRARIES) -macro_optional_find_package(BoostPython) - # at the end, output the configuration configure_file( ${CMAKE_CURRENT_SOURCE_DIR}/config-kig.h.cmake @@ -18,7 +16,7 @@ configure_file( ) macro_log_feature( - BOOST_PYTHON_FOUND + Boost_PYTHON_FOUND "Boost.Python" "Kig can optionally use Boost.Python for Python scripting" "http://www.boost.org/" diff --git a/cmake/COPYING-CMAKE-SCRIPTS b/cmake/COPYING-CMAKE-SCRIPTS deleted file mode 100644 index 4b41776..0000000 --- a/cmake/COPYING-CMAKE-SCRIPTS +++ /dev/null @@ -1,22 +0,0 @@ -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - -1. Redistributions of source code must retain the copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/cmake/FindBoostPython.cmake b/cmake/FindBoostPython.cmake deleted file mode 100644 index 6d5f05e..0000000 --- a/cmake/FindBoostPython.cmake +++ /dev/null @@ -1,153 +0,0 @@ -# - Try to find the a valid boost+python combination -# Once done this will define -# -# BOOST_PYTHON_FOUND - system has a valid boost+python combination -# BOOST_PYTHON_INCLUDES - the include directory for boost+python -# BOOST_PYTHON_LIBS - the needed libs for boost+python - -# Copyright (c) 2006, Pino Toscano, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -if(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS) - # Already in cache, be silent - set(BOOST_PYTHON_FIND_QUIETLY TRUE) -endif(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS) - -# some needed includes -include(CheckCXXSourceCompiles) -include(CheckIncludeFileCXX) -include(CheckLibraryExists) - -find_package(PkgConfig) - -# reset vars -set(BOOST_PYTHON_INCLUDES) -set(BOOST_PYTHON_LIBS) - -# handy arrays -set(PYTHON_VERSIONS "python;python2.7;python2.6;python2.5;python2.4;python2.3;python2.2") -set(PYTHON_INCLUDE_DIRS "/usr/include/$pyver;/usr/local/include/$pyver;/usr/$pyver/include;/usr/local/$pyver/include;$prefix/include/$pyver;$prefix/$pyver/include") -set(PYTHON_LIBRARY_DIRS "/usr/lib${LIB_SUFFIX};/usr/local/lib${LIB_SUFFIX};/usr/lib${LIB_SUFFIX}/$pyver/config") -set(PYTHON_LIBS "boost_python-gcc-mt;boost_python-mt;boost_python-gcc-mt-1_33;boost_python-gcc-mt-1_33_1;boost_python;boost_python-gcc-mt-1_32;boost_python") - -# 1st: check for boost/shared_ptr.hpp -check_include_file_cxx(boost/shared_ptr.hpp HAVE_BOOST_SHARED_PTR_HPP) - -if(HAVE_BOOST_SHARED_PTR_HPP) - - # try pkg-config next - set(_found FALSE) - foreach(_pyver ${PYTHON_VERSIONS}) - if(NOT _found) - pkg_check_modules(_python QUIET ${_pyver}) - if (_python_FOUND) - find_package(Boost 1.33 COMPONENTS python) - if (Boost_PYTHON_FOUND) - set(_found TRUE) - set(BOOST_PYTHON_INCLUDES "${_python_INCLUDE_DIRS};${Boost_INCLUDE_DIRS}") - set(BOOST_PYTHON_LIBS "${_python_LDFLAGS} ${Boost_PYTHON_LIBRARY}") - endif(Boost_PYTHON_FOUND) - endif(_python_FOUND) - endif(NOT _found) - endforeach(_pyver ${PYTHON_VERSIONS}) - -endif(HAVE_BOOST_SHARED_PTR_HPP) - -if(HAVE_BOOST_SHARED_PTR_HPP AND NOT _found) - # save the old flags and setting the new ones - set(_save_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}") - - foreach(_pyver ${PYTHON_VERSIONS}) - if(NOT _found) - foreach(_pydir ${PYTHON_INCLUDE_DIRS}) - - if(NOT _found) - string(REPLACE "$pyver" "${_pyver}" _pydir ${_pydir}) - string(REPLACE "$prefix" "${CMAKE_INSTALL_PREFIX}" _pydir ${_pydir}) - - if(EXISTS ${_pydir}) - if(EXISTS ${_pydir}/Python.h) - - foreach(_pylibdir ${PYTHON_LIBRARY_DIRS}) - - if(NOT _found) - string(REPLACE "$pyver" ${_pyver} _pylibdir ${_pylibdir}) - - foreach(_pblib ${PYTHON_LIBS}) - - if(NOT _found) - - set(CMAKE_REQUIRED_FLAGS "-L${_pylibdir}") - set(CMAKE_REQUIRED_INCLUDES ${_pydir}) - set(CMAKE_REQUIRED_LIBRARIES ${_pblib} ${_pyver}) - - check_cxx_source_compiles(" -#include -const char* greet() { return \"Hello world!\"; } -BOOST_PYTHON_MODULE(hello) { boost::python::def(\"greet\", greet); } - -int main() { return 0; } - -// some vars, in case of the compilation fail... -// python include dir: ${_pydir} -// python lib dir: ${_pylibdir} -// boost python lib: ${_pblib} - -" boost_python_${_pylibdir}_${_pydir}_${_pblib}_compile ) - - set(CMAKE_REQUIRED_FLAGS) - set(CMAKE_REQUIRED_INCLUDES) - set(CMAKE_REQUIRED_LIBRARIES) - - if(boost_python_${_pylibdir}_${_pydir}_${_pblib}_compile) - - set(_found TRUE) - - set(BOOST_PYTHON_INCLUDES ${_pydir}) - set(BOOST_PYTHON_LIBS "-l${_pyver} -L${_pylibdir} -l${_pblib}") - - endif(boost_python_${_pylibdir}_${_pydir}_${_pblib}_compile) - - endif(NOT _found) - - endforeach(_pblib ${PYTHON_LIBS}) - - endif(NOT _found) - - endforeach(_pylibdir ${PYTHON_LIBRARY_DIRS}) - - endif(EXISTS ${_pydir}/Python.h) - endif(EXISTS ${_pydir}) - - endif(NOT _found) - - endforeach(_pydir ${PYTHON_INCLUDE_DIRS}) - - endif(NOT _found) - - endforeach(_pyver ${PYTHON_VERSIONS}) - - set(CMAKE_CXX_FLAGS ${_save_CMAKE_CXX_FLAGS}) - -endif(HAVE_BOOST_SHARED_PTR_HPP AND NOT _found) - -if(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS) - set(BOOST_PYTHON_FOUND TRUE) -endif(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS) - -if(BOOST_PYTHON_FOUND) - if(NOT BoostPython_FIND_QUIETLY) - message(STATUS "Found Boost+Python: libs ${BOOST_PYTHON_LIBS}, headers ${BOOST_PYTHON_INCLUDES}") - endif(NOT BoostPython_FIND_QUIETLY) - set(KIG_ENABLE_PYTHON_SCRIPTING 1) -else (BOOST_PYTHON_FOUND) - if (BoostPython_FIND_REQUIRED) - message(FATAL_ERROR "Could NOT find Boost+Python") - endif(BoostPython_FIND_REQUIRED) - set(KIG_ENABLE_PYTHON_SCRIPTING 0) -endif(BOOST_PYTHON_FOUND) - -mark_as_advanced(BOOST_PYTHON_INCLUDES BOOST_PYTHON_LIBS) diff --git a/cmake/modules/FindBoostPython.cmake b/cmake/modules/FindBoostPython.cmake deleted file mode 100644 index 72aae54..0000000 --- a/cmake/modules/FindBoostPython.cmake +++ /dev/null @@ -1,134 +0,0 @@ -# - Try to find the a valid boost+python combination -# Once done this will define -# -# BOOST_PYTHON_FOUND - system has a valid boost+python combination -# BOOST_PYTHON_INCLUDES - the include directory for boost+python -# BOOST_PYTHON_LIBS - the needed libs for boost+python - -# Copyright (c) 2006, Pino Toscano, -# -# Redistribution and use is allowed according to the terms of the BSD license. -# For details see the accompanying COPYING-CMAKE-SCRIPTS file. - -if(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS) - # Already in cache, be silent - set(BOOST_PYTHON_FIND_QUIETLY TRUE) -endif(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS) - -# some needed includes -include(CheckCXXSourceCompiles) -include(CheckIncludeFileCXX) -include(CheckLibraryExists) - -# reset vars -set(BOOST_PYTHON_INCLUDES) -set(BOOST_PYTHON_LIBS) - -# handy arrays -set(PYTHON_VERSIONS "python;python2.7;python2.6;python2.5;python2.4;python2.3;python2.2") -set(PYTHON_INCLUDE_DIRS "/usr/include/$pyver;/usr/local/include/$pyver;/usr/$pyver/include;/usr/local/$pyver/include;$prefix/include/$pyver;$prefix/$pyver/include") -set(PYTHON_LIBRARY_DIRS "/usr/lib${LIB_SUFFIX};/usr/local/lib${LIB_SUFFIX};/usr/lib${LIB_SUFFIX}/$pyver/config") -set(PYTHON_LIBS "boost_python-gcc-mt;boost_python-mt;boost_python-gcc-mt-1_33;boost_python-gcc-mt-1_33_1;boost_python;boost_python-gcc-mt-1_32;boost_python") - -# 1st: check for boost/shared_ptr.hpp -check_include_file_cxx(boost/shared_ptr.hpp HAVE_BOOST_SHARED_PTR_HPP) - -if(HAVE_BOOST_SHARED_PTR_HPP) - - set(_found FALSE) - - # save the old flags and setting the new ones - set(_save_CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${KDE4_ENABLE_EXCEPTIONS}") - - foreach(_pyver ${PYTHON_VERSIONS}) - if(NOT _found) - foreach(_pydir ${PYTHON_INCLUDE_DIRS}) - - if(NOT _found) - string(REPLACE "$pyver" "${_pyver}" _pydir ${_pydir}) - string(REPLACE "$prefix" "${CMAKE_INSTALL_PREFIX}" _pydir ${_pydir}) - - if(EXISTS ${_pydir}) - if(EXISTS ${_pydir}/Python.h) - - foreach(_pylibdir ${PYTHON_LIBRARY_DIRS}) - - if(NOT _found) - string(REPLACE "$pyver" ${_pyver} _pylibdir ${_pylibdir}) - - foreach(_pblib ${PYTHON_LIBS}) - - if(NOT _found) - - set(CMAKE_REQUIRED_FLAGS "-L${_pylibdir}") - set(CMAKE_REQUIRED_INCLUDES ${_pydir}) - set(CMAKE_REQUIRED_LIBRARIES ${_pblib} ${_pyver}) - - check_cxx_source_compiles(" -#include -const char* greet() { return \"Hello world!\"; } -BOOST_PYTHON_MODULE(hello) { boost::python::def(\"greet\", greet); } - -int main() { return 0; } - -// some vars, in case of the compilation fail... -// python include dir: ${_pydir} -// python lib dir: ${_pylibdir} -// boost python lib: ${_pblib} - -" boost_python_${_pylibdir}_${_pydir}_${_pblib}_compile ) - - set(CMAKE_REQUIRED_FLAGS) - set(CMAKE_REQUIRED_INCLUDES) - set(CMAKE_REQUIRED_LIBRARIES) - - if(boost_python_${_pylibdir}_${_pydir}_${_pblib}_compile) - - set(_found TRUE) - - set(BOOST_PYTHON_INCLUDES ${_pydir}) - set(BOOST_PYTHON_LIBS "-l${_pyver} -L${_pylibdir} -l${_pblib}") - - endif(boost_python_${_pylibdir}_${_pydir}_${_pblib}_compile) - - endif(NOT _found) - - endforeach(_pblib ${PYTHON_LIBS}) - - endif(NOT _found) - - endforeach(_pylibdir ${PYTHON_LIBRARY_DIRS}) - - endif(EXISTS ${_pydir}/Python.h) - endif(EXISTS ${_pydir}) - - endif(NOT _found) - - endforeach(_pydir ${PYTHON_INCLUDE_DIRS}) - - endif(NOT _found) - - endforeach(_pyver ${PYTHON_VERSIONS}) - - set(CMAKE_CXX_FLAGS ${_save_CMAKE_CXX_FLAGS}) - -endif(HAVE_BOOST_SHARED_PTR_HPP) - -if(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS) - set(BOOST_PYTHON_FOUND TRUE) -endif(BOOST_PYTHON_INCLUDES AND BOOST_PYTHON_LIBS) - -if(BOOST_PYTHON_FOUND) - if(NOT BoostPython_FIND_QUIETLY) - message(STATUS "Found Boost+Python: ${BOOST_PYTHON_LIBS}") - endif(NOT BoostPython_FIND_QUIETLY) - set(KIG_ENABLE_PYTHON_SCRIPTING 1) -else (BOOST_PYTHON_FOUND) - if (BoostPython_FIND_REQUIRED) - message(FATAL_ERROR "Could NOT find Boost+Python") - endif(BoostPython_FIND_REQUIRED) - set(KIG_ENABLE_PYTHON_SCRIPTING 0) -endif(BOOST_PYTHON_FOUND) - -mark_as_advanced(BOOST_PYTHON_INCLUDES BOOST_PYTHON_LIBS) -- 1.7.12