CPPFLAGS := $(V3_INCLUDE) -D__V3VEE__
+#
+# We want no-strict-aliasing here whether or not the target kernel
+# has it configued. See Linus's rant about gcc's "if the standard
+# says we can do anything, we will do the wrong thing" behavior with
+# regard to this option
+#
CFLAGS := -fno-stack-protector -Wall -Werror -mno-red-zone -fno-common \
+ -fno-strict-aliasing -ffreestanding \
$(call cc-option, -Wno-unused-but-set-variable,)
DEFAULT_EXTRA_TARGETS=
endif
+ifdef V3_CONFIG_NAUTILUS
+DEFAULT_EXTRA_TARGETS=nautilus
+else
+DEFAULT_EXTRA_TARGETS=
+endif
+
+
# The all: target is the default when no target is given on the
# command line.
# This allow a user to issue only 'make' to build a kernel including modules
ifdef V3_CONFIG_LINUX
CFLAGS += -mcmodel=kernel
else
+ifdef V3_CONFIG_NAUTILUS
+CFLAGS += -O2 \
+ -fno-omit-frame-pointer \
+ -ffreestanding \
+ -fno-stack-protector \
+ -fno-strict-aliasing \
+ -mno-red-zone \
+ -mcmodel=large
+LDFLAGS += -z max-page-size=0x1000
+else
CFLAGS += -fPIC
endif
+endif
ifdef V3_CONFIG_FRAME_POINTER
CFLAGS += -fno-omit-frame-pointer $(call cc-option,-fno-optimize-sibling-calls,)
# disable pointer signedness warnings in gcc 4.0
CFLAGS += $(call cc-option,-Wno-pointer-sign,)
+CFLAGS += -O2
+
# Default kernel image to build when no specific target is given.
# KBUILD_IMAGE may be overruled on the commandline or
# set in the environment
linux_module: linux_module/v3vee.ko
+nautilus/libnautilus.a: nautilus/*.c nautilus/*.h libv3vee.a
+ cd nautilus/ && make
+ cp nautilus/libnautilus.a .
+
+nautilus: nautilus/libnautilus.a
palacios.asm: palacios