Add common FindCpuType function.
authormturk <mturk@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 17 Jun 2009 05:33:52 +0000 (05:33 +0000)
committermturk <mturk@13f79535-47bb-0310-9956-ffa450edef68>
Wed, 17 Jun 2009 05:33:52 +0000 (05:33 +0000)
The problem is that environment variable doesn't always set AMD64. This is true only for amd processors.
If present and not IA64 the %PROCESSOR_ARCHITEW6432% must be x86_64

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@785477 13f79535-47bb-0310-9956-ffa450edef68

res/tomcat.nsi

index fbae5af..0f810d1 100644 (file)
@@ -172,14 +172,13 @@ Section "Core" SecTomcatCore
   File bin\tomcat@VERSION_MAJOR@w.exe
 
   ; Get the current platform x86 / AMD64 / IA64
-  ExpandEnvStrings $0 "%PROCESSOR_ARCHITEW6432%"
-  StrCmp $0 "%PROCESSOR_ARCHITEW6432%" 0 +2
-  ExpandEnvStrings $0 "%PROCESSOR_ARCHITECTURE%"
+  Call FindCpuType
+  Pop $0
   StrCmp $0 "x86" 0 +2
   File /oname=tomcat@VERSION_MAJOR@.exe bin\tomcat@VERSION_MAJOR@.exe
-  StrCmp $0 "AMD64" 0 +2
+  StrCmp $0 "x86_64" 0 +2
   File /oname=tomcat@VERSION_MAJOR@.exe bin\x86_64\tomcat@VERSION_MAJOR@.exe
-  StrCmp $0 "IA64" 0 +2
+  StrCmp $0 "ia64" 0 +2
   File /oname=tomcat@VERSION_MAJOR@.exe bin\ia64\tomcat@VERSION_MAJOR@.exe
 
   InstallRetry:
@@ -224,14 +223,14 @@ Section "Native" SecTomcatNative
   SectionIn 3
 
   SetOutPath $INSTDIR\bin
-  ExpandEnvStrings $0 "%PROCESSOR_ARCHITEW6432%"
-  StrCmp $0 "%PROCESSOR_ARCHITEW6432%" 0 +2
-  ExpandEnvStrings $0 "%PROCESSOR_ARCHITECTURE%"
+  Call FindCpuType
+  Pop $0
+
   StrCmp $0 "x86" 0 +2
   File bin\tcnative-1.dll
-  StrCmp $0 "AMD64" 0 +2
+  StrCmp $0 "x86_64" 0 +2
   File /oname=tcnative-1.dll bin\x86_64\tcnative-1.dll
-  StrCmp $0 "IA64" 0 +2
+  StrCmp $0 "ia64" 0 +2
   File /oname=tcnative-1.dll bin\ia64\tcnative-1.dll
 
   ClearErrors
@@ -364,6 +363,31 @@ FunctionEnd
 ;  !insertmacro MUI_DESCRIPTION_TEXT ${SecWebapps} $(DESC_SecWebapps)
 !insertmacro MUI_FUNCTION_DESCRIPTION_END
 
+; =====================
+; FindCpuType Function
+; =====================
+;
+; Find the CPU used on the system, and put the result on the top of the
+; stack
+;
+Function FindCpuType
+
+  ClearErrors
+  ; Default CPU is always x86
+  StrCpy $1 "x86"
+  ExpandEnvStrings $0 "%PROCESSOR_ARCHITEW6432%"
+  StrCmp $0 "%PROCESSOR_ARCHITEW6432%" 0 +5
+  StrCmp $0 "IA64" 0 +3        
+  StrCpy $1 "ia64"
+  Goto FoundCpu
+  StrCpy $1 "x86_64"
+
+FoundCpu:
+  ; Put the result in the stack
+  Push $1
+
+FunctionEnd
+
 
 ; =====================
 ; CheckUserType Function