blob: dd55aca38f7a21a26a721857b80e039dd749d155 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
/*
* Caml bootstrap
*
* Samuel Thibault <Samuel.Thibault@eu.citrix.net>, January 2008
*/
#include <stdio.h>
#include <errno.h>
#include <caml/mlvalues.h>
#include <caml/callback.h>
#include <unistd.h>
/* Ugly binary compatibility with Linux */
FILE *_stderr asm("stderr");
int *__errno_location;
/* Will probably break everything, probably need to fetch from glibc */
void *__ctype_b_loc;
int main(int argc, char *argv[], char *envp[])
{
value *val;
/* Get current thread's value */
_stderr = stderr;
__errno_location = &errno;
printf("starting caml\n");
/* Wait before things might hang up */
sleep(1);
caml_startup(argv);
val = caml_named_value("main");
if (!val) {
printf("Couldn't find Caml main");
return 1;
}
caml_callback(*val, Val_int(0));
printf("callback returned\n");
return 0;
}
|