Updated readme and scummvm patch file

This commit is contained in:
pelya
2010-11-03 17:47:06 +02:00
parent 6df69b5999
commit 8c8be0d7ca
3 changed files with 84 additions and 616 deletions

View File

@@ -1,12 +1,8 @@
To compile ScummVM add the ScummVM SVN to directory "scummvm" (or make a symlink to it), To compile ScummVM add the ScummVM SVN branch 1.2.0 to directory "scummvm" (or make a symlink to it),
then overwrite "configure" script with file "configure-androidsdl", apply patch scummvm-1.2.0-54046.diff, then from dir 'project/jni/application' execute commands
then from dir 'project/jni/application' execute commands
rm src rm src
ln -s scummvm src ln -s scummvm src
Then go to project root and launch 'build.sh' - that should be it. Then go to project root and launch 'build.sh' - that should be it.
You need to have Android SDK 2.2 and NDK r4b installed in your PATH. You need to have Android SDK 2.2 and NDK r4b installed in your PATH.
If you're using ScummVM trunk you'll probably need to apply a patch
'scummvm-trunk-53822.diff' to the SVN, branch 1.2.0 compiles without changes.

View File

@@ -0,0 +1,82 @@
Index: configure
===================================================================
--- configure (revision 54046)
+++ configure (working copy)
@@ -931,6 +931,11 @@
_host_cpu=arm
_host_alias=arm-oe-linux-androideabi
;;
+androidsdl)
+ _host_os=androidsdl
+ _host_cpu=arm
+ _host_alias=arm-eabi
+ ;;
arm-riscos)
_host_os=riscos
_host_cpu=arm
@@ -1433,6 +1438,11 @@
_unix=yes
_seq_midi=no
;;
+ androidsdl)
+ CXXFLAGS="$CXXFLAGS -Os"
+ _unix=yes
+ _seq_midi=no
+ ;;
beos*)
DEFINES="$DEFINES -DSYSTEM_NOT_SUPPORTING_D_TYPE"
# Needs -lbind -lsocket for the timidity MIDI driver
@@ -1571,6 +1581,13 @@
_port_mk="backends/platform/android/android.mk"
_seq_midi=no
;;
+ androidsdl)
+ DEFINES="$DEFINES -DANDROID"
+ _unix=yes
+ _need_memalign=yes
+ _seq_midi=no
+ _backend="sdl"
+ ;;
arm-linux|arm*-linux-gnueabi|arm-*-linux)
_unix=yes
_need_memalign=yes
@@ -2112,7 +2129,7 @@
LIBS += -ldl
'
;;
- linux*|android)
+ linux*|android|androidsdl)
_def_plugin='
#define PLUGIN_PREFIX "lib"
#define PLUGIN_SUFFIX ".so"
@@ -2778,7 +2795,7 @@
case $_host_os in
# newlib-based system include files suppress non-C89 function
# declarations under __STRICT_ANSI__
- amigaos* | android | ds | dreamcast | gamecube | mingw* | n64 | psp | wii | wince )
+ amigaos* | android | androidsdl | ds | dreamcast | gamecube | mingw* | n64 | psp | wii | wince )
CXXFLAGS="$CXXFLAGS -W -Wno-unused-parameter"
;;
*)
@@ -2799,7 +2816,7 @@
# Some platforms use certain GNU extensions in header files
case $_host_os in
-android | gamecube | psp | wii)
+android | androidsdl | gamecube | psp | wii)
;;
*)
CXXFLAGS="$CXXFLAGS -pedantic"
Index: common/endian.h
===================================================================
--- common/endian.h (revision 54046)
+++ common/endian.h (working copy)
@@ -89,7 +89,7 @@
}
// Test for GCC >= 4.3.0 as this version added the bswap builtin
-#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
+#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) && !defined(ANDROID)
FORCEINLINE uint32 SWAP_BYTES_32(uint32 a) {
return __builtin_bswap32(a);

View File

@@ -1,610 +0,0 @@
Index: sound/rate_arm.cpp
===================================================================
--- sound/rate_arm.cpp (revision 53822)
+++ sound/rate_arm.cpp (working copy)
@@ -44,6 +44,8 @@
* other improvments over the original code were made.
*/
+#ifndef ANDROID
+
#include "sound/audiostream.h"
#include "sound/rate.h"
#include "sound/mixer.h"
@@ -467,3 +469,5 @@
}
} // End of namespace Audio
+
+#endif /* ANDROID */
Index: engines/sword25/util/lua/llex.cpp
===================================================================
--- engines/sword25/util/lua/llex.cpp (revision 53822)
+++ engines/sword25/util/lua/llex.cpp (working copy)
@@ -176,9 +176,13 @@
static void trydecpoint (LexState *ls, SemInfo *seminfo) {
/* format error: try to update decimal point separator */
+ char old = ls->decpoint;
+#ifdef ANDROID
+ ls->decpoint = '.';
+#else
struct lconv *cv = localeconv();
- char old = ls->decpoint;
ls->decpoint = (cv ? cv->decimal_point[0] : '.');
+#endif
buffreplace(ls, old, ls->decpoint); /* try updated decimal separator */
if (!luaO_str2d(luaZ_buffer(ls->buff), &seminfo->r)) {
/* format error with correct decimal point: no more options */
Index: engines/sword25/util/pluto/pptest.lua
===================================================================
--- engines/sword25/util/pluto/pptest.lua (revision 53822)
+++ engines/sword25/util/pluto/pptest.lua (working copy)
@@ -1,168 +0,0 @@
--- $Id$
-
-require "pluto"
-
-permtable = { 1234 }
-
-perms = { [coroutine.yield] = 1, [permtable] = 2 }
-
-twithmt = {}
-setmetatable( twithmt, { __call = function() return 21 end } )
-
-function testfenv()
- return abc
-end
-
-setfenv(testfenv, { abc = 456 })
-
-function fa(i)
- local ia = i + 1
- return fb(ia)
-end
-
-function fb(i)
- local ib = i + 1
- ib = ib + fc(ib)
- return ib
-end
-
-function fc(i)
- local ic = i + 1
- coroutine.yield()
- return ic*2
-end
-
-function func()
- return 4
-end
-
-thr = coroutine.create(fa)
-coroutine.resume(thr, 2)
-
-testtbl = { a = 2, [2] = 4 }
-
-function funcreturningclosure(n)
- return function()
- return n
- end
-end
-
-function nestedfunc(n)
- return (function(m) return m+2 end)(n+3)
-end
-
-testloopa = {}
-testloopb = { testloopa = testloopa }
-testloopa.testloopb = testloopb
-
-sharedref = {}
-refa = {sharedref = sharedref}
-refb = {sharedref = sharedref}
-
-sptable = { a = 3 }
-
-setmetatable(sptable, {
- __persist = function(tbl)
- local a = tbl.a
- return function()
- return { a = a+3 }
- end
- end
-})
-
-literaludata = boxinteger(71)
-
-function booleanpersist(udata)
- local b = unboxboolean(udata)
- return function()
- return boxboolean(b)
- end
-end
-
-function makecounter()
- local a = 0
- return {
- inc = function() a = a + 1 end,
- cur = function() return a end
- }
-end
-
-function uvinthreadfunc()
- local a = 1
- local b = function()
- a = a+1
- coroutine.yield()
- a = a+1
- end
- a = a+1
- b()
- a = a+1
- return a
-end
-
-uvinthread = coroutine.create(uvinthreadfunc)
-coroutine.resume(uvinthread)
-
-niinmt = { a = 3 }
-setmetatable(niinmt, {__newindex = function(key, val) end })
-
-
-
-
-local function GenerateObjects()
- local Table = {}
-
- function Table:Func()
- return { Table, self }
- end
-
- function uvcycle()
- return Table:Func()
- end
-end
-
-GenerateObjects()
-
-
-
-function debuginfo(foo)
- foo = foo + foo
- return debug.getlocal(1,1)
-end
-
-rootobj = {
- testfalse = false,
- testtrue = true,
- testseven = 7,
- testfoobar = "foobar",
- testfuncreturnsfour = func,
- testnil = nil,
- testthread = thr,
- testperm = permtable,
- testmt = twithmt,
- testtbl = testtbl,
- testfenv = testfenv,
- testclosure = funcreturningclosure(11),
- testnilclosure = funcreturningclosure(nil),
- testnest = nestedfunc,
- testludata = createludata(),
- testlooptable = testloopa,
- testsharedrefa = refa,
- testsharedrefb = refb,
- testsptable = sptable,
- testliteraludata = literaludata,
- testspudata1 = boxboolean(true),
- testspudata2 = boxboolean(false),
- testsharedupval = makecounter(),
- testuvinthread = uvinthread,
- testniinmt = niinmt,
- testuvcycle = uvcycle,
- testdebuginfo = debuginfo
-}
-
-buf = pluto.persist(perms, rootobj)
-
-onerror()
-outfile = io.open("test.plh", "wb")
-outfile:write(buf)
-outfile:close()
Index: engines/sword25/util/pluto/pptest.cpp
===================================================================
--- engines/sword25/util/pluto/pptest.cpp (revision 53822)
+++ engines/sword25/util/pluto/pptest.cpp (working copy)
@@ -1,95 +0,0 @@
-/* $Id$ */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "lua.h"
-#include "lualib.h"
-#include "lauxlib.h"
-
-static int LUAF_createludata(lua_State *L)
-{
- lua_pushlightuserdata(L, (void*)321);
- return 1;
-}
-
-/* A userdata that may be literally persisted */
-static int LUAF_boxinteger(lua_State *L)
-{
- /* num */
- int* ptr = lua_newuserdata(L, sizeof(int));
- /* num udata */
- *ptr = luaL_checkint(L, 1);
- lua_newtable(L);
- /* num udata mt */
- lua_pushstring(L, "__persist");
- /* num udata mt "__persist" */
- lua_pushboolean(L, 1);
- /* num udata mt "__persist" true */
- lua_rawset(L, 3);
- /* num udata mt */
- lua_setmetatable(L, 2);
- /* num udata */
- return 1;
-}
-
-static int LUAF_boxboolean(lua_State *L)
-{
- /* bool */
- char* ptr = lua_newuserdata(L, sizeof(char));
- /* bool udata */
- *ptr = lua_toboolean(L, 1);
- lua_newtable(L);
- /* num udata mt */
- lua_pushstring(L, "__persist");
- /* num udata mt "__persist" */
- lua_getglobal(L, "booleanpersist");
- /* num udata mt "__persist" booleanpersist */
- lua_rawset(L, 3);
- /* num udata mt */
- lua_setmetatable(L, 2);
- /* num udata */
- return 1;
-}
-
-static int LUAF_unboxboolean(lua_State *L)
-{
- /* udata */
- lua_pushboolean(L, *(char*)lua_touserdata(L, 1));
- /* udata bool */
- return 1;
-}
-
-static int LUAF_onerror(lua_State *L)
-{
-
- const char* str = 0;
- if(lua_gettop(L) != 0)
- {
- str = lua_tostring(L, -1);
- printf("%s\n",str);
- }
- return 0;
-}
-
-int main()
-{
- lua_State* L = lua_open();
-
- luaL_openlibs(L);
- lua_settop(L, 0);
-
- lua_register(L, "createludata", LUAF_createludata);
- lua_register(L, "boxinteger", LUAF_boxinteger);
- lua_register(L, "boxboolean", LUAF_boxboolean);
- lua_register(L, "unboxboolean", LUAF_unboxboolean);
- lua_register(L, "onerror", LUAF_onerror);
-
- lua_pushcfunction(L, LUAF_onerror);
- luaL_loadfile(L, "pptest.lua");
- lua_pcall(L,0,0,1);
-
- lua_close(L);
-
- return 0;
-}
Index: engines/sword25/util/pluto/puptest.lua
===================================================================
--- engines/sword25/util/pluto/puptest.lua (revision 53822)
+++ engines/sword25/util/pluto/puptest.lua (working copy)
@@ -1,93 +0,0 @@
--- $Id$
-
-require "pluto"
-
-permtable = { 1234 }
-
-perms = { [1] = coroutine.yield, [2] = permtable }
-
-function testcounter(counter)
- local a = counter.cur()
- counter.inc()
- return counter.cur() == a+1
-end
-
-function testuvinthread(func)
- local success, result = coroutine.resume(func)
- return success and result == 5
-end
-
-
-function test(rootobj)
- local passed = 0
- local total = 0
- local dotest = function(name,cond)
- total = total+1
- if cond then
- print(name, " PASSED")
- passed = passed + 1
- else
- print(name, "* FAILED")
- end
- end
-
-
- dotest("Boolean FALSE ", rootobj.testfalse == false)
- dotest("Boolean TRUE ", rootobj.testtrue == true)
- dotest("Number 7 ", rootobj.testseven == 7)
- dotest("String 'foobar' ", rootobj.testfoobar == "foobar")
- dotest("Func returning 4 ", rootobj.testfuncreturnsfour() == 4)
- dotest("Nil value ", rootobj.testnil == nil)
- dotest("Thread resume ", coroutine.resume(rootobj.testthread) == true,14)
- dotest("Table ", rootobj.testtbl.a == 2 and rootobj.testtbl[2] == 4);
- dotest("Permanent table ", rootobj.testperm == permtable)
- dotest("Table metatable ", rootobj.testmt() == 21)
- dotest("Function env ", rootobj.testfenv() == 456)
- dotest("Lua closure ", rootobj.testclosure() == 11)
- dotest("Nil in closure ", rootobj.testnilclosure() == nil)
- dotest("Nested func ", rootobj.testnest(1) == 6)
- dotest("Light userdata ", checkludata(rootobj.testludata))
- dotest("Looped tables ",
- rootobj.testlooptable.testloopb.testloopa ==
- rootobj.testlooptable)
- dotest("Shared reference ", rootobj.testsharedrefa.sharedref ==
- rootobj.testsharedrefb.sharedref)
- dotest("Identical tables ", rootobj.testsharedrefa ~=
- rootobj.testsharedrefb)
- dotest("Table special persist", rootobj.testsptable.a == 6)
- dotest("Udata literal persist",
- unboxinteger(rootobj.testliteraludata) == 71)
- dotest("Udata special persist",
- unboxboolean(rootobj.testspudata1) == true and
- unboxboolean(rootobj.testspudata2) == false)
- dotest("Shared upvalues ",
- testcounter(rootobj.testsharedupval))
- dotest("Open upvalues ",
- testuvinthread(rootobj.testuvinthread))
- dotest("Upvalue cycles ",
- rootobj.testuvcycle()[1] == rootobj.testuvcycle()[2])
- dotest("__newindex metamethod", rootobj.testniinmt.a == 3)
- dotest("Debug info ", (rootobj.testdebuginfo(2)) == "foo")
- print()
- if passed == total then
- print("All tests passed.")
- else
- print(passed .. "/" .. total .. " tests passed.")
- end
-end
-
-infile, err = io.open("test.plh", "rb")
-if infile == nil then
- error("While opening: " .. (err or "no error"))
-end
-
-buf, err = infile:read("*a")
-if buf == nil then
- error("While reading: " .. (err or "no error"))
-end
-
-infile:close()
-
-rootobj = pluto.unpersist(perms, buf)
-
-test(rootobj)
Index: engines/sword25/util/pluto/puptest.cpp
===================================================================
--- engines/sword25/util/pluto/puptest.cpp (revision 53822)
+++ engines/sword25/util/pluto/puptest.cpp (working copy)
@@ -1,81 +0,0 @@
-/* $Id$ */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "lua.h"
-#include "lualib.h"
-#include "lauxlib.h"
-
-static int LUAF_checkludata(lua_State *L)
-{
- lua_pushboolean(L, lua_touserdata(L, -1) == (void*)321);
- return 1;
-}
-
-static int LUAF_unboxinteger(lua_State *L)
-{
- lua_pushnumber(L, *((int*)lua_touserdata(L, -1)));
- return 1;
-}
-
-static int LUAF_unboxboolean(lua_State *L)
-{
- /* udata */
- lua_pushboolean(L, *(char*)lua_touserdata(L, 1));
- /* udata bool */
- return 1;
-}
-
-static int LUAF_boxboolean(lua_State *L)
-{
- /* bool */
- char* ptr = lua_newuserdata(L, sizeof(char));
- /* bool udata */
- *ptr = lua_toboolean(L, 1);
- lua_newtable(L);
- /* num udata mt */
- lua_pushstring(L, "__persist");
- /* num udata mt "__persist" */
- lua_getglobal(L, "booleanpersist");
- /* num udata mt "__persist" booleanpersist */
- lua_rawset(L, 3);
- /* num udata mt */
- lua_setmetatable(L, 2);
- /* num udata */
- return 1;
-}
-
-static int LUAF_onerror(lua_State *L)
-{
-
- const char* str = 0;
- if(lua_gettop(L) != 0)
- {
- str = lua_tostring(L, -1);
- printf("%s\n",str);
- }
- return 0;
-}
-
-int main()
-{
- lua_State* L = lua_open();
-
- luaL_openlibs(L);
- lua_settop(L, 0);
-
- lua_register(L, "checkludata", LUAF_checkludata);
- lua_register(L, "unboxinteger", LUAF_unboxinteger);
- lua_register(L, "boxboolean", LUAF_boxboolean);
- lua_register(L, "unboxboolean", LUAF_unboxboolean);
- lua_register(L, "onerror", LUAF_onerror);
-
- lua_pushcfunction(L, LUAF_onerror);
- luaL_loadfile(L, "puptest.lua");
- lua_pcall(L,0,0,1);
-
- lua_close(L);
-
- return 0;
-}
Index: graphics/scaler/hq2x.cpp
===================================================================
--- graphics/scaler/hq2x.cpp (revision 53822)
+++ graphics/scaler/hq2x.cpp (working copy)
@@ -23,6 +23,7 @@
*
*/
+#ifndef ANDROID
#include "graphics/scaler/intern.h"
#ifdef USE_NASM
@@ -1969,3 +1970,4 @@
}
#endif // Assembly version
+#endif /* ANDROID */
Index: graphics/scaler/hq3x.cpp
===================================================================
--- graphics/scaler/hq3x.cpp (revision 53822)
+++ graphics/scaler/hq3x.cpp (working copy)
@@ -23,6 +23,7 @@
*
*/
+#ifndef ANDROID
#include "graphics/scaler/intern.h"
#ifdef USE_NASM
@@ -2946,3 +2947,4 @@
}
#endif // Assembly version
+#endif /* ANDROID */
Index: backends/fs/posix/posix-fs.cpp
===================================================================
--- backends/fs/posix/posix-fs.cpp (revision 53822)
+++ backends/fs/posix/posix-fs.cpp (working copy)
@@ -245,4 +245,18 @@
return StdioStream::makeFromPath(getPath().c_str(), true);
}
+AbstractFSNode *POSIXFilesystemNode::makeNode(const Common::String &path) const {
+ return new POSIXFilesystemNode(path);
+}
+
+POSIXFilesystemNode::POSIXFilesystemNode() : _isDirectory(false), _isValid(false) {}
+
+bool POSIXFilesystemNode::exists() const { return access(_path.c_str(), F_OK) == 0; }
+Common::String POSIXFilesystemNode::getDisplayName() const { return _displayName; }
+Common::String POSIXFilesystemNode::getName() const { return _displayName; }
+Common::String POSIXFilesystemNode::getPath() const { return _path; }
+bool POSIXFilesystemNode::isDirectory() const { return _isDirectory; }
+bool POSIXFilesystemNode::isReadable() const { return access(_path.c_str(), R_OK) == 0; }
+bool POSIXFilesystemNode::isWritable() const { return access(_path.c_str(), W_OK) == 0; }
+
#endif //#if defined(UNIX)
Index: backends/fs/posix/posix-fs-factory.cpp
===================================================================
--- backends/fs/posix/posix-fs-factory.cpp (revision 53822)
+++ backends/fs/posix/posix-fs-factory.cpp (working copy)
@@ -24,7 +24,10 @@
#if defined(UNIX)
#include "backends/fs/posix/posix-fs-factory.h"
-#include "backends/fs/posix/posix-fs.cpp"
+#include "backends/fs/posix/posix-fs.h"
+#ifndef ANDROID
+#include "backends/fs/posix/posix-fs.cpp" // TODO: ugly hack
+#endif
AbstractFSNode *POSIXFilesystemFactory::makeRootFileNode() const {
return new POSIXFilesystemNode("/");
Index: backends/fs/posix/posix-fs.h
===================================================================
--- backends/fs/posix/posix-fs.h (revision 53822)
+++ backends/fs/posix/posix-fs.h (working copy)
@@ -44,14 +44,12 @@
bool _isDirectory;
bool _isValid;
- virtual AbstractFSNode *makeNode(const Common::String &path) const {
- return new POSIXFilesystemNode(path);
- }
+ virtual AbstractFSNode *makeNode(const Common::String &path) const;
/**
* Plain constructor, for internal use only (hence protected).
*/
- POSIXFilesystemNode() : _isDirectory(false), _isValid(false) {}
+ POSIXFilesystemNode();
public:
/**
@@ -61,13 +59,13 @@
*/
POSIXFilesystemNode(const Common::String &path);
- virtual bool exists() const { return access(_path.c_str(), F_OK) == 0; }
- virtual Common::String getDisplayName() const { return _displayName; }
- virtual Common::String getName() const { return _displayName; }
- virtual Common::String getPath() const { return _path; }
- virtual bool isDirectory() const { return _isDirectory; }
- virtual bool isReadable() const { return access(_path.c_str(), R_OK) == 0; }
- virtual bool isWritable() const { return access(_path.c_str(), W_OK) == 0; }
+ virtual bool exists() const;
+ virtual Common::String getDisplayName() const;
+ virtual Common::String getName() const;
+ virtual Common::String getPath() const;
+ virtual bool isDirectory() const;
+ virtual bool isReadable() const;
+ virtual bool isWritable() const;
virtual AbstractFSNode *getChild(const Common::String &n) const;
virtual bool getChildren(AbstractFSList &list, ListMode mode, bool hidden) const;