# HG changeset patch # User Leonard Ritter # Date 1650742150 -7200 # Sat Apr 23 21:29:10 2022 +0200 # Node ID 0a24589bbdf003215d9be2e067b54960f30953b5 # Parent 3bb7e983a721c31ed954caee317eedbc63bbedef * added tcc module and test diff --git a/.hgignore b/.hgignore --- a/.hgignore +++ b/.hgignore @@ -40,6 +40,7 @@ ^llvm ^.vscode/ ^.eo/ +^include/libtcc/ ^include/SDL2/ ^include/bullet/ ^include/chipmunk/ diff --git a/lib/tukan/tcc.sc b/lib/tukan/tcc.sc new file mode 100644 --- /dev/null +++ b/lib/tukan/tcc.sc @@ -0,0 +1,25 @@ +import .core +using import .globals + +if (operating-system == 'windows) + #load-library "SDL2.dll" # todo +else + shared-library "libtcc.so" + +run-stage; + +vvv bind TCC +include "libtcc/libtcc.h" + +do + using TCC.define + using TCC.const + using TCC.typedef + using TCC.extern + + TCC_RELOCATE_AUTO := (1:u64 as (mutable voidstar)) + + TCC_INCLUDE_PATH := module-dir .. "/../../include/libtcc/include" + TCC_LIB_PATH := module-dir .. "/../../lib" + + locals; diff --git a/recipes/tinycc.eo b/recipes/tinycc.eo --- a/recipes/tinycc.eo +++ b/recipes/tinycc.eo @@ -21,6 +21,9 @@ version version alias "/lib/libtcc.so" "{build-path}/libtcc.so" + in "/lib" "{build-path}/libtcc1.a" in "/include/libtcc" "{build-path}/libtcc.h" "{build-path}/include" + in "/include/libtcc/include" + "{build-path}/tcclib.h" diff --git a/testing/test_tcc.sc b/testing/test_tcc.sc new file mode 100644 --- /dev/null +++ b/testing/test_tcc.sc @@ -0,0 +1,49 @@ + + +using import tukan.tcc + +inline tcc_verify (f ...) + let res = (f ...) + assert (res == 0) + res + +vvv bind testcode +""""#include + + void main() { + printf("Hello, World!\n"); + } + +cc := (tcc_new) +defer tcc_delete cc +tcc_set_lib_path cc TCC_LIB_PATH +va-map + inline (path) + tcc_add_include_path cc path + TCC_INCLUDE_PATH + #"/usr/local/include/x86_64-linux-gnu" + #"/usr/local/include" + #"/usr/include/x86_64-linux-gnu" + #"/usr/include" +va-map + inline (path) + tcc_add_library_path cc path + #"/usr/lib/x86_64-linux-gnu" + #"/usr/lib" + #"/lib/x86_64-linux-gnu" + #"/lib" + #"/usr/local/lib/x86_64-linux-gnu" + #"/usr/local/lib" + +tcc_set_output_type cc TCC_OUTPUT_MEMORY +tcc_verify tcc_compile_string cc testcode +#tcc_run cc 0 null +tcc_verify tcc_relocate cc TCC_RELOCATE_AUTO + +func := (tcc_get_symbol cc "main") +assert (func != null) +call + func as (@ (function void)) + + +; \ No newline at end of file