New component for compiling JIT code at runtime.

[GB.JIT]
* NEW: New component for compiling JIT code at runtime.
This commit is contained in:
gambas 2018-05-25 21:03:48 +02:00
parent cdc6d47922
commit 3c8c722989
8 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,6 @@
[Component]
Key=gb.jit
Version=3.10.90
State=2
Hidden=True
Authors=Benoît Minisini

View File

@ -0,0 +1,2 @@
[Desktop Entry]
Icon=./.icon.png

BIN
comp/src/gb.jit/.icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

13
comp/src/gb.jit/.project Normal file
View File

@ -0,0 +1,13 @@
# Gambas Project File 3.0
Title=Gambas JIT compiler support
Startup=Main
Version=3.10.90
VersionFile=1
Authors="Benoît Minisini"
TabSize=2
Language=fr
Type=Component
Maintainer=benoit
Address=benoit@localhost
License=General Public Licence
Packager=1

View File

@ -0,0 +1,7 @@
' Gambas module file
Public Sub Main()
End

View File

@ -0,0 +1,55 @@
' Gambas module file
Export
Private $sCompiler As String
Private Sub FindCompiler()
$sCompiler = System.Find("gcc")
End
Public Sub Compile() As String
Dim sFile As String
Dim sDir As String
Dim sName As String
Dim sPath As String
Dim hFile As File
Dim sResult As String
sName = Component.FindFromPath("..")
sDir = File.Dir(Temp$()) &/ "jit"
Try Mkdir sDir
sPath = sDir &/ sName & ".c"
hFile = Open sPath For Output Create
Print #hFile, File.Load("gambas.h");
Print #hFile, File.Load("jit.h");
sDir = "../.jit"
For Each sFile In Dir(sDir, "*.c")
Print #hFile, File.Load(sDir &/ sFile);
Next
Close #hFile
FindCompiler
'gcc -c -fPIC -o foo.o foo.c
Exec [$sCompiler, "-c", "-fPIC", "-o", File.SetExt(sPath, "o"), sPath] To sResult
If Process.LastValue Then
Error("gb.jit: warning: unable to compile JIT code: " & sResult)
Return
Endif
'gcc -shared -o libfoo.so foo.o
Exec [$sCompiler, "-shared", "-o", File.SetExt(sPath, "so"), File.SetExt(sPath, "o")] To sResult
If Process.LastValue Then
Error("gb.jit: warning: unable to link JIT code: " & sResult)
Return
Endif
Return File.SetExt(sPath, "so")
End

1
comp/src/gb.jit/gambas.h Symbolic link
View File

@ -0,0 +1 @@
../../../main/share/gambas.h

0
comp/src/gb.jit/jit.h Normal file
View File