2021-06-10 10:11:20 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								if  ( NOT  TARGET  _family_support_marker ) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    add_library ( _family_support_marker  INTERFACE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( NOT  FAMILY ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-02-09 08:19:01 -08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								        message ( FATAL_ERROR  "You must set a FAMILY variable for the build (e.g. rp2040, eps32s2, esp32s3). You can do this via -DFAMILY=xxx on the cmake command line" ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-10 10:11:20 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( NOT  EXISTS  ${ CMAKE_CURRENT_LIST_DIR } / ${ FAMILY } /family.cmake ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        message ( FATAL_ERROR  "Family '${FAMILY}' is not known/supported" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function ( family_filter  RESULT  DIR ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        get_filename_component ( DIR  ${ DIR }  ABSOLUTE  BASE_DIR  ${ CMAKE_CURRENT_SOURCE_DIR } ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 13:42:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( EXISTS  "${DIR}/only.txt" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            file ( READ  "${DIR}/only.txt"  ONLYS ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # Replace newlines with semicolon so that it is treated as a list by CMake
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            string ( REPLACE  "\n"  ";"  ONLYS_LINES  ${ ONLYS } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # For each mcu
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-10 10:11:20 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            foreach ( MCU  IN  LISTS  FAMILY_MCUS ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 13:42:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                # For each line in only.txt
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                foreach ( _line  ${ ONLYS_LINES } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    # If mcu:xxx exists for this mcu then include
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ${ _line }  STREQUAL  "mcu:${MCU}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        set ( ${ RESULT }  1  PARENT_SCOPE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                endforeach ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-10 10:11:20 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            endforeach ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 13:42:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # Didn't find it in only file so don't build
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set ( ${ RESULT }  0  PARENT_SCOPE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        elseif  ( EXISTS  "${DIR}/skip.txt" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            file ( READ  "${DIR}/skip.txt"  SKIPS ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # Replace newlines with semicolon so that it is treated as a list by CMake
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            string ( REPLACE  "\n"  ";"  SKIPS_LINES  ${ SKIPS } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # For each mcu
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-10 10:11:20 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            foreach ( MCU  IN  LISTS  FAMILY_MCUS ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 13:42:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								                # For each line in only.txt
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                foreach ( _line  ${ SKIPS_LINES } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    # If mcu:xxx exists for this mcu then skip
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    if  ( ${ _line }  STREQUAL  "mcu:${MCU}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        set ( ${ RESULT }  0  PARENT_SCOPE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                        return ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                    endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								                endforeach ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2021-06-10 10:11:20 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								            endforeach ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 13:42:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # Didn't find in skip file so build
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set ( ${ RESULT }  1  PARENT_SCOPE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        else ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            # Didn't find skip or only file so build
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            set ( ${ RESULT }  1  PARENT_SCOPE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-10 10:11:20 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								        endif ( ) 
 
							 
						 
					
						
							
								
									
										
										
										
											2022-01-13 13:42:28 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-10 10:11:20 -05:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								    endfunction ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function ( family_add_subdirectory  DIR ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        family_filter ( SHOULD_ADD  "${DIR}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( SHOULD_ADD ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            add_subdirectory ( ${ DIR } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endfunction ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function ( family_get_project_name  OUTPUT_NAME  DIR ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        get_filename_component ( SHORT_NAME  ${ DIR }  NAME ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set ( ${ OUTPUT_NAME }  ${ TINYUSB_FAMILY_PROJECT_NAME_PREFIX } ${ SHORT_NAME }  PARENT_SCOPE ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endfunction ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function ( family_initialize_project  PROJECT  DIR ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        family_filter ( ALLOWED  "${DIR}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        if  ( NOT  ALLOWED ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            get_filename_component ( SHORT_NAME  ${ DIR }  NAME ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								            message ( FATAL_ERROR  "${SHORT_NAME} is not supported on FAMILY=${FAMILY}" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endfunction ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # configure an executable target to link to tinyusb in device mode, and add the board implementation
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function ( family_configure_device_example  TARGET ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # default implentation is empty, the function should be redefined in the FAMILY/family.cmake
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endfunction ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # configure an executable target to link to tinyusb in host mode, and add the board implementation
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    function ( family_configure_host_example  TARGET ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        # default implentation is empty, the function should be redefined in the FAMILY/family.cmake
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endfunction ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    include ( ${ CMAKE_CURRENT_LIST_DIR } / ${ FAMILY } /family.cmake ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    if  ( NOT  FAMILY_MCUS ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								        set ( FAMILY_MCUS  ${ FAMILY } ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    endif ( ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    # save it in case of re-inclusion
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    set ( FAMILY_MCUS  ${ FAMILY_MCUS }  CACHE  INTERNAL  "" ) 
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								endif ( )