1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
|
/*******************************************************************************
* Copyright (c) 2000, 2015 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
* Kevin Cornell (Rational Software Corporation)
* Rapicorp, Inc - Default the configuration to Application Support (bug 461725)
*******************************************************************************/
#ifndef ECLIPSE_OS_H
#define ECLIPSE_OS_H
#include "eclipseJNI.h"
#include "eclipseUnicode.h"
#ifdef MACOSX
#define JAVA_FRAMEWORK "/System/Library/Frameworks/JavaVM.framework"
#endif
/* Operating System Dependent Information */
/*** See eclipse.c for information on the launcher runtime architecture ***/
/* Global Variables */
extern _TCHAR* defaultVM; /* name of VM to use normally */
#ifdef _WIN32
extern _TCHAR* consoleVM; /* windows needs a different vm executable for the console */
#endif
extern _TCHAR* shippedVMDir; /* VM bin directory with separator */
extern _TCHAR* exitData; /* exit data set from Java */
extern _TCHAR* vmLibrary; /* name of the VM shared library */
extern int initialArgc; /* argc originally used to start launcher */
extern _TCHAR** initialArgv; /* argv originally used to start launcher */
extern _TCHAR* eeLibPath; /* library path specified in a .ee file */
extern int secondThread; /* whether or not to start the vm on a second thread */
/* OS Specific Functions */
/** Display a Message
*
* This method is called to display a message to the user.
* The method should not return until the user has acknowledged
* the message. This method will only be called after the window
* system has been initialized.
*/
extern void displayMessage( _TCHAR* title, _TCHAR* message );
/** Initialize the Window System
*
* This method is called after the command line arguments have been
* parsed. Its purpose is to initialize the corresponding window system.
*
* The showSplash flag indicates the splash window will be displayed by
* this process (e.g., value will be zero for the main launcher).
*/
extern int initWindowSystem( int* argc, _TCHAR* argv[], int showSplash );
/** Show the Splash Window
*
* This method is called to display the actual splash window. It will only
* be called by the splash window process and not the main launcher process.
* The splash ID passed corresponds to the string returned from initWindowSystem().
* If possible, this ID should be used to communicate some piece of data back
* to the main launcher program for two reasons:
* 1) to detect when the splash window process terminates
* 2) to terminate the splash window process should the JVM terminate before it
* completes its initialization.
*
* Two parameters are passed: the install home directory and a specific bitmap image
* file for a feature. The feature's image file is tried first and if it cannot be
* displayed, the images from the install directory are used.
*
* Return (exit code):
* 0 - success
* non-zero - could not find a splash image to display
*/
extern int showSplash( const _TCHAR* featureImage );
/** Get List of Java VM Arguments
*
* A given Java VM might require a special set of arguments in order to
* optimize its performance. This method returns a NULL terminated array
* of strings, where each string is a separate VM argument.
*/
extern _TCHAR** getArgVM( _TCHAR *vm );
/* Find the vm shared library associated with the given java executable */
extern _TCHAR * findVMLibrary( _TCHAR * command );
extern void dispatchMessages();
extern jlong getSplashHandle();
extern void takeDownSplash();
extern void restartLauncher( _TCHAR* program, _TCHAR* args[] );
/* launch the vm in a separate process and wait for it to finish */
extern JavaResults* launchJavaVM( _TCHAR* args[] );
/* launch the vm in this process using JNI invocation */
extern JavaResults* startJavaVM( _TCHAR* libPath, _TCHAR* vmArgs[], _TCHAR* progArgs[], _TCHAR* jarFile );
/* do any platform specific processing of the user vmargs */
extern void processVMArgs(_TCHAR **vmargs[] );
/* is this a JVM whose version is >= 9 (then allow the --add-modules VM argument), returns 0 if we don't know */
extern int isModularVM( _TCHAR * javaVM, _TCHAR * jniLib );
/* an array of paths that will need to be on the search path to load the vm shared library */
extern _TCHAR ** getVMLibrarySearchPath(_TCHAR * vmLibrary);
extern int reuseWorkbench(_TCHAR** filePath, int timeout);
extern _TCHAR* getFolderForApplicationData();
#endif /* ECLIPSE_OS_H */
|