summaryrefslogtreecommitdiffstats
path: root/host/config/Component.cmake
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-12-20 01:23:31 -0800
committerJosh Blum <josh@joshknows.com>2010-12-20 01:23:31 -0800
commit47c92a2ac68fbae59c02f3e2a322cabda499c13b (patch)
tree7cc4a4918b1feb09531607bfe22e976228034a70 /host/config/Component.cmake
parent91e090295c8c623b73e20a4d217601c4453650a8 (diff)
downloaduhd-47c92a2ac68fbae59c02f3e2a322cabda499c13b.tar.gz
uhd-47c92a2ac68fbae59c02f3e2a322cabda499c13b.tar.bz2
uhd-47c92a2ac68fbae59c02f3e2a322cabda499c13b.zip
uhd: implemented top-level component registry
now docs, examples, utils, usb, are configurable components with dependencies
Diffstat (limited to 'host/config/Component.cmake')
-rw-r--r--host/config/Component.cmake82
1 files changed, 82 insertions, 0 deletions
diff --git a/host/config/Component.cmake b/host/config/Component.cmake
new file mode 100644
index 000000000..5384cc53f
--- /dev/null
+++ b/host/config/Component.cmake
@@ -0,0 +1,82 @@
+#
+# Copyright 2010 Ettus Research LLC
+#
+# This program 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 of the License, or
+# (at your option) any later version.
+#
+# This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+########################################################################
+SET(_uhd_enabled_components "" CACHE INTERNAL "" FORCE)
+SET(_uhd_disabled_components "" CACHE INTERNAL "" FORCE)
+
+########################################################################
+# Register a component into the system
+# Usage: LIBUHD_REGISTER_COMPONENT(<name> <var> <enb> <deps> <dis>)
+########################################################################
+FUNCTION(LIBUHD_REGISTER_COMPONENT name var)
+ INCLUDE(CMakeDependentOption)
+ MESSAGE(STATUS "")
+ MESSAGE(STATUS "Configuring ${name} support...")
+ IF(DEFINED ${var})
+ MESSAGE(STATUS "${name} support configured ${var}=${${var}}")
+ ELSE(DEFINED ${var}) #not defined: automatic enabling of component
+ MESSAGE(STATUS "${name} support configured automatically")
+ ENDIF(DEFINED ${var})
+
+ #setup the dependent option for this component
+ CMAKE_DEPENDENT_OPTION(${var} "enable ${name} support" ${ARGN})
+
+ #remove previous occurrence of component in either list
+ IF(DEFINED _uhd_enabled_components)
+ LIST(REMOVE_ITEM _uhd_enabled_components ${name})
+ ENDIF(DEFINED _uhd_enabled_components)
+ IF(DEFINED _uhd_disabled_components)
+ LIST(REMOVE_ITEM _uhd_disabled_components ${name})
+ ENDIF(DEFINED _uhd_disabled_components)
+
+ #append the component into one of the lists
+ IF(${var})
+ MESSAGE(STATUS " Enabling ${name} support.")
+ LIST(APPEND _uhd_enabled_components ${name})
+ ELSE(${var})
+ MESSAGE(STATUS " Disabling ${name} support.")
+ LIST(APPEND _uhd_disabled_components ${name})
+ ENDIF(${var})
+
+ #make components lists into global variables
+ SET(_uhd_enabled_components ${_uhd_enabled_components} CACHE INTERNAL "" FORCE)
+ SET(_uhd_disabled_components ${_uhd_disabled_components} CACHE INTERNAL "" FORCE)
+ENDFUNCTION(LIBUHD_REGISTER_COMPONENT)
+
+########################################################################
+# Print the registered component summary
+########################################################################
+FUNCTION(UHD_PRINT_COMPONENT_SUMMARY)
+ MESSAGE(STATUS "")
+ MESSAGE(STATUS "######################################################")
+ MESSAGE(STATUS "# LibUHD enabled components ")
+ MESSAGE(STATUS "######################################################")
+ FOREACH(comp ${_uhd_enabled_components})
+ MESSAGE(STATUS " * ${comp}")
+ ENDFOREACH(comp)
+
+ MESSAGE(STATUS "")
+ MESSAGE(STATUS "######################################################")
+ MESSAGE(STATUS "# LibUHD disabled components ")
+ MESSAGE(STATUS "######################################################")
+ FOREACH(comp ${_uhd_disabled_components})
+ MESSAGE(STATUS " * ${comp}")
+ ENDFOREACH(comp)
+
+ MESSAGE(STATUS "")
+ENDFUNCTION(UHD_PRINT_COMPONENT_SUMMARY)