annotate src/ocaml-flexdll-test.c @ 5531:eae508c12529

Add build rule for build-octave (bug #49503). * src/build-octave.mk: Add new build rule for build-octave which can be used for cross-building binary packages that depend on Octave as a build tool. * dist-files.mk: Add new file to list. * index.html: Add new package to list. * src/of-communications.mk, src/of-image.mk, src/of-mapping.mk, src/of-optiminterp.mk, src/of-sparsersb.mk, src/of-statistics.mk, src/of-windows.mk: Add optional dependency on build-octave. * configure.ac: Add new configure switch "--disable-system-octave" that is needed to build the build-octave package. * Makefile.in: Add variable "USE_SYSTEM_OCTAVE". Exclude build-octave from the default build tools and build it only if a package explicitly depends on it. Display warning about missing native Octave version only if necessary.
author Markus Mützel <markus.muetzel@gmx.de>
date Tue, 08 Sep 2020 23:04:38 +0200
parents d3677521718a
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2703
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
1 /*****************************************************************
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
2 FlexDLL
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
3 Alain Frisch
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
4
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
5 Copyright 2007 Institut National de Recherche en Informatique et
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
6 en Automatique.
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
7
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
8 ******************************************************************/
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
9
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
10 /* An example (main program) */
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
11
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
12 #include <stdlib.h>
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
13 #include <stdio.h>
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
14 #include "flexdll.h"
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
15
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
16 typedef void torun();
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
17
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
18 void api(char *msg){ printf("API: %s\n", msg); }
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
19
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
20 int main(int argc, char **argv)
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
21 {
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
22 void *sym;
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
23 void *handle;
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
24 int i;
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
25 torun *torun;
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
26
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
27 printf("INIT\n"); fflush(stdout);
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
28 flexdll_dump_exports(NULL);
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
29 printf("OK\n"); fflush(stdout);
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
30 for (i = 1; i < argc; i++) {
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
31 printf("** Loading %s\n", argv[i]);
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
32 handle = flexdll_dlopen(argv[i], FLEXDLL_RTLD_GLOBAL);
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
33 if (NULL == handle) { printf("error: %s\n", flexdll_dlerror()); exit(2); }
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
34 printf("** handle = %p\n", handle);
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
35 flexdll_dump_exports(handle);
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
36 flexdll_dump_relocations(handle);
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
37
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
38 if (NULL == handle) { printf("error: %s\n", flexdll_dlerror()); exit(2); }
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
39
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
40 torun = flexdll_dlsym(handle, "torun");
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
41 if (torun) torun();
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
42 }
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
43 exit(0);
d3677521718a add package ocaml-flexdll
William <r.3@libertysurf.fr>
parents:
diff changeset
44 }