# Copyright 2010-2011 Free Software Foundation, Inc. # # This file is part of GNU Radio # # GNU Radio is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3, or (at your option) # any later version. # # GNU Radio is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Radio; see the file COPYING. If not, write to # the Free Software Foundation, Inc., 51 Franklin Street, # Boston, MA 02110-1301, USA. IF(DEFINED __INCLUDED_GR_SWIG_CMAKE) RETURN() ENDIF() SET(__INCLUDED_GR_SWIG_CMAKE TRUE) ######################################################################## # Build a swig target for the common gnuradio use case. Usage: # GR_SWIG_MAKE(target ifile ifile ifile...) # # Set the following variables before calling: # - GR_SWIG_FLAGS # - GR_SWIG_INCLUDE_DIRS # - GR_SWIG_LIBRARIES # - GR_SWIG_SOURCE_DEPS # - GR_SWIG_TARGET_DEPS ######################################################################## MACRO(GR_SWIG_MAKE name) SET(ifiles ${ARGN}) INCLUDE_DIRECTORIES(${GR_SWIG_INCLUDE_DIRS}) SET(SWIG_MODULE_${name}_EXTRA_DEPS ${GR_SWIG_SOURCE_DEPS}) FIND_PACKAGE(PythonLibs) INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS}) #setup the swig flags with flags and include directories SET(CMAKE_SWIG_FLAGS -fvirtual -modern -keyword -w511 -module ${name} ${GR_SWIG_FLAGS}) FOREACH(dir ${GR_SWIG_INCLUDE_DIRS}) LIST(APPEND CMAKE_SWIG_FLAGS "-I${dir}") ENDFOREACH(dir) #set the C++ property on the swig .i file so it builds SET_SOURCE_FILES_PROPERTIES(${ifiles} PROPERTIES CPLUSPLUS ON) #setup the actual swig library target to be built INCLUDE(UseSWIG) SWIG_ADD_MODULE(${name} python ${ifiles}) SWIG_LINK_LIBRARIES(${name} ${PYTHON_LIBRARIES} ${GR_SWIG_LIBRARIES}) IF(GR_SWIG_TARGET_DEPS) ADD_DEPENDENCIES(${SWIG_MODULE_${name}_REAL_NAME} ${GR_SWIG_TARGET_DEPS}) ENDIF(GR_SWIG_TARGET_DEPS) ENDMACRO(GR_SWIG_MAKE) ######################################################################## # Install swig targets generated by GR_SWIG_MAKE. Usage: # GR_SWIG_INSTALL( # TARGETS target target target... # [DESTINATION destination] # [COMPONENT component] # ) ######################################################################## MACRO(GR_SWIG_INSTALL) INCLUDE(CMakeParseArgumentsCopy) CMAKE_PARSE_ARGUMENTS(GR_SWIG_INSTALL "" "DESTINATION;COMPONENT" "TARGETS" ${ARGN}) FOREACH(name ${GR_SWIG_INSTALL_TARGETS}) INSTALL(TARGETS ${SWIG_MODULE_${name}_REAL_NAME} DESTINATION ${GR_SWIG_INSTALL_DESTINATION} COMPONENT ${GR_SWIG_INSTALL_COMPONENT} ) INCLUDE(GrPython) GR_PYTHON_INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/${name}.py DESTINATION ${GR_SWIG_INSTALL_DESTINATION} COMPONENT ${GR_SWIG_INSTALL_COMPONENT} ) ENDFOREACH(name) ENDMACRO(GR_SWIG_INSTALL)