From cd127cb351b1e54a415f260e5ce52fec3dfd6087 Mon Sep 17 00:00:00 2001
From: Ryan LaMothe <ryan.lamothe@quantumworx.com>
Date: Tue, 30 Apr 2013 19:27:06 +0000
Subject: [PATCH] Modified build.xml to properly handle cases where Windows
 development machines with multiple instances of Visual Studio and Windows SDK
 are installed.

---
 com.amd.aparapi.jni/build.xml | 136 ++++++++++++++++++++++++++--------
 1 file changed, 105 insertions(+), 31 deletions(-)

diff --git a/com.amd.aparapi.jni/build.xml b/com.amd.aparapi.jni/build.xml
index 27632058..594c2177 100644
--- a/com.amd.aparapi.jni/build.xml
+++ b/com.amd.aparapi.jni/build.xml
@@ -36,7 +36,6 @@ First consider editing the properties in build.properties
          </and>
       </condition>
 
-
       <available property="win64.amd.app.sdk.exists" file="C:/Program Files (x86)/AMD APP" type="dir"/>
       <condition property="amd.app.sdk.dir" value="C:/Program Files (x86)/AMD APP">
          <and>
@@ -48,7 +47,6 @@ First consider editing the properties in build.properties
          </and>
       </condition>
 
-
       <available property="linux.amd.app.sdk.exists" file="/opt/AMDAPP" type="dir"/>
       <condition property="amd.app.sdk.dir" value="/opt/AMDAPP">
          <and>
@@ -68,8 +66,11 @@ First consider editing the properties in build.properties
 
       <echo message=" amd.app.sdk.dir ${amd.app.sdk.dir}"/>
 
-      <available property="msvc.64.9.0.exists" file="c:/Program Files (x86)/Microsoft Visual Studio 10.0\vc\bin" type="dir"/>
-      <condition property="msvc.dir" value="c:/Program Files (x86)/Microsoft Visual Studio 10.0">
+	  <!-- Check for Visual Studio -->
+	  <!-- This needs to be in descending order to properly handle multiple installations -->
+	  
+      <available property="msvc.32.11.0.exists" file="c:/Program Files (x86)/Microsoft Visual Studio 11.0\VC\bin" type="dir"/>
+      <condition property="msvc.dir" value="c:/Program Files (x86)/Microsoft Visual Studio 11.0">
          <and>
             <not>
                <or>
@@ -78,7 +79,7 @@ First consider editing the properties in build.properties
                </or>
             </not>
             <os family="windows" />
-            <isset property="msvc.64.9.0.exists" />
+            <isset property="msvc.32.11.0.exists" />
             <not>
                <isset property="msvc.dir" />
             </not>
@@ -87,8 +88,26 @@ First consider editing the properties in build.properties
             </not>
          </and>
       </condition>
-
-      <available property="msvc.64.10.0.exists" file="c:/Program Files (x86)/Microsoft Visual Studio 10.0\vc\bin" type="dir"/>
+      
+      <available property="msvc.64.10.0.exists" file="c:/Program Files/Microsoft Visual Studio 10.0\vc\bin" type="dir"/>
+      <condition property="msvc.dir" value="c:/Program Files/Microsoft Visual Studio 10.0">
+         <and>
+            <or>
+               <os arch="x86" />
+               <os arch="i386" />
+            </or>
+            <os family="windows" />
+            <isset property="msvc.64.10.0.exists" />
+            <not>
+               <isset property="msvc.dir" />
+            </not>
+            <not>
+               <isset property="mingw.dir" />
+            </not>
+         </and>
+      </condition>
+      
+      <available property="msvc.32.10.0.exists" file="c:/Program Files (x86)/Microsoft Visual Studio 10.0\vc\bin" type="dir"/>
       <condition property="msvc.dir" value="c:/Program Files (x86)/Microsoft Visual Studio 10.0">
          <and>
             <not>
@@ -98,7 +117,7 @@ First consider editing the properties in build.properties
                </or>
             </not>
             <os family="windows" />
-            <isset property="msvc.64.10.0.exists" />
+            <isset property="msvc.32.10.0.exists" />
             <not>
                <isset property="msvc.dir" />
             </not>
@@ -107,16 +126,16 @@ First consider editing the properties in build.properties
             </not>
          </and>
       </condition>
-
-      <available property="msvc.32.10.0.exists" file="c:/Program Files/Microsoft Visual Studio 10.0\vc\bin" type="dir"/>
-      <condition property="msvc.dir" value="c:/Program Files/Microsoft Visual Studio 10.0">
+      
+      <available property="msvc.32.9.0.exists" file="c:/Program Files/Microsoft Visual Studio 9.0\vc\bin" type="dir"/>
+      <condition property="msvc.dir" value="c:/Program Files/Microsoft Visual Studio 9.0">
          <and>
             <or>
                <os arch="x86" />
                <os arch="i386" />
             </or>
             <os family="windows" />
-            <isset property="msvc.32.10.0.exists" />
+            <isset property="msvc.32.9.0.exists" />
             <not>
                <isset property="msvc.dir" />
             </not>
@@ -126,29 +145,42 @@ First consider editing the properties in build.properties
          </and>
       </condition>
 
-      <available property="msvc.32.9.0.exists" file="c:/Program Files/Microsoft Visual Studio 9.0\vc\bin" type="dir"/>
-      <condition property="msvc.dir" value="c:/Program Files/Microsoft Visual Studio 9.0">
+	  <!-- Check for SDKs -->
+	  <!-- This needs to be in descending order to properly handle multiple installations -->
+	  
+      <!-- <available property="msvc.sdk.8.0A.32.exists" file="C:/Program Files (x86)/Microsoft SDKs/Windows/v8.0A" type="dir"/>
+      <condition property="msvc.sdk.dir" value="C:/Program Files (x86)/Microsoft SDKs/Windows/v8.0A">
          <and>
