X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=Makefile;h=360dbd64eefdf03362258f9a968ad1ee9f8b25bf;hb=65286d916b384837567b0da69b4d5a77f190fdc0;hp=f0df92c409bf1ee0a76b50736ad9700257a451ca;hpb=3cb93a5034835ac4b3eb7831e743463b6c831e51;p=palacios.git diff --git a/Makefile b/Makefile index f0df92c..360dbd6 100644 --- a/Makefile +++ b/Makefile @@ -181,9 +181,9 @@ CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ HOSTCC = gcc HOSTCXX = g++ -HOSTCFLAGS = -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer \ +HOSTCFLAGS = -Wall -Wstrict-prototypes -fomit-frame-pointer \ -Wno-unused -Wno-format-security -U_FORTIFY_SOURCE -HOSTCXXFLAGS = -O2 +HOSTCXXFLAGS = -O # Decide whether to build built-in, modular, or both. # Normally, just do built-in. @@ -298,7 +298,12 @@ V3_INCLUDE := -Ipalacios/include \ CPPFLAGS := $(V3_INCLUDE) -D__V3VEE__ -CFLAGS := -fno-stack-protector -Wall -O -Werror -fPIC -mno-red-zone -fno-common +CFLAGS := -fno-stack-protector -Wall -Werror -mno-red-zone -fno-common + + + +#-ffreestanding + LDFLAGS := --whole-archive @@ -431,6 +436,8 @@ libs-y := palacios/lib/$(ARCH)/ devices-y := palacios/src/devices/ modules-y := modules/ + + ifeq ($(dot-config),1) # In this section, we need .config @@ -457,7 +464,12 @@ else palacios/include/autoconf.h: ; endif + +ifdef CONFIG_LINUX +DEFAULT_EXTRA_TARGETS=linux_module +else DEFAULT_EXTRA_TARGETS= +endif # The all: target is the default when no target is given on the # command line. @@ -466,6 +478,12 @@ DEFAULT_EXTRA_TARGETS= all: palacios $(DEFAULT_EXTRA_TARGETS) +ifdef CONFIG_LINUX +CFLAGS += -mcmodel=kernel +else +CFLAGS += -fPIC +endif + ifdef CONFIG_FRAME_POINTER CFLAGS += -fno-omit-frame-pointer $(call cc-option,-fno-optimize-sibling-calls,) else @@ -479,6 +497,8 @@ endif ifdef CONFIG_DEBUG_INFO CFLAGS += -g +else +CFLAGS += -O endif @@ -510,6 +530,8 @@ export INSTALL_PATH ?= /build palacios-dirs := $(patsubst %/,%,$(filter %/, \ $(core-y) $(devices-y) $(libs-y)) $(modules-y)) + + #palacios-alldirs := $(sort $(palacios-dirs) $(patsubst %/,%,$(filter %/, \ # $(core-n) $(core-) $(devices-n) $(devices-) \ # $(libs-n) $(libs-)))) @@ -524,6 +546,8 @@ core-y := $(patsubst %/, %/built-in.o, $(core-y)) devices-y := $(patsubst %/, %/built-in.o, $(devices-y)) libs-y := $(patsubst %/, %/built-in.o, $(libs-y)) modules-y := $(patsubst %/, %/built-in.o, $(modules-y)) +#lnxmod-y := $(patsubst %/, %/built-in.o, $(lnxmod-y)) + #core-y := $(patsubst %/, %/lib.a, $(core-y)) #devices-y := $(patsubst %/, %/lib.a, $(devices-y)) @@ -548,7 +572,8 @@ modules-y := $(patsubst %/, %/built-in.o, $(modules-y)) palacios := $(core-y) $(devices-y) $(libs-y) $(modules-y) -# Rule to link palacios - also used during CONFIG_KALLSYMS + +# Rule to link palacios - also used during CONFIG_CONFIGKALLSYMS # May be overridden by /Makefile.$(ARCH) quiet_cmd_palacios__ ?= AR $@ cmd_palacios__ ?= $(AR) rcs $@ $^ @@ -587,6 +612,18 @@ libv3vee.a: $(palacios) palacios: libv3vee.a + + + +linux_module/v3vee.ko: linux_module/*.c linux_module/*.h libv3vee.a + cd linux_module/ && make CONFIG_LINUX_KERN=$(CONFIG_LINUX_KERN) + cp linux_module/v3vee.ko v3vee.ko + + +linux_module: linux_module/v3vee.ko + + + palacios.asm: palacios $(OBJDUMP) --disassemble $< > $@ @@ -702,7 +739,7 @@ clean: archclean $(clean-dirs) @find . $(RCS_FIND_IGNORE) \ \( -name 'lib' \) -prune -o \ \( -name '*.[oas]' -o -name '.*.cmd' \ - -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \) \ + -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' -o -name '*.ko' \) \ -type f -print | xargs rm -f # mrproper - Delete all generated files, including .config