Browse Source

Initial android support

android-fixes
nillerusr 3 years ago
parent
commit
2a5b5060b4
  1. 1
      .gitignore
  2. 47
      appframework/sdlmgr.cpp
  3. 15
      common/sse2neon.h
  4. 5
      datacache/wscript
  5. 8
      engine/sys_dll2.cpp
  6. 8
      engine/wscript
  7. 10
      filesystem/basefilesystem.cpp
  8. 2
      game/client/mumble.cpp
  9. 4
      game/client/wscript
  10. 4
      game/server/wscript
  11. 2
      gameui/wscript
  12. 2
      inputsystem/wscript
  13. 103
      launcher/android.cpp
  14. 293
      launcher/launcher.cpp
  15. 3
      launcher/wscript
  16. 2
      launcher_main/wscript
  17. BIN
      lib/android/armeabi-v7a/libSDL2.so
  18. BIN
      lib/android/armeabi-v7a/libandroid_support.a
  19. 0
      lib/android/armeabi-v7a/libbz2.a
  20. 0
      lib/android/armeabi-v7a/libcrypto.a
  21. 0
      lib/android/armeabi-v7a/libcurl.a
  22. 0
      lib/android/armeabi-v7a/libexpat.a
  23. 0
      lib/android/armeabi-v7a/libfontconfig.a
  24. 0
      lib/android/armeabi-v7a/libfreetype2.a
  25. 0
      lib/android/armeabi-v7a/libjpeg.a
  26. 0
      lib/android/armeabi-v7a/libopenal.a
  27. 0
      lib/android/armeabi-v7a/libpng.a
  28. 0
      lib/android/armeabi-v7a/libssl.a
  29. BIN
      lib/android/x86/libandroid_support.a
  30. BIN
      lib/public/android/armeabi-v7a/libSDL2.so
  31. BIN
      lib/public/android/armeabi-v7a/libjpeg.a
  32. 5
      materialsystem/shaderapidx9/wscript
  33. 5
      materialsystem/stdshaders/wscript
  34. 285
      output
  35. 11
      public/filesystem_init.cpp
  36. 21
      public/tier0/memoverride.cpp
  37. 5
      scenefilecache/wscript
  38. BIN
      scripts/waifulib/compiler_optimizations.pyc
  39. BIN
      scripts/waifulib/fwgslib.pyc
  40. 2
      scripts/waifulib/reconfigure.py
  41. 12
      scripts/waifulib/xcompile.py
  42. BIN
      scripts/waifulib/xcompile.pyc
  43. 2
      thirdparty
  44. 2
      tier0/assert_dialog.cpp
  45. 12
      tier0/dbg.cpp
  46. 4
      tier0/wscript
  47. 39
      tier1/interface.cpp
  48. 4
      tier1/strtools.cpp
  49. 6
      tier1/wscript
  50. 2
      togl/linuxwin/glentrypoints.cpp
  51. 2
      vgui2/src/wscript
  52. 2
      vgui2/vgui_surfacelib/linuxfont.cpp
  53. 2
      vgui2/vgui_surfacelib/wscript
  54. 9
      vguimatsurface/wscript
  55. 5
      vstdlib/wscript
  56. 8
      wafandroid
  57. 101
      wscript

1
.gitignore vendored

@ -7,3 +7,4 @@ build/
.waf* .waf*
.lock-waf* .lock-waf*
__pycache__ __pycache__
*.pyc

47
appframework/sdlmgr.cpp

@ -56,6 +56,11 @@ COpenGLEntryPoints *gGL = NULL;
const int kBogusSwapInterval = INT_MAX; const int kBogusSwapInterval = INT_MAX;
#ifdef ANDROID
static void *gl4es = NULL;
void *(*_eglGetProcAddress)( const char * );
#endif
/* /*
From Ryan Gordon: From Ryan Gordon:
@ -174,7 +179,19 @@ void *VoidFnPtrLookup_GlMgr(const char *fn, bool &okay, const bool bRequired, vo
return NULL; return NULL;
// The SDL path would work on all these platforms, if we were using SDL there, too... // The SDL path would work on all these platforms, if we were using SDL there, too...
#if defined( USE_SDL )
#ifdef ANDROID
// SDL does the right thing, so we never need to use tier0 in this case.
if( _eglGetProcAddress )
retval = _eglGetProcAddress(fn);
//printf("CDynamicFunctionOpenGL: SDL_GL_GetProcAddress(\"%s\") returned %p\n", fn, retval);
if ((retval == NULL) && (fallback != NULL))
{
//printf("CDynamicFunctionOpenGL: Using fallback %p for \"%s\"\n", fallback, fn);
retval = fallback;
}
#elif defined( USE_SDL )
// SDL does the right thing, so we never need to use tier0 in this case. // SDL does the right thing, so we never need to use tier0 in this case.
retval = SDL_GL_GetProcAddress(fn); retval = SDL_GL_GetProcAddress(fn);
//printf("CDynamicFunctionOpenGL: SDL_GL_GetProcAddress(\"%s\") returned %p\n", fn, retval); //printf("CDynamicFunctionOpenGL: SDL_GL_GetProcAddress(\"%s\") returned %p\n", fn, retval);
@ -196,7 +213,7 @@ void *VoidFnPtrLookup_GlMgr(const char *fn, bool &okay, const bool bRequired, vo
// We can't continue execution, because one or more GL function pointers will be NULL. // We can't continue execution, because one or more GL function pointers will be NULL.
Error( "Could not find required OpenGL entry point '%s'! Either your video card is unsupported, or your OpenGL driver needs to be updated.\n", fn); Error( "Could not find required OpenGL entry point '%s'! Either your video card is unsupported, or your OpenGL driver needs to be updated.\n", fn);
} }
return retval; return retval;
} }
@ -475,25 +492,13 @@ InitReturnVal_t CSDLMgr::Init()
SDL_GL_SetAttribute( SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG ); SDL_GL_SetAttribute( SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG );
} }
#ifdef ANDROID
if (SDL_GL_LoadLibrary("libGL4ES.so") == -1)
#else
if (SDL_GL_LoadLibrary(NULL) == -1) if (SDL_GL_LoadLibrary(NULL) == -1)
#endif
Error( "SDL_GL_LoadLibrary(NULL) failed: %s", SDL_GetError() ); Error( "SDL_GL_LoadLibrary(NULL) failed: %s", SDL_GetError() );
#endif #endif
} }
fprintf(stderr, "SDL video target is '%s'\n", SDL_GetCurrentVideoDriver()); fprintf(stderr, "SDL video target is '%s'\n", SDL_GetCurrentVideoDriver());
Msg("SDL video target is '%s'\n", SDL_GetCurrentVideoDriver()); Msg("SDL video target is '%s'\n", SDL_GetCurrentVideoDriver());
SDL_version compiled;
SDL_version linked;
SDL_VERSION(&compiled);
SDL_GetVersion(&linked);
Msg("SDL compiled version: %d.%d.%d, linked: %d.%d.%d\n", compiled.major, compiled.minor, compiled.patch, linked.major, linked.minor, linked.patch);
m_bForbidMouseGrab = true; m_bForbidMouseGrab = true;
if ( !CommandLine()->FindParm("-nomousegrab") && CommandLine()->FindParm("-mousegrab") ) if ( !CommandLine()->FindParm("-nomousegrab") && CommandLine()->FindParm("-mousegrab") )
@ -754,6 +759,18 @@ bool CSDLMgr::CreateHiddenGameWindow( const char *pTitle, int width, int height
SDL_GL_MakeCurrent(m_Window, m_GLContext); SDL_GL_MakeCurrent(m_Window, m_GLContext);
#ifdef ANDROID
gl4es = dlopen("libgl4es.so", RTLD_LAZY);
if( gl4es )
{
_eglGetProcAddress = dlsym(gl4es, "eglGetProcAddress" );
void (*initialize_gl4es)( );
initialize_gl4es = dlsym(gl4es, "initialize_gl4es" );
initialize_gl4es();
}
#endif
// !!! FIXME: note for later...we never delete this context anywhere, I think. // !!! FIXME: note for later...we never delete this context anywhere, I think.
// !!! FIXME: when we do get around to that, don't forget to delete/NULL gGL! // !!! FIXME: when we do get around to that, don't forget to delete/NULL gGL!
@ -774,7 +791,7 @@ bool CSDLMgr::CreateHiddenGameWindow( const char *pTitle, int width, int height
#endif // DBGFLAG_ASSERT #endif // DBGFLAG_ASSERT
gGL = GetOpenGLEntryPoints(VoidFnPtrLookup_GlMgr); gGL = GetOpenGLEntryPoints(VoidFnPtrLookup_GlMgr);
// It is now safe to call any base GL entry point that's supplied by gGL. // It is now safe to call any base GL entry point that's supplied by gGL.
// You still need to explicitly test for extension entry points, though! // You still need to explicitly test for extension entry points, though!

15
common/sse2neon.h

@ -106,7 +106,20 @@
* __ARM_NEON is defined to a value indicating the Advanced SIMD (NEON) * __ARM_NEON is defined to a value indicating the Advanced SIMD (NEON)
* architecture supported. * architecture supported.
*/ */
#if !defined(__ARM_NEON) || !defined(__ARM_NEON__)
#error "You must enable NEON instructions (e.g. -mfpu=neon) to use SSE2NEON."
#endif
#if !defined(__clang__)
#pragma GCC push_options
#pragma GCC target("fpu=neon")
#endif
#elif defined(__aarch64__)
#if !defined(__clang__)
#pragma GCC push_options
#pragma GCC target("+simd")
#endif
#else
#error "Unsupported target. Must be either ARMv7-A+NEON or ARMv8-A."
#endif #endif
#endif #endif

5
datacache/wscript vendored

@ -33,7 +33,10 @@ def build(bld):
defines = [] defines = []
libs = ['tier0','tier1','tier2','tier3','iconv'] libs = ['tier0','tier1','tier2','tier3']
if bld.env.DEST_OS == 'android':
libs += ['ANDROID_SUPPORT']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

8
engine/sys_dll2.cpp

