genode/tool/create_builddir
Martin Stein 9a4a0448be hw vea9x4: remove trustzone support
When building Genode for VEA9X4 as micro-hypervisor protected by the ARM
TrustZone hardware we ran into limitations regarding our basic daily
testing routines. The most significant is that, when speaking about RAM
partitioning, the only available options are to configure the whole SRAM
to be secure and the whole DDR-RAM to be non-secure or vice versa. The
SRAM however provides only 32 MB which isn't enough for both a
representative non-secure guest OS or a secure Genode that is still
capable of passing our basic tests. This initiated our decision to
remove the VEA9X4 TrustZone-support.

Fixes #1351
2015-01-08 13:28:42 +01:00

248 lines
7.0 KiB
Makefile
Executable File

#!/usr/bin/make -f
#
# \brief Prepare Genode build directory
# \author Christian Helmuth, Norman Feske
# \date 2008-08-14
#
MAKEOVERRIDES =
PLATFORM = $(MAKECMDGOALS)
usage:
@echo
@echo "Tool for preparing Genode build directories"
@echo
@echo "usage:"
@echo
@echo " create_builddir <platform> [BUILD_DIR=<build-dir>]"
@echo
@echo " <platform> can be:"
@echo " 'linux_x86'"
@echo " 'linux_arm'"
@echo " 'fiasco_x86'"
@echo " 'pistachio_x86'"
@echo " 'okl4_x86'"
@echo " 'nova_x86_32'"
@echo " 'nova_x86_64'"
@echo " 'codezero_vpb926'"
@echo " 'hw_panda'"
@echo " 'hw_vea9x4'"
@echo " 'hw_pbxa9'"
@echo " 'hw_imx31'"
@echo " 'hw_imx53'"
@echo " 'hw_imx53_tz'"
@echo " 'hw_arndale'"
@echo " 'hw_odroid_xu'"
@echo " 'hw_rpi'"
@echo " 'foc_x86_32'"
@echo " 'foc_x86_64'"
@echo " 'foc_pbxa9'"
@echo " 'foc_imx53'"
@echo " 'foc_vea9x4'"
@echo " 'foc_panda'"
@echo " 'foc_arndale'"
@echo " 'lx_hybrid_x86'"
@echo
@echo " The definition of BUILD_DIR is optional. If specified,"
@echo " <build-dir> is the location of the build directory to create."
@echo " If not specified, the build directory will be created at"
@echo " <genode-dir>/build/<platform>."
@echo
#
# Determine Genode base directory based on the known location of the
# 'create_builddir' tool within the Genode source tree
#
GENODE_DIR ?= $(realpath $(dir $(MAKEFILE_LIST))/..)
#
# Define default location of the build directory if not explicitly specified
#
BUILD_DIR ?= $(GENODE_DIR)/build/$(PLATFORM)
SHELL := bash
ifneq ($(wildcard $(BUILD_DIR)),)
$(PLATFORM):: build_dir_already_exists
build_dir_already_exists:
@echo "Directory $(BUILD_DIR) already exists."
@false
endif
#
# Convert GENODE_DIR to an absolute directory because the user
# may have specified a '~'-relative location or a pwd-relative
# location.
#
GENODE_ABS_DIR := $(realpath $(shell echo $(GENODE_DIR)))
#
# Define absolute path to the contrib directory as written to the
# 'etc/build.conf' file. We use 'abs_path' instead of 'realpath' because the
# contrib directory may not exist when the build directory is created. In this
# case, 'realpath' would return an empty string.
#
ifeq ($(CONTRIB_DIR),)
CONTRIB_ABS_DIR := $$(GENODE_DIR)/contrib
else
CONTRIB_ABS_DIR := $(abspath $(shell echo $(CONTRIB_DIR)))
endif
#
# Generic build-directory preparation rules
#
BUILD_CONF = $(GENODE_ABS_DIR)/tool/builddir/etc/build.conf
BUILD_CONF_PLATFORM = $(BUILD_CONF).$(PLATFORM)
$(BUILD_DIR)/etc:
@mkdir -p $@
$(BUILD_DIR)/etc/build.conf:: $(BUILD_CONF_PLATFORM)
@echo "GENODE_DIR = $(GENODE_ABS_DIR)" > $@
@echo 'BASE_DIR = $$(GENODE_DIR)/repos/base' >> $@
@echo 'CONTRIB_DIR = $(CONTRIB_ABS_DIR)' >> $@
#
# Supply -no-kvm argument to Qemu for kernels that are incompatible with KVM
#
ifeq ($(filter-out foc_x86_32 foc_x86_64 okl4_x86 nova_x86_32 nova_x86_64 pistachio_x86,$(PLATFORM)),)
$(BUILD_DIR)/etc/build.conf::
@cat $(BUILD_CONF).qemu_no_kvm >> $@
endif
#
# Add 'base-<platform>' and generic repositories
#
$(BUILD_DIR)/etc/build.conf:: $(BUILD_CONF_PLATFORM)
@echo >> $@
@echo "##" >> $@
@echo "## Kernel-specific base repository" >> $@
@echo "##" >> $@
@echo >> $@
@cat $< >> $@
@cat $(BUILD_CONF).generic >> $@
#
# Add optional repositories for all platforms except for lx_hybrid
#
# Those repositories rely on Genode's libc or contain device drivers.
# Both prerequisites are not available for hybrid Linux/Genode programs.
#
ifneq ($(PLATFORM),lx_hybrid_x86)
$(BUILD_DIR)/etc/build.conf::
@cat $(BUILD_CONF).optional >> $@
endif
$(BUILD_DIR)/Makefile:
@ln -sf $(GENODE_ABS_DIR)/tool/builddir/build.mk $@
#
# Add 'ports-foc' repository to Fiasco.OC build directory
#
ifeq ($(filter-out foc_x86_32 foc_imx53 foc_pbxa9 foc_vea9x4 foc_panda foc_arndale,$(PLATFORM)),)
$(BUILD_DIR)/etc/build.conf::
@cat $(BUILD_CONF).ports-foc >> $@
endif
#
# Add x86 drivers repositories to x86 build directories
#
ifeq ($(filter-out foc_x86_32 foc_x86_64 okl4_x86 nova_x86_32 nova_x86_64 pistachio_x86 fiasco_x86,$(PLATFORM)),)
$(BUILD_DIR)/etc/build.conf::
@cat $(BUILD_CONF).drivers_x86 >> $@
endif
#
# Add ARM drivers repositories to ARM build directories
#
ifeq ($(filter-out foc_panda foc_arndale hw_panda hw_arndale hw_odroid_xu foc_imx53,$(PLATFORM)),)
$(BUILD_DIR)/etc/build.conf::
@cat $(BUILD_CONF).drivers_arm >> $@
endif
#
# Generic platform dependencies
#
$(PLATFORM):: $(BUILD_DIR)/etc
$(PLATFORM):: $(BUILD_DIR)/etc/build.conf
$(PLATFORM):: $(BUILD_DIR)/Makefile
#
# Platform-specific dependencies
#
codezero_vpb926::
@echo "SPECS += codezero_platform_vpb926" > $(BUILD_DIR)/etc/specs.conf
foc_x86_32::
@echo "SPECS = genode foc_x86_32" > $(BUILD_DIR)/etc/specs.conf
@echo "SPECS += acpi" >> $(BUILD_DIR)/etc/specs.conf
foc_x86_64::
@echo "SPECS = genode foc_x86_64" > $(BUILD_DIR)/etc/specs.conf
@echo "SPECS += acpi" >> $(BUILD_DIR)/etc/specs.conf
nova_x86_32::
@echo "SPECS = genode nova_x86_32" > $(BUILD_DIR)/etc/specs.conf
@echo "SPECS += acpi" >> $(BUILD_DIR)/etc/specs.conf
nova_x86_64::
@echo "SPECS = genode nova_x86_64" > $(BUILD_DIR)/etc/specs.conf
@echo "SPECS += acpi" >> $(BUILD_DIR)/etc/specs.conf
foc_pbxa9::
@echo "SPECS = genode foc_pbxa9" > $(BUILD_DIR)/etc/specs.conf
foc_vea9x4::
@echo "SPECS = genode foc_vea9x4" > $(BUILD_DIR)/etc/specs.conf
foc_panda::
@echo "SPECS = genode foc_panda" > $(BUILD_DIR)/etc/specs.conf
foc_imx53::
@echo "SPECS = genode foc_imx53" > $(BUILD_DIR)/etc/specs.conf
foc_arndale::
@echo "SPECS = genode foc_arndale" > $(BUILD_DIR)/etc/specs.conf
codezero_vpb926::
@echo "CODEZERO_DIR = $(GENODE_DIR)/repos/base-codezero/contrib" > $(BUILD_DIR)/etc/codezero.conf
hw_pbxa9::
@echo "SPECS = genode hw_pbxa9" > $(BUILD_DIR)/etc/specs.conf
hw_vea9x4::
@echo "SPECS = genode hw_vea9x4" > $(BUILD_DIR)/etc/specs.conf
hw_panda::
@echo "SPECS = genode hw_panda" > $(BUILD_DIR)/etc/specs.conf
hw_imx31::
@echo "SPECS = genode hw_imx31" > $(BUILD_DIR)/etc/specs.conf
hw_imx53::
@echo "SPECS = genode hw_imx53" > $(BUILD_DIR)/etc/specs.conf
hw_imx53_tz::
@echo "SPECS = genode hw_imx53_tz" > $(BUILD_DIR)/etc/specs.conf
hw_arndale::
@echo "SPECS = genode hw_arndale" > $(BUILD_DIR)/etc/specs.conf
hw_rpi::
@echo "SPECS = genode hw_rpi" > $(BUILD_DIR)/etc/specs.conf
hw_odroid_xu::
@echo "SPECS = genode hw_odroid_xu" > $(BUILD_DIR)/etc/specs.conf
lx_hybrid_x86::
@echo "CROSS_DEV_PREFIX =" > $(BUILD_DIR)/etc/tools.conf
@echo "SPECS += always_hybrid" >> $(BUILD_DIR)/etc/specs.conf
$(PLATFORM)::
@echo "Successfully created build directory at $(BUILD_DIR)."
@echo "Please adjust $(BUILD_DIR)/etc/build.conf according to your needs."
.PHONY: $(PLATFORM)