Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(399)

Side by Side Diff: tools/servicec/lib/src/plugins/java.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file 1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library old_servicec.plugins.java; 5 library old_servicec.plugins.java;
6 6
7 import 'dart:core' hide Type; 7 import 'dart:core' hide Type;
8 import 'dart:io'; 8 import 'dart:io';
9 9
10 import 'package:path/path.dart' show 10 import 'package:path/path.dart' show
(...skipping 19 matching lines...) Expand all
30 30
31 const HEADER_MK = """ 31 const HEADER_MK = """
32 # Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file 32 # Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
33 # for details. All rights reserved. Use of this source code is governed by a 33 # for details. All rights reserved. Use of this source code is governed by a
34 # BSD-style license that can be found in the LICENSE.md file. 34 # BSD-style license that can be found in the LICENSE.md file.
35 35
36 # Generated file. Do not edit. 36 # Generated file. Do not edit.
37 """; 37 """;
38 38
39 const READER_HEADER = """ 39 const READER_HEADER = """
40 package fletch; 40 package dartino;
41 """; 41 """;
42 42
43 const FLETCH_API_JAVA = """ 43 const DARTINO_API_JAVA = """
44 package fletch; 44 package dartino;
45 45
46 public class FletchApi { 46 public class DartinoApi {
47 public static abstract class PrintInterceptor { 47 public static abstract class PrintInterceptor {
48 public abstract void Out(String message); 48 public abstract void Out(String message);
49 public abstract void Error(String message); 49 public abstract void Error(String message);
50 private long nativePtr = 0; 50 private long nativePtr = 0;
51 } 51 }
52 public static native void Setup(); 52 public static native void Setup();
53 public static native void TearDown(); 53 public static native void TearDown();
54 public static native void RunSnapshot(byte[] snapshot); 54 public static native void RunSnapshot(byte[] snapshot);
55 public static native void WaitForDebuggerConnection(int port); 55 public static native void WaitForDebuggerConnection(int port);
56 public static native void AddDefaultSharedLibrary(String library); 56 public static native void AddDefaultSharedLibrary(String library);
57 public static native void RegisterPrintInterceptor(PrintInterceptor intercepto r); 57 public static native void RegisterPrintInterceptor(PrintInterceptor intercepto r);
58 public static native void UnregisterPrintInterceptor(PrintInterceptor intercep tor); 58 public static native void UnregisterPrintInterceptor(PrintInterceptor intercep tor);
59 } 59 }
60 """; 60 """;
61 61
62 const FLETCH_SERVICE_API_JAVA = """ 62 const DARTINO_SERVICE_API_JAVA = """
63 package fletch; 63 package dartino;
64 64
65 public class FletchServiceApi { 65 public class DartinoServiceApi {
66 public static native void Setup(); 66 public static native void Setup();
67 public static native void TearDown(); 67 public static native void TearDown();
68 } 68 }
69 """; 69 """;
70 70
71 const FLETCH_API_JAVA_IMPL = """ 71 const DARTINO_API_JAVA_IMPL = """
72 #include <jni.h> 72 #include <jni.h>
73 #include <stdlib.h> 73 #include <stdlib.h>
74 74
75 #include "fletch_api.h" 75 #include "dartino_api.h"
76 76
77 #ifdef ANDROID 77 #ifdef ANDROID
78 typedef JNIEnv* AttachEnvType; 78 typedef JNIEnv* AttachEnvType;
79 #else 79 #else
80 typedef void* AttachEnvType; 80 typedef void* AttachEnvType;
81 #endif 81 #endif
82 82
83 static JNIEnv* AttachCurrentThreadAndGetEnv(JavaVM* vm) { 83 static JNIEnv* AttachCurrentThreadAndGetEnv(JavaVM* vm) {
84 AttachEnvType result = NULL; 84 AttachEnvType result = NULL;
85 if (vm->AttachCurrentThread(&result, NULL) != JNI_OK) { 85 if (vm->AttachCurrentThread(&result, NULL) != JNI_OK) {
86 // TODO(zerny): Nicer error recovery? 86 // TODO(zerny): Nicer error recovery?
87 exit(1); 87 exit(1);
88 } 88 }
89 return reinterpret_cast<JNIEnv*>(result); 89 return reinterpret_cast<JNIEnv*>(result);
90 } 90 }
91 91
92 class JNIPrintInterceptorInfo { 92 class JNIPrintInterceptorInfo {
93 public: 93 public:
94 JNIPrintInterceptorInfo(JavaVM* vm, jobject obj) 94 JNIPrintInterceptorInfo(JavaVM* vm, jobject obj)
95 : vm(vm), obj(obj), interceptor(NULL) {} 95 : vm(vm), obj(obj), interceptor(NULL) {}
96 JavaVM* vm; 96 JavaVM* vm;
97 jobject obj; 97 jobject obj;
98 FletchPrintInterceptor interceptor; 98 DartinoPrintInterceptor interceptor;
99 }; 99 };
100 100
101 static void JNIPrintInterceptorFunction( 101 static void JNIPrintInterceptorFunction(
102 const char* message, int out, void* raw) { 102 const char* message, int out, void* raw) {
103 JNIPrintInterceptorInfo* info = 103 JNIPrintInterceptorInfo* info =
104 reinterpret_cast<JNIPrintInterceptorInfo*>(raw); 104 reinterpret_cast<JNIPrintInterceptorInfo*>(raw);
105 JNIEnv* env = AttachCurrentThreadAndGetEnv(info->vm); 105 JNIEnv* env = AttachCurrentThreadAndGetEnv(info->vm);
106 jobject obj = info->obj; 106 jobject obj = info->obj;
107 jclass clazz = env->GetObjectClass(obj); 107 jclass clazz = env->GetObjectClass(obj);
108 jmethodID method = NULL; 108 jmethodID method = NULL;
109 const char* methodName = (out == 2) ? "Out" : (out == 3) ? "Error" : NULL; 109 const char* methodName = (out == 2) ? "Out" : (out == 3) ? "Error" : NULL;
110 const char* methodSig = "(Ljava/lang/String;)V"; 110 const char* methodSig = "(Ljava/lang/String;)V";
111 if (methodName == NULL) exit(1); 111 if (methodName == NULL) exit(1);
112 method = env->GetMethodID(clazz, methodName, methodSig); 112 method = env->GetMethodID(clazz, methodName, methodSig);
113 jstring argument = env->NewStringUTF(message); 113 jstring argument = env->NewStringUTF(message);
114 env->CallVoidMethod(obj, method, argument); 114 env->CallVoidMethod(obj, method, argument);
115 info->vm->DetachCurrentThread(); 115 info->vm->DetachCurrentThread();
116 } 116 }
117 117
118 static void RegisterPrintInterceptor(JNIEnv* env, jobject obj) { 118 static void RegisterPrintInterceptor(JNIEnv* env, jobject obj) {
119 // TODO(zerny): Associate the Java object and native object in a map. 119 // TODO(zerny): Associate the Java object and native object in a map.
120 jclass clazz = env->GetObjectClass(obj); 120 jclass clazz = env->GetObjectClass(obj);
121 jfieldID nativePtr = env->GetFieldID(clazz, "nativePtr", "J"); 121 jfieldID nativePtr = env->GetFieldID(clazz, "nativePtr", "J");
122 jlong nativePtrValue = env->GetLongField(obj, nativePtr); 122 jlong nativePtrValue = env->GetLongField(obj, nativePtr);
123 if (nativePtrValue != 0) return; 123 if (nativePtrValue != 0) return;
124 obj = env->NewGlobalRef(obj); 124 obj = env->NewGlobalRef(obj);
125 JavaVM* vm = NULL; 125 JavaVM* vm = NULL;
126 env->GetJavaVM(&vm); 126 env->GetJavaVM(&vm);
127 JNIPrintInterceptorInfo* info = new JNIPrintInterceptorInfo(vm, obj); 127 JNIPrintInterceptorInfo* info = new JNIPrintInterceptorInfo(vm, obj);
128 info->interceptor = FletchRegisterPrintInterceptor( 128 info->interceptor = DartinoRegisterPrintInterceptor(
129 JNIPrintInterceptorFunction, reinterpret_cast<void*>(info)); 129 JNIPrintInterceptorFunction, reinterpret_cast<void*>(info));
130 env->SetLongField(obj, nativePtr, reinterpret_cast<jlong>(info)); 130 env->SetLongField(obj, nativePtr, reinterpret_cast<jlong>(info));
131 } 131 }
132 132
133 static void UnregisterPrintInterceptor(JNIEnv* env, jobject obj) { 133 static void UnregisterPrintInterceptor(JNIEnv* env, jobject obj) {
134 // TODO(zerny): Retrieve the native object from the Java object via a map. 134 // TODO(zerny): Retrieve the native object from the Java object via a map.
135 jclass clazz = env->GetObjectClass(obj); 135 jclass clazz = env->GetObjectClass(obj);
136 jfieldID nativePtr = env->GetFieldID(clazz, "nativePtr", "J"); 136 jfieldID nativePtr = env->GetFieldID(clazz, "nativePtr", "J");
137 jlong nativePtrValue = env->GetLongField(obj, nativePtr); 137 jlong nativePtrValue = env->GetLongField(obj, nativePtr);
138 if (nativePtrValue == 0) return; 138 if (nativePtrValue == 0) return;
139 env->SetLongField(obj, nativePtr, 0); 139 env->SetLongField(obj, nativePtr, 0);
140 JNIPrintInterceptorInfo* info = 140 JNIPrintInterceptorInfo* info =
141 reinterpret_cast<JNIPrintInterceptorInfo*>(nativePtrValue); 141 reinterpret_cast<JNIPrintInterceptorInfo*>(nativePtrValue);
142 FletchUnregisterPrintInterceptor(info->interceptor); 142 DartinoUnregisterPrintInterceptor(info->interceptor);
143 env->DeleteGlobalRef(info->obj); 143 env->DeleteGlobalRef(info->obj);
144 delete info; 144 delete info;
145 } 145 }
146 146
147 #ifdef __cplusplus 147 #ifdef __cplusplus
148 extern "C" { 148 extern "C" {
149 #endif 149 #endif
150 150
151 JNIEXPORT void JNICALL Java_fletch_FletchApi_Setup(JNIEnv*, jclass) { 151 JNIEXPORT void JNICALL Java_dartino_DartinoApi_Setup(JNIEnv*, jclass) {
152 FletchSetup(); 152 DartinoSetup();
153 } 153 }
154 154
155 JNIEXPORT void JNICALL Java_fletch_FletchApi_TearDown(JNIEnv*, jclass) { 155 JNIEXPORT void JNICALL Java_dartino_DartinoApi_TearDown(JNIEnv*, jclass) {
156 FletchTearDown(); 156 DartinoTearDown();
157 } 157 }
158 158
159 JNIEXPORT void JNICALL Java_fletch_FletchApi_RunSnapshot(JNIEnv* env, 159 JNIEXPORT void JNICALL Java_dartino_DartinoApi_RunSnapshot(JNIEnv* env,
160 jclass, 160 jclass,
161 jbyteArray snapshot) { 161 jbyteArray snapshot) {
162 int len = env->GetArrayLength(snapshot); 162 int len = env->GetArrayLength(snapshot);
163 unsigned char* copy = new unsigned char[len]; 163 unsigned char* copy = new unsigned char[len];
164 env->GetByteArrayRegion(snapshot, 0, len, reinterpret_cast<jbyte*>(copy)); 164 env->GetByteArrayRegion(snapshot, 0, len, reinterpret_cast<jbyte*>(copy));
165 FletchProgram program = FletchLoadSnapshot(copy, len); 165 DartinoProgram program = DartinoLoadSnapshot(copy, len);
166 delete[] copy; 166 delete[] copy;
167 FletchRunMain(program); 167 DartinoRunMain(program);
168 FletchDeleteProgram(program); 168 DartinoDeleteProgram(program);
169 } 169 }
170 170
171 JNIEXPORT void JNICALL Java_fletch_FletchApi_WaitForDebuggerConnection( 171 JNIEXPORT void JNICALL Java_dartino_DartinoApi_WaitForDebuggerConnection(
172 JNIEnv* env, jclass, int port) { 172 JNIEnv* env, jclass, int port) {
173 FletchWaitForDebuggerConnection(port); 173 DartinoWaitForDebuggerConnection(port);
174 } 174 }
175 175
176 JNIEXPORT void JNICALL Java_fletch_FletchApi_AddDefaultSharedLibrary( 176 JNIEXPORT void JNICALL Java_dartino_DartinoApi_AddDefaultSharedLibrary(
177 JNIEnv* env, jclass, jstring str) { 177 JNIEnv* env, jclass, jstring str) {
178 const char* library = env->GetStringUTFChars(str, 0); 178 const char* library = env->GetStringUTFChars(str, 0);
179 FletchAddDefaultSharedLibrary(library); 179 DartinoAddDefaultSharedLibrary(library);
180 env->ReleaseStringUTFChars(str, library); 180 env->ReleaseStringUTFChars(str, library);
181 } 181 }
182 182
183 JNIEXPORT void JNICALL Java_fletch_FletchApi_RegisterPrintInterceptor( 183 JNIEXPORT void JNICALL Java_dartino_DartinoApi_RegisterPrintInterceptor(
184 JNIEnv* env, jclass, jobject obj) { 184 JNIEnv* env, jclass, jobject obj) {
185 RegisterPrintInterceptor(env, obj); 185 RegisterPrintInterceptor(env, obj);
186 } 186 }
187 187
188 JNIEXPORT void JNICALL Java_fletch_FletchApi_UnregisterPrintInterceptor( 188 JNIEXPORT void JNICALL Java_dartino_DartinoApi_UnregisterPrintInterceptor(
189 JNIEnv* env, jclass, jobject obj) { 189 JNIEnv* env, jclass, jobject obj) {
190 UnregisterPrintInterceptor(env, obj); 190 UnregisterPrintInterceptor(env, obj);
191 } 191 }
192 192
193 #ifdef __cplusplus 193 #ifdef __cplusplus
194 } 194 }
195 #endif 195 #endif
196 """; 196 """;
197 197
198 const FLETCH_SERVICE_API_JAVA_IMPL = """ 198 const DARTINO_SERVICE_API_JAVA_IMPL = """
199 #include <jni.h> 199 #include <jni.h>
200 200
201 #include "service_api.h" 201 #include "service_api.h"
202 202
203 #ifdef __cplusplus 203 #ifdef __cplusplus
204 extern "C" { 204 extern "C" {
205 #endif 205 #endif
206 206
207 JNIEXPORT void JNICALL Java_fletch_FletchServiceApi_Setup(JNIEnv*, jclass) { 207 JNIEXPORT void JNICALL Java_dartino_DartinoServiceApi_Setup(JNIEnv*, jclass) {
208 ServiceApiSetup(); 208 ServiceApiSetup();
209 } 209 }
210 210
211 JNIEXPORT void JNICALL Java_fletch_FletchServiceApi_TearDown(JNIEnv*, jclass) { 211 JNIEXPORT void JNICALL Java_dartino_DartinoServiceApi_TearDown(JNIEnv*, jclass) {
212 ServiceApiTearDown(); 212 ServiceApiTearDown();
213 } 213 }
214 214
215 #ifdef __cplusplus 215 #ifdef __cplusplus
216 } 216 }
217 #endif 217 #endif
218 """; 218 """;
219 219
220 String JNI_UTILS = """ 220 String JNI_UTILS = """
221 static JNIEnv* AttachCurrentThreadAndGetEnv(JavaVM* vm) { 221 static JNIEnv* AttachCurrentThreadAndGetEnv(JavaVM* vm) {
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 "MessageBuilder.java", 356 "MessageBuilder.java",
357 "MessageReader.java", 357 "MessageReader.java",
358 "Reader.java", 358 "Reader.java",
359 "Segment.java" 359 "Segment.java"
360 ]; 360 ];
361 361
362 void generate(String path, 362 void generate(String path,
363 Unit unit, 363 Unit unit,
364 String resourcesDirectory, 364 String resourcesDirectory,
365 String outputDirectory) { 365 String outputDirectory) {
366 _generateFletchApis(outputDirectory); 366 _generateDartinoApis(outputDirectory);
367 _generateServiceJava(path, unit, outputDirectory); 367 _generateServiceJava(path, unit, outputDirectory);
368 _generateServiceJni(path, unit, outputDirectory); 368 _generateServiceJni(path, unit, outputDirectory);
369 _generateServiceJniMakeFiles(path, unit, resourcesDirectory, outputDirectory); 369 _generateServiceJniMakeFiles(path, unit, resourcesDirectory, outputDirectory);
370 370
371 resourcesDirectory = join(resourcesDirectory, 'java', 'fletch'); 371 resourcesDirectory = join(resourcesDirectory, 'java', 'dartino');
372 String fletchDirectory = join(outputDirectory, 'java', 'fletch'); 372 String dartinoDirectory = join(outputDirectory, 'java', 'dartino');
373 for (String resource in JAVA_RESOURCES) { 373 for (String resource in JAVA_RESOURCES) {
374 String resourcePath = join(resourcesDirectory, resource); 374 String resourcePath = join(resourcesDirectory, resource);
375 File file = new File(resourcePath); 375 File file = new File(resourcePath);
376 String contents = file.readAsStringSync(); 376 String contents = file.readAsStringSync();
377 writeToFile(fletchDirectory, resource, contents); 377 writeToFile(dartinoDirectory, resource, contents);
378 } 378 }
379 } 379 }
380 380
381 void _generateFletchApis(String outputDirectory) { 381 void _generateDartinoApis(String outputDirectory) {
382 String fletchDirectory = join(outputDirectory, 'java', 'fletch'); 382 String dartinoDirectory = join(outputDirectory, 'java', 'dartino');
383 String jniDirectory = join(outputDirectory, 'java', 'jni'); 383 String jniDirectory = join(outputDirectory, 'java', 'jni');
384 384
385 StringBuffer buffer = new StringBuffer(HEADER); 385 StringBuffer buffer = new StringBuffer(HEADER);
386 buffer.writeln(); 386 buffer.writeln();
387 buffer.write(FLETCH_API_JAVA); 387 buffer.write(DARTINO_API_JAVA);
388 writeToFile(fletchDirectory, 'FletchApi', buffer.toString(), 388 writeToFile(dartinoDirectory, 'DartinoApi', buffer.toString(),
389 extension: 'java'); 389 extension: 'java');
390 390
391 buffer = new StringBuffer(HEADER); 391 buffer = new StringBuffer(HEADER);
392 buffer.writeln(); 392 buffer.writeln();
393 buffer.write(FLETCH_SERVICE_API_JAVA); 393 buffer.write(DARTINO_SERVICE_API_JAVA);
394 writeToFile(fletchDirectory, 'FletchServiceApi', buffer.toString(), 394 writeToFile(dartinoDirectory, 'DartinoServiceApi', buffer.toString(),
395 extension: 'java'); 395 extension: 'java');
396 396
397 buffer = new StringBuffer(HEADER); 397 buffer = new StringBuffer(HEADER);
398 buffer.writeln(); 398 buffer.writeln();
399 buffer.write(FLETCH_API_JAVA_IMPL); 399 buffer.write(DARTINO_API_JAVA_IMPL);
400 writeToFile(jniDirectory, 'fletch_api_wrapper', buffer.toString(), 400 writeToFile(jniDirectory, 'dartino_api_wrapper', buffer.toString(),
401 extension: 'cc'); 401 extension: 'cc');
402 402
403 buffer = new StringBuffer(HEADER); 403 buffer = new StringBuffer(HEADER);
404 buffer.writeln(); 404 buffer.writeln();
405 buffer.write(FLETCH_SERVICE_API_JAVA_IMPL); 405 buffer.write(DARTINO_SERVICE_API_JAVA_IMPL);
406 writeToFile(jniDirectory, 'fletch_service_api_wrapper', 406 writeToFile(jniDirectory, 'dartino_service_api_wrapper',
407 buffer.toString(), extension: 'cc'); 407 buffer.toString(), extension: 'cc');
408 } 408 }
409 409
410 void _generateServiceJava(String path, Unit unit, String outputDirectory) { 410 void _generateServiceJava(String path, Unit unit, String outputDirectory) {
411 _JavaVisitor visitor = new _JavaVisitor(path, outputDirectory); 411 _JavaVisitor visitor = new _JavaVisitor(path, outputDirectory);
412 visitor.visit(unit); 412 visitor.visit(unit);
413 String contents = visitor.buffer.toString(); 413 String contents = visitor.buffer.toString();
414 String directory = join(outputDirectory, 'java', 'fletch'); 414 String directory = join(outputDirectory, 'java', 'dartino');
415 // TODO(ager): We should generate a file per service here. 415 // TODO(ager): We should generate a file per service here.
416 if (unit.services.length > 1) { 416 if (unit.services.length > 1) {
417 print('Java plugin: multiple services in one file is not supported.'); 417 print('Java plugin: multiple services in one file is not supported.');
418 } 418 }
419 String serviceName = unit.services.first.name; 419 String serviceName = unit.services.first.name;
420 writeToFile(directory, serviceName, contents, extension: 'java'); 420 writeToFile(directory, serviceName, contents, extension: 'java');
421 } 421 }
422 422
423 void _generateServiceJni(String path, Unit unit, String outputDirectory) { 423 void _generateServiceJni(String path, Unit unit, String outputDirectory) {
424 _JniVisitor visitor = new _JniVisitor(path); 424 _JniVisitor visitor = new _JniVisitor(path);
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 void writeReturnTypeToBuffer(Type node, StringBuffer buffer) { 557 void writeReturnTypeToBuffer(Type node, StringBuffer buffer) {
558 buffer.write(getReturnType(node)); 558 buffer.write(getReturnType(node));
559 } 559 }
560 560
561 void writeListTypeToBuffer(Type node, StringBuffer buffer) { 561 void writeListTypeToBuffer(Type node, StringBuffer buffer) {
562 buffer.write(getListType(node)); 562 buffer.write(getListType(node));
563 } 563 }
564 564
565 visitUnit(Unit node) { 565 visitUnit(Unit node) {
566 writeln(HEADER); 566 writeln(HEADER);
567 writeln('package fletch;'); 567 writeln('package dartino;');
568 writeln(); 568 writeln();
569 node.structs.forEach(visit); 569 node.structs.forEach(visit);
570 node.services.forEach(visit); 570 node.services.forEach(visit);
571 neededListTypes.forEach(writeListReaderImplementation); 571 neededListTypes.forEach(writeListReaderImplementation);
572 neededListTypes.forEach(writeListBuilderImplementation); 572 neededListTypes.forEach(writeListBuilderImplementation);
573 } 573 }
574 574
575 visitService(Service node) { 575 visitService(Service node) {
576 writeln('public class ${node.name} {'); 576 writeln('public class ${node.name} {');
577 writeln(' public static native void Setup();'); 577 writeln(' public static native void Setup();');
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
618 writeType(node.type); 618 writeType(node.type);
619 write(' ${node.name}'); 619 write(' ${node.name}');
620 } 620 }
621 621
622 visitStruct(Struct node) { 622 visitStruct(Struct node) {
623 writeReader(node); 623 writeReader(node);
624 writeBuilder(node); 624 writeBuilder(node);
625 } 625 }
626 626
627 void writeReader(Struct node) { 627 void writeReader(Struct node) {
628 String fletchDirectory = join(outputDirectory, 'java', 'fletch'); 628 String dartinoDirectory = join(outputDirectory, 'java', 'dartino');
629 String name = node.name; 629 String name = node.name;
630 StructLayout layout = node.layout; 630 StructLayout layout = node.layout;
631 631
632 StringBuffer buffer = new StringBuffer(HEADER); 632 StringBuffer buffer = new StringBuffer(HEADER);
633 buffer.writeln(); 633 buffer.writeln();
634 buffer.writeln(READER_HEADER); 634 buffer.writeln(READER_HEADER);
635 635
636 buffer.writeln('import java.util.List;'); 636 buffer.writeln('import java.util.List;');
637 buffer.writeln(); 637 buffer.writeln();
638 638
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 int offset = slot.offset; 720 int offset = slot.offset;
721 buffer.writeln(' $returnType reader = new $returnType();'); 721 buffer.writeln(' $returnType reader = new $returnType();');
722 buffer.writeln(' return ($returnType)readStruct(reader, $offset);') ; 722 buffer.writeln(' return ($returnType)readStruct(reader, $offset);') ;
723 buffer.writeln(' }'); 723 buffer.writeln(' }');
724 } 724 }
725 } 725 }
726 } 726 }
727 727
728 buffer.writeln('}'); 728 buffer.writeln('}');
729 729
730 writeToFile(fletchDirectory, '$name', buffer.toString(), 730 writeToFile(dartinoDirectory, '$name', buffer.toString(),
731 extension: 'java'); 731 extension: 'java');
732 } 732 }
733 733
734 void writeBuilder(Struct node) { 734 void writeBuilder(Struct node) {
735 String fletchDirectory = join(outputDirectory, 'java', 'fletch'); 735 String dartinoDirectory = join(outputDirectory, 'java', 'dartino');
736 String name = '${node.name}Builder'; 736 String name = '${node.name}Builder';
737 StructLayout layout = node.layout; 737 StructLayout layout = node.layout;
738 738
739 StringBuffer buffer = new StringBuffer(HEADER); 739 StringBuffer buffer = new StringBuffer(HEADER);
740 buffer.writeln(); 740 buffer.writeln();
741 buffer.writeln(READER_HEADER); 741 buffer.writeln(READER_HEADER);
742 742
743 buffer.write('import java.util.List;'); 743 buffer.write('import java.util.List;');
744 buffer.writeln(); 744 buffer.writeln();
745 buffer.writeln('public class $name extends Builder {'); 745 buffer.writeln('public class $name extends Builder {');
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 buffer.writeln(' $builderType result = new $builderType();'); 833 buffer.writeln(' $builderType result = new $builderType();');
834 buffer.writeln(' newStruct(result, ${slot.offset}, $size);'); 834 buffer.writeln(' newStruct(result, ${slot.offset}, $size);');
835 buffer.writeln(' return result;'); 835 buffer.writeln(' return result;');
836 } 836 }
837 buffer.writeln(' }'); 837 buffer.writeln(' }');
838 } 838 }
839 } 839 }
840 840
841 buffer.writeln('}'); 841 buffer.writeln('}');
842 842
843 writeToFile(fletchDirectory, '$name', buffer.toString(), 843 writeToFile(dartinoDirectory, '$name', buffer.toString(),
844 extension: 'java'); 844 extension: 'java');
845 } 845 }
846 846
847 void writeListReaderImplementation(Type type) { 847 void writeListReaderImplementation(Type type) {
848 String fletchDirectory = join(outputDirectory, 'java', 'fletch'); 848 String dartinoDirectory = join(outputDirectory, 'java', 'dartino');
849 String name = '${camelize(type.identifier)}List'; 849 String name = '${camelize(type.identifier)}List';
850 String listType = getListType(type); 850 String listType = getListType(type);
851 851
852 StringBuffer buffer = new StringBuffer(HEADER); 852 StringBuffer buffer = new StringBuffer(HEADER);
853 buffer.writeln(); 853 buffer.writeln();
854 buffer.writeln(READER_HEADER); 854 buffer.writeln(READER_HEADER);
855 855
856 buffer.writeln('public class $name {'); 856 buffer.writeln('public class $name {');
857 if (type.isPrimitive) { 857 if (type.isPrimitive) {
858 int elementSize = primitives.size(type.primitiveType); 858 int elementSize = primitives.size(type.primitiveType);
(...skipping 25 matching lines...) Expand all
884 'result, index, $elementSize);'); 884 'result, index, $elementSize);');
885 buffer.writeln(' return result;'); 885 buffer.writeln(' return result;');
886 buffer.writeln(' }'); 886 buffer.writeln(' }');
887 } 887 }
888 888
889 buffer.writeln(); 889 buffer.writeln();
890 buffer.writeln(' public int size() { return reader.length; }'); 890 buffer.writeln(' public int size() { return reader.length; }');
891 891
892 buffer.writeln('}'); 892 buffer.writeln('}');
893 893
894 writeToFile(fletchDirectory, '$name', buffer.toString(), 894 writeToFile(dartinoDirectory, '$name', buffer.toString(),
895 extension: 'java'); 895 extension: 'java');
896 } 896 }
897 897
898 void writeListBuilderImplementation(Type type) { 898 void writeListBuilderImplementation(Type type) {
899 String fletchDirectory = join(outputDirectory, 'java', 'fletch'); 899 String dartinoDirectory = join(outputDirectory, 'java', 'dartino');
900 String name = '${camelize(type.identifier)}ListBuilder'; 900 String name = '${camelize(type.identifier)}ListBuilder';
901 901
902 StringBuffer buffer = new StringBuffer(HEADER); 902 StringBuffer buffer = new StringBuffer(HEADER);
903 buffer.writeln(); 903 buffer.writeln();
904 buffer.writeln(READER_HEADER); 904 buffer.writeln(READER_HEADER);
905 905
906 buffer.writeln('public class $name {'); 906 buffer.writeln('public class $name {');
907 buffer.writeln(' private ListBuilder builder;'); 907 buffer.writeln(' private ListBuilder builder;');
908 buffer.writeln(); 908 buffer.writeln();
909 buffer.writeln(' public $name(ListBuilder builder) {' 909 buffer.writeln(' public $name(ListBuilder builder) {'
(...skipping 29 matching lines...) Expand all
939 'result, index, $elementSize);'); 939 'result, index, $elementSize);');
940 buffer.writeln(' return result;'); 940 buffer.writeln(' return result;');
941 buffer.writeln(' }'); 941 buffer.writeln(' }');
942 } 942 }
943 943
944 buffer.writeln(); 944 buffer.writeln();
945 buffer.writeln(' public int size() { return builder.length; }'); 945 buffer.writeln(' public int size() { return builder.length; }');
946 946
947 buffer.writeln('}'); 947 buffer.writeln('}');
948 948
949 writeToFile(fletchDirectory, '$name', buffer.toString(), 949 writeToFile(dartinoDirectory, '$name', buffer.toString(),
950 extension: 'java'); 950 extension: 'java');
951 } 951 }
952 } 952 }
953 953
954 class _JniVisitor extends CcVisitor { 954 class _JniVisitor extends CcVisitor {
955 static const int REQUEST_HEADER_SIZE = 48 + 8; 955 static const int REQUEST_HEADER_SIZE = 48 + 8;
956 static const int RESPONSE_HEADER_SIZE = 8; 956 static const int RESPONSE_HEADER_SIZE = 8;
957 957
958 int methodId = 1; 958 int methodId = 1;
959 String serviceName; 959 String serviceName;
(...skipping 25 matching lines...) Expand all
985 writeln('#ifdef ANDROID'); 985 writeln('#ifdef ANDROID');
986 writeln(' typedef JNIEnv* AttachEnvType;'); 986 writeln(' typedef JNIEnv* AttachEnvType;');
987 writeln('#else'); 987 writeln('#else');
988 writeln(' typedef void* AttachEnvType;'); 988 writeln(' typedef void* AttachEnvType;');
989 writeln('#endif'); 989 writeln('#endif');
990 990
991 writeln(); 991 writeln();
992 writeln('static ServiceId service_id_ = kNoServiceId;'); 992 writeln('static ServiceId service_id_ = kNoServiceId;');
993 993
994 writeln(); 994 writeln();
995 write('JNIEXPORT void JNICALL Java_fletch_'); 995 write('JNIEXPORT void JNICALL Java_dartino_');
996 writeln('${serviceName}_Setup(JNIEnv*, jclass) {'); 996 writeln('${serviceName}_Setup(JNIEnv*, jclass) {');
997 writeln(' service_id_ = ServiceApiLookup("$serviceName");'); 997 writeln(' service_id_ = ServiceApiLookup("$serviceName");');
998 writeln('}'); 998 writeln('}');
999 999
1000 writeln(); 1000 writeln();
1001 write('JNIEXPORT void JNICALL Java_fletch_'); 1001 write('JNIEXPORT void JNICALL Java_dartino_');
1002 writeln('${serviceName}_TearDown(JNIEnv*, jclass) {'); 1002 writeln('${serviceName}_TearDown(JNIEnv*, jclass) {');
1003 writeln(' ServiceApiTerminate(service_id_);'); 1003 writeln(' ServiceApiTerminate(service_id_);');
1004 writeln('}'); 1004 writeln('}');
1005 1005
1006 // TODO(ager): Put this in resources and copy as a file instead. 1006 // TODO(ager): Put this in resources and copy as a file instead.
1007 writeln(); 1007 writeln();
1008 writeln(JNI_UTILS); 1008 writeln(JNI_UTILS);
1009 1009
1010 node.methods.forEach(visit); 1010 node.methods.forEach(visit);
1011 1011
1012 writeln(); 1012 writeln();
1013 writeln('#ifdef __cplusplus'); 1013 writeln('#ifdef __cplusplus');
1014 writeln('}'); 1014 writeln('}');
1015 writeln('#endif'); 1015 writeln('#endif');
1016 } 1016 }
1017 1017
1018 visitMethod(Method node) { 1018 visitMethod(Method node) {
1019 String name = node.name; 1019 String name = node.name;
1020 String id = '_k${name}Id'; 1020 String id = '_k${name}Id';
1021 1021
1022 writeln(); 1022 writeln();
1023 write('static const MethodId $id = '); 1023 write('static const MethodId $id = ');
1024 writeln('reinterpret_cast<MethodId>(${methodId++});'); 1024 writeln('reinterpret_cast<MethodId>(${methodId++});');
1025 1025
1026 writeln(); 1026 writeln();
1027 write('JNIEXPORT '); 1027 write('JNIEXPORT ');
1028 writeReturnType(node.returnType); 1028 writeReturnType(node.returnType);
1029 write(' JNICALL Java_fletch_${serviceName}_${name}('); 1029 write(' JNICALL Java_dartino_${serviceName}_${name}(');
1030 write('JNIEnv* _env, jclass'); 1030 write('JNIEnv* _env, jclass');
1031 if (node.arguments.isNotEmpty) write(', '); 1031 if (node.arguments.isNotEmpty) write(', ');
1032 if (node.inputKind != InputKind.PRIMITIVES) { 1032 if (node.inputKind != InputKind.PRIMITIVES) {
1033 write('jobject ${node.arguments.single.name}'); 1033 write('jobject ${node.arguments.single.name}');
1034 } else { 1034 } else {
1035 visitArguments(node.arguments); 1035 visitArguments(node.arguments);
1036 } 1036 }
1037 writeln(') {'); 1037 writeln(') {');
1038 if (node.inputKind != InputKind.PRIMITIVES) { 1038 if (node.inputKind != InputKind.PRIMITIVES) {
1039 visitStructArgumentMethodBody(id, node); 1039 visitStructArgumentMethodBody(id, node);
1040 } else { 1040 } else {
1041 visitMethodBody(id, node); 1041 visitMethodBody(id, node);
1042 } 1042 }
1043 writeln('}'); 1043 writeln('}');
1044 1044
1045 String callback; 1045 String callback;
1046 if (node.inputKind == InputKind.STRUCT) { 1046 if (node.inputKind == InputKind.STRUCT) {
1047 Struct struct = node.arguments.single.type.resolved; 1047 Struct struct = node.arguments.single.type.resolved;
1048 StructLayout layout = struct.layout; 1048 StructLayout layout = struct.layout;
1049 callback = ensureCallback(node.returnType, layout); 1049 callback = ensureCallback(node.returnType, layout);
1050 } else { 1050 } else {
1051 callback = 1051 callback =
1052 ensureCallback(node.returnType, node.inputPrimitiveStructLayout); 1052 ensureCallback(node.returnType, node.inputPrimitiveStructLayout);
1053 } 1053 }
1054 1054
1055 writeln(); 1055 writeln();
1056 write('JNIEXPORT void JNICALL '); 1056 write('JNIEXPORT void JNICALL ');
1057 write('Java_fletch_${serviceName}_${name}Async('); 1057 write('Java_dartino_${serviceName}_${name}Async(');
1058 write('JNIEnv* _env, jclass'); 1058 write('JNIEnv* _env, jclass');
1059 if (node.arguments.isNotEmpty) write(', '); 1059 if (node.arguments.isNotEmpty) write(', ');
1060 if (node.inputKind != InputKind.PRIMITIVES) { 1060 if (node.inputKind != InputKind.PRIMITIVES) {
1061 write('jobject ${node.arguments.single.name}'); 1061 write('jobject ${node.arguments.single.name}');
1062 } else { 1062 } else {
1063 visitArguments(node.arguments); 1063 visitArguments(node.arguments);
1064 } 1064 }
1065 writeln(', jobject _callback) {'); 1065 writeln(', jobject _callback) {');
1066 writeln(' jobject callback = NULL;'); 1066 writeln(' jobject callback = NULL;');
1067 writeln(' JavaVM* vm = NULL;'); 1067 writeln(' JavaVM* vm = NULL;');
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
1134 write(' ServiceApiInvokeAsync(service_id_, $id, $callback, '); 1134 write(' ServiceApiInvokeAsync(service_id_, $id, $callback, ');
1135 writeln('_buffer, kSize);'); 1135 writeln('_buffer, kSize);');
1136 } else { 1136 } else {
1137 writeln(' ServiceApiInvoke(service_id_, $id, _buffer, kSize);'); 1137 writeln(' ServiceApiInvoke(service_id_, $id, _buffer, kSize);');
1138 if (method.outputKind == OutputKind.STRUCT) { 1138 if (method.outputKind == OutputKind.STRUCT) {
1139 Type type = method.returnType; 1139 Type type = method.returnType;
1140 writeln(' int64_t result = *${pointerToArgument(0, 0, 'int64_t')};'); 1140 writeln(' int64_t result = *${pointerToArgument(0, 0, 'int64_t')};');
1141 writeln(' char* memory = reinterpret_cast<char*>(result);'); 1141 writeln(' char* memory = reinterpret_cast<char*>(result);');
1142 writeln(' jobject rootSegment = GetRootSegment(_env, memory);'); 1142 writeln(' jobject rootSegment = GetRootSegment(_env, memory);');
1143 writeln(' jclass resultClass = ' 1143 writeln(' jclass resultClass = '
1144 '_env->FindClass("fletch/${type.identifier}");'); 1144 '_env->FindClass("dartino/${type.identifier}");');
1145 writeln(' jmethodID create = _env->GetStaticMethodID(' 1145 writeln(' jmethodID create = _env->GetStaticMethodID('
1146 'resultClass, "create", ' 1146 'resultClass, "create", '
1147 '"(Ljava/lang/Object;)Lfletch/${type.identifier};");'); 1147 '"(Ljava/lang/Object;)Ldartino/${type.identifier};");');
1148 writeln(' jobject resultObject = _env->CallStaticObjectMethod(' 1148 writeln(' jobject resultObject = _env->CallStaticObjectMethod('
1149 'resultClass, create, rootSegment);'); 1149 'resultClass, create, rootSegment);');
1150 writeln(' return resultObject;'); 1150 writeln(' return resultObject;');
1151 } else if (!method.returnType.isVoid) { 1151 } else if (!method.returnType.isVoid) {
1152 writeln(' return *${pointerToArgument(0, 0, 'int64_t')};'); 1152 writeln(' return *${pointerToArgument(0, 0, 'int64_t')};');
1153 } 1153 }
1154 } 1154 }
1155 } 1155 }
1156 1156
1157 visitStructArgumentMethodBody(String id, 1157 visitStructArgumentMethodBody(String id,
(...skipping 25 matching lines...) Expand all
1183 writeln('buffer, size);'); 1183 writeln('buffer, size);');
1184 } else { 1184 } else {
1185 writeln(' ServiceApiInvoke(service_id_, $id, buffer, size);'); 1185 writeln(' ServiceApiInvoke(service_id_, $id, buffer, size);');
1186 writeln(' int64_t result = *${pointerToArgument(0, 0, 'int64_t')};'); 1186 writeln(' int64_t result = *${pointerToArgument(0, 0, 'int64_t')};');
1187 writeln(' DeleteMessage(buffer);'); 1187 writeln(' DeleteMessage(buffer);');
1188 if (method.outputKind == OutputKind.STRUCT) { 1188 if (method.outputKind == OutputKind.STRUCT) {
1189 Type type = method.returnType; 1189 Type type = method.returnType;
1190 writeln(' char* memory = reinterpret_cast<char*>(result);'); 1190 writeln(' char* memory = reinterpret_cast<char*>(result);');
1191 writeln(' jobject rootSegment = GetRootSegment(_env, memory);'); 1191 writeln(' jobject rootSegment = GetRootSegment(_env, memory);');
1192 writeln(' jclass resultClass = ' 1192 writeln(' jclass resultClass = '
1193 '_env->FindClass("fletch/${type.identifier}");'); 1193 '_env->FindClass("dartino/${type.identifier}");');
1194 writeln(' jmethodID create = _env->GetStaticMethodID(' 1194 writeln(' jmethodID create = _env->GetStaticMethodID('
1195 'resultClass, "create", ' 1195 'resultClass, "create", '
1196 '"(Ljava/lang/Object;)Lfletch/${type.identifier};");'); 1196 '"(Ljava/lang/Object;)Ldartino/${type.identifier};");');
1197 writeln(' jobject resultObject = _env->CallStaticObjectMethod(' 1197 writeln(' jobject resultObject = _env->CallStaticObjectMethod('
1198 'resultClass, create, rootSegment);'); 1198 'resultClass, create, rootSegment);');
1199 writeln(' return resultObject;'); 1199 writeln(' return resultObject;');
1200 } else { 1200 } else {
1201 if (!method.returnType.isVoid) writeln(' return result;'); 1201 if (!method.returnType.isVoid) writeln(' return result;');
1202 } 1202 }
1203 } 1203 }
1204 } 1204 }
1205 1205
1206 static const Map<String, String> PRIMITIVE_TYPES = const { 1206 static const Map<String, String> PRIMITIVE_TYPES = const {
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1246 'int32' : 'I', 1246 'int32' : 'I',
1247 'int64' : 'J', 1247 'int64' : 'J',
1248 1248
1249 'float32' : 'F', 1249 'float32' : 'F',
1250 'float64' : 'D', 1250 'float64' : 'D',
1251 }; 1251 };
1252 1252
1253 String getJNISignatureType(Type type) { 1253 String getJNISignatureType(Type type) {
1254 String name = type.identifier; 1254 String name = type.identifier;
1255 if (type.isPrimitive) return PRIMITIVE_JNI_SIG[name]; 1255 if (type.isPrimitive) return PRIMITIVE_JNI_SIG[name];
1256 return 'Lfletch/$name;'; 1256 return 'Ldartino/$name;';
1257 } 1257 }
1258 1258
1259 final Map<String, String> callbacks = {}; 1259 final Map<String, String> callbacks = {};
1260 String ensureCallback(Type type, 1260 String ensureCallback(Type type,
1261 StructLayout layout, 1261 StructLayout layout,
1262 {bool cStyle: false}) { 1262 {bool cStyle: false}) {
1263 String key = '${type.identifier}_${layout.size}'; 1263 String key = '${type.identifier}_${layout.size}';
1264 return callbacks.putIfAbsent(key, () { 1264 return callbacks.putIfAbsent(key, () {
1265 String cast(String type) => CcVisitor.cast(type, cStyle); 1265 String cast(String type) => CcVisitor.cast(type, cStyle);
1266 String pointerToArgument(int offset, String type) { 1266 String pointerToArgument(int offset, String type) {
(...skipping 16 matching lines...) Expand all
1283 writeln(' DeleteMessage(buffer);'); 1283 writeln(' DeleteMessage(buffer);');
1284 if (!type.isPrimitive) { 1284 if (!type.isPrimitive) {
1285 writeln(' char* memory = reinterpret_cast<char*>(result);'); 1285 writeln(' char* memory = reinterpret_cast<char*>(result);');
1286 writeln(' jobject rootSegment = GetRootSegment(env, memory);'); 1286 writeln(' jobject rootSegment = GetRootSegment(env, memory);');
1287 write(' jfieldID returnTypeField = env->GetFieldID('); 1287 write(' jfieldID returnTypeField = env->GetFieldID(');
1288 writeln('clazz, "returnType", "Ljava/lang/Class;");'); 1288 writeln('clazz, "returnType", "Ljava/lang/Class;");');
1289 write(' jclass resultClass = (jclass)'); 1289 write(' jclass resultClass = (jclass)');
1290 writeln('env->GetObjectField(info->callback, returnTypeField);'); 1290 writeln('env->GetObjectField(info->callback, returnTypeField);');
1291 writeln(' jmethodID create = env->GetStaticMethodID(' 1291 writeln(' jmethodID create = env->GetStaticMethodID('
1292 'resultClass, "create", ' 1292 'resultClass, "create", '
1293 '"(Ljava/lang/Object;)Lfletch/${type.identifier};");'); 1293 '"(Ljava/lang/Object;)Ldartino/${type.identifier};");');
1294 writeln(' jobject resultObject = env->CallStaticObjectMethod(' 1294 writeln(' jobject resultObject = env->CallStaticObjectMethod('
1295 'resultClass, create, rootSegment);'); 1295 'resultClass, create, rootSegment);');
1296 } 1296 }
1297 } else { 1297 } else {
1298 writeln(' DeleteMessage(buffer);'); 1298 writeln(' DeleteMessage(buffer);');
1299 } 1299 }
1300 write(' jmethodID methodId = env->GetMethodID'); 1300 write(' jmethodID methodId = env->GetMethodID');
1301 write('(clazz, "handle", '); 1301 write('(clazz, "handle", ');
1302 if (type.isVoid) { 1302 if (type.isVoid) {
1303 writeln('"()V");'); 1303 writeln('"()V");');
(...skipping 15 matching lines...) Expand all
1319 return name; 1319 return name;
1320 }); 1320 });
1321 } 1321 }
1322 } 1322 }
1323 1323
1324 void _generateServiceJniMakeFiles(String path, 1324 void _generateServiceJniMakeFiles(String path,
1325 Unit unit, 1325 Unit unit,
1326 String resourcesDirectory, 1326 String resourcesDirectory,
1327 String outputDirectory) { 1327 String outputDirectory) {
1328 String out = join(outputDirectory, 'java'); 1328 String out = join(outputDirectory, 'java');
1329 // TODO(stanm): pass fletch root directly 1329 // TODO(stanm): pass dartino root directly
1330 String fletchRoot = join(resourcesDirectory, '..', '..', '..', '..', '..'); 1330 String dartinoRoot = join(resourcesDirectory, '..', '..', '..', '..', '..');
1331 String fletchLibraryBuildDir = join(fletchRoot, 1331 String dartinoLibraryBuildDir = join(dartinoRoot,
1332 'tools', 1332 'tools',
1333 'android_build', 1333 'android_build',
1334 'jni'); 1334 'jni');
1335 1335
1336 String fletchIncludeDir = join(fletchRoot, 'include'); 1336 String dartinoIncludeDir = join(dartinoRoot, 'include');
1337 1337
1338 String modulePath = relative(fletchLibraryBuildDir, from: out); 1338 String modulePath = relative(dartinoLibraryBuildDir, from: out);
1339 String includePath = relative(fletchIncludeDir, from: out); 1339 String includePath = relative(dartinoIncludeDir, from: out);
1340 1340
1341 StringBuffer buffer = new StringBuffer(HEADER_MK); 1341 StringBuffer buffer = new StringBuffer(HEADER_MK);
1342 1342
1343 buffer.writeln(); 1343 buffer.writeln();
1344 buffer.writeln('LOCAL_PATH := \$(call my-dir)'); 1344 buffer.writeln('LOCAL_PATH := \$(call my-dir)');
1345 1345
1346 buffer.writeln(); 1346 buffer.writeln();
1347 buffer.writeln('include \$(CLEAR_VARS)'); 1347 buffer.writeln('include \$(CLEAR_VARS)');
1348 buffer.writeln('LOCAL_MODULE := fletch'); 1348 buffer.writeln('LOCAL_MODULE := dartino');
1349 buffer.writeln('LOCAL_CFLAGS := -DFLETCH32'); 1349 buffer.writeln('LOCAL_CFLAGS := -DDARTINO32');
1350 buffer.writeln('LOCAL_LDLIBS := -llog -ldl -rdynamic'); 1350 buffer.writeln('LOCAL_LDLIBS := -llog -ldl -rdynamic');
1351 1351
1352 buffer.writeln(); 1352 buffer.writeln();
1353 buffer.writeln('LOCAL_SRC_FILES := \\'); 1353 buffer.writeln('LOCAL_SRC_FILES := \\');
1354 buffer.writeln('\tfletch_api_wrapper.cc \\'); 1354 buffer.writeln('\tdartino_api_wrapper.cc \\');
1355 buffer.writeln('\tfletch_service_api_wrapper.cc \\'); 1355 buffer.writeln('\tdartino_service_api_wrapper.cc \\');
1356 1356
1357 if (unit.services.length > 1) { 1357 if (unit.services.length > 1) {
1358 print('Java plugin: multiple services in one file is not supported.'); 1358 print('Java plugin: multiple services in one file is not supported.');
1359 } 1359 }
1360 String projectName = basenameWithoutExtension(path); 1360 String projectName = basenameWithoutExtension(path);
1361 String file = '${projectName}_wrapper'; 1361 String file = '${projectName}_wrapper';
1362 1362
1363 buffer.writeln('\t${file}.cc'); 1363 buffer.writeln('\t${file}.cc');
1364 1364
1365 buffer.writeln(); 1365 buffer.writeln();
1366 buffer.writeln('LOCAL_C_INCLUDES += \$(LOCAL_PATH)'); 1366 buffer.writeln('LOCAL_C_INCLUDES += \$(LOCAL_PATH)');
1367 buffer.writeln('LOCAL_C_INCLUDES += ${includePath}'); 1367 buffer.writeln('LOCAL_C_INCLUDES += ${includePath}');
1368 buffer.writeln('LOCAL_STATIC_LIBRARIES := fletch-library'); 1368 buffer.writeln('LOCAL_STATIC_LIBRARIES := dartino-library');
1369 1369
1370 buffer.writeln(); 1370 buffer.writeln();
1371 buffer.writeln('include \$(BUILD_SHARED_LIBRARY)'); 1371 buffer.writeln('include \$(BUILD_SHARED_LIBRARY)');
1372 1372
1373 buffer.writeln(); 1373 buffer.writeln();
1374 buffer.writeln('\$(call import-module, ${modulePath})'); 1374 buffer.writeln('\$(call import-module, ${modulePath})');
1375 1375
1376 writeToFile(join(out, 'jni'), 'Android', buffer.toString(), 1376 writeToFile(join(out, 'jni'), 'Android', buffer.toString(),
1377 extension: 'mk'); 1377 extension: 'mk');
1378 1378
1379 buffer = new StringBuffer(HEADER_MK); 1379 buffer = new StringBuffer(HEADER_MK);
1380 buffer.writeln('APP_STL := gnustl_static'); 1380 buffer.writeln('APP_STL := gnustl_static');
1381 buffer.writeln('APP_ABI := x86 armeabi-v7a'); 1381 buffer.writeln('APP_ABI := x86 armeabi-v7a');
1382 // TODO(zerny): Is this the right place and way to ensure ABI >= 8? 1382 // TODO(zerny): Is this the right place and way to ensure ABI >= 8?
1383 buffer.writeln('APP_PLATFORM := android-8'); 1383 buffer.writeln('APP_PLATFORM := android-8');
1384 writeToFile(join(out, 'jni'), 'Application', buffer.toString(), 1384 writeToFile(join(out, 'jni'), 'Application', buffer.toString(),
1385 extension: 'mk'); 1385 extension: 'mk');
1386 } 1386 }
OLDNEW
« no previous file with comments | « tools/servicec/lib/src/plugins/dart.dart ('k') | tools/servicec/lib/src/resources/dart/struct.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698