From: Jerome St-Louis Date: Tue, 15 Jul 2014 08:02:43 +0000 (-0400) Subject: Various fixes for Android X-Git-Tag: 0.44.10PR1~4 X-Git-Url: https://ecere.com/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3a38082dbe87dc3b0d9d2e2cb7e41acbb2f39fe4;hp=64cbd34caf9e99cdf06e6997699d9355b0a3d44e;p=sdk Various fixes for Android - ecere/Service: Fixed warning on redefining __statement macro - Object3DSFormat: Fixed broken 3DS, using 16 bit indices for 3DS - crossplatform.mk: Added cpv command to avoid clueless fatal errors when copying non-existing files - ide: Fixed Debug menu items not re-enabling after switching configuration - samples: Updated and fixed configs full of bugs for Android --- diff --git a/crossplatform.mk b/crossplatform.mk index c6ffc2a..375040c 100644 --- a/crossplatform.mk +++ b/crossplatform.mk @@ -240,6 +240,7 @@ ifdef WIN_SHELL_COMMANDS echo = $(if $(1),echo $(1)) touch = $(if $(1),@cmd /c "for %%I in ($(call sys_path,$(1))) do @(cd %%~pI && type nul >> %%~nxI && copy /by %%~nxI+,, > nul 2>&1 && cd %%cd%%)") cpq = $(if $(1),@cmd /c "for %%I in ($(call sys_path,$(1))) do copy /by %%I $(call sys_path,$(2))" > nul 2>&1) + cpv = $(if $(1),@cmd /c "for %%I in ($(call sys_path,$(1))) do copy /by %%I $(call sys_path,$(2))") rmq = $(if $(1),-del /f /q $(call sys_path,$(call sys_path_list,$(1))) > nul 2>&1) rmrq = $(if $(1),-rmdir /q /s $(call sys_path,$(1)) > nul 2>&1) mkdirq = $(if $(1),-mkdir $(call sys_path,$(1)) > nul 2>&1) @@ -249,6 +250,7 @@ else echo = $(if $(1),echo "$(1)") touch = $(if $(1),touch $(1)) cpq = $(if $(1),cp $(1) $(2)) + cpv = cp $(1) $(2) rmq = $(if $(1),-rm -f $(1)) rmrq = $(if $(1),-rm -f -r $(1)) mkdirq = $(if $(1),-mkdir -p $(1)) diff --git a/ecere/src/gfx/3D/models/Object3DSFormat.ec b/ecere/src/gfx/3D/models/Object3DSFormat.ec index afac62c..0dbdeda 100644 --- a/ecere/src/gfx/3D/models/Object3DSFormat.ec +++ b/ecere/src/gfx/3D/models/Object3DSFormat.ec @@ -2,6 +2,16 @@ namespace gfx3D::models; import "Object" +#if !defined(__ANDROID__) +#define USE_32_BIT_INDICES true +#define indicesMember indices32 +#define uintindex uint32 +#else +#define USE_32_BIT_INDICES false +#define indicesMember indices +#define uintindex uint16 +#endif + #define MAXNAMELEN 64 // RGB Chunks @@ -774,17 +784,17 @@ static bool ReadTriMesh(FileInfo * info, Object object) PrimitiveSingle * triangle; triangle = &mesh.primitives[mesh.nPrimitives++]; - if(mesh.AllocatePrimitive(triangle, { triangles, indices32bit = true }, 3)) + if(mesh.AllocatePrimitive(triangle, { triangles, indices32bit = USE_32_BIT_INDICES }, 3)) { - triangle->indices32[0] = face->indices[0]; - triangle->indices32[1] = face->indices[1]; - triangle->indices32[2] = face->indices[2]; - triangle->middle.Add(mesh.vertices[triangle->indices32[0]], mesh.vertices[triangle->indices32[1]]); - triangle->middle.Add(triangle->middle, mesh.vertices[triangle->indices32[2]]); + triangle->indicesMember[0] = (uintindex)face->indices[0]; + triangle->indicesMember[1] = (uintindex)face->indices[1]; + triangle->indicesMember[2] = (uintindex)face->indices[2]; + triangle->middle.Add(mesh.vertices[triangle->indicesMember[0]], mesh.vertices[triangle->indicesMember[1]]); + triangle->middle.Add(triangle->middle, mesh.vertices[triangle->indicesMember[2]]); triangle->plane.FromPointsf( - mesh.vertices[triangle->indices32[2]], - mesh.vertices[triangle->indices32[1]], - mesh.vertices[triangle->indices32[0]]); + mesh.vertices[triangle->indicesMember[2]], + mesh.vertices[triangle->indicesMember[1]], + mesh.vertices[triangle->indicesMember[0]]); mesh.UnlockPrimitive(triangle); } @@ -800,7 +810,7 @@ static bool ReadTriMesh(FileInfo * info, Object object) } else { - PrimitiveGroup group = mesh.AddPrimitiveGroup({ triangles, indices32bit = true }, faces.count * 3); + PrimitiveGroup group = mesh.AddPrimitiveGroup({ triangles, indices32bit = USE_32_BIT_INDICES }, faces.count * 3); if(group) { c = 0; @@ -811,15 +821,15 @@ static bool ReadTriMesh(FileInfo * info, Object object) if(object.flags.flipWindings) { - group.indices32[c*3] = face->indices[2]; - group.indices32[c*3+1] = face->indices[1]; - group.indices32[c*3+2] = face->indices[0]; + group.indicesMember[c*3] = (uintindex)face->indices[2]; + group.indicesMember[c*3+1] = (uintindex)face->indices[1]; + group.indicesMember[c*3+2] = (uintindex)face->indices[0]; } else { - group.indices32[c*3] = face->indices[0]; - group.indices32[c*3+1] = face->indices[1]; - group.indices32[c*3+2] = face->indices[2]; + group.indicesMember[c*3] = (uintindex)face->indices[0]; + group.indicesMember[c*3+1] = (uintindex)face->indices[1]; + group.indicesMember[c*3+2] = (uintindex)face->indices[2]; } face->done = true; c++; @@ -836,7 +846,7 @@ static bool ReadTriMesh(FileInfo * info, Object object) count++; if(count) { - PrimitiveGroup group = mesh.AddPrimitiveGroup({ triangles, indices32bit = true }, count * 3); + PrimitiveGroup group = mesh.AddPrimitiveGroup({ triangles, indices32bit = USE_32_BIT_INDICES }, count * 3); if(group) { for(c = 0; cfaces[c]; if(!face->done) { - group.indices32[c*3] = face->indices[0]; - group.indices32[c*3+1] = face->indices[1]; - group.indices32[c*3+2] = face->indices[2]; + group.indicesMember[c*3] = (uintindex)face->indices[0]; + group.indicesMember[c*3+1] = (uintindex)face->indices[1]; + group.indicesMember[c*3+2] = (uintindex)face->indices[2]; } } mesh.UnlockPrimitiveGroup(group); diff --git a/ecere/src/net/Service.ec b/ecere/src/net/Service.ec index c20b823..fb28e93 100644 --- a/ecere/src/net/Service.ec +++ b/ecere/src/net/Service.ec @@ -1,5 +1,8 @@ -#define __statement __extension__ // To compile for Android/X86 (Need to add support to eC) - // Also had to add __extension__ to __swap16md macro in endian.h +#ifdef __statement +#undef __statement +#endif +#define __statement(x) __extension__(x) // To compile for Android/X86 (Need to add support to eC) + // Also had to add __extension__ to __swap16md macro in endian.h namespace net; #ifndef ECERE_NONET diff --git a/ide/src/project/Workspace.ec b/ide/src/project/Workspace.ec index a68dacd..bf868e4 100644 --- a/ide/src/project/Workspace.ec +++ b/ide/src/project/Workspace.ec @@ -527,6 +527,7 @@ public: ide.projectView.Update(null); Save(); } + ide.AdjustDebugMenus(); } bool FindPath(ProjectNode node, const char * path) diff --git a/samples/3D/Test3D/Test3D.epj b/samples/3D/Test3D/Test3D.epj index 0be8635..eb99c04 100644 --- a/samples/3D/Test3D/Test3D.epj +++ b/samples/3D/Test3D/Test3D.epj @@ -38,10 +38,10 @@ "PostbuildCommands" : [ "$(call mkdirq,$(OBJ)apk/lib/x86)", "$(call mkdirq,$(OBJ)apk/lib/armeabi)", - "$(call cpq,/sdk/ecere/obj/android.linux.$(COMPILER)/libecere.so,$(OBJ)apk/lib/armeabi)", + "$(call cpv,../../../ecere/obj/android.linux.$(COMPILER)/libecere.so,$(OBJ)apk/lib/armeabi)", "$(call cpq,$(TARGET),$(OBJ)apk/lib/armeabi)", - "aapt package -v -f -m -M android/AndroidManifest.xml -F $(OBJ)$(MODULE)-unsigned.apk -I C:/android-sdk/platforms/android-16/android.jar -S android/res $(OBJ)apk", - "jarsigner -storepass mypassword -sigalg MD5withRSA -digestalg SHA1 $(OBJ)$(MODULE)-unsigned.apk mykey -signedjar $(OBJ)$(MODULE).apk", + "aapt package -v -f -m -M android/AndroidManifest.xml -F $(OBJ)$(MODULE)-unsigned.apk -I C:/android-sdk/platforms/android-20/android.jar -S android/res $(OBJ)apk", + "jarsigner -storepass android -sigalg MD5withRSA -digestalg SHA1 $(OBJ)$(MODULE)-unsigned.apk androiddebugkey -keystore c:/users/jerome/debug.keystore -signedjar $(OBJ)$(MODULE).apk", "adb uninstall com.ecere.$(MODULE)", "adb install $(OBJ)$(MODULE).apk", "adb shell am start -a android.intent.action.MAIN -n com.ecere.$(MODULE)/android.app.NativeActivity" diff --git a/samples/android/helloAndroid.epj b/samples/android/helloAndroid.epj index ed34202..41bc4ee 100644 --- a/samples/android/helloAndroid.epj +++ b/samples/android/helloAndroid.epj @@ -1,6 +1,6 @@ { "Version" : 0.2, - "ModuleName" : "HelloAndroid", + "ModuleName" : "Hello", "Options" : { "Warnings" : "All", "TargetType" : "SharedLibrary", @@ -15,10 +15,10 @@ "PostbuildCommands" : [ "$(call mkdirq,$(OBJ)apk/lib/armeabi)", "$(call mkdirq,$(OBJ)apk/lib/x86)", - "$(call cpq,/ecere-sdk/ecere/obj/android.linux.$(COMPILER)/libecere.so,$(OBJ)apk/lib/x86)", - "$(call cpq,$(TARGET),$(OBJ)apk/lib/x86)", - "aapt package -v -f -m -M android/AndroidManifest.xml -F $(OBJ)$(MODULE)-unsigned.apk -I C:/android-sdk/platforms/android-16/android.jar -S android/res $(OBJ)apk", - "jarsigner -storepass mypassword -sigalg MD5withRSA -digestalg SHA1 $(OBJ)$(MODULE)-unsigned.apk mykey -signedjar $(OBJ)$(MODULE).apk", + "$(call cpv,../../ecere/obj/android.linux.$(COMPILER)/libecere.so,$(OBJ)apk/lib/armeabi)", + "$(call cpv,$(TARGET),$(OBJ)apk/lib/armeabi)", + "aapt package -v -f -m -M android/AndroidManifest.xml -F $(OBJ)$(MODULE)-unsigned.apk -I C:/android-sdk/platforms/android-20/android.jar -S android/res $(OBJ)apk", + "jarsigner -storepass android -sigalg MD5withRSA -digestalg SHA1 $(OBJ)$(MODULE)-unsigned.apk -keystore C:/Users/Jerome/debug.keystore androiddebugkey -signedjar $(OBJ)$(MODULE).apk", "adb uninstall com.ecere.Hello", "adb install $(OBJ)$(MODULE).apk", "adb shell am start -a android.intent.action.MAIN -n com.ecere.Hello/android.app.NativeActivity" @@ -40,8 +40,7 @@ "Name" : "Release", "Options" : { "Debug" : false, - "Optimization" : "Speed", - "TargetType" : "Executable" + "Optimization" : "Speed" } } ], diff --git a/samples/games/chess/android/AndroidManifest.xml b/samples/games/chess/android/AndroidManifest.xml new file mode 100644 index 0000000..95da552 --- /dev/null +++ b/samples/games/chess/android/AndroidManifest.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/games/chess/android/res/drawable-xhdpi/icon.png b/samples/games/chess/android/res/drawable-xhdpi/icon.png new file mode 100644 index 0000000..174a628 Binary files /dev/null and b/samples/games/chess/android/res/drawable-xhdpi/icon.png differ diff --git a/samples/games/chess/android/res/drawable/icon.png b/samples/games/chess/android/res/drawable/icon.png new file mode 100644 index 0000000..9c45155 Binary files /dev/null and b/samples/games/chess/android/res/drawable/icon.png differ diff --git a/samples/games/chess/android/res/values/strings.xml b/samples/games/chess/android/res/values/strings.xml new file mode 100644 index 0000000..2504dd8 --- /dev/null +++ b/samples/games/chess/android/res/values/strings.xml @@ -0,0 +1,4 @@ + + + Ecere Chess + diff --git a/samples/games/chess/chess.epj b/samples/games/chess/chess.epj index 1679250..ca9d5b6 100644 --- a/samples/games/chess/chess.epj +++ b/samples/games/chess/chess.epj @@ -43,10 +43,10 @@ "PostbuildCommands" : [ "$(call mkdirq,$(OBJ)apk/lib/x86)", "$(call mkdirq,$(OBJ)apk/lib/armeabi)", - "$(call cpq,/sdk/ecere/obj/android.linux.$(COMPILER)/libecere.so,$(OBJ)apk/lib/armeabi)", - "$(call cpq,$(TARGET),$(OBJ)apk/lib/armeabi)", - "aapt package -v -f -m -M android/AndroidManifest.xml -F $(OBJ)$(MODULE)-unsigned.apk -I C:/android-sdk/platforms/android-16/android.jar -S android/res $(OBJ)apk", - "jarsigner -storepass mypassword -sigalg MD5withRSA -digestalg SHA1 $(OBJ)$(MODULE)-unsigned.apk mykey -signedjar $(OBJ)$(MODULE).apk", + "$(call cpv,../../../ecere/obj/android.linux.$(COMPILER)/libecere.so,$(OBJ)apk/lib/armeabi)", + "$(call cpv,$(TARGET),$(OBJ)apk/lib/armeabi)", + "aapt package -v -f -m -M android/AndroidManifest.xml -F $(OBJ)$(MODULE)-unsigned.apk -I C:/android-sdk/platforms/android-20/android.jar -S android/res $(OBJ)apk", + "jarsigner -storepass android -sigalg MD5withRSA -digestalg SHA1 $(OBJ)$(MODULE)-unsigned.apk androiddebugkey -keystore C:/users/jerome/debug.keystore -signedjar $(OBJ)$(MODULE).apk", "adb uninstall com.ecere.$(MODULE)", "adb install $(OBJ)$(MODULE).apk", "adb shell am start -a android.intent.action.MAIN -n com.ecere.$(MODULE)/android.app.NativeActivity" diff --git a/samples/games/cornerBlocks/cornerBlocks.epj b/samples/games/cornerBlocks/cornerBlocks.epj index 95904c2..0c274d0 100644 --- a/samples/games/cornerBlocks/cornerBlocks.epj +++ b/samples/games/cornerBlocks/cornerBlocks.epj @@ -4,7 +4,7 @@ "Options" : { "Warnings" : "All", "TargetType" : "Executable", - "TargetFileName" : "CornerBlock", + "TargetFileName" : "CornerBlocks", "Libraries" : [ "ecere" ] @@ -53,10 +53,10 @@ "PostbuildCommands" : [ "$(call mkdirq,$(OBJ)apk/lib/x86)", "$(call mkdirq,$(OBJ)apk/lib/armeabi)", - "$(call cpq,/sdk/ecere/obj/android.linux.$(COMPILER)/libecere.so,$(OBJ)apk/lib/armeabi)", - "$(call cpq,$(TARGET),$(OBJ)apk/lib/armeabi)", - "aapt package -v -f -m -M android/AndroidManifest.xml -F $(OBJ)$(MODULE)-unsigned.apk -I C:/android-sdk/platforms/android-16/android.jar -S android/res $(OBJ)apk", - "jarsigner -storepass mypassword -sigalg MD5withRSA -digestalg SHA1 $(OBJ)$(MODULE)-unsigned.apk mykey -signedjar $(OBJ)$(MODULE).apk", + "$(call cpv,../../../ecere/obj/android.linux.$(COMPILER)/libecere.so,$(OBJ)apk/lib/armeabi)", + "$(call cpv,$(TARGET),$(OBJ)apk/lib/armeabi)", + "aapt package -v -f -m -M android/AndroidManifest.xml -F $(OBJ)$(MODULE)-unsigned.apk -I C:/android-sdk/platforms/android-20/android.jar -S android/res $(OBJ)apk", + "jarsigner -storepass android -sigalg MD5withRSA -digestalg SHA1 $(OBJ)$(MODULE)-unsigned.apk -keystore C:/Users/Jerome/debug.keystore androiddebugkey -signedjar $(OBJ)$(MODULE).apk", "adb uninstall com.ecere.$(MODULE)", "adb install $(OBJ)$(MODULE).apk", "adb shell am start -a android.intent.action.MAIN -n com.ecere.$(MODULE)/android.app.NativeActivity"