2
0
Эх сурвалжийг харах

[iOS support]
- commit local changes/improvements


Former-commit-id: 738bf72e4d9e601dbb1744e7ed9d33c48808ad23

normen667 13 жил өмнө
parent
commit
245f879bd4

+ 6 - 8
build.xml

@@ -25,11 +25,10 @@
             <arg line="arch=arm"/>
             <arg line="arch=arm"/>
             <arg line="platform=darwin"/>
             <arg line="platform=darwin"/>
             <arg line="process=compile"/>
             <arg line="process=compile"/>
-            <arg line="openjdk=${avian.jdk.path}"/>
-            <arg line="openjdk-src=${avian.jdk.src.path}"/>
+            <arg line="openjdk='${avian.jdk.path}'"/>
+            <arg line="openjdk-src='${avian.jdk.src.path}'"/>
             <arg line="bootimage=true"/>
             <arg line="bootimage=true"/>
             <arg line="ios=true"/>
             <arg line="ios=true"/>
-            <arg line="vm-targets="/>
             <arg line="build/darwin-arm-bootimage-openjdk-src/bootimage-generator"/>
             <arg line="build/darwin-arm-bootimage-openjdk-src/bootimage-generator"/>
             <arg line="build/darwin-arm-bootimage-openjdk-src/binaryToObject/binaryToObject"/>
             <arg line="build/darwin-arm-bootimage-openjdk-src/binaryToObject/binaryToObject"/>
             <arg line="build/darwin-arm-bootimage-openjdk-src/classpath.jar"/>
             <arg line="build/darwin-arm-bootimage-openjdk-src/classpath.jar"/>
@@ -49,11 +48,10 @@
             <arg line="arch=i386"/>
             <arg line="arch=i386"/>
             <arg line="platform=darwin"/>
             <arg line="platform=darwin"/>
             <arg line="process=compile"/>
             <arg line="process=compile"/>
-            <arg line="openjdk=${avian.jdk.path}"/>
-            <arg line="openjdk-src=${avian.jdk.src.path}"/>
+            <arg line="openjdk='${avian.jdk.path}'"/>
+            <arg line="openjdk-src='${avian.jdk.src.path}'"/>
             <arg line="bootimage=true"/>
             <arg line="bootimage=true"/>
             <arg line="ios=true"/>
             <arg line="ios=true"/>
-            <arg line="vm-targets="/>
             <arg line="build/darwin-i386-bootimage-openjdk-src/bootimage-generator"/>
             <arg line="build/darwin-i386-bootimage-openjdk-src/bootimage-generator"/>
             <arg line="build/darwin-i386-bootimage-openjdk-src/binaryToObject/binaryToObject"/>
             <arg line="build/darwin-i386-bootimage-openjdk-src/binaryToObject/binaryToObject"/>
             <arg line="build/darwin-i386-bootimage-openjdk-src/classpath.jar"/>
             <arg line="build/darwin-i386-bootimage-openjdk-src/classpath.jar"/>
@@ -66,7 +64,7 @@
             <zipfileset file="${avian.src.path}/vm.pro" fullpath="vm.pro"/>
             <zipfileset file="${avian.src.path}/vm.pro" fullpath="vm.pro"/>
             <zipfileset file="${avian.src.path}/vm.pro" fullpath="openjdk.pro"/>
             <zipfileset file="${avian.src.path}/vm.pro" fullpath="openjdk.pro"/>
             <zipfileset dir="${avian.src.path}/build/darwin-i386-bootimage-openjdk-src/classpath" prefix="classpath/">
             <zipfileset dir="${avian.src.path}/build/darwin-i386-bootimage-openjdk-src/classpath" prefix="classpath/">
-                <exclude name="**/java/awt/**"/>
+                <!--exclude name="**/java/awt/**"/>
                 <exclude name="**/apple/**"/>
                 <exclude name="**/apple/**"/>
                 <exclude name="**/javax/swing/**"/>
                 <exclude name="**/javax/swing/**"/>
                 <exclude name="**/javax/sound/**"/>
                 <exclude name="**/javax/sound/**"/>
@@ -81,7 +79,7 @@
                 <exclude name="**/sun/print/**"/>
                 <exclude name="**/sun/print/**"/>
                 <exclude name="**/sun/swing/**"/>
                 <exclude name="**/sun/swing/**"/>
                 <exclude name="**/com/sun/**"/>
                 <exclude name="**/com/sun/**"/>
