summaryrefslogtreecommitdiff
path: root/cmake/Modules/GrComponent.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/Modules/GrComponent.cmake')
-rw-r--r--cmake/Modules/GrComponent.cmake89
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)