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