Instead of including everything in a single C source, build all the 3 C sources separately.
Signed-off-by: Pino Toscano <ptosc...@redhat.com> --- libvirt/Makefile.in | 14 +++++++------- libvirt/README | 28 ++++++---------------------- libvirt/generator.pl | 4 ---- libvirt/libvirt_c_epilogue.c | 2 ++ libvirt/libvirt_c_oneoffs.c | 2 ++ 5 files changed, 17 insertions(+), 33 deletions(-) diff --git a/libvirt/Makefile.in b/libvirt/Makefile.in index 8451c5d..ad56bb5 100644 --- a/libvirt/Makefile.in +++ b/libvirt/Makefile.in @@ -64,10 +64,10 @@ OPTOBJS := libvirt.cmx libvirt_version.cmx ifneq ($(OCAMLMKLIB),) # Good, we can just use ocamlmklib -mllibvirt.cma: libvirt_c.o $(COBJS) +mllibvirt.cma: libvirt_c.o libvirt_c_oneoffs.o libvirt_c_epilogue.o $(COBJS) $(OCAMLMKLIB) -o mllibvirt $^ $(LDFLAGS) -mllibvirt.cmxa: libvirt_c.o $(OPTOBJS) +mllibvirt.cmxa: libvirt_c.o libvirt_c_oneoffs.o libvirt_c_epilogue.o $(OPTOBJS) $(OCAMLMKLIB) -o mllibvirt $^ $(LDFLAGS) else @@ -83,11 +83,11 @@ mllibvirt.cmxa: libmllibvirt.a $(OPTOBJS) $(OCAMLOPT) -a -linkall -o $@ $(OPTOBJS) \ -cclib -lmllibvirt -cclib "$(LDFLAGS)" -dllmllibvirt.dll: libvirt_c.o +dllmllibvirt.dll: libvirt_c.o libvirt_c_oneoffs.o libvirt_c_epilogue.o $(CC) -shared -o $@ $^ \ $(LDFLAGS) "$(shell ocamlc -where)"/ocamlrun.a -libmllibvirt.a: libvirt_c.o +libmllibvirt.a: libvirt_c.o libvirt_c_oneoffs.o libvirt_c_epilogue.o ar rc $@ $^ ranlib $@ @@ -104,9 +104,9 @@ libvirt_c.c: generator.pl $(PERL) -w $< # Extra dependencies. -libvirt_c.c: libvirt_c.h -libvirt_c.c: libvirt_c_oneoffs.c -libvirt_c.c: libvirt_c_epilogue.c +libvirt_c.o: libvirt_c.h +libvirt_c_oneoffs.o: libvirt_c.h +libvirt_c_epilogue.o: libvirt_c.h # Status of automatically generated bindings. autostatus: libvirt_c.c diff --git a/libvirt/README b/libvirt/README index 0109940..3fb8f53 100644 --- a/libvirt/README +++ b/libvirt/README @@ -7,12 +7,15 @@ documentation starting at html/index.html. 'libvirt.ml' describes how OCaml functions map to C functions. -'libvirt_c*.c' are the C functions which map OCaml objects to C -objects and vice versa (see next section). - 'libvirt_c.h' contains prototypes of common functions defined in the epilogue (see below), and provides some general macros. +'libvirt_c_epilogue.c' contains some standard functions (eg.) for +wrapping and unwrapping libvirt objects. + +'libvirt_c_oneoffs.c' contains bindings which are too specialised or +one-of-a-kind to be worth generating automatically. + Generated code -------------- @@ -26,22 +29,3 @@ there are a few one-off bindings (eg. one-of-a-type functions, functions with particularly complex mappings). Our eventual aim to is autogenerate as much as possible. Use 'make autostatus' in this directory to find out how we're doing. - -The generated 'libvirt_c.c' #includes some other C files in this -directory: - - #include "libvirt_c_oneoffs.c" - - One-off bindings: Bindings which are too specialised or one-of-a-kind - to be worth generating automatically. - - [Followed by generated bindings, then ...] - - #include "libvirt_c_epilogue.c" - - An epilogue which defines some standard static functions (eg.) for - wrapping and unwrapping libvirt objects. - -The key to understanding the generator is to look at the generated -code (libvirt_c.c) first, and go from there back to parts of the -generator script. diff --git a/libvirt/generator.pl b/libvirt/generator.pl index 61526c0..eb329a0 100755 --- a/libvirt/generator.pl +++ b/libvirt/generator.pl @@ -234,8 +234,6 @@ print F <<'END'; #include "libvirt_c.h" -#include "libvirt_c_oneoffs.c" - END #---------------------------------------------------------------------- @@ -880,8 +878,6 @@ END # Write the epilogue. print F <<'END'; -#include "libvirt_c_epilogue.c" - /* EOF */ END diff --git a/libvirt/libvirt_c_epilogue.c b/libvirt/libvirt_c_epilogue.c index e58f7bb..3baf290 100644 --- a/libvirt/libvirt_c_epilogue.c +++ b/libvirt/libvirt_c_epilogue.c @@ -20,6 +20,8 @@ /* Please read libvirt/README file. */ +#include "libvirt_c.h" + const char * Optstring_val (value strv) { diff --git a/libvirt/libvirt_c_oneoffs.c b/libvirt/libvirt_c_oneoffs.c index 0a9e485..6f56f10 100644 --- a/libvirt/libvirt_c_oneoffs.c +++ b/libvirt/libvirt_c_oneoffs.c @@ -19,6 +19,8 @@ /* Please read libvirt/README file. */ +#include "libvirt_c.h" + #ifdef __GNUC__ #pragma GCC diagnostic ignored "-Wmissing-prototypes" #endif -- 2.21.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list