@ -1006,26 +1006,18 @@ bool CEngineAPI::Connect( CreateInterfaceFn factory )
// Store off the app system factory... // Store off the app system factory...
g_AppSystemFactory = factory; g_AppSystemFactory = factory;
Warning( "CEngineAPI::Connect\n" );
if ( !BaseClass::Connect( factory ) ) if ( !BaseClass::Connect( factory ) )
return false; return false;
Warning( "CEngineAPI::Connect2\n" );
g_pFileSystem = g_pFullFileSystem; g_pFileSystem = g_pFullFileSystem;
if ( !g_pFileSystem ) if ( !g_pFileSystem )
return false; return false;
Warning( "CEngineAPI::Connect3\n" );
g_pFileSystem->SetWarningFunc( Warning ); g_pFileSystem->SetWarningFunc( Warning );
if ( !Shader_Connect( true ) ) if ( !Shader_Connect( true ) )
return false; return false;
Warning( "CEngineAPI::Connect4\n" );
g_pPhysics = (IPhysics*)factory( VPHYSICS_INTERFACE_VERSION, NULL ); g_pPhysics = (IPhysics*)factory( VPHYSICS_INTERFACE_VERSION, NULL );
if ( !g_pStudioRender || !g_pDataCache || !g_pPhysics || !g_pMDLCache || !g_pMatSystemSurface || !g_pInputSystem /* || !g_pVideo */ ) if ( !g_pStudioRender || !g_pDataCache || !g_pPhysics || !g_pMDLCache || !g_pMatSystemSurface || !g_pInputSystem /* || !g_pVideo */ )

8
engine/wscript

@ -324,14 +324,14 @@ def build(bld):
'audio', 'audio',
'audio/public', 'audio/public',
'audio/private', 'audio/private',
'../thirdparty/openal-soft-android/include',
'../thirdparty/curl/include'
] ]
defines = [] defines = []
#libs = ['tier0','vgui_controls','dmxloader','tier1','tier2','tier3','bitmap','vstdlib','appframework','datamodel','vtf','mathlib','steam_api','matsys_controls','BZ2','SDL2','JPEG','ZLIB','OPENAL','CURL'] linux libs = ['tier0','vgui_controls','dmxloader','tier1','tier2','tier3','bitmap','vstdlib','appframework','datamodel','vtf','mathlib','steam_api','matsys_controls','BZ2','SDL2','JPEG','ZLIB','OPENAL','CURL' ]
libs = ['tier0','vgui_controls','dmxloader','tier1','tier2','tier3','bitmap','vstdlib','appframework','datamodel','vtf','mathlib','steam_api','matsys_controls','BZ2','sdl2','jpeg','zlib','openal','curl','ssl','crypto']
if bld.env.DEST_OS == 'android':
libs += ['SSL', 'CRYPTO'] # android curl was built with openssl
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

10
filesystem/basefilesystem.cpp

@ -5068,13 +5068,15 @@ CSysModule *CBaseFileSystem::LoadModule( const char *pFileName, const char *pPat
#ifdef POSIX #ifdef POSIX
Q_snprintf( tempPathID, sizeof(tempPathID), "lib%s", pFileName );
pModule = Sys_LoadModule( tempPathID );
if( !pModule ) if( !pModule )
#endif
{ {
pModule = Sys_LoadModule( pFileName ); Q_snprintf( tempPathID, sizeof(tempPathID), "lib%s", pFileName );
pModule = Sys_LoadModule( tempPathID );
} }
#endif
if( !pModule )
pModule = Sys_LoadModule( pFileName );
return pModule; return pModule;
} }

2
game/client/mumble.cpp

@ -99,7 +99,7 @@ void CMumbleSystem::LevelInitPostEntity()
return; return;
} }
#elif defined( ANDROID ) #elif defined( ANDROID )
return; // TODO: implement return; // TODO(JusicP): implement
#elif defined( POSIX ) #elif defined( POSIX )
char memname[256]; char memname[256];
V_sprintf_safe( memname, "/MumbleLink.%d", getuid() ); V_sprintf_safe( memname, "/MumbleLink.%d", getuid() );

4
game/client/wscript

