mirror of
				https://github.com/bolucat/Archive.git
				synced 2025-11-01 04:13:16 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| # - Compile and run code to check for C features
 | |
| #
 | |
| # This functions compiles a source file under the `cmake` folder
 | |
| # and adds the corresponding `HAVE_[FILENAME]` flag to the CMake
 | |
| # environment
 | |
| #
 | |
| #  c_feature_check(<FLAG> [<VARIANT>])
 | |
| #
 | |
| # - Example
 | |
| #
 | |
| # include(CFeatureCheck)
 | |
| # c_feature_check(VLA)
 | |
| 
 | |
| if(__c_feature_check)
 | |
|   return()
 | |
| endif()
 | |
| set(__c_feature_check INCLUDED)
 | |
| 
 | |
| function(c_feature_check FILE)
 | |
|   string(TOLOWER ${FILE} FILE)
 | |
|   string(TOUPPER ${FILE} VAR)
 | |
|   string(TOUPPER "${VAR}_SUPPORTED" FEATURE)
 | |
|   if (DEFINED ${VAR}_SUPPORTED)
 | |
|     set(${VAR}_SUPPORTED 1 PARENT_SCOPE)
 | |
|     return()
 | |
|   endif()
 | |
| 
 | |
|   if (NOT DEFINED COMPILE_${FEATURE})
 | |
|       message(STATUS "Performing Test ${FEATURE}")
 | |
|       try_compile(COMPILE_${FEATURE} ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/cmake/${FILE}.c)
 | |
|   endif()
 | |
| 
 | |
|   if(COMPILE_${FEATURE})
 | |
|     message(STATUS "Performing Test ${FEATURE} -- success")
 | |
|     set(${VAR}_SUPPORTED 1 PARENT_SCOPE)
 | |
|   else()
 | |
|     message(STATUS "Performing Test ${FEATURE} -- failed to compile")
 | |
|   endif()
 | |
| endfunction()
 | 
