@@ -58,6 +58,7 @@ class HostApp(Enum):
58
58
TV_CASTING = auto ()
59
59
BRIDGE = auto ()
60
60
DYNAMIC_BRIDGE = auto ()
61
+ JAVA_MATTER_CONTROLLER = auto ()
61
62
62
63
def ExamplePath (self ):
63
64
if self == HostApp .ALL_CLUSTERS :
@@ -98,6 +99,8 @@ def ExamplePath(self):
98
99
return 'bridge-app/linux'
99
100
elif self == HostApp .DYNAMIC_BRIDGE :
100
101
return 'dynamic-bridge-app/linux'
102
+ elif self == HostApp .JAVA_MATTER_CONTROLLER :
103
+ return 'java-matter-controller'
101
104
else :
102
105
raise Exception ('Unknown app type: %r' % self )
103
106
@@ -168,6 +171,9 @@ def OutputNames(self):
168
171
elif self == HostApp .DYNAMIC_BRIDGE :
169
172
yield 'dynamic-chip-bridge-app'
170
173
yield 'dynamic-chip-bridge-app.map'
174
+ elif self == HostApp .JAVA_MATTER_CONTROLLER :
175
+ yield 'java-matter-controller'
176
+ yield 'java-matter-controller.map'
171
177
else :
172
178
raise Exception ('Unknown app type: %r' % self )
173
179
@@ -357,6 +363,41 @@ def GnBuildArgs(self):
357
363
else :
358
364
raise Exception ('Unknown host board type: %r' % self )
359
365
366
+ def copyToExampleApp (self , jnilibs_dir , libs_dir , libs , jars ):
367
+ self ._Execute (
368
+ ["mkdir" , "-p" , jnilibs_dir ], title = "Prepare Native libs " + self .identifier
369
+ )
370
+
371
+ for libName in libs :
372
+ self ._Execute (
373
+ [
374
+ "cp" ,
375
+ os .path .join (
376
+ self .output_dir , "lib" , "jni" , self .board .AbiName (), libName
377
+ ),
378
+ os .path .join (jnilibs_dir , libName ),
379
+ ]
380
+ )
381
+
382
+ for jarName in jars .keys ():
383
+ self ._Execute (
384
+ [
385
+ "cp" ,
386
+ os .path .join (self .output_dir , "lib" , jars [jarName ]),
387
+ os .path .join (libs_dir , jarName ),
388
+ ]
389
+ )
390
+
391
+ def createJavaExecutable (self , java_program ):
392
+ self ._Execute (
393
+ [
394
+ "chmod" ,
395
+ "+x" ,
396
+ "%s/bin/%s" % (self .output_dir , java_program ),
397
+ ],
398
+ title = "Make Java program executable" ,
399
+ )
400
+
360
401
def GnBuildEnv (self ):
361
402
if self .board == HostBoard .ARM64 :
362
403
self .build_env ['PKG_CONFIG_PATH' ] = os .path .join (
@@ -370,6 +411,22 @@ def SysRootPath(self, name):
370
411
371
412
def generate (self ):
372
413
super (HostBuilder , self ).generate ()
414
+ if 'JAVA_PATH' in os .environ :
415
+ self ._Execute (
416
+ ["third_party/java_deps/set_up_java_deps.sh" ],
417
+ title = "Setting up Java deps" ,
418
+ )
419
+
420
+ exampleName = self .app .ExamplePath ()
421
+ if exampleName == "java-matter-controller" :
422
+ self ._Execute (
423
+ [
424
+ "cp" ,
425
+ os .path .join (self .root , "Manifest.txt" ),
426
+ self .output_dir ,
427
+ ],
428
+ title = "Copying Manifest.txt to " + self .output_dir ,
429
+ )
373
430
374
431
if self .app == HostApp .TESTS and self .use_coverage :
375
432
self .coverage_dir = os .path .join (self .output_dir , 'coverage' )
@@ -385,6 +442,32 @@ def PreBuildCommand(self):
385
442
'--exclude' , os .path .join (self .chip_dir , 'third_party/*' ),
386
443
'--exclude' , '/usr/include/*' ,
387
444
'--output-file' , os .path .join (self .coverage_dir , 'lcov_base.info' )], title = "Initial coverage baseline" )
445
+ if self .app .exampleName == "java-matter-controller" and 'JAVA_PATH' in os .environ :
446
+ jnilibs_dir = os .path .join (
447
+ self .root ,
448
+ "examples/" ,
449
+ self .app .ExampleName (),
450
+ "app/libs/jniLibs" ,
451
+ self .board .AbiName (),
452
+ )
453
+
454
+ libs_dir = os .path .join (
455
+ self .root , "examples/" , self .app .ExampleName (), "app/libs"
456
+ )
457
+
458
+ libs = [
459
+ "libSetupPayloadParser.so" ,
460
+ "libCHIPController.so" ,
461
+ "libc++_shared.so" ,
462
+ ]
463
+
464
+ jars = {
465
+ "CHIPController.jar" : "third_party/connectedhomeip/src/controller/java/CHIPController.jar" ,
466
+ "SetupPayloadParser.jar" : "third_party/connectedhomeip/src/setup_payload/java/SetupPayloadParser.jar" ,
467
+ }
468
+
469
+ self .copyToExampleApp (jnilibs_dir , libs_dir , libs , jars )
470
+ self .createJavaExecutable ("java-matter-controller" )
388
471
389
472
def PostBuildCommand (self ):
390
473
if self .app == HostApp .TESTS and self .use_coverage :
0 commit comments