diff mbox series

[XEN,22/57] tools/console: have one Makefile per program/directory

Message ID 20211206170241.13165-23-anthony.perard@citrix.com (mailing list archive)
State New, archived
Headers show
Series Toolstack build system improvement, toward non-recursive makefiles | expand

Commit Message

Anthony PERARD Dec. 6, 2021, 5:02 p.m. UTC
Sources of both xenconsoled and xenconsole are already separated into
different directory and don't share anything in common. Having two
different Makefile means it's easier to deal with *FLAGS.

Some common changes:
Rename $(BIN) to $(TARGETS), this will be useful later.
Stop removing *.so *.rpm *.a as they aren't created here.
Use $(OBJS-y) to list objects.
Update $(CFLAGS) for the directory rather than a single object.

daemon:
    Remove the need for $(LDLIBS_xenconsoled), use $(LDLIBS) instead.
    Remove the need for $(CONSOLE_CFLAGS-y) and use $(CFLAGS-y)
	instead.

client:
    Remove the unused $(LDLIBS_xenconsole)

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
 .gitignore                    |  4 +--
 tools/console/Makefile        | 49 +++-------------------------------
 tools/console/client/Makefile | 39 +++++++++++++++++++++++++++
 tools/console/daemon/Makefile | 50 +++++++++++++++++++++++++++++++++++
 4 files changed, 94 insertions(+), 48 deletions(-)
 create mode 100644 tools/console/client/Makefile
 create mode 100644 tools/console/daemon/Makefile

Comments

Andrew Cooper Dec. 16, 2021, 5:26 p.m. UTC | #1
On 06/12/2021 17:02, Anthony PERARD wrote:
> Sources of both xenconsoled and xenconsole are already separated into
> different directory and don't share anything in common. Having two
> different Makefile means it's easier to deal with *FLAGS.
>
> Some common changes:
> Rename $(BIN) to $(TARGETS), this will be useful later.
> Stop removing *.so *.rpm *.a as they aren't created here.
> Use $(OBJS-y) to list objects.
> Update $(CFLAGS) for the directory rather than a single object.
>
> daemon:
>     Remove the need for $(LDLIBS_xenconsoled), use $(LDLIBS) instead.
>     Remove the need for $(CONSOLE_CFLAGS-y) and use $(CFLAGS-y)
> 	instead.
>
> client:
>     Remove the unused $(LDLIBS_xenconsole)
>
> Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
> ---
>  .gitignore                    |  4 +--
>  tools/console/Makefile        | 49 +++-------------------------------
>  tools/console/client/Makefile | 39 +++++++++++++++++++++++++++
>  tools/console/daemon/Makefile | 50 +++++++++++++++++++++++++++++++++++
>  4 files changed, 94 insertions(+), 48 deletions(-)
>  create mode 100644 tools/console/client/Makefile
>  create mode 100644 tools/console/daemon/Makefile
>
> diff --git a/.gitignore b/.gitignore
> index b39b996718..c31fa9b841 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -159,8 +159,8 @@ tools/libs/util/libxenutil.map
>  tools/libs/vchan/headers.chk
>  tools/libs/vchan/libxenvchan.map
>  tools/libs/vchan/xenvchan.pc
> -tools/console/xenconsole
> -tools/console/xenconsoled
> +tools/console/client/xenconsole
> +tools/console/daemon/xenconsoled

$ git ls-files -- :/ | grep gitignore
../.gitignore
../tools/fuzz/cpu-policy/.gitignore
../tools/libs/.gitignore
../tools/misc/.gitignore
../tools/tests/cpu-policy/.gitignore
../tools/tests/resource/.gitignore
../tools/tests/tsx/.gitignore
../tools/tests/vhpet/.gitignore
../tools/tests/xenstore/.gitignore
tools/kconfig/.gitignore
xsm/flask/.gitignore


We're starting to use per-dir gitignores, because it has far less
problematic behaviour for code movement.

