@ -10,9 +10,12 @@ set(WORKSPACE_RELATIVE_DIR "../../../../..")
@@ -10,9 +10,12 @@ set(WORKSPACE_RELATIVE_DIR "../../../../..")
set ( ZEPHYR_RELATIVE_DIR "../../../.." )
# T h i s m a c r o r e t u r n s a l i s t o f p a r e n t f o l d e r s t o u s e f o r l a t e r s e a r c h e s .
macro ( get_search_paths START_PATH SEARCH_PATHS )
macro ( get_search_paths START_PATH SEARCH_PATHS PREFERENCE_LIST )
get_filename_component ( SEARCH_PATH ${ START_PATH } DIRECTORY )
while ( NOT ( SEARCH_PATH STREQUAL "/" ) )
foreach ( preference ${ PREFERENCE_LIST } )
list ( APPEND SEARCH_PATHS ${ SEARCH_PATH } / ${ preference } )
endforeach ( )
list ( APPEND SEARCH_PATHS ${ SEARCH_PATH } /zephyr )
list ( APPEND SEARCH_PATHS ${ SEARCH_PATH } )
get_filename_component ( SEARCH_PATH ${ SEARCH_PATH } DIRECTORY )
@ -21,15 +24,19 @@ endmacro()
@@ -21,15 +24,19 @@ endmacro()
# T h i s m a c r o c a n c h e c k f o r a d d i t i o n a l Z e p h y r p a c k a g e t h a t h a s a b e t t e r m a t c h
# O p t i o n s :
# - Z E P H Y R _ B A S E : U s e t h e s p e c i f i e d Z E P H Y R _ B A S E d i r e c t l y .
# - W O R K S P A C E _ D I R : S e a r c h f o r p r o j e c t s i n s p e c i f i e d w o r k s p a c e .
# - S E A R C H _ P A R E N T S : S e a r c h p a r e n t f o l d e r o f c u r r e n t s o u r c e file ( application ) t o l o c a t e i n - p r o j e c t - t r e e Z e p h y r c a n d i d a t e s .
# - C H E C K _ O N L Y : O n l y s e t P A C K A G E _ V E R S I O N _ C O M P A T I B L E t o f a l s e i f a b e t t e r c a n d i d a t e i s f o u n d , d e f a u l t i s t o a l s o i n c l u d e t h e f o u n d c a n d i d a t e .
# - V E R S I O N _ C H E C K : T h i s i s t h e v e r s i o n c h e c k s t a g e b y C M a k e f i n d p a c k a g e
# - Z E P H Y R _ B A S E : U s e t h e s p e c i f i e d Z E P H Y R _ B A S E d i r e c t l y .
# - W O R K S P A C E _ D I R : S e a r c h f o r p r o j e c t s i n s p e c i f i e d w o r k s p a c e .
# - S E A R C H _ P A R E N T S : S e a r c h p a r e n t f o l d e r o f c u r r e n t s o u r c e file ( application )
# t o l o c a t e i n - p r o j e c t - t r e e Z e p h y r c a n d i d a t e s .
# - C H E C K _ O N L Y : O n l y s e t P A C K A G E _ V E R S I O N _ C O M P A T I B L E t o f a l s e i f a b e t t e r c a n d i d a t e
# i s f o u n d , d e f a u l t i s t o a l s o i n c l u d e t h e f o u n d c a n d i d a t e .
# - V E R S I O N _ C H E C K : T h i s i s t h e v e r s i o n c h e c k s t a g e b y C M a k e f i n d p a c k a g e
# - C A N D I D A T E S _ P R E F E R E N C E _ L I S T : L i s t o f c a n d i d a t e t o b e p r e f e r r e d , i f i n s t a l l e d
macro ( check_zephyr_package )
set ( options CHECK_ONLY INCLUDE_FILE SEARCH_PARENTS VERSION_CHECK )
set ( options CHECK_ONLY SEARCH_PARENTS VERSION_CHECK )
set ( single_args WORKSPACE_DIR ZEPHYR_BASE )
cmake_parse_arguments ( CHECK_ZEPHYR_PACKAGE "${options}" "${single_args}" "" ${ ARGN } )
set ( list_args CANDIDATES_PREFERENCE_LIST )
cmake_parse_arguments ( CHECK_ZEPHYR_PACKAGE "${options}" "${single_args}" "${list_args}" ${ ARGN } )
if ( CHECK_ZEPHYR_PACKAGE_ZEPHYR_BASE )
set ( SEARCH_SETTINGS PATHS ${ CHECK_ZEPHYR_PACKAGE_ZEPHYR_BASE } NO_DEFAULT_PATH )
@ -40,7 +47,7 @@ macro(check_zephyr_package)
@@ -40,7 +47,7 @@ macro(check_zephyr_package)
endif ( )
if ( CHECK_ZEPHYR_PACKAGE_SEARCH_PARENTS )
get_search_paths ( ${ CMAKE_CURRENT_SOURCE_DIR } SEARCH_PATHS )
get_search_paths ( ${ CMAKE_CURRENT_SOURCE_DIR } SEARCH_PATHS "${CHECK_ZEPHYR_PACKAGE_CANDIDATES_PREFERENCE_LIST}" )
set ( SEARCH_SETTINGS PATHS ${ SEARCH_PATHS } NO_DEFAULT_PATH )
endif ( )
@ -48,9 +55,12 @@ macro(check_zephyr_package)
@@ -48,9 +55,12 @@ macro(check_zephyr_package)
# a l i s t o f a l l p o t e n t i a l Z e p h y r c a n d i d a t e s i n t h e t r e e t o c o n s i d e r .
find_package ( Zephyr 0.0.0 EXACT QUIET ${ SEARCH_SETTINGS } )
# T h e f i n d p a c k a g e w i l l a l s o f i n d o u r s e l f w h e n s e a r c h i n g i n - t r e e , s o t o a v o i d r e - i n c l u d i n g
# t h i s f i l e , i t i s r e m o v e d f r o m t h e l i s t a l o n g w i t h a n y d u p l i c a t e s .
list ( REMOVE_ITEM Zephyr_CONSIDERED_CONFIGS ${ CMAKE_CURRENT_LIST_DIR } /ZephyrConfig.cmake )
# T h e f i n d p a c k a g e w i l l a l s o f i n d o u r s e l f w h e n s e a r c h i n g u s i n g i n s t a l l e d c a n d i d a t e s .
# S o a v o i d r e - i n c l u d i n g u n l e s s N O _ D E F A U L T _ P A T H i s s e t .
# N O _ D E F A U L T _ P A T H m e a n s e x p l i c i t s e a r c h a n d w e c o u l d b e p a r t o f a p r e f e r e n c e l i s t .
if ( NOT ( NO_DEFAULT_PATH IN_LIST SEARCH_SETTINGS ) )
list ( REMOVE_ITEM Zephyr_CONSIDERED_CONFIGS ${ CMAKE_CURRENT_LIST_DIR } /ZephyrConfig.cmake )
endif ( )
list ( REMOVE_DUPLICATES Zephyr_CONSIDERED_CONFIGS )
foreach ( ZEPHYR_CANDIDATE ${ Zephyr_CONSIDERED_CONFIGS } )
@ -78,8 +88,10 @@ macro(check_zephyr_package)
@@ -78,8 +88,10 @@ macro(check_zephyr_package)
# A b e t t e r c a n d i d a t e e x i s t s , t h u s r e t u r n
set ( PACKAGE_VERSION_COMPATIBLE FALSE )
return ( )
elseif ( ZEPHYR_CANDIDATE STREQUAL ${ CMAKE_CURRENT_LIST_DIR } /ZephyrConfig.cmake )
# C u r r e n t Z e p h y r i s p r e f e r r e d o n e , l e t ' s j u s t b r e a k t h e l o o p a n d c o n t i n u e p r o c e s s i n g .
break ( )
else ( )
# A b e t t e r c a n d i d a t e e x i s t s , t h u s r e t u r n
if ( CHECK_ZEPHYR_PACKAGE_VERSION_CHECK )
string ( REGEX REPLACE "\.cmake$" "Version.cmake" ZEPHYR_VERSION_CANDIDATE ${ ZEPHYR_CANDIDATE } )
include ( ${ ZEPHYR_VERSION_CANDIDATE } NO_POLICY_SCOPE )