X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgacela.c;h=fc7ec31cdd86c73f307bcf8ff5bb4a112c7210a2;hb=e60e22ac6c5a6dbfc41bc5a106cdc5e9c6ccae63;hp=d46c49536bba42a024c30bcd5e74453ff6b01b35;hpb=9fef3eaa3b432926d3af475fb2a673c76131c779;p=gacela.git diff --git a/src/gacela.c b/src/gacela.c index d46c495..fc7ec31 100644 --- a/src/gacela.c +++ b/src/gacela.c @@ -16,31 +16,43 @@ */ #include +#include #include "gacela_SDL.h" #include "gacela_GL.h" +#include "gacela_FTGL.h" static void* -register_functions (void* data) +init_gacela (void *data, int argc, char **argv) { + // Guile configuration + scm_c_eval_string ("(set-repl-prompt! \"gacela>\")"); + scm_c_eval_string ("(use-modules (ice-9 readline))"); + scm_c_eval_string ("(activate-readline)"); + scm_c_eval_string ("(use-modules (ice-9 optargs))"); + scm_c_eval_string ("(use-modules (ice-9 receive))"); + + // Bindings for C functions and structs SDL_register_functions (NULL); GL_register_functions (NULL); + FTGL_register_functions (NULL); + return NULL; } void -load_scheme_files (void) +load_scheme_files (char *path) { - scm_c_primitive_load ("gacela.scm"); + char load_path[strlen (path) + 1024]; + + sprintf (load_path, "(set! %%load-path (cons \"%s\" %%load-path))", path); + scm_c_eval_string (load_path); + scm_primitive_load_path (scm_from_locale_string ("gacela_loader.scm")); } int main (int argc, char *argv[]) { - scm_with_guile (®ister_functions, NULL); - scm_init_guile (); - scm_c_eval_string ("(set-repl-prompt! \"gacela>\")"); - scm_c_eval_string ("(use-modules (ice-9 readline))"); - scm_c_eval_string ("(activate-readline)"); - load_scheme_files (); + scm_with_guile (&init_gacela, NULL); + load_scheme_files (dirname (argv[0])); scm_shell (argc, argv); }