X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=build%2FMakefile;h=ae2db7fcdb0c174fe18e5cd749793e143ee28079;hb=7ab0aca49bb033657249e0587004dcd54ed9b106;hp=e3466321a41bbc2092fdb0a2cdc6a29b98ace64a;hpb=d38e1d6edeee83bfb1e3e3c6e2367faa5055bdfe;p=palacios.git diff --git a/build/Makefile b/build/Makefile index e346632..ae2db7f 100644 --- a/build/Makefile +++ b/build/Makefile @@ -1,4 +1,4 @@ -# Makefile for GeekOS kernel, userspace, and tools +# Top level Makefile for V3Vee # # Northwestern University # (c) 2008, Jack Lange @@ -6,47 +6,22 @@ # (c) 2008, Lei Xia # (c) 2008, The V3VEE Project # -# Based on GeekOS Makefile: -# Copyright (c) 2004,2005 David H. Hovemeyer -# $Revision: 1.71 $ - - -# This is free software. You are permitted to use, -# redistribute, and modify it as specified in the file "COPYING". - -# Required software to build GeekOS: +# Required software to build V3Vee: # - GNU Make (http://www.gnu.org/software/make) -# - gcc 2.95.2 generating code for target (i386/ELF) and host platforms # - nasm (http://nasm.sourceforge.net) # - Perl5, AWK (any version), egrep # -# Cygwin (http://cygwin.com) may be used to build GeekOS. -# Make sure that gcc, binutils, nasm, and perl are installed. -# NOTES: -# - This makefile has been written carefully to work correctly -# with the -j (parallel make) option. I regularly use "make -j 2" -# to speed the build process on 2 processor systems. -# ---------------------------------------------------------------------- -# Configuration - -# Various options specifying how GeekOS should be built, -# what source files to build, which user programs to build, -# etc. This is generally the only section of the makefile -# that will need to be modified. -# ---------------------------------------------------------------------- + PROJECT_ROOT := .. PALACIOS_BUILD_DIR := $(PROJECT_ROOT)/palacios/build GEEKOS_BUILD_DIR := $(PROJECT_ROOT)/geekos/build GUEST_ISO_DIR := /opt/vmm-tools/isos -# List of targets to build by default. -# These targets encompass everything needed to boot -# and run GeekOS. -ALL_TARGETS := palacios geekos QEMU := /usr/local/qemu/bin/qemu-system-x86_64 @@ -72,6 +47,14 @@ DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_SHADOW_PAGING=0 endif endif +ifeq ($(DEBUG_NESTED_PAGING),1) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_NESTED_PAGING=1 +else +ifeq ($(DEBUG_NESTED_PAGING),0) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_NESTED_PAGING=0 +endif +endif + ifeq ($(DEBUG_CTRL_REGS),1) DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_CTRL_REGS=1 else @@ -152,6 +135,56 @@ DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_RAMDISK=0 endif endif +ifeq ($(DEBUG_XED),1) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_XED=1 +else +ifeq ($(DEBUG_XED),0) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_XED=0 +endif +endif + +ifeq ($(DEBUG_HALT),1) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_HALT=1 +else +ifeq ($(DEBUG_HALT),0) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_HALT=0 +endif +endif + +ifeq ($(DEBUG_DEV_MGR),1) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_DEV_MGR=1 +else +ifeq ($(DEBUG_DEV_MGR),0) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_DEV_MGR=0 +endif +endif + +ifeq ($(DEBUG_APIC),1) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_APIC=1 +else +ifeq ($(DEBUG_APIC),0) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_APIC=0 +endif +endif + +ifeq ($(DEBUG_PCI),1) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_PCI=1 +else +ifeq ($(DEBUG_PCI),0) +DEBUG_SECTIONS := $(DEBUG_SECTIONS) DEBUG_PCI=0 +endif +endif + + +ifeq ($(PROFILE_VMM),1) + GEEKOS_FLAGS:= $(GEEKOS_FLAGS) PROFILE_VMM=1 +endif + +ifeq ($(INSTRUMENT_VMM),1) + GEEKOS_FLAGS:= $(GEEKOS_FLAGS) INSTRUMENT_VMM=1 +endif + + # ---------------------------------------------------------------------- # Targets - @@ -159,31 +192,58 @@ endif # ---------------------------------------------------------------------- # Default target - see definition of ALL_TARGETS in Configuration section -all : $(ALL_TARGETS) +all : palacios-full64 + +palacios64: + (cd $(PALACIOS_BUILD_DIR) && make ARCH=64 $(DEBUG_SECTIONS)) +palacios32: + (cd $(PALACIOS_BUILD_DIR) && make $(DEBUG_SECTIONS)) -palacios: + +palacios-full32: (cd $(PALACIOS_BUILD_DIR) && make $(DEBUG_SECTIONS) world) +palacios-full64: + (cd $(PALACIOS_BUILD_DIR) && make ARCH=64 $(DEBUG_SECTIONS) world) + +palacios-full-cray: + (cd $(PALACIOS_BUILD_DIR) && make V=1 ARCH=64 CRAY_XT=1 $(DEBUG_SECTIONS) world) + +palacios-lean: + (cd $(PALACIOS_BUILD_DIR) && make LEAN_AND_MEAN=1 world) + + + +geekos: palacios32 + cp $(PALACIOS_BUILD_DIR)/libv3vee.a $(GEEKOS_BUILD_DIR)/palacios/ + cp $(PALACIOS_BUILD_DIR)/../lib/xed/libxed.a $(GEEKOS_BUILD_DIR)/palacios/ + cp $(PALACIOS_BUILD_DIR)/vm_kernel $(GEEKOS_BUILD_DIR)/palacios/ + (cd $(GEEKOS_BUILD_DIR) && make $(GEEKOS_FLAGS)) -geekos: + +geekos-full: palacios-full32 cp $(PALACIOS_BUILD_DIR)/libv3vee.a $(GEEKOS_BUILD_DIR)/palacios/ cp $(PALACIOS_BUILD_DIR)/../lib/xed/libxed.a $(GEEKOS_BUILD_DIR)/palacios/ cp $(PALACIOS_BUILD_DIR)/vm_kernel $(GEEKOS_BUILD_DIR)/palacios/ - (cd $(GEEKOS_BUILD_DIR) && make clean && make) + (cd $(GEEKOS_BUILD_DIR) && make clean && make $(GEEKOS_FLAGS)) + + +world: geekos-full palacios-full64 +lean-and-mean: palacios-lean geekos-full # make ready to boot over PXE -geekos-pxe: geekos +geekos-pxe: cp $(GEEKOS_BUILD_DIR)/vmm.img /tftpboot/vmm.img -geekos-run: geekos +geekos-run: $(QEMU) -m 1024 -serial file:serial.out -cdrom $(GUEST_ISO_DIR)/puppy.iso -fda $(GEEKOS_BUILD_DIR)/vmm.img -geekos-iso: geekos +geekos-iso: cp $(GEEKOS_BUILD_DIR)/vmm.img iso/vmm.img mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table -o test.iso iso