@@ -156,6 +156,10 @@ def _resolve_concore_path():
156156MATLABWIN = os .environ .get ("CONCORE_MATLABWIN" , "matlab" ) #Windows matlab
157157OCTAVEEXE = os .environ .get ("CONCORE_OCTAVEEXE" , "octave" ) #Ubuntu/macOS octave
158158OCTAVEWIN = os .environ .get ("CONCORE_OCTAVEWIN" , "octave" ) #Windows octave
159+ JAVACEXE = os .environ .get ("CONCORE_JAVACEXE" , "javac" ) #Ubuntu/macOS javac
160+ JAVACWIN = os .environ .get ("CONCORE_JAVACWIN" , "javac" ) #Windows javac
161+ JAVAEXE = os .environ .get ("CONCORE_JAVAEXE" , "java" ) #Ubuntu/macOS java
162+ JAVAWIN = os .environ .get ("CONCORE_JAVAWIN" , "java" ) #Windows java
159163M_IS_OCTAVE = False #treat .m as octave
160164MCRPATH = "~/MATLAB/R2021a" #path to local Ubunta Matlab Compiler Runtime
161165DOCKEREXE = os .environ .get ("DOCKEREXE" , "docker" )#default to docker, allow env override
@@ -196,6 +200,10 @@ def _resolve_concore_path():
196200 MATLABWIN = _tools .get ("MATLABWIN" , MATLABWIN )
197201 OCTAVEEXE = _tools .get ("OCTAVEEXE" , OCTAVEEXE )
198202 OCTAVEWIN = _tools .get ("OCTAVEWIN" , OCTAVEWIN )
203+ JAVACEXE = _tools .get ("JAVACEXE" , JAVACEXE )
204+ JAVACWIN = _tools .get ("JAVACWIN" , JAVACWIN )
205+ JAVAEXE = _tools .get ("JAVAEXE" , JAVAEXE )
206+ JAVAWIN = _tools .get ("JAVAWIN" , JAVAWIN )
199207
200208prefixedgenode = ""
201209sourcedir = os .path .abspath (sys .argv [2 ])
@@ -608,6 +616,16 @@ def cleanup_script_files():
608616 fcopy .write (fsource .read ())
609617 fsource .close ()
610618
619+ if 'java' in required_langs and concoretype != "docker" :
620+ try :
621+ fsource = open (CONCOREPATH + "/concore.java" )
622+ except (FileNotFoundError , IOError ):
623+ print (CONCOREPATH + " is not correct path to concore (missing Java files)" )
624+ quit ()
625+ with open (outdir + "/src/concore.java" ,"w" ) as fcopy :
626+ fcopy .write (fsource .read ())
627+ fsource .close ()
628+
611629if 'm' in required_langs :
612630 try :
613631 fsource = open (CONCOREPATH + "/concore_default_maxtime.m" )
@@ -1020,6 +1038,8 @@ def cleanup_script_files():
10201038 elif langext == "v" :
10211039 # 6/25/21
10221040 fbuild .write ("copy .\\ src\\ concore.v .\\ " + containername + "\\ concore.v\n " )
1041+ elif langext == "java" :
1042+ fbuild .write ("copy .\\ src\\ concore.java .\\ " + containername + "\\ concore.java\n " )
10231043 elif langext == "m" : # 4/2/21
10241044 fbuild .write ("copy .\\ src\\ concore_*.m .\\ " + containername + "\\ \n " )
10251045 fbuild .write ("copy .\\ src\\ import_concore.m .\\ " + containername + "\\ \n " )
@@ -1037,6 +1057,8 @@ def cleanup_script_files():
10371057 fbuild .write ("cp ./src/concore.hpp ./" + containername + "/concore.hpp\n " )
10381058 elif langext == "v" :
10391059 fbuild .write ("cp ./src/concore.v ./" + containername + "/concore.v\n " )
1060+ elif langext == "java" :
1061+ fbuild .write ("cp ./src/concore.java ./" + containername + "/concore.java\n " )
10401062 elif langext == "m" : # 4/2/21
10411063 fbuild .write ("cp ./src/concore_*.m ./" + containername + "/\n " )
10421064 fbuild .write ("cp ./src/import_concore.m ./" + containername + "/\n " )
@@ -1127,6 +1149,16 @@ def cleanup_script_files():
11271149 fdebug .write ('cd ..\n ' )
11281150 fdebug .write ('start /D ' + q_container + ' cmd /K vvp a.out\n ' )
11291151 #fdebug.write('start /D '+containername+' cmd /K "'+CPPWIN+' '+sourcecode+'|a"\n')
1152+ elif langext == "java" :
1153+ javaclass = os .path .splitext (os .path .basename (sourcecode ))[0 ]
1154+ frun .write ('cd ' + q_container + '\n ' )
1155+ frun .write (JAVACWIN + ' ' + q_source + '\n ' )
1156+ frun .write ('cd ..\n ' )
1157+ frun .write ('start /B /D ' + q_container + ' cmd /c ' + JAVAWIN + ' -cp .;..\\ src\\ jeromq.jar ' + javaclass + ' >' + q_container + '\\ concoreout.txt\n ' )
1158+ fdebug .write ('cd ' + q_container + '\n ' )
1159+ fdebug .write (JAVACWIN + ' ' + q_source + '\n ' )
1160+ fdebug .write ('cd ..\n ' )
1161+ fdebug .write ('start /D ' + q_container + ' cmd /K ' + JAVAWIN + ' -cp .;..\\ src\\ jeromq.jar ' + javaclass + '\n ' )
11301162 elif langext == "m" : #3/23/21
11311163 # Use q_source in Windows commands to ensure quoting consistency
11321164 if M_IS_OCTAVE :
@@ -1168,6 +1200,17 @@ def cleanup_script_files():
11681200 fdebug .write ('concorewd="$(pwd)"\n ' )
11691201 fdebug .write ('osascript -e "tell application \\ "Terminal\\ " to do script \\ "cd \\ \\ \\ "$concorewd/' + safe_container + '\\ \\ \\ "; ' + VEXE + ' ' + safe_source + '; vvp a.out\\ "" \n ' )
11701202
1203+ elif langext == "java" :
1204+ javaclass = os .path .splitext (os .path .basename (sourcecode ))[0 ]
1205+ safe_javaclass = shlex .quote (javaclass )
1206+ frun .write ('(cd ' + safe_container + '; ' + JAVACEXE + ' ' + safe_source + '; ' + JAVAEXE + ' -cp .:../src/jeromq.jar ' + safe_javaclass + ' >concoreout.txt & echo $! >concorepid) &\n ' )
1207+ if ubuntu :
1208+ fdebug .write ('concorewd="$(pwd)"\n ' )
1209+ fdebug .write ('xterm -e bash -c "cd \\ "$concorewd/' + safe_container + '\\ "; ' + JAVACEXE + ' ' + safe_source + '; ' + JAVAEXE + ' -cp .:../src/jeromq.jar ' + safe_javaclass + '; bash" &\n ' )
1210+ else :
1211+ fdebug .write ('concorewd="$(pwd)"\n ' )
1212+ fdebug .write ('osascript -e "tell application \\ "Terminal\\ " to do script \\ "cd \\ \\ \\ "$concorewd/' + safe_container + '\\ \\ \\ \" ; ' + JAVACEXE + ' ' + safe_source + '; ' + JAVAEXE + ' -cp .:../src/jeromq.jar ' + safe_javaclass + '\\ "" \n ' )
1213+
11711214 elif langext == "sh" : # 5/19/21
11721215 # FIX: Escape MCRPATH to prevent shell injection
11731216 safe_mcr = shlex .quote (MCRPATH )
0 commit comments