@ -559,7 +559,9 @@ def build(bld):
'RT' 'RT'
] ]
install_path = bld.env.PREFIX+'/hl2/bin' install_path = bld.env.PREFIX
if bld.env.DEST_OS != 'android':
install_path += '/hl2/bin'
bld.shlib( bld.shlib(
source = source, source = source,

4
game/server/wscript

@ -602,7 +602,9 @@ def build(bld):
libs = ['tier0','particles','dmxloader','tier1','tier2','tier3','mathlib','vstdlib','choreoobjects','steam_api'] libs = ['tier0','particles','dmxloader','tier1','tier2','tier3','mathlib','vstdlib','choreoobjects','steam_api']
install_path = bld.env.PREFIX+'/hl2/bin' install_path = bld.env.PREFIX
if bld.env.DEST_OS != 'android':
install_path += '/hl2/bin'
bld.shlib( bld.shlib(
source = source, source = source,

2
gameui/wscript

@ -107,7 +107,7 @@ def build(bld):
defines = [] defines = []
libs = ['tier0','vgui_controls','tier1','tier2','tier3','vstdlib','vtf','bitmap','mathlib','sdl2','steam_api','matsys_controls','jpeg','png','zlib'] libs = ['tier0','vgui_controls','tier1','tier2','tier3','vstdlib','vtf','bitmap','mathlib','SDL2','steam_api','matsys_controls','JPEG','PNG','ZLIB']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

2
inputsystem/wscript

@ -32,7 +32,7 @@ def build(bld):
defines = [] defines = []
libs = ['tier0','tier1','tier2','vstdlib','sdl2','steam_api'] libs = ['tier0','tier1','tier2','vstdlib','SDL2','steam_api']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

103
launcher/android.cpp

@ -0,0 +1,103 @@
#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 MAX_PATH 2048
#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" );
}
typedef void (*t_egl_init)();
t_egl_init egl_init;
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[MAX_PATH];
snprintf(binPath, MAX_PATH, "%s/hl2_linux", getenv("APP_DATA_PATH") );
LogPrintf(binPath);
D(binPath);
parseArgs(java_args);
A("-game", "hl2");
D("-window");
D("-nosteam");
D("-insecure");
}
DLLEXPORT int LauncherMainAndroid( int argc, char **argv )
{
SetLauncherArgs();
void *glHandle = dlopen("libgl4es.so", 0);
egl_init = (t_egl_init)dlsym(glHandle, "egl_init");
if( egl_init )
egl_init();
DeclareCurrentThreadIsMainThread(); // Init thread propertly on Android
return LauncherMain(iLastArgs, LauncherArgv);
}
#endif

293
launcher/launcher.cpp

@ -253,7 +253,11 @@ bool GetExecutableName( char *out, int outSize )
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
char *GetBaseDirectory( void ) char *GetBaseDirectory( void )
{ {
#ifdef ANDROID
return getenv("VALVE_GAME_PATH");
#else
return g_szBasedir; return g_szBasedir;
#endif
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
@ -1172,294 +1176,6 @@ static const char *BuildCommand()
return (const char *)build.Base(); return (const char *)build.Base();
} }
#ifdef ANDROID
char dataDir[512];
const char *LauncherArgv[512];
char javaArgv[2048];
char gameName[512];
char startArgs[256][128];
char language[1024] = "english";
int iLastArgs = 0;
static int scr_width,scr_height;
bool bClient_loaded = false;
bool bShowTouch = true;
void *libclient;
static struct jnimethods_s
{
jclass actcls;
JavaVM *vm;
JNIEnv *env;
jmethodID enableTextInput;
} jni;
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setMainPackFilePath(JNIEnv *env, jclass *clazz, jstring str)
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setMainPackFilePath" );
return setenv( "VALVE_PAK0_PATH", env->GetStringUTFChars(str, NULL), 1 );
}
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setPatchPackFilePath(JNIEnv *env, jclass *clazz, jstring str)
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setPatchPackFilePath" );
return setenv( "VALVE_PAK1_PATH", env->GetStringUTFChars(str, NULL), 1 );
}
DLL_EXPORT void Java_com_valvesoftware_ValveActivity2_setCacheDirectoryPath(JNIEnv *env, jclass *clazz, jstring str)
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setCacheDirectoryPath" );
//return setenv( "VALVE_CACHE_PATH", env->GetStringUTFChars(str, NULL), 1 );
}
DLL_EXPORT void Java_com_valvesoftware_ValveActivity2_gpgsStart()
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_gpgsStart" );
}
DLL_EXPORT void Java_com_valvesoftware_ValveActivity2_nativeOnActivityResult()
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_nativeOnActivityResult" );
}
DLL_EXPORT void Java_com_valvesoftware_ValveActivity2_setNativeLibPath(JNIEnv *env, jclass *clazz, jstring str)
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setNativeLibPath" );
// snprintf(dataDir, sizeof dataDir, env->GetStringUTFChars(str, NULL));
}
DLL_EXPORT void Java_com_valvesoftware_ValveActivity2_setLanguage(JNIEnv *env, jclass *clazz, jstring str)
{
snprintf(language, sizeof language, "%s", env->GetStringUTFChars(str, NULL));
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setLanguage" );
}
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setDocumentDirectoryPath(JNIEnv *env, jclass *clazz, jstring str)
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setDocumentDirectoryPath" );
setenv( "HOME", env->GetStringUTFChars(str, NULL), 1);
return setenv( "VALVE_CACHE_PATH", env->GetStringUTFChars(str, NULL), 1 );
}
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setDropMip(int a1, int a2, signed int a3)
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setDropMip" );
}
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_saveGame()
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_saveGame" );
}
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setDataDirectoryPath(JNIEnv *env, jclass *clazz, jstring str)
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity_setDataDirectoryPath" );
snprintf(dataDir, sizeof dataDir, env->GetStringUTFChars(str, NULL));
}
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setExtrasPackFilePath(JNIEnv *env, jclass *clazz, jstring str)
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "Java_com_valvesoftware_ValveActivity2_setExtrasPackFilePath" );
return setenv( "VALVE_PAK2_PATH", env->GetStringUTFChars(str, NULL), 1 );
}
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setenv(JNIEnv *jenv, jclass *jclass, jstring env, jstring value, jint over)
{
__android_log_print( ANDROID_LOG_DEBUG, "SourceSDK2013", "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 );
}
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setGame(JNIEnv *jenv, jclass *jclass, jstring game)
{
snprintf(gameName, sizeof dataDir, "-game %s", jenv->GetStringUTFChars(game, NULL));
return setenv( "VALVE_MOD", jenv->GetStringUTFChars(game, NULL), 1);
}
typedef void (*t_TouchEvent)(int finger, int x, int y, int act);
t_TouchEvent TouchEvent;
DLL_EXPORT void clientLoaded( void )
{
bClient_loaded = true;
libclient = dlopen("libclient.so",0);
TouchEvent = (t_TouchEvent)dlsym(libclient, "TouchEvent");
((void (*)(bool, int, int))dlsym(libclient, "showTouch"))(bShowTouch, scr_width, scr_height);
}
DLL_EXPORT void showKeyboard( int show )
{
jni.env->CallStaticVoidMethod( jni.actcls, jni.enableTextInput, show );
}
DLL_EXPORT void JNICALL Java_com_valvesoftware_ValveActivity2_showTouch(JNIEnv *env, jobject obj, jboolean show_touch, jint width, jint height)
{
scr_width = width;
scr_height = height;
bShowTouch = show_touch;
}
DLL_EXPORT void JNICALL Java_com_valvesoftware_ValveActivity2_TouchEvent(JNIEnv *env, jobject obj, jint fingerid, jint x, jint y, jint action)
{
if( !bClient_loaded )
return;
TouchEvent( fingerid, x, y, action );
}
DLL_EXPORT const char* getSystemLanguage()
{
return language;
}
typedef void (*t_SDL_Android_Init)(JNIEnv* env, jclass cls);
t_SDL_Android_Init SDL_Android_Init;
//typedef void *(*t_SDL_StartTextInput)();
//t_SDL_StartTextInput SDL_StartTextInput;
typedef void (*t_egl_init)();
t_egl_init egl_init;
bool bUseGL;
void SetRenderer()
{
if ( bUseGL )
{
//setenv("USE_BIG_GL", "1", 1);
}
else
{
setenv("REGAL_LOG", "0", 1);
setenv("REGAL_LOG_ERROR", "0", 1);
setenv("REGAL_LOG_WARNING", "0", 1);
setenv("REGAL_LOG_INFO", "0", 1);
setenv("REGAL_LOG_HTTP", "0", 1);
setenv("REGAL_LOG_JSON", "0", 1);
setenv("REGAL_LOG_CALLBACK", "0", 1);
setenv("REGAL_LOG_ONCE", "0", 1);
setenv("REGAL_LOG_POINTERS", "0", 1);
setenv("REGAL_LOG_THREAD", "0", 1);
setenv("REGAL_LOG_PROCESS", "0", 1);
setenv("REGAL_LOG_ALL", "0", 1);
setenv("REGAL_DEBUG", "0", 1);
setenv("REGAL_ERROR", "0", 1);
setenv("REGAL_LOG_FILE", "/dev/null", 1);
setenv("REGAL_EMU_SO", "0", 1);
setenv("REGAL_THREAD_LOCKING", "0", 1);
setenv("REGAL_FORCE_ES2_PROFILE", "1", 1);
setenv("REGAL_SYS_GLX", "0", 1);
setenv("REGAL_SYS_ES2", "1", 1);
setenv("REGAL_SYS_EGL", "1", 1);
setenv("REGAL_SYS_GL", "0", 1);
setenv("REGAL_GL_VERSION", "2.1", 1);
setenv("REGAL_GL_EXTENSIONS", "GL_EXT_framebuffer_object GL_EXT_framebuffer_blit GL_OES_mapbuffer GL_EXT_texture_sRGB_decode GL_EXT_texture_compression_s3tc GL_EXT_texture_compression_dxt1", 1);
}
}
void SetArg( const char *arg )
{
char *pch;
char str[1024];
strncpy( str, arg, sizeof str );
pch = strtok (str," ");
while (pch != NULL)
{
strncpy( startArgs[iLastArgs], pch, sizeof startArgs[0] );
LauncherArgv[iLastArgs] = startArgs[iLastArgs];
iLastArgs++;
pch = strtok (NULL, " ");
}
}
DLL_EXPORT int Java_com_valvesoftware_ValveActivity2_setArgs(JNIEnv *env, jclass *clazz, jstring str)
{
snprintf( javaArgv, sizeof javaArgv, env->GetStringUTFChars(str, NULL) );
}
void SetStartArgs()
{
char lang[2048];
snprintf(lang, sizeof lang, "-language %s +cc_lang %s", language, language);
SetArg(dataDir);
SetArg(lang);
SetArg(gameName);
SetArg(javaArgv);
SetArg("-window "
"-nosteam "
"-nouserclip "
"+sv_unlockedchapters 99 "
"+mat_queue_mode 2 "
"-ignoredxsupportcfg "
"-regal "
"+gl_rt_forcergba 1 "
"+mat_antialias 1 "
"-mat_antialias 1 "
"+r_flashlightdepthtexture 1 "
"+gl_dropmips 1 "
"-insecure");
if( bUseGL )
SetArg("-userclip "
"-gl_disablesamplerobjects "
// "-egl "
"+gl_enabletexsubimage 1 "
"+gl_blitmode 1 "
"+gl_supportMapBuffer 0 "
"-gl_separatedepthstencil 0 "
"-gl_nodepthtexture 0 "
"+r_flashlight_version2 0 "
"+gl_emurgba16 0 "
"+gl_emunooverwrite 0");
else
SetArg("-nouserclip "
"-gl_disablesamplerobjects "
"+gl_enabletexsubimage 0 "
"+mat_reducefillrate 1 "
"+gl_blitmode 1 "
"+gl_supportMapBuffer 1 "
"-gl_separatedepthstencil 0 "// default is 1
"-gl_nodepthtexture 1 "
"+r_flashlight_version2 1 "
"+gl_emurgba16 1 "
"+gl_emunooverwrite 1");
}
DLL_EXPORT int LauncherMain( int argc, char **argv );
DLL_EXPORT int LauncherMainAndroid( int argc, char **argv )
{
//void *sdlHandle = dlopen("libSDL2.so", 0);
//SDL_Android_Init = (t_SDL_Android_Init)dlsym(sdlHandle, "SDL_Android_Init");
//SDL_Android_Init(env, cls);
//SDL_StartTextInput = (t_SDL_StartTextInput)dlsym(sdlHandle, "SDL_StartTextInput");
//SDL_StartTextInput();
// unused?
chdir(dataDir);
getcwd(dataDir, sizeof dataDir);
setenv( "VALVE_GAME_PATH", dataDir, 1 );
snprintf(dataDir, sizeof dataDir, "%s/hl2_linux", dataDir);
bUseGL = false;
SetRenderer();
SetStartArgs();
//#ifdef GL4ES
void *glHandle = dlopen("libGL4ES.so", 0);
egl_init = (t_egl_init)dlsym(glHandle, "egl_init");
if( egl_init )
egl_init();
//#endif
//jni.env = env;
//jni.actcls = env->FindClass("org/libsdl/app/SDLActivity");
//jni.enableTextInput = env->GetStaticMethodID(jni.actcls, "showKeyboard", "(I)V");
return LauncherMain(iLastArgs, LauncherArgv);
}
#endif
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Purpose: The real entry point for the application // Purpose: The real entry point for the application
// Input : hInstance - // Input : hInstance -
@ -1742,6 +1458,7 @@ DLL_EXPORT int LauncherMain( int argc, char **argv )
// Figure out the directory the executable is running from // Figure out the directory the executable is running from
// and make that be the current working directory // and make that be the current working directory
_chdir( GetBaseDirectory() ); _chdir( GetBaseDirectory() );
g_LeakDump.m_bCheckLeaks = CommandLine()->CheckParm( "-leakcheck" ) ? true : false; g_LeakDump.m_bCheckLeaks = CommandLine()->CheckParm( "-leakcheck" ) ? true : false;

3
launcher/wscript

@ -19,6 +19,7 @@ def build(bld):
'../public/filesystem_init.cpp', '../public/filesystem_init.cpp',
'launcher.cpp', 'launcher.cpp',
'reslistgenerator.cpp', 'reslistgenerator.cpp',
'android.cpp'
] ]
includes = [ includes = [
@ -31,7 +32,7 @@ def build(bld):
defines = [] defines = []
libs = ['tier0','tier1','tier2','tier3','vstdlib','steam_api','appframework','sdl2','togl','LOG'] libs = ['tier0','tier1','tier2','tier3','vstdlib','steam_api','appframework','SDL2','togl']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

2
launcher_main/wscript

@ -15,6 +15,8 @@ def configure(conf):
return return
def build(bld): def build(bld):
if bld.env.DEST_OS == 'android':
return
source = ['main.cpp'] source = ['main.cpp']
includes = ['../public'] includes = ['../public']

BIN
lib/android/armeabi-v7a/libSDL2.so

Binary file not shown.

BIN
lib/android/armeabi-v7a/libandroid_support.a

Binary file not shown.

0
lib/public/android/armeabi-v7a/libbz2.a → lib/android/armeabi-v7a/libbz2.a

0
lib/common/android/armeabi-v7a/libcrypto.a → lib/android/armeabi-v7a/libcrypto.a

0
lib/common/android/armeabi-v7a/libcurl.a → lib/android/armeabi-v7a/libcurl.a

0
lib/public/android/armeabi-v7a/libexpat.a → lib/android/armeabi-v7a/libexpat.a

0
lib/public/android/armeabi-v7a/libfontconfig.a → lib/android/armeabi-v7a/libfontconfig.a

0
lib/public/android/armeabi-v7a/libfreetype2.a → lib/android/armeabi-v7a/libfreetype2.a

0
lib/common/android/armeabi-v7a/libjpeg.a → lib/android/armeabi-v7a/libjpeg.a

0
lib/common/android/armeabi-v7a/libopenal.a → lib/android/armeabi-v7a/libopenal.a

0
lib/public/android/armeabi-v7a/libpng.a → lib/android/armeabi-v7a/libpng.a

0
lib/common/android/armeabi-v7a/libssl.a → lib/android/armeabi-v7a/libssl.a

BIN
lib/android/x86/libandroid_support.a

Binary file not shown.

BIN
lib/public/android/armeabi-v7a/libSDL2.so

Binary file not shown.

BIN
lib/public/android/armeabi-v7a/libjpeg.a

Binary file not shown.

5
materialsystem/shaderapidx9/wscript

@ -56,7 +56,10 @@ def build(bld):
defines = [] defines = []
libs = ['tier0','tier1','tier2','vstdlib','togl','bitmap','mathlib','iconv'] libs = ['tier0','tier1','tier2','vstdlib','togl','bitmap','mathlib']
if bld.env.DEST_OS == 'android':
libs += ['ANDROID_SUPPORT']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

5
materialsystem/stdshaders/wscript

@ -148,7 +148,10 @@ def build(bld):
defines = [] defines = []
libs = ['tier0','shaderlib','tier1','mathlib','iconv'] libs = ['tier0','shaderlib','tier1','mathlib']
if bld.env.DEST_OS == 'android':
libs += ['ANDROID_SUPPORT']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

285
output

@ -1,285 +0,0 @@
<waflib.extras.clang_compilation_database.ClangDbContext object at 0x7f587bde5dd0>
<waflib.extras.clang_compilation_database.ClangDbContext object at 0x7f587bde5dd0>
<waflib.extras.clang_compilation_database.ClangDbContext object at 0x7f587bde5dd0>
<waflib.extras.clang_compilation_database.ClangDbContext object at 0x7f587bde5dd0>
<waflib.extras.clang_compilation_database.ClangDbContext object at 0x7f587bde5dd0>
<waflib.extras.clang_compilation_database.ClangDbContext object at 0x7f587bde5dd0>
<waflib.extras.clang_compilation_database.ClangDbContext object at 0x7f587bde5dd0>
Build commands will be stored in build/compile_commands.json
Waf: Entering directory `/home/jusic/source-engine/build'
<waflib.Build.BuildContext object at 0x7f587bfbfe90>
<waflib.Build.BuildContext object at 0x7f587bfbfe90>
<waflib.Build.BuildContext object at 0x7f587bfbfe90>
<waflib.Build.BuildContext object at 0x7f587bfbfe90>
<waflib.Build.BuildContext object at 0x7f587bfbfe90>
<waflib.Build.BuildContext object at 0x7f587bfbfe90>
<waflib.Build.BuildContext object at 0x7f587bfbfe90>
[ 31/2159] Linking build/tier0/libtier0.so
[ 32/2159] Compiling tier1/utlstring.cpp
[ 33/2159] Compiling tier1/utlbufferutil.cpp
[ 35/2159] Compiling tier1/utlbuffer.cpp
[ 36/2159] Compiling tier1/uniqueid.cpp
[ 37/2159] Compiling tier1/tokenreader.cpp
../tier1/pathmatch.cpp:416: error: undefined reference to '__cxa_end_cleanup'
../tier1/pathmatch.cpp:492: error: undefined reference to '__cxa_end_cleanup'
../tier1/pathmatch.cpp:508: error: undefined reference to '__cxa_guard_acquire'
../tier1/pathmatch.cpp:508: error: undefined reference to '__cxa_guard_release'
../tier1/pathmatch.cpp:512: error: undefined reference to '__cxa_guard_acquire'
../tier1/pathmatch.cpp:512: error: undefined reference to '__cxa_guard_release'
../tier1/pathmatch.cpp:751: error: undefined reference to '__cxa_end_cleanup'
../tier1/pathmatch.cpp:760: error: undefined reference to '__cxa_end_cleanup'
../tier1/pathmatch.cpp:770: error: undefined reference to 'fopen64'
../tier1/pathmatch.cpp:821: error: undefined reference to '__xstat'
../tier1/pathmatch.cpp:826: error: undefined reference to '__lxstat'
../tier1/pathmatch.cpp:831: error: undefined reference to '__xstat64'
../tier1/pathmatch.cpp:836: error: undefined reference to '__lxstat64'
tier1/pathmatch.cpp.31.o(.ARM.extab.text._ZN7CDirPtrD2Ev+0x0): error: undefined reference to '__gxx_personality_v0'
tier1/pathmatch.cpp.31.o(.ARM.extab+0x0): error: undefined reference to '__gxx_personality_v0'
tier1/pathmatch.cpp.31.o(.ARM.extab+0x58): error: undefined reference to '__gxx_personality_v0'
tier1/pathmatch.cpp.31.o(.ARM.extab+0x78): error: undefined reference to '__gxx_personality_v0'
../tier0/assert_dialog.cpp:109: error: undefined reference to '__cxa_guard_acquire'
../tier0/assert_dialog.cpp:109: error: undefined reference to '__cxa_guard_release'
../tier0/assert_dialog.cpp:109: error: undefined reference to '__cxa_guard_abort'
../tier0/assert_dialog.cpp:115: error: undefined reference to '__cxa_guard_acquire'
../tier0/assert_dialog.cpp:115: error: undefined reference to '__cxa_guard_release'
../tier0/assert_dialog.cpp:115: error: undefined reference to '__cxa_guard_abort'
../tier0/assert_dialog.cpp:148: error: undefined reference to 'operator delete(void*)'
../tier0/assert_dialog.cpp:166: error: undefined reference to 'operator new(unsigned int)'
../tier0/assert_dialog.cpp:376: error: undefined reference to '__cxa_guard_abort'
../tier0/commandline.cpp:116: error: undefined reference to 'operator delete[](void*)'
../tier0/commandline.cpp:117: error: undefined reference to 'operator delete(void*)'
../tier0/commandline.cpp:117: error: undefined reference to 'operator delete(void*)'
../tier0/commandline.cpp:231: error: undefined reference to 'operator delete[](void*)'
../tier0/commandline.cpp:273: error: undefined reference to 'operator new[](unsigned int)'
../tier0/commandline.cpp:420: error: undefined reference to 'operator new[](unsigned int)'
../tier0/commandline.cpp:437: error: undefined reference to 'operator new[](unsigned int)'
../tier0/commandline.cpp:450: error: undefined reference to 'operator delete[](void*)'
../tier0/commandline.cpp:512: error: undefined reference to 'operator new[](unsigned int)'
../tier0/commandline.cpp:589: error: undefined reference to 'operator delete[](void*)'
tier0/commandline.cpp.31.o:commandline.cpp:vtable for ICommandLine: error: undefined reference to '__cxa_pure_virtual'
tier0/commandline.cpp.31.o:commandline.cpp:vtable for ICommandLine: error: undefined reference to '__cxa_pure_virtual'
tier0/commandline.cpp.31.o:commandline.cpp:vtable for ICommandLine: error: undefined reference to '__cxa_pure_virtual'
tier0/commandline.cpp.31.o:commandline.cpp:vtable for ICommandLine: error: undefined reference to '__cxa_pure_virtual'
tier0/commandline.cpp.31.o:commandline.cpp:typeinfo for CCommandLine: error: undefined reference to 'vtable for __cxxabiv1::__si_class_type_info'
/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
tier0/commandline.cpp.31.o:commandline.cpp:typeinfo for ICommandLine: error: undefined reference to 'vtable for __cxxabiv1::__class_type_info'
/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
../tier0/dynfunction.cpp:59: error: undefined reference to 'operator delete(void*)'
../tier0/dynfunction.cpp:80: error: undefined reference to 'operator new(unsigned int)'
tier0/memstd.cpp.31.o:memstd.cpp:typeinfo for CStdMemAlloc: error: undefined reference to 'vtable for __cxxabiv1::__si_class_type_info'
/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
tier0/memstd.cpp.31.o:memstd.cpp:typeinfo for IMemAlloc: error: undefined reference to 'vtable for __cxxabiv1::__class_type_info'
/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
../tier0/threadtools.cpp:153: error: undefined reference to 'operator new(unsigned int)'
../tier0/threadtools.cpp:460: error: undefined reference to '__cxa_guard_abort'
../tier0/threadtools.cpp:1751: error: undefined reference to 'operator new(unsigned int)'
../tier0/threadtools.cpp:1896: error: undefined reference to '__cxa_allocate_exception'
../tier0/threadtools.cpp:1896: error: undefined reference to '__cxa_throw'
../tier0/threadtools.cpp:1900: error: undefined reference to 'typeinfo for int'
../tier0/threadtools.cpp:2143: error: undefined reference to '__cxa_end_catch'
../tier0/threadtools.cpp:2143: error: undefined reference to '__cxa_begin_catch'
../tier0/threadtools.cpp:2146: error: undefined reference to '__cxa_rethrow'
../tier0/threadtools.cpp:2162: error: undefined reference to '__cxa_begin_catch'
../tier0/threadtools.cpp:2162: error: undefined reference to '__cxa_end_catch'
tier0/threadtools.cpp.31.o:threadtools.cpp:typeinfo for CThread: error: undefined reference to 'vtable for __cxxabiv1::__class_type_info'
/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
tier0/threadtools.cpp.31.o:threadtools.cpp:typeinfo for CWorkerThread: error: undefined reference to 'vtable for __cxxabiv1::__si_class_type_info'
/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_list.h:1697: error: undefined reference to 'std::__detail::_List_node_base::_M_unhook()'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_list.h:1689: error: undefined reference to 'std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_list.h:1689: error: undefined reference to 'std::__detail::_List_node_base::_M_hook(std::__detail::_List_node_base*)'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_list.h:517: error: undefined reference to '__cxa_end_catch'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_list.h:517: error: undefined reference to '__cxa_begin_catch'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_list.h:520: error: undefined reference to '__cxa_rethrow'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_list.h:517: error: undefined reference to '__cxa_end_catch'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_list.h:517: error: undefined reference to '__cxa_begin_catch'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_list.h:520: error: undefined reference to '__cxa_rethrow'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/ext/new_allocator.h:102: error: undefined reference to 'std::__throw_bad_alloc()'
tier0/tslist.cpp.31.o:tslist.cpp:typeinfo for TSListTests::CListOps: error: undefined reference to 'vtable for __cxxabiv1::__si_class_type_info'
/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
tier0/tslist.cpp.31.o:tslist.cpp:typeinfo for TSListTests::CTestOps: error: undefined reference to 'vtable for __cxxabiv1::__class_type_info'
/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.9/../../../../arm-linux-androideabi/bin/ld: the vtable symbol may be undefined because the class is missing its key function
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/vector.tcc:470: error: undefined reference to '__cxa_rethrow'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_tree.h:1185: error: undefined reference to 'std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_tree.h:1185: error: undefined reference to 'std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_vector.h:1585: error: undefined reference to 'std::__throw_length_error(char const*)'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_tree.h:218: error: undefined reference to 'std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/bits/stl_tree.h:218: error: undefined reference to 'std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/ext/new_allocator.h:102: error: undefined reference to 'std::__throw_bad_alloc()'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/ext/new_allocator.h:102: error: undefined reference to 'std::__throw_bad_alloc()'
/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/include/ext/new_allocator.h:102: error: undefined reference to 'std::__throw_bad_alloc()'
collect2: error: ld returned 1 exit status
In file included from ../public/mathlib/vector.h:32:0,
from ../public/mathlib/mathlib.h:14,
from ../public/tier1/utlmemory.h:20,
from ../public/tier1/utlstring.h:14,
from ../tier1/utlstring.cpp:10:
../public/tier0/threadtools.h: In member function 'bool CThreadSpinRWLock::AssignIf(const CThreadSpinRWLock::LockInfo_t&, const CThreadSpinRWLock::LockInfo_t&)':
../public/tier0/threadtools.h:1743:48: warning: cast from 'volatile CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
../public/tier0/threadtools.h:1743:72: warning: cast from 'const CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
../public/tier0/threadtools.h:1743:95: warning: cast from 'const CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
In file included from ../public/tier1/utlmemory.h:22:0,
from ../public/tier1/utlstring.h:14,
from ../tier1/utlstring.cpp:10:
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAligned(size_t, size_t)':
../public/tier0/memalloc.h:190:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAligned(size_t, size_t, const char*, int)':
../public/tier0/memalloc.h:208:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAlignedUnattributed(size_t, size_t)':
../public/tier0/memalloc.h:226:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAlignedFileLine(size_t, size_t, const char*, int)':
../public/tier0/memalloc.h:244:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
In file included from ../public/tier1/utlvector.h:23:0,
from ../public/tier1/uniqueid.h:17,
from ../tier1/uniqueid.cpp:17:
../public/tier0/threadtools.h: In member function 'bool CThreadSpinRWLock::AssignIf(const CThreadSpinRWLock::LockInfo_t&, const CThreadSpinRWLock::LockInfo_t&)':
../public/tier0/threadtools.h:1743:48: warning: cast from 'volatile CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
../public/tier0/threadtools.h:1743:72: warning: cast from 'const CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
../public/tier0/threadtools.h:1743:95: warning: cast from 'const CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
In file included from ../public/tier1/utlmemory.h:22:0,
from ../public/tier1/utlvector.h:24,
from ../public/tier1/uniqueid.h:17,
from ../tier1/uniqueid.cpp:17:
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAligned(size_t, size_t)':
../public/tier0/memalloc.h:190:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAligned(size_t, size_t, const char*, int)':
../public/tier0/memalloc.h:208:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAlignedUnattributed(size_t, size_t)':
../public/tier0/memalloc.h:226:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAlignedFileLine(size_t, size_t, const char*, int)':
../public/tier0/memalloc.h:244:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../tier1/utlbufferutil.cpp:9:0: warning: ignoring #pragma warning [-Wunknown-pragmas]
#pragma warning (disable : 4514)
^
In file included from ../public/tier1/utlvector.h:23:0,
from ../public/tier1/utlbufferutil.h:17,
from ../tier1/utlbufferutil.cpp:11:
../public/tier0/threadtools.h: In member function 'bool CThreadSpinRWLock::AssignIf(const CThreadSpinRWLock::LockInfo_t&, const CThreadSpinRWLock::LockInfo_t&)':
../public/tier0/threadtools.h:1743:48: warning: cast from 'volatile CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
../public/tier0/threadtools.h:1743:72: warning: cast from 'const CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
../public/tier0/threadtools.h:1743:95: warning: cast from 'const CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
In file included from ../public/tier1/utlmemory.h:22:0,
from ../public/tier1/utlvector.h:24,
from ../public/tier1/utlbufferutil.h:17,
from ../tier1/utlbufferutil.cpp:11:
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAligned(size_t, size_t)':
../public/tier0/memalloc.h:190:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAligned(size_t, size_t, const char*, int)':
../public/tier0/memalloc.h:208:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAlignedUnattributed(size_t, size_t)':
../public/tier0/memalloc.h:226:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAlignedFileLine(size_t, size_t, const char*, int)':
../public/tier0/memalloc.h:244:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
In file included from ../tier1/utlbufferutil.cpp:17:0:
../public/Color.h: In constructor 'Color::Color()':
../public/Color.h:25:12: warning: cast from 'Color*' to 'int*' increases required alignment of target type [-Wcast-align]
*((int *)this) = 0;
^
../public/Color.h: In member function 'void Color::SetRawColor(int)':
../public/Color.h:59:12: warning: cast from 'Color*' to 'int*' increases required alignment of target type [-Wcast-align]
*((int *)this) = color32;
^
../public/Color.h: In member function 'int Color::GetRawColor() const':
../public/Color.h:64:19: warning: cast from 'const Color*' to 'int*' increases required alignment of target type [-Wcast-align]
return *((int *)this);
^
../public/Color.h: In member function 'bool Color::operator==(const Color&) const':
../public/Color.h:84:21: warning: cast from 'const Color*' to 'int*' increases required alignment of target type [-Wcast-align]
return ( *((int *)this) == *((int *)&rhs) );
^
../public/Color.h:84:40: warning: cast from 'const Color*' to 'int*' increases required alignment of target type [-Wcast-align]
return ( *((int *)this) == *((int *)&rhs) );
^
../tier1/utlbuffer.cpp:9:0: warning: ignoring #pragma warning [-Wunknown-pragmas]
#pragma warning (disable : 4514)
^
../tier1/utlbuffer.cpp:908:0: warning: ignoring #pragma warning [-Wunknown-pragmas]
#pragma warning ( disable : 4706 )
^
../tier1/utlbuffer.cpp:1079:0: warning: ignoring #pragma warning [-Wunknown-pragmas]
#pragma warning ( default : 4706 )
^
In file included from ../public/mathlib/vector.h:32:0,
from ../public/mathlib/mathlib.h:14,
from ../public/tier1/utlmemory.h:20,
from ../public/tier1/utlbuffer.h:17,
from ../tier1/utlbuffer.cpp:11:
../public/tier0/threadtools.h: In member function 'bool CThreadSpinRWLock::AssignIf(const CThreadSpinRWLock::LockInfo_t&, const CThreadSpinRWLock::LockInfo_t&)':
../public/tier0/threadtools.h:1743:48: warning: cast from 'volatile CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
../public/tier0/threadtools.h:1743:72: warning: cast from 'const CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
../public/tier0/threadtools.h:1743:95: warning: cast from 'const CThreadSpinRWLock::LockInfo_t*' to 'int64* {aka long long int*}' increases required alignment of target type [-Wcast-align]
return ThreadInterlockedAssignIf64( (int64 *)&m_lockInfo, *((int64 *)&newValue), *((int64 *)&comperand) );
^
In file included from ../public/tier1/utlmemory.h:22:0,
from ../public/tier1/utlbuffer.h:17,
from ../tier1/utlbuffer.cpp:11:
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAligned(size_t, size_t)':
../public/tier0/memalloc.h:190:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAligned(size_t, size_t, const char*, int)':
../public/tier0/memalloc.h:208:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAlignedUnattributed(size_t, size_t)':
../public/tier0/memalloc.h:226:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
../public/tier0/memalloc.h: In function 'void* MemAlloc_AllocAlignedFileLine(size_t, size_t, const char*, int)':
../public/tier0/memalloc.h:244:28: warning: cast from 'unsigned char*' to 'unsigned char**' increases required alignment of target type [-Wcast-align]
((unsigned char**)(pResult))[-1] = pAlloc;
^
Waf: Leaving directory `/home/jusic/source-engine/build'
Build failed
-> task in 'tier0' failed with exit status 1 (run with -v to display more information)

11
public/filesystem_init.cpp

@ -357,19 +357,24 @@ bool FileSystem_GetExecutableDir( char *exedir, int exeDirLen )
Q_strncat( exedir, libDir, exeDirLen, COPY_ALL_CHARACTERS ); Q_strncat( exedir, libDir, exeDirLen, COPY_ALL_CHARACTERS );
Q_FixSlashes( exedir ); Q_FixSlashes( exedir );
} }
return true; return true;
} }
static bool FileSystem_GetBaseDir( char *baseDir, int baseDirLen ) static bool FileSystem_GetBaseDir( char *baseDir, int baseDirLen )
{ {
#ifdef ANDROID
strncpy(baseDir, getenv("VALVE_GAME_PATH"), baseDirLen);
return true;
#else
if ( FileSystem_GetExecutableDir( baseDir, baseDirLen ) ) if ( FileSystem_GetExecutableDir( baseDir, baseDirLen ) )
{ {
Q_StripFilename( baseDir ); Q_StripFilename( baseDir );
return true; return true;
} }
return false; return false;
#endif
} }
void LaunchVConfig() void LaunchVConfig()
@ -549,6 +554,8 @@ FSReturnCode_t FileSystem_LoadSearchPaths( CFSSearchPathsInit &initInfo )
if ( !FileSystem_GetBaseDir( baseDir, sizeof( baseDir ) ) ) if ( !FileSystem_GetBaseDir( baseDir, sizeof( baseDir ) ) )
return SetupFileSystemError( false, FS_INVALID_PARAMETERS, "FileSystem_GetBaseDir failed." ); return SetupFileSystemError( false, FS_INVALID_PARAMETERS, "FileSystem_GetBaseDir failed." );
Msg("filesystem BaseDir: %s\n", baseDir);
// The MOD directory is always the one that contains gameinfo.txt // The MOD directory is always the one that contains gameinfo.txt
Q_strncpy( initInfo.m_ModPath, initInfo.m_pDirectoryName, sizeof( initInfo.m_ModPath ) ); Q_strncpy( initInfo.m_ModPath, initInfo.m_pDirectoryName, sizeof( initInfo.m_ModPath ) );