I think we ought to take this opportunity to clean things up for the better.

> diff --git a/tools/console/client/Makefile b/tools/console/client/Makefile
> new file mode 100644
> index 0000000000..44176c6d93
> --- /dev/null
> +++ b/tools/console/client/Makefile
> @@ -0,0 +1,39 @@
> +XEN_ROOT=$(CURDIR)/../../..
> +include $(XEN_ROOT)/tools/Rules.mk
> +
> +CFLAGS += -Werror

-Werror really ought to come from somewhere common, seeing as we expect
it to be unilaterally set.

~Andrew
Anthony PERARD Dec. 21, 2021, 5:25 p.m. UTC | #2
On Thu, Dec 16, 2021 at 05:26:49PM +0000, Andrew Cooper wrote:
> On 06/12/2021 17:02, Anthony PERARD wrote:
> > Sources of both xenconsoled and xenconsole are already separated into
> > different directory and don't share anything in common. Having two
> > different Makefile means it's easier to deal with *FLAGS.
> >
> > Some common changes:
> > Rename $(BIN) to $(TARGETS), this will be useful later.
> > Stop removing *.so *.rpm *.a as they aren't created here.
> > Use $(OBJS-y) to list objects.
> > Update $(CFLAGS) for the directory rather than a single object.
> >
> > daemon:
> >     Remove the need for $(LDLIBS_xenconsoled), use $(LDLIBS) instead.
> >     Remove the need for $(CONSOLE_CFLAGS-y) and use $(CFLAGS-y)
> > 	instead.
> >
> > client:
> >     Remove the unused $(LDLIBS_xenconsole)
> >
> > Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
> > ---
> >  .gitignore                    |  4 +--
> >  tools/console/Makefile        | 49 +++-------------------------------
> >  tools/console/client/Makefile | 39 +++++++++++++++++++++++++++
> >  tools/console/daemon/Makefile | 50 +++++++++++++++++++++++++++++++++++
> >  4 files changed, 94 insertions(+), 48 deletions(-)
> >  create mode 100644 tools/console/client/Makefile
> >  create mode 100644 tools/console/daemon/Makefile
> >
> > diff --git a/.gitignore b/.gitignore
> > index b39b996718..c31fa9b841 100644
> > --- a/.gitignore
> > +++ b/.gitignore
> > @@ -159,8 +159,8 @@ tools/libs/util/libxenutil.map
> >  tools/libs/vchan/headers.chk
> >  tools/libs/vchan/libxenvchan.map
> >  tools/libs/vchan/xenvchan.pc
> > -tools/console/xenconsole
> > -tools/console/xenconsoled
> > +tools/console/client/xenconsole
> > +tools/console/daemon/xenconsoled
> 
> $ git ls-files -- :/ | grep gitignore
> ../.gitignore
> ../tools/fuzz/cpu-policy/.gitignore
> ../tools/libs/.gitignore
> ../tools/misc/.gitignore
> ../tools/tests/cpu-policy/.gitignore
> ../tools/tests/resource/.gitignore
> ../tools/tests/tsx/.gitignore
> ../tools/tests/vhpet/.gitignore
> ../tools/tests/xenstore/.gitignore
> tools/kconfig/.gitignore
> xsm/flask/.gitignore
> 
> 
> We're starting to use per-dir gitignores, because it has far less
> problematic behaviour for code movement.

You mean "we", I don't think everyone agree we that yet ;-). They aren't
any "xen/.gitignore" yet, despite me trying to add one at some point.

> I think we ought to take this opportunity to clean things up for the better.

Sounds good to me, I'll make the change.

> > diff --git a/tools/console/client/Makefile b/tools/console/client/Makefile
> > new file mode 100644
> > index 0000000000..44176c6d93
> > --- /dev/null
> > +++ b/tools/console/client/Makefile
> > @@ -0,0 +1,39 @@
> > +XEN_ROOT=$(CURDIR)/../../..
> > +include $(XEN_ROOT)/tools/Rules.mk
> > +
> > +CFLAGS += -Werror
> 
> -Werror really ought to come from somewhere common, seeing as we expect
> it to be unilaterally set.

