I am not entirely happy with that, though I do not have a clear idea in mind now, for replacement. Now we have the dependencies for a app/userlib listed in the main makefile, with the main makefile using make -C to call the child. Ideally, the main makefile should include the child, so that the child can be a single point definition for targets and dependencies.
On Mon, Dec 21, 2015 at 9:57 AM, Barret Rhoden <[email protected]> wrote: > Merged to master at f945c3bf7870..548361ec318c (from, to] > > You can see the entire diff with 'git diff' or at > https://github.com/brho/akaros/compare/f945c3bf7870...548361ec318c > > > > On 2015-12-15 at 15:50 "'Davide Libenzi' via Akaros" > <[email protected]> wrote: > > For now I only used it for snc. Plan to use it for perf as well. > > Did not touch kprof2perf, as it is going away in the perf branch. > > > > > > > https://github.com/brho/akaros/compare/master...dlibenzi:makefrag_user_app > > > > The following changes since commit > > c8a6943551e4eb433c058e258bca0a99e713d581: > > > > Rename backtrace_kframe -> backtrace_hwtf [2/2] (2015-12-10 11:26:40 > > -0500) > > > > are available in the git repository at: > > > > [email protected]:dlibenzi/akaros makefrag_user_app > > > > for you to fetch changes up to > > 8b262d2dde201f186115e7bfddd09d59df1aed7f: > > > > Created a new Makefrag-user-app helper for building binaries > > (2015-12-15 15:46:36 -0800) > > > > ---------------------------------------------------------------- > > Davide Libenzi (1): > > Created a new Makefrag-user-app helper for building binaries > > > > Makefile | 7 +++--- > > tools/apps/snc/Makefile | 41 ++------------------------------- > > user/Makefrag-user-app | 61 > > +++++++++++++++++++++++++++++++++++++++++++++++++ > > 3 files changed, 67 insertions(+), 42 deletions(-) > > create mode 100644 user/Makefrag-user-app > > > > diff --git a/Makefile b/Makefile > > index 8defe95..d0de66f 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -404,8 +404,9 @@ kfs-paths := kern/kfs > > endif > > > > FIRST_KFS_PATH = $(firstword $(kfs-paths)) > > +ABS_KFS_PATH = $(abspath $(FIRST_KFS_PATH)) > > > > -export OBJDIR FIRST_KFS_PATH > > +export OBJDIR FIRST_KFS_PATH ABS_KFS_PATH > > > > # Avoiding implicit rules > > $(srctree)/Makelocal: ; > > @@ -659,13 +660,13 @@ PHONY += apps-install > > apps-install: > > @$(call make_as_parent, -C tools/apps/busybox) > > @$(call make_as_parent, -C tools/profile/kprof2perf install) > > - @$(call make_as_parent, -C tools/apps/snc install) > > + @$(MAKE) -C tools/apps/snc DEPLIBS="$^" && $(MAKE) -C tools/apps/snc > > install > > > > PHONY += apps-clean > > apps-clean: > > @$(call make_as_parent, -C tools/apps/busybox clean) > > @$(call make_as_parent, -C tools/profile/kprof2perf clean) > > - @$(call make_as_parent, -C tools/apps/snc clean) > > + @$(MAKE) -C tools/apps/snc clean > > > > # Cross Compiler > > # > > ========================================================================= > > diff --git a/tools/apps/snc/Makefile b/tools/apps/snc/Makefile index > > 2678e98..85eeecd 100644 --- a/tools/apps/snc/Makefile > > +++ b/tools/apps/snc/Makefile > > @@ -1,39 +1,2 @@ > > -# Do not: > > -# o use make's built-in rules and variables > > -# (this increases performance and avoids hard-to-debug behaviour); > > -# o print "Entering directory ..."; > > -MAKEFLAGS += -rR --no-print-directory > > - > > -# Overrides > > -BUILDDIR ?= $(shell pwd) > > -AKAROS_ROOT ?= $(BUILDDIR)/../../.. > > -MAKE_JOBS ?= 4 > > -KFS_ROOT ?= $(AKAROS_ROOT)/kern/kfs > > - > > -XCC = $(CROSS_COMPILE)gcc > > - > > - > > -PHONY := all > > -all: snc > > - > > - > > -PHONY += snc > > -snc: snc.c > > - @$(XCC) $(ROS_CFLAGS) $(ROS_LDFLAGS) -o snc snc.c > > - > > - > > -PHONY += install > > -install: all > > - @cp snc $(KFS_ROOT)/bin/snc > > - > > - > > -PHONY += clean > > -clean: > > - @rm -f snc > > - > > - > > -PHONY += mrproper > > -mrproper: clean > > - > > - > > -.PHONY: $(PHONY) > > +APPNAME = snc > > +include ../../../user/Makefrag-user-app > > diff --git a/user/Makefrag-user-app b/user/Makefrag-user-app > > new file mode 100644 > > index 0000000..64dac87 > > --- /dev/null > > +++ b/user/Makefrag-user-app > > @@ -0,0 +1,61 @@ > > +# Makefrag for most user libraries > > +# They must set APPNAME, then include this fragment > > +# e.g. APPNAME = perf > > + > > +ARCH ?= none # catch bugs > > +SRCDIR ?= > > +INCDIR = $(shell if [ -d "$(SRCDIR)include" ]; then echo > > "$(SRCDIR)include";\ > > + else echo -n ""; fi) > > + > > +OBJDIR ?= $(SRCDIR)obj > > +# DEPLIBS passed in from the top-level Makefile > > +DEPLIBS := $(DEPLIBS) > > +DEPLIBAS = $(patsubst %, $(XCC_TARGET_LIB)/lib%.a, $(DEPLIBS)) > > + > > +ifneq ($(INCDIR),) > > + INCS = -I$(INCDIR) > > +endif > > + > > +FINALAPP = $(OBJDIR)/$(APPNAME) > > +FINALAPP-INSTALL = $(ABS_KFS_PATH)/bin/$(APPNAME) > > + > > +uc = $(shell echo $(1) | tr a-z A-Z) > > + > > +APPUCNAME := $(call uc, $(APPNAME)) > > +HEADERS := $(shell find $(INCDIR) -name "*.h") > > +CFILES := $(wildcard $(SRCDIR)*.c) > > +CFILES += $(wildcard $(SRCDIR)$(ARCH)/*.c) > > +SFILES := $(wildcard $(SRCDIR)$(ARCH)/*.S) > > +OBJS := $(patsubst %.c, $(OBJDIR)/%.o, $(CFILES)) \ > > + $(patsubst %.S, $(OBJDIR)/%.o, $(SFILES)) > > + > > +all: $(FINALAPP) > > + @: > > + > > +$(OBJDIR)/$(ARCH)/%.o: $(SRCDIR)$(ARCH)/%.S $(HEADERS) $(DEPLIBAS) > > + @echo + as [$(APPUCNAME)] $< > > + @mkdir -p $(@D) > > + $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $< > > + > > +$(OBJDIR)/%.o: $(SRCDIR)%.c $(HEADERS) $(DEPLIBAS) > > + @echo + cc [$(APPUCNAME)] $< > > + @mkdir -p $(@D) > > + $(Q)$(CC) $(CFLAGS_USER) $(INCS) -o $@ -c $< > > + > > +$(FINALAPP): $(OBJS) > > + @echo + ld [$(APPUCNAME)] $@ > > + @mkdir -p $(@D) > > + $(Q)$(CC) -o $@ $(OBJS) $(DEPLIBAS) > > + > > +# Allow three different patterns for installing include files > > +$(FINALAPP-INSTALL): $(FINALAPP) > > + @echo + in [$(APPUCNAME)] $< $@ > > + @cp $< $@ > > + > > +install: $(FINALAPP-INSTALL) > > + @echo > /dev/null > > + > > +clean: > > + @echo + clean [$(APPUCNAME)] > > + $(Q)rm -rf $(FINALAPP) > > + $(Q)rm -rf $(OBJDIR) > > > > -- > You received this message because you are subscribed to the Google Groups > "Akaros" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Akaros" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. For more options, visit https://groups.google.com/d/optout.
