| 
					
				 | 
			
			
				@@ -330,6 +330,35 @@ function(CMAKE_DETERMINE_COMPILER_ID_CHECK lang file) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     endforeach() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # Detect the exact architecture from the PE header. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    if(WIN32) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # The offset to the PE signature is stored at 0x3c. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      file(READ ${file} peoffsethex LIMIT 1 OFFSET 60 HEX) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      string(SUBSTRING "${peoffsethex}" 0 1 peoffsethex1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      string(SUBSTRING "${peoffsethex}" 1 1 peoffsethex2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      set(peoffsetexpression "${peoffsethex1} * 16 + ${peoffsethex2}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      string(REPLACE "a" "10" peoffsetexpression "${peoffsetexpression}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      string(REPLACE "b" "11" peoffsetexpression "${peoffsetexpression}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      string(REPLACE "c" "12" peoffsetexpression "${peoffsetexpression}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      string(REPLACE "d" "13" peoffsetexpression "${peoffsetexpression}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      string(REPLACE "e" "14" peoffsetexpression "${peoffsetexpression}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      string(REPLACE "f" "15" peoffsetexpression "${peoffsetexpression}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      math(EXPR peoffset "${peoffsetexpression}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      file(READ ${file} peheader LIMIT 6 OFFSET ${peoffset} HEX) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if(peheader STREQUAL "50450000a201") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        set(ARCHITECTURE_ID "SH3") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      elseif(peheader STREQUAL "50450000a301") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        set(ARCHITECTURE_ID "SH3DSP") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      elseif(peheader STREQUAL "50450000a601") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        set(ARCHITECTURE_ID "SH4") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      elseif(peheader STREQUAL "50450000a801") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        set(ARCHITECTURE_ID "SH5") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      elseif(peheader STREQUAL "50450000c201") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        set(ARCHITECTURE_ID "THUMB") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     # Check if a valid compiler and platform were found. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     if(COMPILER_ID AND NOT COMPILER_ID_TWICE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       set(CMAKE_${lang}_COMPILER_ID "${COMPILER_ID}") 
			 |