Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandr Miloslavskiy2021-06-17 09:36:09 +0000
committerNiraj Modi2021-06-17 16:42:10 +0000
commit8bbcc7e3b45d41cb14973e8fd6ed07c3ba8890b8 (patch)
tree0dd3aaa561041efd3b799a3801200d5ca07db050
parent6b065a1935ee0ed7e169b1864d1f5c08322ac676 (diff)
downloadeclipse.platform.swt-8bbcc7e3b45d41cb14973e8fd6ed07c3ba8890b8.tar.gz
eclipse.platform.swt-8bbcc7e3b45d41cb14973e8fd6ed07c3ba8890b8.tar.xz
eclipse.platform.swt-8bbcc7e3b45d41cb14973e8fd6ed07c3ba8890b8.zip
Bug 574007 - [win32] Better JDK searching in native library build script
* Once again searches '%ProgramFiles%\Java\jdk*' * Correctly searches in '%ProgramFiles%\Java\jdk*' instead of '\Program Files\Java\jdk*' * Now auto-configures from '%ProgramFiles%\AdoptOpenJDK\jdk*' * Fixed incorrect "WARNING: x64 Java JDK not found" when JDK path contained spaces * Better supports multiple potential JDK paths Change-Id: Iba421f2eb517ca85fbc7e3589e8ac5fb72400398 Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com> Reviewed-on: https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/182102 Tested-by: Platform Bot <platform-bot@eclipse.org> Reviewed-by: Niraj Modi <niraj.modi@in.ibm.com>
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat45
1 files changed, 33 insertions, 12 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat
index 5fdbe7091f..9b024602b9 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat
+++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/build.bat
@@ -46,18 +46,19 @@ IF NOT "x.%1"=="x.x86_64" (
set PROCESSOR_ARCHITECTURE=AMD64
IF "x.%OUTPUT_DIR%"=="x." set OUTPUT_DIR=..\..\..\org.eclipse.swt.win32.win32.x86_64
-IF "x.%SWT_JAVA_HOME%"=="x." set "SWT_JAVA_HOME=%ProgramFiles%\AdoptOpenJDK\jdk-8.0.292.10-hotspot"
-IF "x.%SWT_JAVA_HOME%"=="x." (
- IF exist "%SWT_BUILDDIR%\Java\Oracle\jdk1.8.0-latest\x64" (
- set "SWT_JAVA_HOME=%SWT_BUILDDIR%\Java\Oracle\jdk1.8.0-latest\x64"
- ) ELSE (
- IF exist "C:\Program Files\Java\jdk*" (
- echo "Found Java in C:\Program Files\Java\jdk, automatically setting SWT_JAVA_HOME to latest java"
- for /d %%i in ("\Program Files\Java\jdk*") do set SWT_JAVA_HOME=%%i
- )
- )
-)
-IF NOT EXIST %SWT_JAVA_HOME% (
+
+:: Search for a usable JDK
+:: -----------------------
+IF "%SWT_JAVA_HOME%"=="" ECHO 'SWT_JAVA_HOME' was not provided, auto-searching for JDK...
+:: Bug 572733: JDK path used on Azure build machines
+IF "%SWT_JAVA_HOME%"=="" CALL :TryToUseJdk "%ProgramFiles%\AdoptOpenJDK\jdk-8.0.292.10-hotspot"
+:: Bug 526802: Probably some kind of legacy build machine path
+IF "%SWT_JAVA_HOME%"=="" CALL :TryToUseJdk "%SWT_BUILDDIR%\Java\Oracle\jdk1.8.0-latest\x64"
+:: Search for generic JDKs so that user can build with little configuration
+:: Note that first found JDK wins, so sort them by order of preference.
+IF "%SWT_JAVA_HOME%"=="" CALL :TryToUseJdk "%ProgramFiles%\Java\jdk*"
+IF "%SWT_JAVA_HOME%"=="" CALL :TryToUseJdk "%ProgramFiles%\AdoptOpenJDK\jdk*"
+IF NOT EXIST "%SWT_JAVA_HOME%" (
echo "WARNING: x64 Java JDK not found. Please set SWT_JAVA_HOME to your JDK directory."
echo " Refer steps for SWT Windows native setup: https://www.eclipse.org/swt/swt_win_native.php"
) ELSE (
@@ -83,3 +84,23 @@ if %ERRORLEVEL% NEQ 0 (
echo " Refer steps for SWT Windows native setup: https://www.eclipse.org/swt/swt_win_native.php"
)
nmake -f make_win32.mak %1 %2 %3 %4 %5 %6 %7 %8 %9
+GOTO :EOF
+
+:TryToUseJdk
+SET TESTED_JDK_PATH_MASK=%~1
+:: Loop over all directories matching mask.
+:: Note that directories are iterated in alphabetical order and *last* hit will
+:: be selected in hopes to select the highest available JDK version.
+FOR /D %%I IN ("%TESTED_JDK_PATH_MASK%") DO (
+ IF NOT EXIST "%%~I" (
+ ECHO -- JDK '%%~I' doesn't exist on disk
+ GOTO :EOF
+ )
+ IF NOT EXIST "%%~I\include\jni.h" (
+ ECHO -- JDK '%%~I' is bad: no jni.h
+ GOTO :EOF
+ )
+ ECHO -- JDK '%%~I' looks good, selecting it
+ SET SWT_JAVA_HOME=%%~I
+)
+GOTO :EOF

Back to the top