-                <exclude name="**/com/oracle/**"/>
+                <exclude name="**/com/oracle/**"/-->
             </zipfileset>
             </zipfileset>
         </zip>
         </zip>
     </target>
     </target>

+ 4 - 2
ios-data/ios.properties → ios-data/templates/ios.properties

@@ -14,7 +14,8 @@ ios.i386.flag=i386
 
 
 # java build paths
 # java build paths
 ios.build.classpath.dir=build/ios-classpath
 ios.build.classpath.dir=build/ios-classpath
-ios.build.classes.dir=${ios.build.classpath.dir}/classes
+ios.java.classes.dir=${ios.build.classpath.dir}/build
+ios.build.classes.dir=${ios.build.classpath.dir}/classpath
 ios.build.resources.jar=${ios.build.classpath.dir}/resources.jar
 ios.build.resources.jar=${ios.build.classpath.dir}/resources.jar
 ios.classpath.checkfile=${ios.build.classpath.dir}/.classpath.last
 ios.classpath.checkfile=${ios.build.classpath.dir}/.classpath.last
 ios.jar.excludes=jME3-desktop.jar, \
 ios.jar.excludes=jME3-desktop.jar, \
@@ -43,6 +44,7 @@ ios.images.checkfile=${ios.build.arch.dir}/.binaries.last
 ios.proguard.vm.path=${ios.avian.path}/vm.pro
 ios.proguard.vm.path=${ios.avian.path}/vm.pro
 ios.proguard.openjdk.path=${ios.avian.path}/openjdk.pro
 ios.proguard.openjdk.path=${ios.avian.path}/openjdk.pro
 ios.proguard.options=-keep public class com.jme3.system.ios.*{public *;} \
 ios.proguard.options=-keep public class com.jme3.system.ios.*{public *;} \
+-keep public class * extends com.jme3.system.ios.IosHarness{public *;} \
 -keep public class * extends com.jme3.app.Application{public *;} \
 -keep public class * extends com.jme3.app.Application{public *;} \
 -keep public class * extends com.jme3.system.JmeSystemDelegate{public *;} \
 -keep public class * extends com.jme3.system.JmeSystemDelegate{public *;} \
 -keep public class * implements com.jme3.renderer.Renderer{public *;} \
 -keep public class * implements com.jme3.renderer.Renderer{public *;} \
@@ -53,7 +55,7 @@ ios.proguard.options=-keep public class com.jme3.system.ios.*{public *;} \
 # native compile
 # native compile
 ios.cc.source.dir=ios/src
 ios.cc.source.dir=ios/src
 ios.cc.cache=${ios.build.arch.dir}/.nativebuild.cache
 ios.cc.cache=${ios.build.arch.dir}/.nativebuild.cache
-
+ios.cc.compiler=llvm-gcc-4.2
 ios.cc.cflags=-D__IPHONE_OS_VERSION_MIN_REQUIRED=30202 \
 ios.cc.cflags=-D__IPHONE_OS_VERSION_MIN_REQUIRED=30202 \
 -fobjc-abi-version=2 -fobjc-legacy-dispatch \
 -fobjc-abi-version=2 -fobjc-legacy-dispatch \
 -I/System/Library/Frameworks/JavaVM.framework/Headers
 -I/System/Library/Frameworks/JavaVM.framework/Headers

+ 1 - 1
ios-data/templates/project/jme-ios/jmeAppDelegate.m

@@ -47,7 +47,7 @@ getEnv(JavaVM* vm)
     
     
     options[0].optionString = (char*) "-Davian.bootimage=bootimageBin";
     options[0].optionString = (char*) "-Davian.bootimage=bootimageBin";
     options[1].optionString = (char*) "-Davian.codeimage=codeimageBin";
     options[1].optionString = (char*) "-Davian.codeimage=codeimageBin";
-    options[2].optionString = (char*) "-Xbootclasspath:[bootJar]:[resourcesJar]";
+    options[2].optionString = (char*) "-Xbootclasspath:[resourcesJar]";
     
     
     JavaVM* vm;
     JavaVM* vm;
     void* env;
     void* env;

+ 2 - 0
ios-data/templates/src/JmeAppHarness.m

@@ -1,8 +1,10 @@
 #include <jni.h>
 #include <jni.h>
 #import <UIKit/UIKit.h>
 #import <UIKit/UIKit.h>
 
 