Yes. I think I'll also look at having "./configure --disable-werror" or
similar so -Werror could be easly disable, by for example someone
building an ancient release and not wanting to deal with warnings.

Thanks,
diff mbox series

Patch

diff --git a/.gitignore b/.gitignore
index b39b996718..c31fa9b841 100644
--- a/.gitignore
+++ b/.gitignore
@@ -159,8 +159,8 @@  tools/libs/util/libxenutil.map
 tools/libs/vchan/headers.chk
 tools/libs/vchan/libxenvchan.map
 tools/libs/vchan/xenvchan.pc
-tools/console/xenconsole
-tools/console/xenconsoled
+tools/console/client/xenconsole
+tools/console/daemon/xenconsoled
 tools/debugger/gdb/gdb-6.2.1-linux-i386-xen/*
 tools/debugger/gdb/gdb-6.2.1/*
 tools/debugger/gdb/gdb-6.2.1.tar.bz2
diff --git a/tools/console/Makefile b/tools/console/Makefile
index 207c04c9cd..63bd2ac302 100644
--- a/tools/console/Makefile
+++ b/tools/console/Makefile
@@ -1,50 +1,7 @@ 
 XEN_ROOT=$(CURDIR)/../..
 include $(XEN_ROOT)/tools/Rules.mk
 
-CFLAGS  += -Werror
+SUBDIRS-y := daemon client
 
-CFLAGS  += $(CFLAGS_libxenctrl)
-CFLAGS  += $(CFLAGS_libxenstore)
-LDLIBS += $(LDLIBS_libxenctrl)
-LDLIBS += $(LDLIBS_libxenstore)
-LDLIBS += $(SOCKET_LIBS)
-
-LDLIBS_xenconsoled += $(UTIL_LIBS)
-LDLIBS_xenconsoled += -lrt
-CONSOLE_CFLAGS-$(CONFIG_ARM) = -DCONFIG_ARM
-
-BIN      = xenconsoled xenconsole
-
-.PHONY: all
-all: $(BIN)
-
-.PHONY: clean
-clean:
-	$(RM) *.a *.so *.o *.rpm $(BIN) $(DEPS_RM)
-	$(RM) client/*.o daemon/*.o
-
-.PHONY: distclean
-distclean: clean
-
-daemon/main.o: CFLAGS += -include $(XEN_ROOT)/tools/config.h
-daemon/io.o: CFLAGS += $(CFLAGS_libxenevtchn) $(CFLAGS_libxengnttab) $(CFLAGS_libxenforeignmemory) $(CONSOLE_CFLAGS-y)
-xenconsoled: $(patsubst %.c,%.o,$(wildcard daemon/*.c))
-	$(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(LDLIBS_libxenevtchn) $(LDLIBS_libxengnttab) $(LDLIBS_libxenforeignmemory) $(LDLIBS_xenconsoled) $(APPEND_LDFLAGS)
-
-client/main.o: CFLAGS += -include $(XEN_ROOT)/tools/config.h
-xenconsole: $(patsubst %.c,%.o,$(wildcard client/*.c))
-	$(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(LDLIBS_xenconsole) $(APPEND_LDFLAGS)
-
-.PHONY: install
-install: $(BIN)
-	$(INSTALL_DIR) $(DESTDIR)/$(sbindir)
-	$(INSTALL_PROG) xenconsoled $(DESTDIR)/$(sbindir)
-	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
-	$(INSTALL_PROG) xenconsole $(DESTDIR)$(LIBEXEC_BIN)
-
-.PHONY: uninstall
-uninstall:
-	rm -f $(DESTDIR)$(LIBEXEC_BIN)/xenconsole
-	rm -f $(DESTDIR)$(sbindir)/xenconsoled
-
--include $(DEPS_INCLUDE)
+.PHONY: all clean install distclean uninstall
+all clean install distclean uninstall: %: subdirs-%
diff --git a/tools/console/client/Makefile b/tools/console/client/Makefile
new file mode 100644
index 0000000000..44176c6d93
--- /dev/null
+++ b/tools/console/client/Makefile
@@ -0,0 +1,39 @@ 
+XEN_ROOT=$(CURDIR)/../../..
+include $(XEN_ROOT)/tools/Rules.mk
+
+CFLAGS += -Werror
+CFLAGS += $(CFLAGS_libxenctrl)
+CFLAGS += $(CFLAGS_libxenstore)
+CFLAGS += -include $(XEN_ROOT)/tools/config.h
+
+LDLIBS += $(LDLIBS_libxenctrl)
+LDLIBS += $(LDLIBS_libxenstore)
+LDLIBS += $(SOCKET_LIBS)
+
+OBJS-y := main.o
+
+TARGETS := xenconsole
+
+.PHONY: all
+all: $(TARGETS)
+
+xenconsole: $(OBJS-y)
+	$(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(APPEND_LDFLAGS)
+
+.PHONY: install
+install: all
+	$(INSTALL_DIR) $(DESTDIR)$(LIBEXEC_BIN)
+	$(INSTALL_PROG) xenconsole $(DESTDIR)$(LIBEXEC_BIN)
+
+.PHONY: uninstall
+uninstall:
+	rm -f $(DESTDIR)$(LIBEXEC_BIN)/xenconsole
+
+.PHONY: clean
+clean:
+	$(RM) *.o $(TARGETS) $(DEPS_RM)
+
+.PHONY: distclean
+distclean: clean
+
+-include $(DEPS_INCLUDE)
diff --git a/tools/console/daemon/Makefile b/tools/console/daemon/Makefile
new file mode 100644
index 0000000000..0f004f0b14
--- /dev/null
+++ b/tools/console/daemon/Makefile
@@ -0,0 +1,50 @@ 
+XEN_ROOT=$(CURDIR)/../../..
+include $(XEN_ROOT)/tools/Rules.mk
+
+CFLAGS += -Werror
+CFLAGS += $(CFLAGS_libxenctrl)
+CFLAGS += $(CFLAGS_libxenstore)
+CFLAGS += $(CFLAGS_libxenevtchn)
+CFLAGS += $(CFLAGS_libxengnttab)
+CFLAGS += $(CFLAGS_libxenforeignmemory)
+CFLAGS-$(CONFIG_ARM) += -DCONFIG_ARM
+CFLAGS += -include $(XEN_ROOT)/tools/config.h
+
+LDLIBS += $(LDLIBS_libxenctrl)
+LDLIBS += $(LDLIBS_libxenstore)
+LDLIBS += $(LDLIBS_libxenevtchn)
+LDLIBS += $(LDLIBS_libxengnttab)
+LDLIBS += $(LDLIBS_libxenforeignmemory)
+LDLIBS += $(SOCKET_LIBS)
+LDLIBS += $(UTIL_LIBS)
+LDLIBS += -lrt
+
+OBJS-y := main.o
+OBJS-y += io.o
+OBJS-y += utils.o
+
+TARGETS := xenconsoled
+
+.PHONY: all
+all: $(TARGETS)
+
+xenconsoled: $(OBJS-y)
+	$(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) $(APPEND_LDFLAGS)
+
+.PHONY: install
+install: all
+	$(INSTALL_DIR) $(DESTDIR)/$(sbindir)
+	$(INSTALL_PROG) xenconsoled $(DESTDIR)/$(sbindir)
+
+.PHONY: uninstall
+uninstall:
+	rm -f $(DESTDIR)$(sbindir)/xenconsoled
+
+.PHONY: clean
+clean:
+	$(RM) *.o $(TARGETS) $(DEPS_RM)
+
+.PHONY: distclean
+distclean: clean
+
+-include $(DEPS_INCLUDE)