-            <or>
-               <os arch="x86" />
-               <os arch="i386" />
-            </or>
             <os family="windows" />
-            <isset property="msvc.32.9.0.exists" />
+            <isset property="msvc.sdk.8.0A.32.exists" />
             <not>
-               <isset property="msvc.dir" />
+               <isset property="msvc.sdk.dir" />
             </not>
             <not>
                <isset property="mingw.dir" />
             </not>
          </and>
       </condition>
-
-      <available property="msvc.sdk.7.1.exists" file="C:/Program Files/Microsoft SDKs/Windows/v7.1" type="dir"/>
-      <condition property="msvc.sdk.dir" value="C:/Program Files/Microsoft SDKs/Windows/v7.1">
+      
+      <available property="msvc.sdk.8.0.32.exists" file="C:/Program Files (x86)/Microsoft SDKs/Windows/v8.0" type="dir"/>
+      <condition property="msvc.sdk.dir" value="C:/Program Files (x86)/Microsoft SDKs/Windows/v8.0">
          <and>
             <os family="windows" />
-            <isset property="msvc.sdk.7.1.exists" />
+            <isset property="msvc.sdk.8.0.32.exists" />
+            <not>
+               <isset property="msvc.sdk.dir" />
+            </not>
+            <not>
+               <isset property="mingw.dir" />
+            </not>
+         </and>
+      </condition> -->
+      
+      <available property="msvc.sdk.7.1A.exists" file="C:/Program Files/Microsoft SDKs/Windows/v7.1A" type="dir"/>
+      <condition property="msvc.sdk.dir" value="C:/Program Files/Microsoft SDKs/Windows/v7.1A">
+         <and>
+            <os family="windows" />
+            <isset property="msvc.sdk.7.1A.exists" />
             <not>
                <isset property="msvc.sdk.dir" />
             </not>
@@ -157,12 +189,26 @@ First consider editing the properties in build.properties
             </not>
          </and>
       </condition>
-
-      <available property="msvc.sdk.7.0.exists" file="C:/Program Files/Microsoft SDKs/Windows/v7.0" type="dir"/>
-      <condition property="msvc.sdk.dir" value="C:/Program Files/Microsoft SDKs/Windows/v7.0">
+      
+      <available property="msvc.sdk.7.1A.32.exists" file="C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A" type="dir"/>
+      <condition property="msvc.sdk.dir" value="C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1A">
          <and>
             <os family="windows" />
-            <isset property="msvc.sdk.7.0.exists" />
+            <isset property="msvc.sdk.7.1A.32.exists" />
+            <not>
+               <isset property="msvc.sdk.dir" />
+            </not>
+            <not>
+               <isset property="mingw.dir" />
+            </not>
+         </and>
+      </condition>
+      
+      <available property="msvc.sdk.7.1.exists" file="C:/Program Files/Microsoft SDKs/Windows/v7.1" type="dir"/>
+      <condition property="msvc.sdk.dir" value="C:/Program Files/Microsoft SDKs/Windows/v7.1">
+         <and>
+            <os family="windows" />
+            <isset property="msvc.sdk.7.1.exists" />
             <not>
                <isset property="msvc.sdk.dir" />
             </not>
@@ -172,11 +218,11 @@ First consider editing the properties in build.properties
          </and>
       </condition>
 
-      <available property="msvc.sdk.6.0A.exists" file="C:/Program Files/Microsoft SDKs/Windows/v6.0A" type="dir"/>
-      <condition property="msvc.sdk.dir" value="C:/Program Files/Microsoft SDKs/Windows/v6.0A">
+	  <available property="msvc.sdk.7.1.32.exists" file="C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1" type="dir"/>
+      <condition property="msvc.sdk.dir" value="C:/Program Files (x86)/Microsoft SDKs/Windows/v7.1">
          <and>
             <os family="windows" />
-            <isset property="msvc.sdk.6.0A.exists" />
+            <isset property="msvc.sdk.7.1.32.exists" />
             <not>
                <isset property="msvc.sdk.dir" />
             </not>
@@ -213,6 +259,34 @@ First consider editing the properties in build.properties
             </not>
          </and>
       </condition>
+      
+      <available property="msvc.sdk.7.0.exists" file="C:/Program Files/Microsoft SDKs/Windows/v7.0" type="dir"/>
+      <condition property="msvc.sdk.dir" value="C:/Program Files/Microsoft SDKs/Windows/v7.0">
+         <and>
+            <os family="windows" />
+            <isset property="msvc.sdk.7.0.exists" />
+            <not>
+               <isset property="msvc.sdk.dir" />
+            </not>
+            <not>
+               <isset property="mingw.dir" />
+            </not>
+         </and>
+      </condition>
+
+      <available property="msvc.sdk.6.0A.exists" file="C:/Program Files/Microsoft SDKs/Windows/v6.0A" type="dir"/>
+      <condition property="msvc.sdk.dir" value="C:/Program Files/Microsoft SDKs/Windows/v6.0A">
+         <and>
+            <os family="windows" />
+            <isset property="msvc.sdk.6.0A.exists" />
+            <not>
+               <isset property="msvc.sdk.dir" />
+            </not>
+            <not>
+               <isset property="mingw.dir" />
+            </not>
+         </and>
+      </condition>
 
       <echo message=" msvc.dir ${msvc.dir}"/>
       <echo message=" msvc.sdk.dir ${msvc.sdk.dir}"/>
-- 
GitLab