mirror of https://github.com/bjornbytes/lovr.git
Android lua module
Currently provides only a lovr.android.getApplicationId(). This returns an Android-specific identifier that doesn't cleanly map to anything specific in other OSes.
This commit is contained in:
parent
8e8091ccbc
commit
961bf859f6
|
@ -73,6 +73,8 @@ elseif(ANDROID)
|
||||||
set(LOVR_USE_LUAJIT OFF) # Until buildvm re-invoke works
|
set(LOVR_USE_LUAJIT OFF) # Until buildvm re-invoke works
|
||||||
set(LOVR_USE_SSE OFF) # Assume ARM. Technically wrong on Android X86…?
|
set(LOVR_USE_SSE OFF) # Assume ARM. Technically wrong on Android X86…?
|
||||||
set(LOVR_BUILD_SHARED ON) # Android has only "activities"
|
set(LOVR_BUILD_SHARED ON) # Android has only "activities"
|
||||||
|
|
||||||
|
option(LOVR_ENABLE_ANDROID "Enable the Android module" ON)
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
set(CMAKE_MACOSX_RPATH 1)
|
set(CMAKE_MACOSX_RPATH 1)
|
||||||
|
@ -569,7 +571,7 @@ elseif(EMSCRIPTEN)
|
||||||
target_sources(lovr PRIVATE src/platform/web.c)
|
target_sources(lovr PRIVATE src/platform/web.c)
|
||||||
elseif(ANDROID)
|
elseif(ANDROID)
|
||||||
target_link_libraries(lovr log EGL GLESv3)
|
target_link_libraries(lovr log EGL GLESv3)
|
||||||
target_sources(lovr PRIVATE src/platform/android.c)
|
target_sources(lovr PRIVATE src/platform/android.c src/api/android.c)
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
target_sources(lovr PRIVATE src/platform/linux.c)
|
target_sources(lovr PRIVATE src/platform/linux.c)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
// Module loaders
|
// Module loaders
|
||||||
LOVR_API int luaopen_lovr(lua_State* L);
|
LOVR_API int luaopen_lovr(lua_State* L);
|
||||||
|
LOVR_API int luaopen_lovr_android(lua_State* L);
|
||||||
LOVR_API int luaopen_lovr_audio(lua_State* L);
|
LOVR_API int luaopen_lovr_audio(lua_State* L);
|
||||||
LOVR_API int luaopen_lovr_data(lua_State* L);
|
LOVR_API int luaopen_lovr_data(lua_State* L);
|
||||||
LOVR_API int luaopen_lovr_event(lua_State* L);
|
LOVR_API int luaopen_lovr_event(lua_State* L);
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
#include "api.h"
|
||||||
|
#include "sds.h"
|
||||||
|
|
||||||
|
static int l_lovrGetApplicationId(lua_State *L) {
|
||||||
|
pid_t pid = getpid();
|
||||||
|
sds procPath = sdscatfmt(sdsempty(), "/proc/%d/cmdline", (int)pid);
|
||||||
|
FILE *procFile = fopen(procPath, "r");
|
||||||
|
sdsfree(procPath);
|
||||||
|
if (procFile) {
|
||||||
|
sds procData = sdsempty();
|
||||||
|
char data[64];
|
||||||
|
int read;
|
||||||
|
while (read = fread(data, sizeof(data), 1, procFile)) {
|
||||||
|
procData = sdscatlen(procData, data, read);
|
||||||
|
}
|
||||||
|
sdsfree(procData);
|
||||||
|
} else {
|
||||||
|
lua_pushnil(L);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const luaL_Reg lovrAndroid[] = {
|
||||||
|
{ "getApplicationId", l_lovrGetApplicationId },
|
||||||
|
}
|
||||||
|
|
||||||
|
LOVR_API int luaopen_lovr_android(lua_State* L) {
|
||||||
|
lua_newtable(L);
|
||||||
|
luaL_register(L, NULL, lovrAndroid);
|
||||||
|
return 1;
|
||||||
|
}
|
|
@ -6,6 +6,9 @@
|
||||||
|
|
||||||
const luaL_Reg lovrModules[] = {
|
const luaL_Reg lovrModules[] = {
|
||||||
{ "lovr", luaopen_lovr },
|
{ "lovr", luaopen_lovr },
|
||||||
|
#ifdef LOVR_ENABLE_ANDROID
|
||||||
|
{ "lovr.android", luaopen_lovr_android },
|
||||||
|
#endif
|
||||||
#ifdef LOVR_ENABLE_AUDIO
|
#ifdef LOVR_ENABLE_AUDIO
|
||||||
{ "lovr.audio", luaopen_lovr_audio },
|
{ "lovr.audio", luaopen_lovr_audio },
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -50,6 +50,7 @@ end
|
||||||
function lovr.boot()
|
function lovr.boot()
|
||||||
local conf = {
|
local conf = {
|
||||||
modules = {
|
modules = {
|
||||||
|
android = true,
|
||||||
audio = true,
|
audio = true,
|
||||||
data = true,
|
data = true,
|
||||||
event = true,
|
event = true,
|
||||||
|
|
Loading…
Reference in New Issue