21
public/tier0/memoverride.cpp

@ -390,9 +390,7 @@ extern "C"
// ensures they are here even when linking against debug or release static libs // ensures they are here even when linking against debug or release static libs
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#ifndef NO_MEMOVERRIDE_NEW_DELETE #ifndef NO_MEMOVERRIDE_NEW_DELETE
#ifdef OSX #if defined (OSX) || defined (ANDROID)
void *__cdecl operator new( size_t nSize ) throw (std::bad_alloc)
#elif ANDROID
void *__cdecl operator new( size_t nSize ) throw (std::bad_alloc) void *__cdecl operator new( size_t nSize ) throw (std::bad_alloc)
#else #else
void *__cdecl operator new( size_t nSize ) void *__cdecl operator new( size_t nSize )
@ -406,9 +404,7 @@ void *__cdecl operator new( size_t nSize, int nBlockUse, const char *pFileName,
return g_pMemAlloc->Alloc(nSize, pFileName, nLine); return g_pMemAlloc->Alloc(nSize, pFileName, nLine);
} }
#ifdef OSX #if defined (OSX) || defined (ANDROID)
void __cdecl operator delete( void *pMem ) throw()
#elif ANDROID
void __cdecl operator delete( void *pMem ) throw() void __cdecl operator delete( void *pMem ) throw()
#else #else
void __cdecl operator delete( void *pMem ) void __cdecl operator delete( void *pMem )
@ -416,10 +412,7 @@ void __cdecl operator delete( void *pMem )
{ {
g_pMemAlloc->Free( pMem ); g_pMemAlloc->Free( pMem );
} }
#if defined (OSX) || defined (ANDROID)
#ifdef OSX
void operator delete(void*pMem, std::size_t)
#elif ANDROID
void operator delete(void*pMem, std::size_t) void operator delete(void*pMem, std::size_t)
#else #else
void operator delete(void*pMem, std::size_t) throw() void operator delete(void*pMem, std::size_t) throw()
@ -428,9 +421,7 @@ void operator delete(void*pMem, std::size_t) throw()
g_pMemAlloc->Free( pMem ); g_pMemAlloc->Free( pMem );
} }
#ifdef OSX #if defined (OSX) || defined (ANDROID)
void *__cdecl operator new[]( size_t nSize ) throw (std::bad_alloc)
#elif ANDROID
void *__cdecl operator new[]( size_t nSize ) throw (std::bad_alloc) void *__cdecl operator new[]( size_t nSize ) throw (std::bad_alloc)
#else #else
void *__cdecl operator new[]( size_t nSize ) void *__cdecl operator new[]( size_t nSize )
@ -444,9 +435,7 @@ void *__cdecl operator new[] ( size_t nSize, int nBlockUse, const char *pFileNam
return g_pMemAlloc->Alloc(nSize, pFileName, nLine); return g_pMemAlloc->Alloc(nSize, pFileName, nLine);
} }
#ifdef OSX #if defined (OSX) || defined (ANDROID)
void __cdecl operator delete[]( void *pMem ) throw()
#elif ANDROID
void __cdecl operator delete[]( void *pMem ) throw() void __cdecl operator delete[]( void *pMem ) throw()
#else #else
void __cdecl operator delete[]( void *pMem ) void __cdecl operator delete[]( void *pMem )

