.PHONY : all clean sloc lint config vmm bootloader uefiloader bios uefi

all: vmm bootloader uefiloader bios uefi

JOBS=$(shell nproc || echo 1)

vmm:
	test -f vmm/.config || cp vmm_config vmm/.config
	make -C vmm -j $(JOBS)

bootloader:
	make -C bootloader

uefiloader:
	if which x86_64-w64-mingw32-gcc; then make -C uefiloader; fi

bios:
	test -f bios/.config || cp bios_config bios/.config
	LC_ALL=C make -C bios

uefi:
	make -C uefi/BaseTools
	export EDK_TOOLS_PATH="`pwd`/uefi/BaseTools"
	bash -c "cd uefi && . edksetup.sh BaseTools && sed -e s/GCCxx/GCC`gcc -dumpversion | cut -d '.' -f 1``gcc -dumpversion | cut -d '.' -f 2`/g ../uefi_target.txt > Conf/target.txt&& build -D DEBUG_ON_SERIAL_PORT"

config:
	test -f vmm/.config || cp vmm_config vmm/.config
	make -C vmm config

biosconfig:
	test -f bios/.config || cp bios_config bios/.config
	LC_ALL=C make -C bios menuconfig

clean:
	make -C vmm clean
	make -C bootloader clean
	make -C uefiloader clean
	LC_ALL=C make -C bios clean
	export EDK_TOOLS_PATH="`pwd`/uefi/BaseTools"
	bash -c "cd uefi && . edksetup.sh BaseTools && build clean"
	make -C uefi/BaseTools clean

initquilt:
	./initquilt.sh vmm
	./initquilt.sh bios
	./initquilt.sh uefi

# Count source lines of code
# http://www.dwheeler.com/sloccount
sloc :
	sloccount .
