diff --git a/Makefile.inc b/Makefile.inc index 68b45233524..0d26f9c0961 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -1,7 +1,7 @@ PROJECT_BASE ?= $(shell pwd) ARCH?=x86 -export ARCH VPFILE QEMU_EXTRA_FLAGS +export ARCH VPFILE QEMU_EXTRA_FLAGS PROJECT_BASE ifdef BSP_VARIANT VARIANT_STR=_$(BSP_VARIANT) @@ -25,21 +25,19 @@ SOURCE_DIR=$(PROJECT_BASE)/src/ export SOURCE_DIR endif +O ?= $(PROJECT_BASE)/outdir + CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \ else if [ -x /bin/bash ]; then echo /bin/bash; \ else echo sh; fi ; fi) -all: $(CONFIG_DEPS) - $(Q)$(MAKE) -C $(TIMO_BASE) O=$(PROJECT_BASE) \ +all: $(CONFIG_DEPS) $(O)/.dir + $(Q)$(MAKE) -C $(TIMO_BASE) O=$(O) \ PROJECT=$(PROJECT_BASE) SOURCE_DIR=$(SOURCE_DIR) CFLAGS=$(CFLAGS) -rm-files:= final-linker.cmd linker.cmd modules.order \ - staticIdt.o System.map *kernel.lnk \ - *kernel.map *kernel.elf qemu.pid \ - .tinymountain.cmd +rm-files:= .config rm-objects:= *.o -rm-dirs := arch drivers include kernel lib misc \ - scripts source net .tmp_versions +rm-dirs := $(O) cmd_clean_inner_files = \ $(shell cd $(PROJECT_BASE);rm $(rm-files) -f; rm $(rm-dirs) -rf) @@ -61,25 +59,30 @@ mrproper: FORCE $(Q)$(MAKE) -C $(TIMO_BASE) \ PROJECT=$(PROJECT_BASE) mrproper -%config: FORCE - $(Q)$(MAKE) -C $(TIMO_BASE) O=$(PROJECT_BASE) \ +%config: $(O)/.dir FORCE + $(Q)$(MAKE) -C $(TIMO_BASE) O=$(O) \ PROJECT=$(PROJECT_BASE) $@ -qemu: $(CONFIG_DEPS) - $(Q)$(MAKE) -C $(TIMO_BASE) O=$(PROJECT_BASE) \ - PROJECT=$(PROJECT_BASE) SOURCE_DIR=$(SOURCE_DIR) qemu +qemu: $(CONFIG_DEPS) $(O)/.dir + $(Q)$(MAKE) -C $(TIMO_BASE) O=$(O) \ + PROJECT=$(PROJECT_BASE) SOURCE_DIR=$(SOURCE_DIR) CFLAGS=$(CFLAGS) qemu -initconfig: +initconfig: $(O)/.dir set -e; - $(Q)test -s .config || $(Q) $(MAKE) -C $(TIMO_BASE) O=$(PROJECT_BASE) \ + $(Q)test -s $(O)/.config || $(Q) $(MAKE) -C $(TIMO_BASE) O=$(O) \ PROJECT=$(PROJECT_BASE) defconfig ifneq (($strip $(CONF_FILE)),) $(Q)$(CONFIG_SHELL) $(TIMO_BASE)/scripts/kconfig/merge_config.sh \ - -m -O $(PROJECT_BASE) $(PROJECT_BASE)/.config $(CONF_FILE) + -m -O $(O) $(O)/.config $(CONF_FILE) endif - $(Q)yes "" | $(MAKE) -C $(TIMO_BASE) O=$(PROJECT_BASE) \ + $(Q)yes "" | $(MAKE) -C $(TIMO_BASE) O=$(O) \ PROJECT=$(PROJECT_BASE) oldconfig +%/.dir: + set -e; + $(Q)test -s $(abspath $(dir $@)) || $(Q)mkdir $(abspath $(dir $@)) + @touch $@ + help: $(Q)$(MAKE) -C $(TIMO_BASE) help @@ -87,3 +90,4 @@ PHONY += FORCE clean mrproper FORCE: .PHONY: $(PHONY) +.PRECIOUS: %/.dir diff --git a/samples/microkernel/benchmark/app_kernel/src/Makefile b/samples/microkernel/benchmark/app_kernel/src/Makefile index 6a22128edc1..cc2356bcc65 100644 --- a/samples/microkernel/benchmark/app_kernel/src/Makefile +++ b/samples/microkernel/benchmark/app_kernel/src/Makefile @@ -1,5 +1,5 @@ EXTRA_CFLAGS += -I$(CURDIR)/misc/generated/nodes -EXTRA_CFLAGS += -I$(CURDIR)/../latency_measure/src +EXTRA_CFLAGS += -I$(CURDIR)/../../latency_measure/src obj-y := fifo_b.o mailbox_b.o master.o mempool_b.o \ nop_b.o pipe_r.o sema_r.o event_b.o \ diff --git a/samples/microkernel/benchmark/sys_kernel/Makefile b/samples/microkernel/benchmark/sys_kernel/Makefile index 07a4820130f..ecf56f0fd5f 100644 --- a/samples/microkernel/benchmark/sys_kernel/Makefile +++ b/samples/microkernel/benchmark/sys_kernel/Makefile @@ -1,7 +1,7 @@ PC8253_BSP_VARIANTS=generic_pc pentium4 minuteia BSP ?= generic_pc -VPFILE = $(TIMO_BASE)/samples/microkernel/benchmark/sys_kernel/prj.vpf +VPFILE = prj.vpf KERNEL_TYPE = micro CONF_FILE = prj_console_$(if $(filter $(BSP),$(PC8253_BSP_VARIANTS)),pc8253,generic).conf SOURCE_DIR = $(TIMO_BASE)/samples/nanokernel/benchmark/sys_kernel/src/ diff --git a/scripts/Makefile.preparch b/scripts/Makefile.preparch index 12072a65fb9..32ff391bdc2 100644 --- a/scripts/Makefile.preparch +++ b/scripts/Makefile.preparch @@ -28,13 +28,13 @@ define filechk_prj.vpf i=$$(($$i+1));\ done; \ fi; \ - cat $(VPFILE); \ + cat $(PROJECT_BASE)/$(VPFILE); \ cat $(srctree)/config/$(CONFIG_BSP_DIR)/ukernel/config1p.vpf;) endef #Specific source code generation for Viper misc/generated/nodes/prj.vpf: $(srctree)/config/$(CONFIG_BSP_DIR)/ukernel/config1p.vpf \ - $(VPFILE) \ + $(PROJECT_BASE)/$(VPFILE) \ include/config/auto.conf FORCE $(call filechk,prj.vpf) diff --git a/scripts/sanity_chk/common.defs b/scripts/sanity_chk/common.defs index 81b3ae68fce..0f707e3dd0c 100644 --- a/scripts/sanity_chk/common.defs +++ b/scripts/sanity_chk/common.defs @@ -352,7 +352,7 @@ build_project() { [ $? -eq 0 ] || fail_exit $? $FUNCNAME $LINENO if [ x$2 == x ] ; then - elf_name=`${LS} ${PRJ_TYPE[$1]}.elf` + elf_name=`${LS} outdir/${PRJ_TYPE[$1]}.elf` [ x${elf_name} != "x" ] || \ fail_exit $? $FUNCNAME $LINENO "couldn't build ${proj_name}" fi @@ -408,12 +408,12 @@ qemu_project() { # get QEMU's pid # (wait for QEMU process to be spawned by examining list of tasks # associated with this script's terminal, then grab the pid) - while ! [ -f qemu.pid ] + while ! [ -f outdir/qemu.pid ] do ${SLEEP} 1 done - qemu_pid=$(