|  | @@ -0,0 +1,58 @@
 | 
	
		
			
				|  |  | +include(RunCMake)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function(find_compiler lang)
 | 
	
		
			
				|  |  | +  # Detect the compiler in use in the current environment.
 | 
	
		
			
				|  |  | +  run_cmake(Find${lang}Compiler)
 | 
	
		
			
				|  |  | +  # Use the detected compiler
 | 
	
		
			
				|  |  | +  include(${RunCMake_BINARY_DIR}/Find${lang}Compiler-build/${lang}_comp.cmake)
 | 
	
		
			
				|  |  | +  if(NOT temp_CMAKE_${lang}_COMPILER)
 | 
	
		
			
				|  |  | +    message(FATAL_ERROR "FindCompiler provided no compiler!")
 | 
	
		
			
				|  |  | +  endif()
 | 
	
		
			
				|  |  | +  # Create a toolchain file
 | 
	
		
			
				|  |  | +  set(__test_compiler_var CMAKE_${lang}_COMPILER)
 | 
	
		
			
				|  |  | +  set(__test_compiler "${temp_CMAKE_${lang}_COMPILER}")
 | 
	
		
			
				|  |  | +  configure_file(${RunCMake_SOURCE_DIR}/toolchain.cmake.in
 | 
	
		
			
				|  |  | +      ${RunCMake_BINARY_DIR}/Find${lang}Compiler-build/toolchain_${lang}_comp.cmake @ONLY)
 | 
	
		
			
				|  |  | +endfunction()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function(run_compiler_env lang)
 | 
	
		
			
				|  |  | +  # Use the correct compiler
 | 
	
		
			
				|  |  | +  include(${RunCMake_BINARY_DIR}/Find${lang}Compiler-build/${lang}_comp.cmake)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  # Use a single build tree for tests without cleaning.
 | 
	
		
			
				|  |  | +  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${lang}-env-build)
 | 
	
		
			
				|  |  | +  set(RunCMake_TEST_NO_CLEAN 1)
 | 
	
		
			
				|  |  | +  file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
 | 
	
		
			
				|  |  | +  file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  # Set the compiler
 | 
	
		
			
				|  |  | +  if(lang STREQUAL "C")
 | 
	
		
			
				|  |  | +    set(ENV{CC} "'${temp_CMAKE_${lang}_COMPILER}' -DFOO1 -DFOO2")
 | 
	
		
			
				|  |  | +  else()
 | 
	
		
			
				|  |  | +    set(ENV{${lang}} "'${temp_CMAKE_${lang}_COMPILER}' -DFOO1 -DFOO2")
 | 
	
		
			
				|  |  | +  endif()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  run_cmake(${lang})
 | 
	
		
			
				|  |  | +  run_cmake_command(${lang}-Build ${CMAKE_COMMAND} --build . ${verbose_args})
 | 
	
		
			
				|  |  | +endfunction()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +function(run_compiler_tc lang)
 | 
	
		
			
				|  |  | +  # Use a single build tree for tests without cleaning.
 | 
	
		
			
				|  |  | +  set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/${lang}-tc-build)
 | 
	
		
			
				|  |  | +  set(RunCMake_TEST_NO_CLEAN 1)
 | 
	
		
			
				|  |  | +  file(REMOVE_RECURSE "${RunCMake_TEST_BINARY_DIR}")
 | 
	
		
			
				|  |  | +  file(MAKE_DIRECTORY "${RunCMake_TEST_BINARY_DIR}")
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  set(RunCMake_TEST_OPTIONS
 | 
	
		
			
				|  |  | +      -DCMAKE_TOOLCHAIN_FILE=${RunCMake_BINARY_DIR}/Find${lang}Compiler-build/toolchain_${lang}_comp.cmake)
 | 
	
		
			
				|  |  | +  run_cmake(${lang})
 | 
	
		
			
				|  |  | +  run_cmake_command(${lang}-Build ${CMAKE_COMMAND} --build . ${verbose_args})
 | 
	
		
			
				|  |  | +endfunction()
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +set(langs C CXX)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +foreach(lang ${langs})
 | 
	
		
			
				|  |  | +  find_compiler(${lang})
 | 
	
		
			
				|  |  | +  run_compiler_env(${lang})
 | 
	
		
			
				|  |  | +  run_compiler_tc(${lang})
 | 
	
		
			
				|  |  | +endforeach()
 |