5
scenefilecache/wscript vendored

@ -30,7 +30,10 @@ def build(bld):
defines = [] defines = []
libs = ['tier0','tier1','iconv'] libs = ['tier0','tier1']
if bld.env.DEST_OS == 'android':
libs += ['ANDROID_SUPPORT']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

BIN
scripts/waifulib/compiler_optimizations.pyc

Binary file not shown.

BIN
scripts/waifulib/fwgslib.pyc

Binary file not shown.

2
scripts/waifulib/reconfigure.py

@ -1,9 +1,7 @@
#!/usr/bin/env python #!/usr/bin/env python
# encoding: utf-8 # encoding: utf-8
# Copyright (c) 2019 mittorn # Copyright (c) 2019 mittorn
CC=../android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc CXX=../android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc LD=../android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld AR=../android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar LINK=../android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld STRIP=../android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip ./waf configure -T debug
../android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc -DDX_TO_GL_ABSTRACTION -DGL_GLEXT_PROTOTYPES -DBINK_VIDEO -DUSE_SDL=1 -DANDROID=1 -D_ANDROID=1 -DLINUX=1 -D_LINUX=1 -DPOSIX=1 -D_POSIX=1 -DGNUC -DNDEBUG -DNO_HOOK_MALLOC -D_DLL_EXT=.so /home/jusic/source-engine/main.c -c -o/home/jusic/source-engine/build/test.c.1.o
''' '''
Reconfigure Reconfigure

