New component for compiling JIT code at runtime.
[GB.JIT] * NEW: New component for compiling JIT code at runtime.
This commit is contained in:
parent
cdc6d47922
commit
3c8c722989
6
comp/src/gb.jit/.component
Normal file
6
comp/src/gb.jit/.component
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[Component]
|
||||||
|
Key=gb.jit
|
||||||
|
Version=3.10.90
|
||||||
|
State=2
|
||||||
|
Hidden=True
|
||||||
|
Authors=Benoît Minisini
|
2
comp/src/gb.jit/.directory
Normal file
2
comp/src/gb.jit/.directory
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Icon=./.icon.png
|
BIN
comp/src/gb.jit/.icon.png
Normal file
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
13
comp/src/gb.jit/.project
Normal 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
|
7
comp/src/gb.jit/.src/Main.module
Normal file
7
comp/src/gb.jit/.src/Main.module
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
' Gambas module file
|
||||||
|
|
||||||
|
Public Sub Main()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
End
|
55
comp/src/gb.jit/.src/_Jit.module
Normal file
55
comp/src/gb.jit/.src/_Jit.module
Normal 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
1
comp/src/gb.jit/gambas.h
Symbolic link
@ -0,0 +1 @@
|
|||||||
|
../../../main/share/gambas.h
|
0
comp/src/gb.jit/jit.h
Normal file
0
comp/src/gb.jit/jit.h
Normal file
Loading…
x
Reference in New Issue
Block a user