forked from sdr/gr-osmosdr
116 lines
4.5 KiB
CMake
116 lines
4.5 KiB
CMake
# 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)
|
|
|
|
#if the user set the var to force, we note this
|
|
if("${${var}}" STREQUAL "FORCE")
|
|
set(${var} ON)
|
|
set(var_force TRUE)
|
|
else()
|
|
set(var_force FALSE)
|
|
endif()
|
|
|
|
#rewrite the dependency list so that deps that are also components use the cached version
|
|
unset(comp_deps)
|
|
foreach(dep ${ARGN})
|
|
list(FIND _gr_enabled_components ${dep} dep_enb_index)
|
|
list(FIND _gr_disabled_components ${dep} dep_dis_index)
|
|
if (${dep_enb_index} EQUAL -1 AND ${dep_dis_index} EQUAL -1)
|
|
list(APPEND comp_deps ${dep})
|
|
else()
|
|
list(APPEND comp_deps ${dep}_cached) #is a component, use cached version
|
|
endif()
|
|
endforeach(dep)
|
|
|
|
#setup the dependent option for this component
|
|
CMAKE_DEPENDENT_OPTION(${var} "enable ${name} support" ${ENABLE_DEFAULT} "${comp_deps}" OFF)
|
|
set(${var} "${${var}}" PARENT_SCOPE)
|
|
set(${var}_cached "${${var}}" CACHE INTERNAL "" FORCE)
|
|
|
|
#force was specified, but the dependencies were not met
|
|
if(NOT ${var} AND var_force)
|
|
message(FATAL_ERROR "user force-enabled ${name} but configuration checked failed")
|
|
endif()
|
|
|
|
#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 "# gr-osmosdr enabled components ")
|
|
message(STATUS "######################################################")
|
|
foreach(comp ${_gr_enabled_components})
|
|
message(STATUS " * ${comp}")
|
|
endforeach(comp)
|
|
|
|
message(STATUS "")
|
|
message(STATUS "######################################################")
|
|
message(STATUS "# gr-osmosdr disabled components ")
|
|
message(STATUS "######################################################")
|
|
foreach(comp ${_gr_disabled_components})
|
|
message(STATUS " * ${comp}")
|
|
endforeach(comp)
|
|
|
|
message(STATUS "")
|
|
endfunction(GR_PRINT_COMPONENT_SUMMARY)
|