xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Wei Liu <wei.liu2@citrix.com>
To: Ronald Rojas <ronladred@gmail.com>
Cc: wei.liu2@citrix.com, dunlapg@umich.edu,
	ian.jackson@eu.citrix.com, george.dunlap@citrix.com,
	xen-devel@lists.xen.org
Subject: Re: [PATCH RFC] tools/xenlight: Create xenlight Makefile
Date: Tue, 29 Nov 2016 07:19:08 +0000	[thread overview]
Message-ID: <20161129071908.GL11640@citrix.com> (raw)
In-Reply-To: <1480353483-12643-2-git-send-email-ronladred@gmail.com>

On Mon, Nov 28, 2016 at 12:18:03PM -0500, Ronald Rojas wrote:
> Created basic Makfele for the Golang xenlight

Makefile.

> project so that the project is built and
> installed. A template template is alo added.

Duplicated "template".

> ---
>  tools/Makefile                    | 15 +++++++++++++++
>  tools/golang/xenlight/Makefile    | 29 +++++++++++++++++++++++++++++
>  tools/golang/xenlight/xenlight.go |  7 +++++++
>  3 files changed, 51 insertions(+)
>  create mode 100644 tools/golang/xenlight/Makefile
>  create mode 100644 tools/golang/xenlight/xenlight.go
> 
> diff --git a/tools/Makefile b/tools/Makefile
> index 71515b4..b89f06b 100644
> --- a/tools/Makefile
> +++ b/tools/Makefile
> @@ -11,6 +11,7 @@ SUBDIRS-y += misc
>  SUBDIRS-y += examples
>  SUBDIRS-y += hotplug
>  SUBDIRS-y += xentrace
> +SUBDIRS-y += golang/xenlight

This shouldn't be built unconditionally.

Please use configure to probe for go compiler first.

"GNU autotools" is the term to google for. But I guess it wouldn't be
too hard to follow existing examples.

Don't hesitate to ask questions.

>  SUBDIRS-$(CONFIG_XCUTILS) += xcutils
>  SUBDIRS-$(CONFIG_X86) += firmware
>  SUBDIRS-y += console
> @@ -311,6 +312,20 @@ subdir-install-debugger/gdbsx: .phony
>  subdir-all-debugger/gdbsx: .phony
>  	$(MAKE) -C debugger/gdbsx all
>  
> +subdir-all-golang/xenlight: .phony
> +	$(MAKE) -C golang/xenlight all
> +
> +subdir-clean-golang/xenlight: .phony
> +	$(MAKE) -C golang/xenlight clean
> +
> +subdir-install-golang/xenlight: .phony
> +	$(MAKE) -C golang/xenlight install
> +
> +subdir-build-golang/xenlight: .phony
> +	$(MAKE) -C golang/xenlight build
> +
> +subdir-distclean-golang/xenlight: .phony
> +	$(MAKE) -C golang/xenlight distclean
>  

I think I would prefer to organise this like python bindings. That is,
to have a dedicated Makefile under $LANG (python or golang) directory.

What do you think?

>  subdir-clean-debugger/kdd subdir-distclean-debugger/kdd: .phony
>  	$(MAKE) -C debugger/kdd clean
> diff --git a/tools/golang/xenlight/Makefile b/tools/golang/xenlight/Makefile
> new file mode 100644
> index 0000000..c723c1d
> --- /dev/null
> +++ b/tools/golang/xenlight/Makefile
> @@ -0,0 +1,29 @@
> +XEN_ROOT=$(CURDIR)/../../..
> +include $(XEN_ROOT)/tools/Rules.mk
> +
> +BINARY = xenlightgo
> +GO = go

This should probably be:

  GO ?= go

> +
> +.PHONY: all
> +all: build
> +
> +.PHONY: build
> +build: xenlight
> +
> +.PHONY: install
> +install: build
> +	[ -f $(BINARY) ] || $(INSTALL_PROG) xenlight.go $(DESTDIR)$(bindir)
> +
> +.PHONY: clean
> +clean:
> +	$(RM) $(BINARY)

If there are other intermediate files generated, they should be deleted,
too.

> +
> +.PHONY: distclean
> +distclean: clean
> +
> +
> +xenlight: xenlight.go

xenlightgo: xenlight.go and delete BINARY

or

$(BINARY): xenlight.go

> +	$(GO) build -o $(BINARY) xenlight.go

Use $@ instead of $(BINARY).  Use $< instead of xenlight.go.

But before we spend too much time on details, let's sort out some higher
level issues first. My golang knowledge is rather rusted, please bear
with me. :-)

I have a question: how does golang build a package that has multiple
files? Presumably it has some sort of file that acts like Makefile. If
so, you should probably introduce that now and use that to build this
package.

Otherwise in order to avoid repetition you probably need something like
the %.o: %.c rule in tools/Rules.mk.

If you need more information about GNU Make, please use `info make` on
your system or ask questions here.

> +
> +
> +-include $(DEPS)
> diff --git a/tools/golang/xenlight/xenlight.go b/tools/golang/xenlight/xenlight.go
> new file mode 100644
> index 0000000..50e8d8d
> --- /dev/null
> +++ b/tools/golang/xenlight/xenlight.go
> @@ -0,0 +1,7 @@
> +package main
> +
> +import "fmt"
> +
> +func main() {
> +	fmt.Println("vim-go")

vim-go ?

> +}
> -- 
> 2.7.4
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
https://lists.xen.org/xen-devel

  reply	other threads:[~2016-11-29  7:19 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-28 17:18 (no subject) Ronald Rojas
2016-11-28 17:18 ` [PATCH RFC] tools/xenlight: Create xenlight Makefile Ronald Rojas
2016-11-29  7:19   ` Wei Liu [this message]
2016-11-29 22:40     ` George Dunlap
2016-11-30  1:30   ` George Dunlap
2016-12-01 19:18     ` Ronald Rojas
2016-12-15 23:20 Ronald Rojas
2016-12-16  3:20 ` Doug Goldstein
2016-12-16  4:28   ` George Dunlap
2016-12-16  4:27 ` George Dunlap
2016-12-22  0:34   ` Ronald Rojas
2016-12-22 15:26 Ronald Rojas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20161129071908.GL11640@citrix.com \
    --to=wei.liu2@citrix.com \
    --cc=dunlapg@umich.edu \
    --cc=george.dunlap@citrix.com \
    --cc=ian.jackson@eu.citrix.com \
    --cc=ronladred@gmail.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).