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 |
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
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 --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)
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