mlx4: Enable QP destruction
[akaros.git] / Makefile
index 7621e3c..b90d8e3 100644 (file)
--- a/Makefile
+++ b/Makefile
 # their Makelocal. This is useful, for example, to allow emacs to find the
 # correct file when errors are encountered using its builtin 'M-x compile'
 # command.
+VERSION = 0
+PATCHLEVEL = 1
+SUBLEVEL = 0
+EXTRAVERSION =
+VERNAME = Nanwan
+
+KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
+
+export KERNELVERSION VERNAME
+
 NO_PRINT_DIRECTORY ?= --no-print-directory
 
 # Save the ability to export the parent's original environment for future use
@@ -48,11 +58,19 @@ export_parent_env := $(shell export | sed 's/$$/;/')
 # Save the ability to clear the current environment for future use
 clear_current_env := for c in $$(env | cut -d '=' -f 1); do unset $$c; done;
 
+define export_user_variables
+       CROSS_COMPILE="$(CROSS_COMPILE)"\
+       CROSS_INCLUDE="$(XCC_TARGET_INCLUDE)"\
+       ROS_CFLAGS="$(CFLAGS_USER)"\
+       ROS_LDFLAGS="$(LDFLAGS_USER)"
+endef
+
 # Define a set of commands to reset the environment to the parent's environment
 # and then run a local make target
 define make_as_parent
        $(clear_current_env)\
        $(export_parent_env)\
+       $(call export_user_variables)\
        $(MAKE) $(NO_PRINT_DIRECTORY) $(1)
 endef
 
@@ -75,6 +93,10 @@ export AKAROS_ROOT
 # generate for non-kbuild targets
 OBJDIR ?= obj
 
+# Don't need to export these, since the Makelocal is included.
+KERNEL_OBJ := $(OBJDIR)/kern/akaros-kernel
+CMP_KERNEL_OBJ := $(KERNEL_OBJ).gz
+
 # Symlinks
 # =========================================================================
 # We have a few symlinks so that code can include <arch/whatever.h>.  This
@@ -367,7 +389,8 @@ export CFLAGS_KERNEL AFLAGS_KERNEL
 export NOSTDINC_FLAGS XCC_TARGET_ROOT XCC_TARGET_LIB XCC_TARGET_INCLUDE
 export KBUILD_BUILTIN KBUILD_CHECKSRC
 
-CFLAGS_USER += -O2 -std=gnu99 -fno-stack-protector -fgnu89-inline
+CFLAGS_USER += -O2 -std=gnu99 -fno-stack-protector -fgnu89-inline \
+               -Wsystem-headers
 CXXFLAGS_USER += -O2
 CFLAGS_USER_LIBS += -fPIC -static -fno-omit-frame-pointer -g
 
@@ -380,9 +403,8 @@ export CFLAGS_USER CXXFLAGS_USER CFLAGS_USER_LIBS
 # kernel build output.  Right now, it's only passed down to tests/
 dummy-1 := $(shell mkdir -p $(OBJDIR)/kern/)
 
-# Don't need to export these, since the Makelocal is included.
-KERNEL_OBJ := $(OBJDIR)/kern/akaros-kernel
-CMP_KERNEL_OBJ := $(KERNEL_OBJ).gz
+# Machinery to create the kernel build info source
+export BUILD_INFO_FILE
 
 # Since we're doing this outside of the dot-config part, some targets, such as
 # clean, won't read in our .config/auto.conf, and won't know about the
@@ -395,8 +417,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: ;
@@ -564,7 +587,7 @@ endif #ifeq ($(mixed-targets),1)
 # List all userspace directories here, and state any dependencies between them,
 # such as how pthread depends on parlib.
 
-user-dirs = parlib pthread benchutil iplib ndblib vmm
+user-dirs = parlib pthread benchutil iplib ndblib vmm perfmon
 benchutil: parlib
 pthread: parlib benchutil
 iplib: parlib
@@ -577,6 +600,7 @@ install-libs: $(user-dirs) symlinks cc-exists
 $(user-dirs):
        @$(MAKE) -C user/$@ DEPLIBS="$^" && $(MAKE) -C user/$@ install
 
+user: $(user-dirs)
 
 PHONY += userclean $(clean-user-dirs)
 clean-user-dirs := $(addprefix _clean_user_,$(user-dirs))
@@ -646,13 +670,28 @@ realclean: userclean mrproper doxyclean objclean
 # Bundled apps
 # =========================================================================
 
-PHONY += apps-install
-apps-install:
+app-dirs = tools/apps/snc
+tagged-app-dirs := $(subst /,__,$(app-dirs))
+app-dirs-install := $(addprefix _install_,$(tagged-app-dirs))
+app-dirs-clean := $(addprefix _clean_,$(tagged-app-dirs))
+
+PHONY += $(app-dirs-install) $(app-dirs-clean)
+
+$(app-dirs-install):
+       @$(MAKE) -C $(patsubst _install_%,%,$(subst __,/,$@)) install
+
+$(app-dirs-clean):
+       @$(MAKE) -C $(patsubst _clean_%,%,$(subst __,/,$@)) clean
+
+PHONY +=  apps-install
+apps-install: $(app-dirs-install)
        @$(call make_as_parent, -C tools/apps/busybox)
+       @$(call make_as_parent, -C tools/profile/perf install)
 
 PHONY += apps-clean
-apps-clean:
+apps-clean: $(app-dirs-clean)
        @$(call make_as_parent, -C tools/apps/busybox clean)
+       @$(call make_as_parent, -C tools/profile/perf clean)
 
 # Cross Compiler
 # =========================================================================