Revert "Remove unused project." This reverts commit eaada771a6e62ca494a625ce1b060f1a94fa9877. Reason for revert: Breaks build_test and other builds Bug: 155862492 Change-Id: I1a14b84d54b05596ec250b31ae56e437cf49fd81
diff --git a/find_java2/FindJava2/FindJava2.cpp b/find_java2/FindJava2/FindJava2.cpp new file mode 100755 index 0000000..1435e1b --- /dev/null +++ b/find_java2/FindJava2/FindJava2.cpp
@@ -0,0 +1,199 @@ +/* +* Copyright (C) 2014 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include "stdafx.h" +#include "FindJava2.h" +#include "utils.h" +#include "JavaFinder.h" +#include "FindJava2Dlg.h" + +#ifdef _DEBUG +#define new DEBUG_NEW +#endif + +// The one and only MFC application object +class CFindJava2App : public CWinApp { +public: + CFindJava2App() { + } + + // Set CWinApp default registry key. Must be consistent with all apps using findjava2. + void initRegistryKey() { + SetRegistryKey(_T("Android-FindJava2")); + } +}; + +CFindJava2App theApp; + +using namespace std; + +int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) { + + // Init utils; use default app name based on VERSIONINFO.FileDescription + initUtils(NULL); + + // initialize MFC and print and error on failure + HMODULE hModule = ::GetModuleHandle(NULL); + if (hModule == NULL) { + displayLastError(_T("Fatal Error: ")); + return -2; + } + if (!AfxWinInit(hModule, NULL, ::GetCommandLine(), 0)) { + displayLastError(_T("Fatal Error: ")); + return -3; + } + + theApp.initRegistryKey(); + + gIsConsole = true; // tell utils to to print errors to stderr + gIsDebug = (getenv("ANDROID_SDKMAN_DEBUG") != NULL); + + // Parse command line + bool doTests = false; + bool doShortPath = false; + bool doVersion = false; + bool doJavaW = false; + bool doForceUi = false; + bool doJava1_7 = false; + + for (int i = 1; i < argc; i++) { + if (_tcsnccmp(argv[i], _T("-t"), 2) == 0) { + doTests = true; + + } else if (_tcsnccmp(argv[i], _T("-d"), 2) == 0) { + gIsDebug = true; + + } else if (_tcsnccmp(argv[i], _T("-s"), 2) == 0) { + doShortPath = true; + + } else if (_tcsnccmp(argv[i], _T("-v"), 2) == 0) { + doVersion = true; + + } else if (_tcsnccmp(argv[i], _T("-f"), 2) == 0) { + doForceUi = true; + + } else if (_tcsnccmp(argv[i], _T("-7"), 2) == 0) { + doJava1_7 = true; + + } else if (_tcscmp(argv[i], _T("-w")) == 0 || _tcscmp(argv[i], _T("-javaw")) == 0) { + doJavaW = true; + + } else { + printf( + "Outputs the path of the first Java.exe found on the local system.\n" + "Returns code 0 when found, 1 when not found.\n" + "Options:\n" + "-h / -help : This help.\n" + "-t / -test : Internal test.\n" + "-f / -force : Force UI selection.\n" + "-7 : Java 1.7 minimum instead of 1.6.\n" + "-s / -short : Print path in short DOS form.\n" + "-w / -javaw : Search a matching javaw.exe; defaults to java.exe if not found.\n" + "-v / -version: Only prints the Java version found.\n" + ); + return 2; + } + } + + + CJavaFinder javaFinder(JAVA_VERS_TO_INT(1, doJava1_7 ? 7 : 6)); + CJavaPath javaPath = javaFinder.getRegistryPath(); + + if (doTests) { + std::set<CJavaPath> paths; + javaFinder.findJavaPaths(&paths); + bool regPrinted = false; + for (const CJavaPath &p : paths) { + bool isReg = (p == javaPath); + if (isReg) { + regPrinted = true; + } + _tprintf(_T("%c [%s] %s\n"), isReg ? '*' : ' ', p.getVersion(), p.mPath); + } + + if (!regPrinted && !javaPath.isEmpty()) { + const CJavaPath &p = javaPath; + _tprintf(_T("* [%s] %s\n"), p.getVersion(), p.mPath); + } + return 0; + } + + if (doForceUi || javaPath.isEmpty()) { + CFindJava2Dlg dlg; + dlg.setJavaFinder(&javaFinder); + INT_PTR nResponse = dlg.DoModal(); + + if (nResponse == IDOK) { + // Get java path selected by user and save into registry for later re-use + javaPath = dlg.getSelectedPath(); + javaFinder.setRegistryPath(javaPath); + } else if (nResponse == -1) { // MFC boilerplate + TRACE(traceAppMsg, 0, "Warning: dialog creation failed, so application is terminating unexpectedly.\n"); + return 1; + } + } + + if (javaPath.isEmpty()) { + fprintf(stderr, "No java.exe path found"); + return 1; + } + + if (doShortPath) { + PVOID oldWow64Value = disableWow64FsRedirection(); + if (!javaPath.toShortPath()) { + revertWow64FsRedirection(&oldWow64Value); + _ftprintf(stderr, + _T("Failed to convert path to a short DOS path: %s\n"), + javaPath.mPath); + return 1; + } + revertWow64FsRedirection(&oldWow64Value); + } + + if (doVersion) { + // Print version found. We already have the version as an integer + // so we don't need to run java -version a second time. + _tprintf(_T("%s"), javaPath.getVersion()); + return 0; + } + + if (doJavaW) { + // Try to find a javaw.exe instead of java.exe at the same location. + CPath javawPath = javaPath.mPath; + javawPath.RemoveFileSpec(); + javawPath.Append(_T("javaw.exe")); + javawPath.Canonicalize(); + + // Only accept it if we can actually find the exec + PVOID oldWow64Value = disableWow64FsRedirection(); + bool exists = javawPath.FileExists() == TRUE; // skip BOOL-to-bool warning + revertWow64FsRedirection(&oldWow64Value); + + if (!exists) { + _ftprintf(stderr, + _T("Failed to find javaw at: %s\n"), + javawPath); + return 1; + } + + javaPath.mPath = javawPath; + } + + // Print java.exe path found + _tprintf(_T("%s"), javaPath.mPath); + return 0; + +}
diff --git a/find_java2/FindJava2/FindJava2.h b/find_java2/FindJava2/FindJava2.h new file mode 100755 index 0000000..a144bfc --- /dev/null +++ b/find_java2/FindJava2/FindJava2.h
@@ -0,0 +1,19 @@ +/* +* Copyright (C) 2014 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#pragma once + +#include "resource.h"
diff --git a/find_java2/FindJava2/FindJava2.rc b/find_java2/FindJava2/FindJava2.rc new file mode 100755 index 0000000..ff767c6 --- /dev/null +++ b/find_java2/FindJava2/FindJava2.rc
@@ -0,0 +1,142 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", "Android" + VALUE "FileDescription", "Find Java for Android SDK" + VALUE "FileVersion", "2.0.0.1" + VALUE "InternalName", "FindJava2.exe" + VALUE "LegalCopyright", "(c) Android. All rights reserved." + VALUE "OriginalFilename", "FindJava2.exe" + VALUE "ProductName", "Android SDK" + VALUE "ProductVersion", "2.0.0.1" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_FINDJAVA2_DIALOG DIALOGEX 0, 0, 317, 196 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +EXSTYLE WS_EX_APPWINDOW +CAPTION "Find Java 2 for Android" +FONT 8, "MS Shell Dlg", 0, 0, 0x1 +BEGIN + DEFPUSHBUTTON "Start",IDOK,205,174,50,14 + PUSHBUTTON "Quit",IDCANCEL,260,174,50,14 + PUSHBUTTON "Add...",IDC_BUTTON_ADD,7,174,50,14 + LTEXT "Select which version of Java to use:",IDC_STATIC,7,7,116,8 + CONTROL "",IDC_PATH_LIST,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,18,300,150 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + IDD_FINDJAVA2_DIALOG, DIALOG + BEGIN + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ANDROID_ICON ICON "..\\android_icon.ico" +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED +
diff --git a/find_java2/FindJava2/FindJava2.vcxproj b/find_java2/FindJava2/FindJava2.vcxproj new file mode 100755 index 0000000..3c9ac4e --- /dev/null +++ b/find_java2/FindJava2/FindJava2.vcxproj
@@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|Win32"> + <Configuration>Debug</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|Win32"> + <Configuration>Release</Configuration> + <Platform>Win32</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{E696008D-A1B8-4434-B6B4-24ED251B1676}</ProjectGuid> + <Keyword>Win32Proj</Keyword> + <RootNamespace>FindJava2</RootNamespace> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>true</UseDebugLibraries> + <PlatformToolset>v120</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + <UseOfMfc>Dynamic</UseOfMfc> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <UseDebugLibraries>false</UseDebugLibraries> + <PlatformToolset>v120</PlatformToolset> + <WholeProgramOptimization>true</WholeProgramOptimization> + <CharacterSet>Unicode</CharacterSet> + <UseOfMfc>Dynamic</UseOfMfc> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <LinkIncremental>true</LinkIncremental> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <LinkIncremental>false</LinkIncremental> + </PropertyGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> + <ClCompile> + <PrecompiledHeader>Use</PrecompiledHeader> + <WarningLevel>Level3</WarningLevel> + <Optimization>Disabled</Optimization> + <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <AdditionalDependencies>version.lib</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> + <ClCompile> + <WarningLevel>Level3</WarningLevel> + <PrecompiledHeader>Use</PrecompiledHeader> + <Optimization>MaxSpeed</Optimization> + <FunctionLevelLinking>true</FunctionLevelLinking> + <IntrinsicFunctions>true</IntrinsicFunctions> + <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> + <AdditionalIncludeDirectories>$(ProjectDir);$(SolutionDir)\src;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <SubSystem>Console</SubSystem> + <GenerateDebugInformation>true</GenerateDebugInformation> + <EnableCOMDATFolding>true</EnableCOMDATFolding> + <OptimizeReferences>true</OptimizeReferences> + <AdditionalDependencies>version.lib</AdditionalDependencies> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <ClInclude Include="..\src\FindJava2Dlg.h" /> + <ClInclude Include="..\src\JavaFinder.h" /> + <ClInclude Include="..\src\JavaPath.h" /> + <ClInclude Include="..\src\utils.h" /> + <ClInclude Include="FindJava2.h" /> + <ClInclude Include="Resource.h" /> + <ClInclude Include="stdafx.h" /> + <ClInclude Include="targetver.h" /> + </ItemGroup> + <ItemGroup> + <ClCompile Include="..\src\FindJava2Dlg.cpp" /> + <ClCompile Include="..\src\JavaFinder.cpp" /> + <ClCompile Include="..\src\JavaPath.cpp" /> + <ClCompile Include="..\src\utils.cpp" /> + <ClCompile Include="FindJava2.cpp" /> + <ClCompile Include="stdafx.cpp"> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader> + </ClCompile> + </ItemGroup> + <ItemGroup> + <ResourceCompile Include="FindJava2.rc" /> + </ItemGroup> + <ItemGroup> + <Image Include="..\android_icon.ico" /> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> +</Project> \ No newline at end of file
diff --git a/find_java2/FindJava2/resource.h b/find_java2/FindJava2/resource.h new file mode 100755 index 0000000..1d5f98f --- /dev/null +++ b/find_java2/FindJava2/resource.h
@@ -0,0 +1,19 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by FindJava2.rc +// +#define IDI_ANDROID_ICON 5 +#define IDD_FINDJAVA2_DIALOG 102 +#define IDC_BUTTON_ADD 1000 +#define IDC_PATH_LIST 1001 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif
diff --git a/find_java2/FindJava2/stdafx.cpp b/find_java2/FindJava2/stdafx.cpp new file mode 100755 index 0000000..3baa67f --- /dev/null +++ b/find_java2/FindJava2/stdafx.cpp
@@ -0,0 +1,24 @@ +/* +* Copyright (C) 2014 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// stdafx.cpp : source file that includes just the standard includes +// FindJava2.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + +// TODO: reference any additional headers you need in STDAFX.H +// and not in this file
diff --git a/find_java2/FindJava2/stdafx.h b/find_java2/FindJava2/stdafx.h new file mode 100755 index 0000000..7230def --- /dev/null +++ b/find_java2/FindJava2/stdafx.h
@@ -0,0 +1,55 @@ +/* +* Copyright (C) 2014 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, +// but are changed infrequently. + +#pragma once + +#include "targetver.h" + + +#define _CRT_SECURE_NO_WARNINGS + +#include <stdio.h> +#include <tchar.h> +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit +#define _AFX_NO_MFC_CONTROLS_IN_DIALOGS // remove support for MFC controls in dialogs + +#ifndef VC_EXTRALEAN +#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers +#endif + +#include <afx.h> +#include <afxwin.h> // MFC core and standard components +#include <afxext.h> // MFC extensions +#ifndef _AFX_NO_OLE_SUPPORT +#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls +#endif +#ifndef _AFX_NO_AFXCMN_SUPPORT +#include <afxcmn.h> // MFC support for Windows Common Controls +#endif // _AFX_NO_AFXCMN_SUPPORT + +#include <iostream> + + +#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // some CString constructors will be explicit + +#include <atlbase.h> +#include <atlstr.h> + +// TODO: reference additional headers your program requires here
diff --git a/find_java2/FindJava2/targetver.h b/find_java2/FindJava2/targetver.h new file mode 100755 index 0000000..fc6d20b --- /dev/null +++ b/find_java2/FindJava2/targetver.h
@@ -0,0 +1,24 @@ +/* +* Copyright (C) 2014 The Android Open Source Project +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#pragma once + +// Including SDKDDKVer.h defines the highest available Windows platform. + +// If you wish to build your application for a previous Windows platform, include WinSDKVer.h and +// set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. + +#include <SDKDDKVer.h>