Browse Source
* Upload Android armv7 libs * Fix debug build * utlvector: fix undefined behavior * wscript: add --use-ccache option * wscript: store ccache in a separate directory * Propertly use gl4es * fontconfig: fix font detection * [android]remove fontconfig dependency * Add build guide for other platforms Co-authored-by: JusicP <slender87844@gmail.com> Co-authored-by: nillerusr <nillerusr@users.noreply.github.com>pull/19/head
nillerusr
3 years ago
committed by
GitHub
57 changed files with 523 additions and 110 deletions
@ -1,11 +1,10 @@ |
|||||||
*.mak |
*.mak |
||||||
*.mak.vpc_crc |
*.mak.vpc_crc |
||||||
*.vpc_crc |
*.vpc_crc |
||||||
*.a |
|
||||||
*.project |
*.project |
||||||
lib/ |
|
||||||
*obj_* |
*obj_* |
||||||
build/ |
build/ |
||||||
.waf* |
.waf* |
||||||
.lock-waf* |
.lock-waf* |
||||||
__pycache__ |
__pycache__ |
||||||
|
*.pyc |
||||||
|
@ -0,0 +1,145 @@ |
|||||||
|
#ifdef ANDROID |
||||||
|
|
||||||
|
#include <android/log.h> |
||||||
|
#include <jni.h> |
||||||
|
#include <stdlib.h> |
||||||
|
#include <string.h> |
||||||
|
#include <unistd.h> |
||||||
|
#include <stdio.h> |
||||||
|
#include <dlfcn.h> |
||||||
|
|
||||||
|
|
||||||
|
#include "tier0/threadtools.h" |
||||||
|
|
||||||
|
char *LauncherArgv[512]; |
||||||
|
char java_args[4096]; |
||||||
|
int iLastArgs = 0; |
||||||
|
|
||||||
|
#define TAG "SRCENG" |
||||||
|
#define PRIO ANDROID_LOG_DEBUG |
||||||
|
#define LogPrintf(...) do { __android_log_print(PRIO, TAG, __VA_ARGS__); printf( __VA_ARGS__); } while( 0 ); |
||||||
|
#define DLLEXPORT extern "C" __attribute__((visibility("default"))) |
||||||
|
|
||||||
|
DLLEXPORT void Java_com_valvesoftware_ValveActivity2_setDataDirectoryPath(JNIEnv *env, jclass *clazz, jstring path) |
||||||
|
{ |
||||||
|
setenv( "APP_DATA_PATH", env->GetStringUTFChars(path, NULL), 1); |
||||||
|
LogPrintf( "Java_com_valvesoftware_ValveActivity2_setDataDirectoryPath: %s", getenv("APP_DATA_PATH") ); |
||||||
|
} |
||||||
|
|
||||||
|
DLLEXPORT void Java_com_valvesoftware_ValveActivity2_setGameDirectoryPath(JNIEnv *env, jclass *clazz, jstring path) |
||||||
|
{ |
||||||
|
LogPrintf( "Java_com_valvesoftware_ValveActivity2_setGameDirectoryPath" ); |
||||||
|
setenv( "VALVE_GAME_PATH", env->GetStringUTFChars(path, NULL), 1 ); |
||||||
|
} |
||||||
|
|
||||||
|
DLLEXPORT int Java_com_valvesoftware_ValveActivity2_setenv(JNIEnv *jenv, jclass *jclass, jstring env, jstring value, jint over) |
||||||
|
{ |
||||||
|
LogPrintf( "Java_com_valvesoftware_ValveActivity2_setenv %s=%s", jenv->GetStringUTFChars(env, NULL), jenv->GetStringUTFChars(value, NULL) ); |
||||||
|
return setenv( jenv->GetStringUTFChars(env, NULL), jenv->GetStringUTFChars(value, NULL), over ); |
||||||
|
} |
||||||
|
|
||||||
|
DLLEXPORT void Java_com_valvesoftware_ValveActivity2_nativeOnActivityResult() |
||||||
|
{ |
||||||
|
LogPrintf( "Java_com_valvesoftware_ValveActivity_nativeOnActivityResult" ); |
||||||
|
} |
||||||
|
|
||||||
|
void parseArgs( char *args ) |
||||||
|
{ |
||||||
|
char *pch; |
||||||
|
pch = strtok (args," "); |
||||||
|
while (pch != NULL) |
||||||
|
{ |
||||||
|
LauncherArgv[iLastArgs++] = pch; |
||||||
|
pch = strtok (NULL, " "); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
DLLEXPORT void Java_com_valvesoftware_ValveActivity2_setArgs(JNIEnv *env, jclass *clazz, jstring str) |
||||||
|
{ |
||||||
|
strncpy( java_args, env->GetStringUTFChars(str, NULL), sizeof java_args ); |
||||||
|
} |
||||||
|
|
||||||
|
DLLEXPORT int LauncherMain( int argc, char **argv ); |
||||||
|
|
||||||
|
#define A(a,b) LauncherArgv[iLastArgs++] = (char*)a; \ |
||||||
|
LauncherArgv[iLastArgs++] = (char*)b |
||||||
|
|
||||||
|
#define D(a) LauncherArgv[iLastArgs++] = (char*)a |
||||||
|
|
||||||
|
void SetLauncherArgs() |
||||||
|
{ |
||||||
|
static char binPath[2048]; |
||||||
|
snprintf(binPath, sizeof binPath, "%s/hl2_linux", getenv("APP_DATA_PATH") ); |
||||||
|
LogPrintf(binPath); |
||||||
|
D(binPath); |
||||||
|
|
||||||
|
parseArgs(java_args); |
||||||
|
|
||||||
|
A("-game", "hl2"); |
||||||
|
D("-window"); |
||||||
|
D("-nosteam"); |
||||||
|
D("-insecure"); |
||||||
|
} |
||||||
|
|
||||||
|
static void *lgles; |
||||||
|
|
||||||
|
typedef void (*t_set_getprocaddress)(void *(*new_proc_address)(const char *)); |
||||||
|
t_set_getprocaddress gl4es_set_getprocaddress; |
||||||
|
|
||||||
|
typedef void *(*t_eglGetProcAddress)( const char * ); |
||||||
|
t_eglGetProcAddress eglGetProcAddress; |
||||||
|
|
||||||
|
void *GetProcAddress( const char *procname ) |
||||||
|
{ |
||||||
|
void *result = dlsym(lgles, procname); |
||||||
|
if(result) |
||||||
|
return result; |
||||||
|
else |
||||||
|
return eglGetProcAddress(procname); |
||||||
|
} |
||||||
|
|
||||||
|
DLLEXPORT int LauncherMainAndroid( int argc, char **argv ) |
||||||
|
{ |
||||||
|
|
||||||
|
SetLauncherArgs(); |
||||||
|
|
||||||
|
void *lgl4es = dlopen("libgl4es.so", 0); |
||||||
|
if( !lgl4es ) |
||||||
|
{ |
||||||
|
LogPrintf("Failed to dlopen library libgl4es.so: %s\n", dlerror()); |
||||||
|
return 1; |
||||||
|
} |
||||||
|
|
||||||
|
void *lEGL = dlopen("libEGL.so", 0); |
||||||
|
if( !lEGL ) |
||||||
|
{ |
||||||
|
LogPrintf("Failed to dlopen library libEGL.so: %s\n", dlerror()); |
||||||
|
return 1; |
||||||
|
} |
||||||
|
|
||||||
|
lgles = dlopen("libGLESv2.so", 0); |
||||||
|
if( !lgles ) |
||||||
|
{ |
||||||
|
LogPrintf("Failed to dlopen library libGLESv2.so: %s\n", dlerror()); |
||||||
|
return 1; |
||||||
|
} |
||||||
|
|
||||||
|
gl4es_set_getprocaddress = (t_set_getprocaddress)dlsym(lgl4es, "set_getprocaddress"); |
||||||
|
eglGetProcAddress = (t_eglGetProcAddress)dlsym(lEGL, "eglGetProcAddress"); |
||||||
|
|
||||||
|
if( gl4es_set_getprocaddress && eglGetProcAddress ) |
||||||
|
{ |
||||||
|
gl4es_set_getprocaddress( &GetProcAddress ); |
||||||
|
} |
||||||
|
else |
||||||
|
{ |
||||||
|
LogPrintf("Failed to call set_getprocaddress\n"); |
||||||
|
return 1; |
||||||
|
} |
||||||
|
|
||||||
|
DeclareCurrentThreadIsMainThread(); // Init thread propertly on Android
|
||||||
|
|
||||||
|
return LauncherMain(iLastArgs, LauncherArgv); |
||||||
|
} |
||||||
|
|
||||||
|
#endif |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1 +1 @@ |
|||||||
Subproject commit ecce0cecc39b32bdf704542e3cb870ba4e2e8e42 |
Subproject commit c397ca0520de10f8bf9c85fadc9fcc3055c60b0f |
Loading…
Reference in new issue