+#ifndef JNIEXPORT
 #define JNIEXPORT __attribute__ ((visibility("default"))) \
 #define JNIEXPORT __attribute__ ((visibility("default"))) \
   __attribute__ ((used))
   __attribute__ ((used))
+#endif
 
 
 #ifndef _Included_JmeAppHarness
 #ifndef _Included_JmeAppHarness
 #define _Included_JmeAppHarness
 #define _Included_JmeAppHarness

+ 3 - 2
ios-data/templates/src/jme-ios.m

@@ -1,9 +1,10 @@
 #include <jni.h>
 #include <jni.h>
 #import <UIKit/UIKit.h>
 #import <UIKit/UIKit.h>
 
 
-
+#ifndef JNIEXPORT
 #define JNIEXPORT __attribute__ ((visibility("default"))) \
 #define JNIEXPORT __attribute__ ((visibility("default"))) \
-__attribute__ ((used))
+  __attribute__ ((used))
+#endif
 
 
 BOOL checkJNIException(JNIEnv *e){
 BOOL checkJNIException(JNIEnv *e){
     if ((*e)->ExceptionCheck(e)) {
     if ((*e)->ExceptionCheck(e)) {

+ 1 - 1
nbproject/genfiles.properties

@@ -3,6 +3,6 @@ build.xml.script.CRC32=4596b2c2
 [email protected]
 [email protected]
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
 # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
-nbproject/build-impl.xml.data.CRC32=85e2b699
+nbproject/build-impl.xml.data.CRC32=96566772
 nbproject/build-impl.xml.script.CRC32=b4f92cf6
 nbproject/build-impl.xml.script.CRC32=b4f92cf6
 nbproject/[email protected]
 nbproject/[email protected]

+ 1 - 0
nbproject/project.properties

@@ -4,6 +4,7 @@ javac.compilerargs=-Xlint -Xlint:-serial
 avian.jdk.path=/Users/normenhansen/Documents/Code-Import/avian-ios/1.7.0u4.jdk/Contents/Home/
 avian.jdk.path=/Users/normenhansen/Documents/Code-Import/avian-ios/1.7.0u4.jdk/Contents/Home/
 avian.jdk.src.path=/Users/normenhansen/Documents/Code-Import/avian-ios/jdk7u4/jdk/src/
 avian.jdk.src.path=/Users/normenhansen/Documents/Code-Import/avian-ios/jdk7u4/jdk/src/
 avian.src.path=/Users/normenhansen/Documents/Code-Import/avian-ios/avian/
 avian.src.path=/Users/normenhansen/Documents/Code-Import/avian-ios/avian/
+hello-ios.src.path=/Users/normenhansen/Documents/Code-Import/avian-ios/hello-ios/
 license.file=licenses.txt
 license.file=licenses.txt
 nbm.homepage=http://www.jmonkeyengine.org/
 nbm.homepage=http://www.jmonkeyengine.org/
 nbm.module.author=Normen Hansen
 nbm.module.author=Normen Hansen

+ 2 - 2
src/com/jme3/gde/ios/IosImportantFiles.java

@@ -24,7 +24,7 @@ public class IosImportantFiles implements ImportantFiles {
     public Node[] getNodes(Project project) {
     public Node[] getNodes(Project project) {
         ArrayList<Node> list = new ArrayList<Node>();
         ArrayList<Node> list = new ArrayList<Node>();
         try {
         try {
-            FileObject mainAct = project.getProjectDirectory().getFileObject("resources/ios/ios.properties");
+            FileObject mainAct = project.getProjectDirectory().getFileObject("ios/ios.properties");
             if (mainAct != null) {
             if (mainAct != null) {
                 Node node = DataObject.find(mainAct).getNodeDelegate();
                 Node node = DataObject.find(mainAct).getNodeDelegate();
                 node.setDisplayName("iOS Properties");
                 node.setDisplayName("iOS Properties");
@@ -50,7 +50,7 @@ public class IosImportantFiles implements ImportantFiles {
 
 
     @Override
     @Override
     public boolean hasFiles(Project proj) {
     public boolean hasFiles(Project proj) {
-        if (proj.getProjectDirectory().getFileObject("resources/ios/ios.properties") != null) {
+        if (proj.getProjectDirectory().getFileObject("ios/ios.properties") != null) {
             return true;
             return true;
         }
         }
         return false;
         return false;

BIN
src/com/jme3/gde/ios/ios-data.zip


+ 10 - 9
src/com/jme3/gde/ios/ios-targets.xml

@@ -10,12 +10,12 @@
 
 
     <target name="-init-platform-arm" description="Initialize for i386 platform">
     <target name="-init-platform-arm" description="Initialize for i386 platform">
         <property name="ios.arch" value="arm"/>
         <property name="ios.arch" value="arm"/>
-        <property file="resources/ios/ios.properties"/>
+        <property file="ios/ios.properties"/>
     </target>
     </target>
     
     
     <target name="-init-platform-i386" description="Initialize for arm platform">
     <target name="-init-platform-i386" description="Initialize for arm platform">
         <property name="ios.arch" value="i386"/>
         <property name="ios.arch" value="i386"/>
-        <property file="resources/ios/ios.properties"/>
+        <property file="ios/ios.properties"/>
     </target>
     </target>
     
     
     <target name="-check-properties-platform" description="Checks the used platform (arm/i386)">
     <target name="-check-properties-platform" description="Checks the used platform (arm/i386)">
@@ -50,7 +50,7 @@
     
     
     <target name="-create-properties" depends="-check-properties-platform, -create-properties-arm, -create-properties-i386" description="Sets global properties based on platform">
     <target name="-create-properties" depends="-check-properties-platform, -create-properties-arm, -create-properties-i386" description="Sets global properties based on platform">
         <property name="ios.sdk.sysroot" value="${ios.dev.root}/Platforms/${ios.target}.platform/Developer/SDKs/${ios.target}${ios.version}.sdk"/>
         <property name="ios.sdk.sysroot" value="${ios.dev.root}/Platforms/${ios.target}.platform/Developer/SDKs/${ios.target}${ios.version}.sdk"/>
-        <property name="ios.cc.compiler.path" value="${ios.dev.root}/Platforms/${ios.target}.platform/Developer/usr/bin/llvm-gcc-4.2"/>
+        <property name="ios.cc.compiler.path" value="${ios.dev.root}/Platforms/${ios.target}.platform/Developer/usr/bin/${ios.cc.compiler}"/>
         <property name="ios.cc.flags" value="-isysroot ${ios.sdk.sysroot} -arch ${ios.arch.flag}"/>
         <property name="ios.cc.flags" value="-isysroot ${ios.sdk.sysroot} -arch ${ios.arch.flag}"/>
     </target>
     </target>
     
     
@@ -63,12 +63,12 @@
                                      -create-ios-library-list"/>
                                      -create-ios-library-list"/>
     
     
     <target name="-compile-ios-java" description="Compiles the java classes for iOS">
     <target name="-compile-ios-java" description="Compiles the java classes for iOS">
-        <mkdir dir="${ios.build.classes.dir}"/>
+        <mkdir dir="${ios.java.classes.dir}"/>
         <javac
         <javac
-            destdir="${ios.build.classes.dir}"
+            destdir="${ios.java.classes.dir}"
             srcdir="${ios.cc.source.dir}"
             srcdir="${ios.cc.source.dir}"
             classpath="${run.classpath}:${libs.ios-base.classpath}"/>
             classpath="${run.classpath}:${libs.ios-base.classpath}"/>
-        <copy todir="${ios.build.classes.dir}">
+        <copy todir="${ios.java.classes.dir}">
             <fileset dir="${ios.cc.source.dir}" excludes="${build.classes.excludes},${excludes},**/*.c,**/*.m" includes="${includes}"/>
             <fileset dir="${ios.cc.source.dir}" excludes="${build.classes.excludes},${excludes},**/*.c,**/*.m" includes="${includes}"/>
         </copy>
         </copy>
     </target>
     </target>
@@ -95,7 +95,7 @@
             </path>
             </path>
         </pathconvert>
         </pathconvert>
         <proguard>
         <proguard>
-            -injars  ${libs.ios-base.classpath}:${ios.avian.classpath}:${ios.avian.project.classpath}(!META-INF/MANIFEST.MF)
+            -injars  ${ios.avian.classpath}:${ios.java.classes.dir}:${libs.ios-base.classpath}:${ios.avian.project.classpath}
             -outjars ${ios.build.classes.dir}(**.class)
             -outjars ${ios.build.classes.dir}(**.class)
             -outjars ${ios.build.resources.jar}
             -outjars ${ios.build.resources.jar}
             -include ${ios.proguard.vm.path}
             -include ${ios.proguard.vm.path}
@@ -135,7 +135,8 @@
         <exec executable="${ios.avian.converter}" failonerror="true">
         <exec executable="${ios.avian.converter}" failonerror="true">
             <arg line="${ios.build.resources.jar}"/>
             <arg line="${ios.build.resources.jar}"/>
             <arg line="${ios.build.resources.o}"/>
             <arg line="${ios.build.resources.o}"/>
-            <arg line="_binary_resources_jar_start _binary_resources_jar_end"/>
+            <arg line="_binary_resources_jar_start"/>
+            <arg line="_binary_resources_jar_end"/>
             <arg line="${ios.platform}"/>
             <arg line="${ios.platform}"/>
             <arg line="${ios.arch}"/>
             <arg line="${ios.arch}"/>
             <arg line="1"/>
             <arg line="1"/>
@@ -177,7 +178,7 @@
 
 
     <target name="-expand-ios-binary" unless="ios.images.uptodate" description="Expands libavian.a to .o files for the iOS project">
     <target name="-expand-ios-binary" unless="ios.images.uptodate" description="Expands libavian.a to .o files for the iOS project">
         <mkdir dir="${ios.build.libs.dir}"/>
         <mkdir dir="${ios.build.libs.dir}"/>
-        <echo>Expanding libavian.h for ${ios.arch}</echo>
+        <echo>Expanding libavian.a for ${ios.arch}</echo>
         <exec executable="ar" dir="${ios.build.libs.dir}">
         <exec executable="ar" dir="${ios.build.libs.dir}">
             <arg line="x"/>
             <arg line="x"/>
             <arg line="${ios.avian.binary}"/>
             <arg line="${ios.avian.binary}"/>

+ 4 - 3
src/com/jme3/gde/ios/panel/IosCompositeProvider.java

@@ -90,8 +90,8 @@ public class IosCompositeProvider implements ProjectCustomizer.CompositeCategory
     private class SavePropsListener implements ActionListener {
     private class SavePropsListener implements ActionListener {
 
 
         private String extensionName = "ios";
         private String extensionName = "ios";
-        private String extensionVersion = "v0.1";
-        private String avianVersion = "v0.2";
+        private String extensionVersion = "v0.2";
+        private String avianVersion = "v0.3";
         private String[] extensionDependencies = new String[]{"jar", "build-ios"};
         private String[] extensionDependencies = new String[]{"jar", "build-ios"};
         private ProjectExtensionManager manager = new ProjectExtensionManager(extensionName, extensionVersion, extensionDependencies);
         private ProjectExtensionManager manager = new ProjectExtensionManager(extensionName, extensionVersion, extensionDependencies);
         private ProjectExtensionProperties properties;
         private ProjectExtensionProperties properties;
@@ -125,13 +125,14 @@ public class IosCompositeProvider implements ProjectCustomizer.CompositeCategory
                 FileObject resFolder = project.getProjectDirectory().getFileObject("resources/ios");
                 FileObject resFolder = project.getProjectDirectory().getFileObject("resources/ios");
                 FileObject projFolder = resFolder.getFileObject("templates/project");
                 FileObject projFolder = resFolder.getFileObject("templates/project");
                 FileObject srcFolder = resFolder.getFileObject("templates/src");
                 FileObject srcFolder = resFolder.getFileObject("templates/src");
-                FileObject propsFile = resFolder.getFileObject("ios.properties");
+                FileObject propsFile = resFolder.getFileObject("templates/ios.properties");
                 FileObject iosFolder = project.getProjectDirectory().getFileObject("ios");
                 FileObject iosFolder = project.getProjectDirectory().getFileObject("ios");
                 if (iosFolder == null) {
                 if (iosFolder == null) {
                     try {
                     try {
                         iosFolder = project.getProjectDirectory().createFolder("ios");
                         iosFolder = project.getProjectDirectory().createFolder("ios");
                         projFolder.copy(iosFolder, projFolder.getName(), null);
                         projFolder.copy(iosFolder, projFolder.getName(), null);
                         srcFolder.copy(iosFolder, srcFolder.getName(), null);
                         srcFolder.copy(iosFolder, srcFolder.getName(), null);
+                        propsFile.copy(iosFolder, propsFile.getName(), propsFile.getExt());
                     } catch (IOException ex) {
                     } catch (IOException ex) {
                         showError("Error creating iOS folders", ex);
                         showError("Error creating iOS folders", ex);
                         return;
                         return;