X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=Makefile;h=8e51d8f8947df774b37c5b1067ecf8b64a145326;hb=66c338acdc299d7496da982999ff3cd3828e442a;hp=22b56bb0ee411d3b82cd3fcada1ac7f4f452b7d2;hpb=fc840af877d7b069a007fcc1eca88e31f5ec86f6;p=palacios.git diff --git a/Makefile b/Makefile index 22b56bb..8e51d8f 100644 --- a/Makefile +++ b/Makefile @@ -298,7 +298,14 @@ V3_INCLUDE := -Ipalacios/include \ 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,) @@ -438,6 +445,7 @@ devices-y := palacios/src/devices/ interfaces-y := palacios/src/interfaces/ extensions-y := palacios/src/extensions/ vnet-y := palacios/src/vnet/ +gears-y := palacios/src/gears/ modules-y := modules/ @@ -475,6 +483,13 @@ else 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 @@ -485,8 +500,19 @@ all: palacios $(DEFAULT_EXTRA_TARGETS) 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,) @@ -513,6 +539,8 @@ NOSTDINC_FLAGS += # 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 @@ -530,7 +558,7 @@ export INSTALL_PATH ?= /build palacios-dirs := $(patsubst %/,%,$(filter %/, \ - $(core-y) $(devices-y) $(interfaces-y) $(extensions-y) $(vnet-y) $(libs-y)) $(modules-y)) + $(core-y) $(devices-y) $(interfaces-y) $(extensions-y) $(vnet-y) $(gears-y) $(libs-y)) $(modules-y)) @@ -541,7 +569,7 @@ palacios-dirs := $(patsubst %/,%,$(filter %/, \ palacios-cleandirs := $(sort $(palacios-dirs) $(patsubst %/,%,$(filter %/, \ $(core-n) $(core-) $(devices-n) $(devices-) \ - $(interfaces-n) $(interfaces-) $(extensions-n) $(extensions-) $(vnet-n) $(vnet-) $(modules-n) $(modules-)))) + $(interfaces-n) $(interfaces-) $(extensions-n) $(extensions-) $(vnet-n) $(vnet-) $(gears-n) $(gears-) $(modules-n) $(modules-)))) @@ -551,6 +579,7 @@ interfaces-y := $(patsubst %/, %/built-in.o, $(interfaces-y)) extensions-y := $(patsubst %/, %/built-in.o, $(extensions-y)) libs-y := $(patsubst %/, %/built-in.o, $(libs-y)) vnet-y := $(patsubst %/, %/built-in.o, $(vnet-y)) +gears-y := $(patsubst %/, %/built-in.o, $(gears-y)) modules-y := $(patsubst %/, %/built-in.o, $(modules-y)) #lnxmod-y := $(patsubst %/, %/built-in.o, $(lnxmod-y)) @@ -576,7 +605,7 @@ modules-y := $(patsubst %/, %/built-in.o, $(modules-y)) -palacios := $(core-y) $(devices-y) $(interfaces-y) $(extensions-y) $(vnet-y) $(libs-y) $(modules-y) +palacios := $(core-y) $(devices-y) $(interfaces-y) $(extensions-y) $(vnet-y) $(gears-y) $(libs-y) $(modules-y) # Rule to link palacios - also used during CONFIG_CONFIGKALLSYMS @@ -622,12 +651,17 @@ palacios: libv3vee.a linux_module/v3vee.ko: linux_module/*.c linux_module/*.h libv3vee.a - cd linux_module/ && make + cd linux_module/ && make -j 8 cp linux_module/v3vee.ko v3vee.ko 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