[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC] tools/xenlight: Create xenlight Makefile
On Fri, Dec 16, 2016 at 7:20 AM, Ronald Rojas <ronladred@xxxxxxxxx> wrote: > Create a basic Makefile to build and install libxenlight Golang > bindings. Also add a template. What's this template again? > > --- > > Eventually this patch will contain the actual bindings package; for > now it just includes a stub package. > > To Do: > - Have configure detect golang bindings properly > > CC: xen-devel <xen-devel@xxxxxxxxxxxxx> > CC: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > CC: Wei Liu <wei.liu2@xxxxxxxxxx> > CC: George Dunlap <george.dunlap@xxxxxxxxxx> > CC: George Dunlap <dunlapg@xxxxxxxxx> > --- > tools/Makefile | 16 ++++++++++++++++ > tools/golang/Makefile | 33 +++++++++++++++++++++++++++++++++ > tools/golang/xenlight/xenlight.go | 7 +++++++ > 3 files changed, 56 insertions(+) > create mode 100644 tools/golang/Makefile > create mode 100644 tools/golang/xenlight/xenlight.go > > diff --git a/tools/Makefile b/tools/Makefile > index 71515b4..f2198e0 100644 > --- a/tools/Makefile > +++ b/tools/Makefile > @@ -11,6 +11,8 @@ SUBDIRS-y += misc > SUBDIRS-y += examples > SUBDIRS-y += hotplug > SUBDIRS-y += xentrace > +SUBDIRS-y += golang > +#FIXME: Have golang controlled by a configure variable > SUBDIRS-$(CONFIG_XCUTILS) += xcutils > SUBDIRS-$(CONFIG_X86) += firmware > SUBDIRS-y += console > @@ -311,6 +313,20 @@ subdir-install-debugger/gdbsx: .phony > subdir-all-debugger/gdbsx: .phony > $(MAKE) -C debugger/gdbsx all > > +subdir-all-golang/xenlight: .phony > + $(MAKE) -C golang all > + > +subdir-clean-golang/xenlight: .phony > + $(MAKE) -C golang clean > + > +subdir-install-golang/xenlight: .phony > + $(MAKE) -C golang install > + > +subdir-build-golang/xenlight: .phony > + $(MAKE) -C golang build > + > +subdir-distclean-golang/xenlight: .phony > + $(MAKE) -C golang distclean > > subdir-clean-debugger/kdd subdir-distclean-debugger/kdd: .phony > $(MAKE) -C debugger/kdd clean > diff --git a/tools/golang/Makefile b/tools/golang/Makefile > new file mode 100644 > index 0000000..eead226 > --- /dev/null > +++ b/tools/golang/Makefile > @@ -0,0 +1,33 @@ > +XEN_ROOT=$(CURDIR)/../.. > +include $(XEN_ROOT)/tools/Rules.mk > + > +BINARY = xenlight.a > +GO ?= go > + > +.PHONY: all > +all: build > + > +.PHONY: build > +build: xenlight/xenlight.a I think eventually we'll want to have a makefile in tools/golang which calls the makefiles in tools/golang/xenlight and other directories; but since we have only one at the moment, I think this is probably fine. > +.PHONY: install > +install: build > + if [ ! -f $(BINARY) ]; then \ > + mkdir $(GOPATH)/src/xenlight; \ > + $(INSTALL_PROG) xenlight/xenlight.go > $(GOPATH)/src/xenlight/xenlight.go; \ > + echo "this"; \ > + fi A couple of things. First, as we discussed on IRC, the if[] clause is not necessary -- make will automatically stop if one of the prerequisites isn't available. Secondly -- this is a bit confusing, but the "install" section of the parts of the tree that actually build things don't install files directly onto the host filesystem. Instead, they install into $(DESTDIR) (which is xen.git/dist/install), and then the final step of "make install" will copy everything from dist/install into the host filesystem. Also, you shouldn't do a plain mkdir, but should use $(INSTALL_DIR). And since the file you're installing is not going to be executed, you should use $(INSTALL_DATA). (I didn't realize that distinction existed until I looked at tools/libxl/Makefile). So this should look more like: install: build $(INSTALL_DIR) $(DESTDIR)$(GOLANG_SRC) $(INSTALL_DATA) xenlight/xenlight.go $(DESTDIR)$(GOLANG_SRC) And we want the package name to be "xenproject.org/xenlight", so that we can put up a repo at git://xenproject.org/xenlight and have people download it automatically. So GOLANG_SRC should be set by default to $(GOPATH)/src/xenproject.org/xenlight With that done I think we might be ready to add some golang code. :-) -George _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |