Richard W.M. Jones
2009-Nov-25 17:22 UTC
[Libguestfs] Building guestfs_protocol.o in the daemon
Recently we changed the daemon so it builds guestfs_protocol.o by this rule: $(libsrcdir)/guestfs_protocol.o: force $(MAKE) -C $(libsrcdir) guestfs_protocol.o guestfsd_LDADD = \ $(libsrcdir)/guestfs_protocol.o \ #... The problem with doing this when building on Windows is that the toplevel src/ directory will be configured differently from the daemon/ directory. This means that the above rule compiles guestfs_protocol.o as a Linux object file, which obviously can't be linked to the Win32 daemon. [The exact error is attached at the end] We only configure the daemon/ directory for cross-compiling, partly because the daemon is supposed to be a separate entity, mainly because it'd be a huge amount of work to make the toplevel configure.ac into something which is Win32-friendly. I'm not sure what a good way to solve this is though. My thoughts: (a) Copy guestfs_protocol.[ch] into the daemon and treat it totally separately. (b) Revert the change so we're building again with a rule like: guestfsd_SOURCES ../src/guestfs_protocol.c \ ../src/guestfs_protocol.h \ #... I think the change was made originally to support parallel makes, so I don't know if doing this will break parallel makes again. (c) Something else ...? Is there a way to tell automake to put the object file into the local directory so that we can use the rule above but not have it break parallel make? I think I prefer plan (a) ... Rich. make[2]: Entering directory `/home/rjones/d/libguestfs-mingw/daemon' CC guestfsd-guestfsd.o CC guestfsd-sync.o make -C ./../src guestfs_protocol.o make[3]: Entering directory `/home/rjones/d/libguestfs-mingw/src' make -C ../src stamp-generator make[4]: Entering directory `/home/rjones/d/libguestfs-mingw/src' make[4]: `stamp-generator' is up to date. make[4]: Leaving directory `/home/rjones/d/libguestfs-mingw/src' CC guestfs_protocol.o make[3]: Leaving directory `/home/rjones/d/libguestfs-mingw/src' CCLD guestfsd.exe ./../src/guestfs_protocol.o: file not recognized: File format not recognized collect2: ld returned 1 exit status make[2]: *** [guestfsd.exe] Error 1 make[2]: Leaving directory `/home/rjones/d/libguestfs-mingw/daemon' -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://et.redhat.com/~rjones/libguestfs/ See what it can do: http://et.redhat.com/~rjones/libguestfs/recipes.html
Seemingly Similar Threads
- [PATCH] Fix dependencies on generator.ml
- [PATCH 2/2] daemon: Link guestfs_protocol.[ch] into the daemon directory.
- [PATCH v2 1/7] lib: Share common protocol and errnostring libraries with the library and daemon.
- [PATCH v7 13/13] daemon: Link guestfsd with libutils.
- [PATCH 1/3] out-of-tree build: daemon