int ecl_boot(const char *root_dir) { int argc = 1; char *argv[256]; argv[0] = "ecl"; GC_allow_register_threads(); GC_register_my_thread((const struct GC_stack_base *)argv); GC_stackbottom = (void*)(argv+255); setenv("ECLDIR", "", 1); cl_boot(argc, argv); main_lib_ECL_HELP(); main_lib_ASDF(); main_lib_SOCKETS(); main_lib_IPHONEPSYSTEM(); si_select_package(ecl_make_simple_base_string("CL-USER", 7)); char tmp[2048]; sprintf(tmp, "(setq *default-pathnames-defaults* #p\"%s\")", root_dir); si_safe_eval(3, c_string_to_object(tmp), Cnil, OBJNULL); init_callbacks_registry(); ecl_toplevel(root_dir); return 0; }
void ecl_defparameter(cl_object sym, cl_object val) { si_safe_eval(3, cl_list(3, ECL_SYM("DEFPARAMETER",285), sym, cl_list(2, ECL_SYM("QUOTE",679), val)), ECL_NIL, ECL_NIL); }
void ecl_defvar(cl_object sym, cl_object val) { si_safe_eval(3, cl_list(3, ECL_SYM("DEFVAR",290), sym, cl_list(2, ECL_SYM("QUOTE",679), val)), ECL_NIL, ECL_NIL); }
void ecl_toplevel(const char *home) { char tmp[512]; sprintf(tmp, "(load \"%s/%s\")", home, "init.lisp"); si_safe_eval(3, c_string_to_object(tmp), Cnil, OBJNULL); }