parlib: Use better fake mutexes for thread0
[akaros.git] / Makefile
index ad1a74c..6ac95d4 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -36,6 +36,9 @@
 #
 #      - There are a few other TODOs sprinkled throughout the makefile.
 
+# Number of make jobs to spawn.  Can override this in Makelocal
+MAKE_JOBS ?= $(shell expr `cat /proc/cpuinfo | grep processor | wc -l` - 1)
+
 # Allow people to override our setting of the --no-print-directory option in
 # 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'
@@ -71,14 +74,14 @@ define make_as_parent
        $(clear_current_env)\
        $(export_parent_env)\
        $(call export_user_variables)\
-       $(MAKE) $(NO_PRINT_DIRECTORY) $(1)
+       $(MAKE) $(NO_PRINT_DIRECTORY) -j $(MAKE_JOBS) $(1)
 endef
 
 # 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)
+MAKEFLAGS += -rR $(NO_PRINT_DIRECTORY) -j $(MAKE_JOBS)
 
 # That's our default target when none is given on the command line
 # This can be overriden with a Makelocal
@@ -122,7 +125,7 @@ endif
 
 PHONY += symlinks clean_symlinks
 clean_symlinks: objclean
-       @rm -f kern/include/arch kern/boot user/parlib/include/arch
+       @rm -f kern/include/arch kern/boot user/parlib/include/parlib/arch
 
 arch-link := $(notdir $(shell readlink kern/include/arch))
 valid-arches := $(notdir $(wildcard kern/arch/*))
@@ -140,7 +143,7 @@ symlinks: clean_symlinks
        @echo Making symlinks...
        $(Q)ln -fs ../arch/$(ARCH) kern/include/arch
        $(Q)ln -fs arch/$(ARCH)/boot kern/boot
-       $(Q)ln -fs $(ARCH) user/parlib/include/arch
+       $(Q)ln -fs $(ARCH) user/parlib/include/parlib/arch
        $(Q)$(MAKE) -f $(srctree)/Makefile clean
 
     else
@@ -369,6 +372,9 @@ CFLAGS_KERNEL += -m64 -g
 else
 CFLAGS_KERNEL += -m32 -gstabs
 endif
+ifeq ($(CONFIG_BETTER_BACKTRACE),y)
+CFLAGS_KERNEL += -fno-optimize-sibling-calls
+endif
 
 # TODO: do we need this, or can we rely on the compiler's defines?
 CFLAGS_KERNEL += -D$(ARCH)
@@ -390,7 +396,7 @@ 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 \
-               -Wsystem-headers
+               -Wsystem-headers -Werror
 CXXFLAGS_USER += -O2
 CFLAGS_USER_LIBS += -fPIC -static -fno-omit-frame-pointer -g
 
@@ -403,9 +409,6 @@ 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/)
 
-# 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
 # KFS_PATH.  Future rules related to KFS will have issues (mkdir with no
@@ -542,6 +545,7 @@ $(ext2_bdev_obj): $(ext2-bdev)
 quiet_cmd_link-akaros = LINK    $@
       cmd_link-akaros = $(CONFIG_SHELL) scripts/link-kernel.sh $@ \
                         kern/arch/$(ARCH)/$(KERNEL_LD) $(LDFLAGS_KERNEL) \
+                        --build-id=sha1 \
                         $(akaros-deps) $(gcc-lib) $(kern_cpio_obj) \
                         $(ext2_bdev_obj); \
                         $(ARCH_POST_LINK_CMD)
@@ -592,7 +596,7 @@ benchutil: parlib
 pthread: parlib benchutil
 iplib: parlib
 ndblib: iplib
-vmm: parlib
+vmm: parlib benchutil iplib ndblib
 
 PHONY += install-libs $(user-dirs)
 install-libs: $(user-dirs) symlinks cc-exists
@@ -670,7 +674,7 @@ realclean: userclean mrproper doxyclean objclean
 # Bundled apps
 # =========================================================================
 
-app-dirs = tools/apps/snc
+app-dirs =
 tagged-app-dirs := $(subst /,__,$(app-dirs))
 app-dirs-install := $(addprefix _install_,$(tagged-app-dirs))
 app-dirs-clean := $(addprefix _clean_,$(tagged-app-dirs))
@@ -686,12 +690,17 @@ $(app-dirs-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)
+       @$(call make_as_parent, -C tools/apps/ipconfig install)
+       @$(call make_as_parent, -C tools/dev-libs/elfutils install)
+       @$(call make_as_parent, -C tools/dev-util/perf install)
+       @$(call make_as_parent, -C tools/sys-apps/bash install)
 
 PHONY += 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)
+       @$(call make_as_parent, -C tools/apps/ipconfig clean)
+       @$(call make_as_parent, -C tools/dev-libs/elfutils clean)
+       @$(call make_as_parent, -C tools/dev-util/perf clean)
 
 # Cross Compiler
 # =========================================================================
@@ -729,9 +738,9 @@ xcc-upgrade: xcc
        @$(MAKE) userclean
        @$(MAKE) install-libs
        @$(MAKE) testclean utestclean
-       @$(MAKE) tests utest
        @$(call make_as_parent, apps-clean)
        @$(call make_as_parent, apps-install)
+       @$(MAKE) tests utest
        @$(MAKE) fill-kfs
        @$(MAKE) akaros-kernel