CMake: explain which modules are skipped
Modules may be skipped for different reasons: SKIP_MODULES is the traditional approach to suppress some, but other modules may have unmet build requirements (e.g. Plasma Look-and-Feel, or the Partitioning module) and should be able to opt-out of being built. For all those skipped, log it explicitly after all the modules have been examined. Only CMake-based (e.g. C++) modules support opting-out in this way.
This commit is contained in:
parent
c2ee0c6ed4
commit
2e1f389997
@ -3,15 +3,27 @@ include( CalamaresAddTranslations )
|
|||||||
|
|
||||||
set( MODULE_DATA_DESTINATION share/calamares/modules )
|
set( MODULE_DATA_DESTINATION share/calamares/modules )
|
||||||
|
|
||||||
|
# Convenience function to indicate that a module has been skipped
|
||||||
|
# (optionally also why). Call this in the module's CMakeLists.txt
|
||||||
|
macro( calamares_skip_module )
|
||||||
|
set( SKIPPED_MODULES ${SKIPPED_MODULES} ${ARGV} PARENT_SCOPE )
|
||||||
|
endmacro()
|
||||||
|
|
||||||
function( calamares_add_module_subdirectory )
|
function( calamares_add_module_subdirectory )
|
||||||
set( SUBDIRECTORY ${ARGV0} )
|
set( SUBDIRECTORY ${ARGV0} )
|
||||||
|
|
||||||
|
set( SKIPPED_MODULES )
|
||||||
set( MODULE_CONFIG_FILES "" )
|
set( MODULE_CONFIG_FILES "" )
|
||||||
|
|
||||||
# If this subdirectory has a CMakeLists.txt, we add_subdirectory it...
|
# If this subdirectory has a CMakeLists.txt, we add_subdirectory it...
|
||||||
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" )
|
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" )
|
||||||
add_subdirectory( ${SUBDIRECTORY} )
|
add_subdirectory( ${SUBDIRECTORY} )
|
||||||
file( GLOB MODULE_CONFIG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*.conf" )
|
file( GLOB MODULE_CONFIG_FILES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY} "${SUBDIRECTORY}/*.conf" )
|
||||||
|
# Module has indicated it should be skipped, show that in
|
||||||
|
# the calling CMakeLists (which is src/modules/CMakeLists.txt normally).
|
||||||
|
if ( SKIPPED_MODULES )
|
||||||
|
set( SKIPPED_MODULES ${SKIPPED_MODULES} PARENT_SCOPE )
|
||||||
|
endif()
|
||||||
# ...otherwise, we look for a module.desc.
|
# ...otherwise, we look for a module.desc.
|
||||||
elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/module.desc" )
|
elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/module.desc" )
|
||||||
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
|
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
include( CMakeColors )
|
include( CMakeColors )
|
||||||
|
|
||||||
|
# The variable SKIP_MODULES can be set to skip particular modules;
|
||||||
|
# individual modules can also decide they must be skipped (e.g. OS-specific
|
||||||
|
# modules, or ones with unmet dependencies). Collect the skipped modules
|
||||||
|
# in this list.
|
||||||
|
set( LIST_SKIPPED_MODULES "" )
|
||||||
|
|
||||||
if( BUILD_TESTING )
|
if( BUILD_TESTING )
|
||||||
add_executable( test_conf test_conf.cpp )
|
add_executable( test_conf test_conf.cpp )
|
||||||
target_link_libraries( test_conf ${YAMLCPP_LIBRARY} )
|
target_link_libraries( test_conf ${YAMLCPP_LIBRARY} )
|
||||||
@ -13,11 +19,24 @@ foreach( SUBDIRECTORY ${SUBDIRECTORIES} )
|
|||||||
if( NOT DO_SKIP EQUAL -1 )
|
if( NOT DO_SKIP EQUAL -1 )
|
||||||
message( "${ColorReset}-- Skipping module ${BoldRed}${SUBDIRECTORY}${ColorReset}." )
|
message( "${ColorReset}-- Skipping module ${BoldRed}${SUBDIRECTORY}${ColorReset}." )
|
||||||
message( "" )
|
message( "" )
|
||||||
|
list( APPEND LIST_SKIPPED_MODULES "${SUBDIRECTORY} (user request)" )
|
||||||
elseif( ( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" ) AND
|
elseif( ( IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}" ) AND
|
||||||
( DO_SKIP EQUAL -1 ) )
|
( DO_SKIP EQUAL -1 ) )
|
||||||
|
set( SKIPPED_MODULES )
|
||||||
calamares_add_module_subdirectory( ${SUBDIRECTORY} )
|
calamares_add_module_subdirectory( ${SUBDIRECTORY} )
|
||||||
|
if ( SKIPPED_MODULES )
|
||||||
|
list( APPEND LIST_SKIPPED_MODULES "${SKIPPED_MODULES}" )
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
if ( LIST_SKIPPED_MODULES )
|
||||||
|
message( "${ColorReset}-- Skipped modules:" )
|
||||||
|
foreach( SUBDIRECTORY ${LIST_SKIPPED_MODULES} )
|
||||||
|
message( "${ColorReset}-- Skipped ${BoldRed}${SUBDIRECTORY}${ColorReset}." )
|
||||||
|
endforeach()
|
||||||
|
message( "" )
|
||||||
|
endif()
|
||||||
|
|
||||||
include( CalamaresAddTranslations )
|
include( CalamaresAddTranslations )
|
||||||
add_calamares_python_translations( ${CALAMARES_TRANSLATION_LANGUAGES} )
|
add_calamares_python_translations( ${CALAMARES_TRANSLATION_LANGUAGES} )
|
||||||
|
Loading…
Reference in New Issue
Block a user