Kernel now halts when there is no work
[akaros.git] / GNUmakefile
index 4242bba..39ffd74 100644 (file)
@@ -16,12 +16,12 @@ endif
 ifeq ($(TARGET_ARCH),)
 busted:
        @echo "You must initially specify your target in the form TARGET_ARCH=<target>"
-       @echo "Current valid values for TARGET_ARCH are 'i686' and 'sparc'"
+       @echo "Current valid values for TARGET_ARCH are 'i686', 'sparc', and 'riscv'."
        @echo "Subsequent calls for the same target can be made by simply invoking 'make'"
 endif
 
-$(TARGET_ARCH):
-       @if [ "$(ARCH_LINK)" != "$@" ];\
+real-$(TARGET_ARCH):
+       @if [ "$(ARCH_LINK)" != "$(TARGET_ARCH)" ];\
        then\
          $(MAKE) realclean;\
          $(MAKE) realall -j $(MAKE_JOBS);\
@@ -29,6 +29,9 @@ $(TARGET_ARCH):
          $(MAKE) all -j $(MAKE_JOBS);\
        fi
 
+# So all recursive calls to make know what the target arch is
+MAKE += TARGET_ARCH=$(TARGET_ARCH)
+
 ############################################################################# 
 ########## Beginning of the guts of the real Makefile #######################
 ############################################################################# 
@@ -127,9 +130,11 @@ endif
 # -fno-builtin is required to avoid refs to undefined functions in the kernel.
 # Only optimize to -O1 to discourage inlining, which complicates backtraces.
 KERN_CFLAGS += -D$(TARGET_ARCH) $(EXTRAARGS)
-KERN_CFLAGS += -O2 -pipe -MD -fno-builtin -gstabs
+KERN_CFLAGS += -O2 -pipe -MD -fno-builtin -gstabs -static
 KERN_CFLAGS += -Wall -Wno-format -Wno-unused -fno-strict-aliasing
 KERN_CFLAGS += -nostdinc -I$(dir $(GCC_LIB))/include
+# Our backtraces need the frame pointer
+KERN_CFLAGS += -fno-omit-frame-pointer
 
 # Universal loader flags
 LDFLAGS := -nostdlib
@@ -164,9 +169,13 @@ realtests: $(TESTS_EXECS)
 #      @mkdir -p fs/$(TARGET_ARCH)/tests
 #      cp -R $(OBJDIR)/$(TESTS_DIR)/* $(TOP_DIR)/fs/$(TARGET_ARCH)/tests
 
-USER_LIBS = parlib pthread c3po
+USER_LIBS = parlib pthread
+# for now, c3po can't be built for non-i686
+ifeq ($(TARGET_ARCH),i686)
+USER_LIBS += c3po
+endif
 install-libs: 
-       @for i in $(USER_LIBS) ; do \
+       @for i in $(USER_LIBS) ; do     \
                cd user/$$i;            \
                $(MAKE);                \
                $(MAKE) install;        \
@@ -176,6 +185,7 @@ install-libs:
 fill-kfs: install-libs
        @rm -rf $(FIRST_INITRAMFS_PATH)/lib
        @cp -R $(GCC_ROOT)/$(TARGET_ARCH)-ros/lib $(FIRST_INITRAMFS_PATH)
+endif
 
 userclean:
        @for i in $(USER_LIBS) ; do \
@@ -185,7 +195,6 @@ userclean:
        done
        @rm -rf $(OBJDIR)/$(TESTS_DIR)
 .PHONY: tests
-endif
 
 # Eliminate default suffix rules
 .SUFFIXES: