diff options
Diffstat (limited to 'cmake/Modules/GrComponent.cmake')
-rw-r--r-- | cmake/Modules/GrComponent.cmake | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/cmake/Modules/GrComponent.cmake b/cmake/Modules/GrComponent.cmake new file mode 100644 index 000000000..cbae1c4ff --- /dev/null +++ b/cmake/Modules/GrComponent.cmake @@ -0,0 +1,89 @@ +# 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_COMPONENT_CMAKE) + RETURN() +ENDIF() +SET(__INCLUDED_GR_COMPONENT_CMAKE TRUE) + +SET(_gr_enabled_components "" CACHE INTERNAL "" FORCE) +SET(_gr_disabled_components "" CACHE INTERNAL "" FORCE) + +IF(NOT DEFINED ENABLE_DEFAULT) + SET(ENABLE_DEFAULT ON) + MESSAGE(STATUS "") + MESSAGE(STATUS "The build system will automatically enable all components.") + MESSAGE(STATUS "Use -DENABLE_DEFAULT=OFF to disable components by default.") +ENDIF() + +######################################################################## +# Register a component into the system +# - name: canonical component name +# - var: variable for enabled status +# - argn: list of dependencies +######################################################################## +FUNCTION(GR_REGISTER_COMPONENT name var) + INCLUDE(CMakeDependentOption) + MESSAGE(STATUS "") + MESSAGE(STATUS "Configuring ${name} support...") + FOREACH(dep ${ARGN}) + MESSAGE(STATUS " Dependency ${dep} = ${${dep}}") + ENDFOREACH(dep) + + #setup the dependent option for this component + CMAKE_DEPENDENT_OPTION(${var} "enable ${name} support" ${ENABLE_DEFAULT} "${ARGN}" OFF) + SET(${var}_ "${${var}}" CACHE INTERNAL "" FORCE) + + #append the component into one of the lists + IF(${var}) + MESSAGE(STATUS " Enabling ${name} support.") + LIST(APPEND _gr_enabled_components ${name}) + ELSE(${var}) + MESSAGE(STATUS " Disabling ${name} support.") + LIST(APPEND _gr_disabled_components ${name}) + ENDIF(${var}) + MESSAGE(STATUS " Override with -D${var}=ON/OFF") + + #make components lists into global variables + SET(_gr_enabled_components ${_gr_enabled_components} CACHE INTERNAL "" FORCE) + SET(_gr_disabled_components ${_gr_disabled_components} CACHE INTERNAL "" FORCE) +ENDFUNCTION(GR_REGISTER_COMPONENT) + +######################################################################## +# Print the registered component summary +######################################################################## +FUNCTION(GR_PRINT_COMPONENT_SUMMARY) + MESSAGE(STATUS "") + MESSAGE(STATUS "######################################################") + MESSAGE(STATUS "# Gnuradio enabled components ") + MESSAGE(STATUS "######################################################") + FOREACH(comp ${_gr_enabled_components}) + MESSAGE(STATUS " * ${comp}") + ENDFOREACH(comp) + + MESSAGE(STATUS "") + MESSAGE(STATUS "######################################################") + MESSAGE(STATUS "# Gnuradio disabled components ") + MESSAGE(STATUS "######################################################") + FOREACH(comp ${_gr_disabled_components}) + MESSAGE(STATUS " * ${comp}") + ENDFOREACH(comp) + + MESSAGE(STATUS "") +ENDFUNCTION(GR_PRINT_COMPONENT_SUMMARY) |