12
scripts/waifulib/xcompile.py

@ -213,7 +213,11 @@ class Android:
def system_stl(self): def system_stl(self):
# TODO: proper STL support # TODO: proper STL support
return os.path.abspath(os.path.join(self.ndk_home, 'sources', 'cxx-stl', 'system', 'include')) return [
#os.path.abspath(os.path.join(self.ndk_home, 'sources', 'cxx-stl', 'system', 'include')),
os.path.abspath(os.path.join(self.ndk_home, 'sources', 'cxx-stl', 'stlport', 'stlport')),
os.path.abspath(os.path.join(self.ndk_home, 'sources', 'android', 'support', 'include'))
]
def libsysroot(self): def libsysroot(self):
arch = self.arch arch = self.arch
@ -243,7 +247,7 @@ class Android:
'-isystem', '%s/usr/include/' % (self.sysroot()) '-isystem', '%s/usr/include/' % (self.sysroot())
] ]
cflags += ['-I%s' % (self.system_stl()), '-DANDROID', '-D__ANDROID__'] cflags += ['-I%s'%i for i in self.system_stl()]+['-DANDROID', '-D__ANDROID__']
if cxx and not self.is_clang() and self.toolchain not in ['4.8','4.9']: if cxx and not self.is_clang() and self.toolchain not in ['4.8','4.9']:
cflags += ['-fno-sized-deallocation'] cflags += ['-fno-sized-deallocation']
@ -335,13 +339,15 @@ def configure(conf):
conf.env.CXXFLAGS += android.cflags(True) conf.env.CXXFLAGS += android.cflags(True)
conf.env.LINKFLAGS += android.linkflags() conf.env.LINKFLAGS += android.linkflags()
conf.env.LDFLAGS += android.ldflags() conf.env.LDFLAGS += android.ldflags()
conf.env.STLIBPATH += [os.path.abspath(os.path.join(android.ndk_home, 'sources','cxx-stl','stlport','libs',values[0]))]
conf.env.LDFLAGS += ['-lstlport_static']
conf.env.HAVE_M = True conf.env.HAVE_M = True
if android.is_hardfp(): if android.is_hardfp():
conf.env.LIB_M = ['m_hard'] conf.env.LIB_M = ['m_hard']
else: conf.env.LIB_M = ['m'] else: conf.env.LIB_M = ['m']
conf.env.PREFIX = '/lib/%s' % android.apk_arch() conf.env.PREFIX += '/lib/%s' % android.apk_arch()
conf.msg('Selected Android NDK', '%s, version: %d' % (android.ndk_home, android.ndk_rev)) conf.msg('Selected Android NDK', '%s, version: %d' % (android.ndk_home, android.ndk_rev))
# no need to print C/C++ compiler, as it would be printed by compiler_c/cxx # no need to print C/C++ compiler, as it would be printed by compiler_c/cxx

BIN
scripts/waifulib/xcompile.pyc

Binary file not shown.

2
thirdparty

@ -1 +1 @@
Subproject commit ecce0cecc39b32bdf704542e3cb870ba4e2e8e42 Subproject commit c397ca0520de10f8bf9c85fadc9fcc3055c60b0f

2
tier0/assert_dialog.cpp

@ -23,7 +23,7 @@
#include <dlfcn.h> #include <dlfcn.h>
#endif #endif
#if defined( LINUX ) || defined( USE_SDL ) #if defined( USE_SDL )
// We lazily load the SDL shared object, and only reference functions if it's // We lazily load the SDL shared object, and only reference functions if it's
// available, so this can be included on the dedicated server too. // available, so this can be included on the dedicated server too.

12
tier0/dbg.cpp

@ -313,14 +313,14 @@ static SpewRetval_t _SpewMessage( SpewType_t spewType, const char *pGroupName, i
nLevel nLevel
}; };
#ifdef ANDROID
__android_log_print( ANDROID_LOG_INFO, "SRCENG", "%s", pTempBuffer );
#endif
g_pSpewInfo = &spewInfo; g_pSpewInfo = &spewInfo;
ret = s_SpewOutputFunc( spewType, pTempBuffer ); ret = s_SpewOutputFunc( spewType, pTempBuffer );
g_pSpewInfo = (int)NULL; g_pSpewInfo = (int)NULL;
#ifdef ANDROID
__android_log_print( ANDROID_LOG_INFO, "SRCENGINE", "%s", pTempBuffer );
#endif
switch (ret) switch (ret)
{ {
// Asserts put the break into the macro so it occurs in the right place // Asserts put the break into the macro so it occurs in the right place
@ -911,10 +911,6 @@ void COM_TimestampedLog( char const *fmt, ... )
XBX_rTimeStampLog( curStamp, string ); XBX_rTimeStampLog( curStamp, string );
#endif #endif
#ifdef ANDROID
__android_log_print( ANDROID_LOG_INFO, "SRCENGINE", "%s", string );
#endif
if ( IsPC() ) if ( IsPC() )
{ {
// If ETW profiling is enabled then do it only. // If ETW profiling is enabled then do it only.

4
tier0/wscript

@ -54,7 +54,7 @@ def build(bld):
'vcrmode_posix.cpp', #[$POSIX] 'vcrmode_posix.cpp', #[$POSIX]
'vprof.cpp', 'vprof.cpp',
# 'win32consoleio.cpp', [$WINDOWS] # 'win32consoleio.cpp', [$WINDOWS]
'../tier1/pathmatch.cpp' # [$LINUXALL] #'../tier1/pathmatch.cpp' # [$LINUXALL]
] ]
includes = [ includes = [
@ -65,7 +65,7 @@ def build(bld):
defines = [] defines = []
libs = ['DL', 'm', 'LOG'] libs = ['DL', 'M', 'LOG']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

39
tier1/interface.cpp

@ -247,8 +247,10 @@ HMODULE Sys_LoadLibrary( const char *pLibraryName, Sys_Flags flags )
#elif POSIX #elif POSIX
int dlopen_mode = RTLD_NOW; int dlopen_mode = RTLD_NOW;
#ifndef ANDROID
if ( flags & SYS_NOLOAD ) if ( flags & SYS_NOLOAD )
dlopen_mode |= RTLD_NOLOAD; dlopen_mode |= RTLD_NOLOAD;
#endif
HMODULE ret = ( HMODULE )dlopen( str, dlopen_mode ); HMODULE ret = ( HMODULE )dlopen( str, dlopen_mode );
if ( !ret && !( flags & SYS_NOLOAD ) ) if ( !ret && !( flags & SYS_NOLOAD ) )
@ -301,31 +303,34 @@ CSysModule *Sys_LoadModule( const char *pModuleName, Sys_Flags flags /* = SYS_NO
size_t cCwd = strlen( szCwd ); size_t cCwd = strlen( szCwd );
bool bUseLibPrefix = false; bool bUseLibPrefix = false;
#ifdef POSIX
struct stat statBuf;
#ifdef ANDROID #ifdef ANDROID
Q_snprintf(szModuleName, sizeof(szModuleName), "lib/lib%s", pModuleName); struct stat statBuf;
char *dataPath = getenv("APP_DATA_PATH");
Q_snprintf(szAbsoluteModuleName, sizeof(szAbsoluteModuleName), "%s/lib/lib%s", dataPath ,pModuleName);
if( stat(szAbsoluteModuleName, &statBuf) != 0 )
Q_snprintf(szAbsoluteModuleName, sizeof(szAbsoluteModuleName), "%s/lib/%s", dataPath ,pModuleName);
#else #else
#ifdef POSIX
struct stat statBuf;
Q_snprintf(szModuleName, sizeof(szModuleName), "bin/lib%s", pModuleName); Q_snprintf(szModuleName, sizeof(szModuleName), "bin/lib%s", pModuleName);
#endif
bUseLibPrefix |= stat(szModuleName, &statBuf) == 0; bUseLibPrefix |= stat(szModuleName, &statBuf) == 0;
#endif #endif
if( bUseLibPrefix )
Q_snprintf( szAbsoluteModuleName, sizeof(szAbsoluteModuleName), "%s/bin/lib%s", szCwd, pModuleName );
else
Q_snprintf( szAbsoluteModuleName, sizeof(szAbsoluteModuleName), "%s/bin/%s", szCwd, pModuleName );
#endif // ANDROID
Msg("LoadLibrary: pModule: %s, path: %s\n", pModuleName, szAbsoluteModuleName);
#ifdef ANDROID
char* szModulePath = "%s/lib/lib%s";
if (!bUseLibPrefix)
szModulePath = "%s/lib/%s";
#else
char* szModulePath = "%s/bin/lib%s";
if (!bUseLibPrefix)
szModulePath = "%s/bin/%s";
#endif
Q_snprintf( szAbsoluteModuleName, sizeof(szAbsoluteModuleName), szModulePath, szCwd, pModuleName );
hDLL = Sys_LoadLibrary( szAbsoluteModuleName, flags ); hDLL = Sys_LoadLibrary( szAbsoluteModuleName, flags );
} }
else
Msg("LoadLibrary: path: %s\n", pModuleName);
if ( !hDLL ) if ( !hDLL )
{ {

4
tier1/strtools.cpp

@ -47,11 +47,7 @@
#include <stdarg.h> #include <stdarg.h>
#ifdef POSIX #ifdef POSIX
#ifdef ANDROID
#include <../thirdparty/libiconv-1.14/include/iconv.h>
#else
#include <iconv.h> #include <iconv.h>
#endif
#include <ctype.h> #include <ctype.h>
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>

6
tier1/wscript

@ -40,7 +40,7 @@ def build(bld):
'memstack.cpp', 'memstack.cpp',
'NetAdr.cpp', 'NetAdr.cpp',
'newbitbuf.cpp', 'newbitbuf.cpp',
'pathmatch.cpp', # [$LINUXALL] # 'pathmatch.cpp', # [$LINUXALL]
# 'processor_detect.cpp', # [$WINDOWS||$X360] # 'processor_detect.cpp', # [$WINDOWS||$X360]
'processor_detect_linux.cpp', # [$POSIX] 'processor_detect_linux.cpp', # [$POSIX]
'qsort_s.cpp', # [$LINUXALL||$PS3] 'qsort_s.cpp', # [$LINUXALL||$PS3]
@ -74,9 +74,7 @@ def build(bld):
defines = [] defines = []
libs = [ libs = []
'libgnustl_static.a'
]
bld.stlib( bld.stlib(
source = source, source = source,

2
togl/linuxwin/glentrypoints.cpp

@ -377,10 +377,12 @@ COpenGLEntryPoints::COpenGLEntryPoints()
// !!! FIXME: hint Apple's drivers and not because we rely on the // !!! FIXME: hint Apple's drivers and not because we rely on the
// !!! FIXME: functionality. If so, just remove this check (and the // !!! FIXME: functionality. If so, just remove this check (and the
// !!! FIXME: GL_NV_fence code entirely). // !!! FIXME: GL_NV_fence code entirely).
#ifndef ANDROID // HACK
if ((m_bHave_OpenGL) && ((!m_bHave_GL_NV_fence) && (!m_bHave_GL_ARB_sync) && (!m_bHave_GL_APPLE_fence))) if ((m_bHave_OpenGL) && ((!m_bHave_GL_NV_fence) && (!m_bHave_GL_ARB_sync) && (!m_bHave_GL_APPLE_fence)))
{ {
Error( "Required OpenGL extension \"GL_NV_fence\", \"GL_ARB_sync\", or \"GL_APPLE_fence\" is not supported. Please upgrade your OpenGL driver." ); Error( "Required OpenGL extension \"GL_NV_fence\", \"GL_ARB_sync\", or \"GL_APPLE_fence\" is not supported. Please upgrade your OpenGL driver." );
} }
#endif
// same extension, different name. // same extension, different name.
if (m_bHave_GL_EXT_vertex_array_bgra || m_bHave_GL_ARB_vertex_array_bgra) if (m_bHave_GL_EXT_vertex_array_bgra || m_bHave_GL_ARB_vertex_array_bgra)

2
vgui2/src/wscript

@ -50,7 +50,7 @@ def build(bld):
defines = [] defines = []
libs = ['tier0','tier1','tier2','tier3','vstdlib','sdl2'] libs = ['tier0','tier1','tier2','tier3','vstdlib','SDL2']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

2
vgui2/vgui_surfacelib/linuxfont.cpp

@ -502,7 +502,7 @@ void CLinuxFont::GetCharRGBA( wchar_t ch, int rgbaWide, int rgbaTall, unsigned c
if( error == 0 ) if( error == 0 )
{ {
uint32 alpha_scale = 1; uint32 alpha_scale = 1;
int Width = min( rgbaWide, bitmap.width ); int Width = MIN( rgbaWide, bitmap.width );
unsigned char *rgba = prgba + ( nSkipRows * rgbaWide * 4 ); unsigned char *rgba = prgba + ( nSkipRows * rgbaWide * 4 );
switch( m_face->glyph->bitmap.pixel_mode ) switch( m_face->glyph->bitmap.pixel_mode )

2
vgui2/vgui_surfacelib/wscript

@ -32,8 +32,6 @@ def build(bld):
'../../public/tier0', '../../public/tier0',
'../../public/tier1', '../../public/tier1',
'../../common', '../../common',
'../../thirdparty/freetype2-android/include', # [$ANDROID]
'../../thirdparty/fontconfig' # [$ANDROID]
] + bld.env.INCLUDES_FT2 ] + bld.env.INCLUDES_FT2
defines = [] defines = []

9
vguimatsurface/wscript

@ -39,13 +39,14 @@ def build(bld):
'../public/tier0', '../public/tier0',
'../public/tier1', '../public/tier1',
'../common', '../common',
'../../thirdparty/freetype2-android/include', # [$ANDROID] ]
'../../thirdparty/fontconfig' # [$ANDROID]
] + bld.env.INCLUDES_SDL2 + bld.env.INCLUDES_FREETYPE
defines = [] defines = []
libs = ['bitmap','mathlib','tier0','vgui_controls','tier1','vstdlib','tier2','tier3','vgui_surfacelib','FT2','FC','sdl2','EXPAT'] libs = ['bitmap','mathlib','tier0','vgui_controls','tier1','vstdlib','tier2','tier3','vgui_surfacelib','FT2','FC','SDL2']
if bld.env.DEST_OS == 'android':
libs += ['EXPAT']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

5
vstdlib/wscript

@ -38,7 +38,10 @@ def build(bld):
defines = [] defines = []
libs = ['tier0','tier1','iconv'] libs = ['tier0','tier1']
if bld.env.DEST_OS == 'android':
libs += ['ANDROID_SUPPORT']
install_path = bld.env.LIBDIR install_path = bld.env.LIBDIR

8
wafandroid

@ -1,8 +0,0 @@
export CC=/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
export CXX=/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc
export LD=/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld
export AR=/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ar
export LINK=/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-ld
export STRIP=/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-strip
export OBJCOPY=/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-objcopy
./waf configure -T debug

101
wscript

@ -1,6 +1,6 @@
#! /usr/bin/env python #! /usr/bin/env python
# encoding: utf-8 # encoding: utf-8
# a1batross, mittorn, nillerusr # nillerusr
from __future__ import print_function from __future__ import print_function
from waflib import Logs, Context, Configure from waflib import Logs, Context, Configure
@ -154,8 +154,6 @@ def define_platform(conf):
if conf.options.SDL: if conf.options.SDL:
conf.define('USE_SDL', 1) conf.define('USE_SDL', 1)
print(conf.env.DEST_OS)
if conf.env.DEST_OS == 'linux': if conf.env.DEST_OS == 'linux':
conf.define('_GLIBCXX_USE_CXX11_ABI',0) conf.define('_GLIBCXX_USE_CXX11_ABI',0)
conf.env.append_unique('DEFINES', [ conf.env.append_unique('DEFINES', [
@ -226,20 +224,6 @@ def configure(conf):
conf.load('force_32bit') conf.load('force_32bit')
#if conf.options.SDL:
# conf.check_cfg(package='sdl2', uselib_store='SDL2', args=['--cflags', '--libs'])
if conf.options.DEDICATED:
conf.check_cfg(package='libedit', uselib_store='EDIT', args=['--cflags', '--libs'])
#else:
#conf.check_pkg('freetype2', 'FT2', FT2_CHECK)
#conf.check_pkg('fontconfig', 'FC', FC_CHECK)
#conf.check_cfg(package='openal', uselib_store='OPENAL', args=['--cflags', '--libs'])
#conf.check_cfg(package='libjpeg', uselib_store='JPEG', args=['--cflags', '--libs'])
#conf.check_cfg(package='libpng', uselib_store='PNG', args=['--cflags', '--libs'])
#conf.check_cfg(package='libcurl', uselib_store='CURL', args=['--cflags', '--libs'])
#conf.check_cfg(package='zlib', uselib_store='ZLIB', args=['--cflags', '--libs'])
compiler_optional_flags = [ compiler_optional_flags = [
'-Wall', '-Wall',
'-fdiagnostics-color=always', '-fdiagnostics-color=always',
@ -247,48 +231,56 @@ def configure(conf):
'-Wuninitialized', '-Wuninitialized',
'-Winit-self', '-Winit-self',
'-Wstrict-aliasing', '-Wstrict-aliasing',
'-Wextra', '-faligned-new'
'-w',
#'-faligned-new'
] ]
c_compiler_optional_flags = [ c_compiler_optional_flags = [
#'-fnonconst-initializers' # owcc '-fnonconst-initializers' # owcc
] ]
cflags, linkflags = conf.get_optimization_flags() cflags, linkflags = conf.get_optimization_flags()
flags = ['-fPIC'] flags = ['-fPIC']
if conf.env.DEST_OS == 'android':
flags += [
'-L'+os.path.abspath('.')+'/lib/android/armeabi-v7a/',
'-I'+os.path.abspath('.')+'/thirdparty/curl/include',
'-I'+os.path.abspath('.')+'/thirdparty/SDL',
'-I'+os.path.abspath('.')+'/thirdparty/openal-soft/include/',
'-I'+os.path.abspath('.')+'/thirdparty/fontconfig',
'-I'+os.path.abspath('.')+'/thirdparty/freetype/include',
'-llog'
]
if conf.env.DEST_CPU == 'arm': if conf.env.DEST_CPU == 'arm':
flags += ['-mfpu=neon', '-mfloat-abi=softfp', '-fsigned-char', '--sysroot=/home/jusic/android-ndk-r10e/platforms/android-21/arch-arm', '-I/home/jusic/android-ndk-r10e/sources/cxx-stl/stlport/stlport', '-I/home/jusic/android-ndk-r10e/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a-hard/include', '-I/home/jusic/android-ndk-r10e/sources/android/support/include'] flags += ['-mfpu=neon', '-mfloat-abi=hard', '-fsigned-char']
else: else:
flags += ['-march=pentium4','-mtune=core2','-mfpmath=387'] flags += ['-march=pentium4','-mtune=core2','-mfpmath=387']
flags += ['-I/home/jusic/source-engine-android/thirdparty/SDL/include', '-L/home/jusic/android-ndk-r10e/sources/cxx-stl/stlport/libs/armeabi-v7a-hard/thumb', '-L/home/jusic/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9', '-lstlport_shared', '-lm', '-L/home/jusic/source-engine-android/lib/common/android/armeabi-v7a', '-L/home/jusic/source-engine-android/lib/public/android/armeabi-v7a']
cflags += flags cflags += flags
linkflags += flags linkflags += flags
# And here C++ flags starts to be treated separately # And here C++ flags starts to be treated separately
cxxflags = list(cflags) + ['-std=c++11','-fpermissive'] cxxflags = list(cflags) + ['-std=c++11','-fpermissive']
if conf.env.COMPILER_CC == 'gcc': if conf.env.COMPILER_CC == 'gcc':
wrapfunctions = ['freopen','creat','access','__xstat','stat','lstat','fopen64','open64', # wrapfunctions = ['freopen','creat','access','__xstat','stat','lstat','fopen64','open64',
'opendir','__lxstat','chmod','chown','lchown','symlink','link','__lxstat64','mknod', # 'opendir','__lxstat','chmod','chown','lchown','symlink','link','__lxstat64','mknod',
'utimes','unlink','rename','utime','__xstat64','mount','mkfifo','mkdir','rmdir','scandir','realpath'] # 'utimes','unlink','rename','utime','__xstat64','mount','mkdir','rmdir','scandir','realpath','mkfifo']
# for func in wrapfunctions:
# linkflags += ['-Wl,--wrap='+func]
for func in wrapfunctions:
linkflags += ['-Wl,--wrap='+func]
conf.define('COMPILER_GCC', 1) conf.define('COMPILER_GCC', 1)
if conf.env.COMPILER_CC != 'msvc': if conf.env.COMPILER_CC != 'msvc':
conf.check_cc(cflags=cflags, linkflags=linkflags, msg='Checking for required C flags') conf.check_cc(cflags=cflags, linkflags=linkflags, msg='Checking for required C flags')
conf.check_cxx(cxxflags=cxxflags, linkflags=linkflags, msg='Checking for required C++ flags') conf.check_cxx(cxxflags=cxxflags, linkflags=linkflags, msg='Checking for required C++ flags')
linkflags += ['-pthread'] linkflags += ['-pthread']
conf.env.append_unique('CFLAGS', cflags) conf.env.append_unique('CFLAGS', cflags)
conf.env.append_unique('CXXFLAGS', cxxflags) conf.env.append_unique('CXXFLAGS', cxxflags)
conf.env.append_unique('LINKFLAGS', linkflags) conf.env.append_unique('LINKFLAGS', linkflags)
@ -296,26 +288,38 @@ def configure(conf):
cxxflags += conf.filter_cxxflags(compiler_optional_flags, cflags) cxxflags += conf.filter_cxxflags(compiler_optional_flags, cflags)
cflags += conf.filter_cflags(compiler_optional_flags + c_compiler_optional_flags, cflags) cflags += conf.filter_cflags(compiler_optional_flags + c_compiler_optional_flags, cflags)
conf.env.append_unique('CFLAGS', cflags) conf.env.append_unique('CFLAGS', cflags)
conf.env.append_unique('CXXFLAGS', cxxflags) conf.env.append_unique('CXXFLAGS', cxxflags)
conf.env.append_unique('LINKFLAGS', linkflags) conf.env.append_unique('LINKFLAGS', linkflags)
conf.env.append_unique('INCLUDES', [os.path.abspath('common/')]) conf.env.append_unique('INCLUDES', [os.path.abspath('common/')])
conf.check(lib='iconv', uselib_store='iconv') if conf.env.DEST_OS != 'android':
conf.check(lib='curl', uselib_store='curl') if conf.options.SDL:
conf.check(lib='jpeg', uselib_store='jpeg') conf.check_cfg(package='sdl2', uselib_store='SDL2', args=['--cflags', '--libs'])
conf.check(lib='z', uselib_store='zlib') if conf.options.DEDICATED:
conf.check(lib='crypto', uselib_store='crypto') conf.check_cfg(package='libedit', uselib_store='EDIT', args=['--cflags', '--libs'])
conf.check(lib='ssl', uselib_store='ssl') else:
conf.check(lib='openal', uselib_store='openal') conf.check_pkg('freetype2', 'FT2', FT2_CHECK)
conf.check(lib='SDL2', uselib_store='sdl2') conf.check_pkg('fontconfig', 'FC', FC_CHECK)
conf.check(lib='png', uselib_store='png') conf.check_cfg(package='openal', uselib_store='OPENAL', args=['--cflags', '--libs'])
conf.check(lib='fontconfig', uselib_store='FT2') conf.check_cfg(package='libjpeg', uselib_store='JPEG', args=['--cflags', '--libs'])
conf.check(lib='freetype2', uselib_store='FC') conf.check_cfg(package='libpng', uselib_store='PNG', args=['--cflags', '--libs'])
conf.check(lib='expat', uselib_store='EXPAT') conf.check_cfg(package='libcurl', uselib_store='CURL', args=['--cflags', '--libs'])
conf.check(lib='log', uselib_store='LOG') conf.check_cfg(package='zlib', uselib_store='ZLIB', args=['--cflags', '--libs'])
else:
conf.check(lib='SDL2', uselib_store='SDL2')
conf.check(lib='freetype2', uselib_store='FT2')
conf.check(lib='fontconfig', uselib_store='FC')
conf.check(lib='openal', uselib_store='OPENAL')
conf.check(lib='jpeg', uselib_store='JPEG')
conf.check(lib='png', uselib_store='PNG')
conf.check(lib='curl', uselib_store='CURL')
conf.check(lib='z', uselib_store='ZLIB')
conf.check(lib='crypto', uselib_store='CRYPTO')
conf.check(lib='ssl', uselib_store='SSL')
conf.check(lib='expat', uselib_store='EXPAT')
conf.check(lib='android_support', uselib_store='ANDROID_SUPPORT')
if conf.env.DEST_OS != 'win32': if conf.env.DEST_OS != 'win32':
conf.check_cc(lib='dl', mandatory=False) conf.check_cc(lib='dl', mandatory=False)
conf.check_cc(lib='bz2', mandatory=False) conf.check_cc(lib='bz2', mandatory=False)
@ -355,6 +359,9 @@ def configure(conf):
conf.env.BINDIR = conf.env.PREFIX conf.env.BINDIR = conf.env.PREFIX
else: else:
conf.env.LIBDIR = conf.env.BINDIR = conf.env.PREFIX conf.env.LIBDIR = conf.env.BINDIR = conf.env.PREFIX
print(conf.env.PREFIX)
if conf.options.DEDICATED: if conf.options.DEDICATED:
conf.add_subproject(projects['dedicated']) conf.add_subproject(projects['dedicated'])

Loading…
Cancel
Save