From 7ccfc1fdb1c0030e6e2105d50d76122b8f10c687 Mon Sep 17 00:00:00 2001 From: Zheng Da Date: Mon, 21 Dec 2009 03:00:41 +0100 Subject: check in mk. --- libdde_linux26/mk/Makeconf | 512 +++++++++++++++ libdde_linux26/mk/WhatIsThis | 2 + libdde_linux26/mk/binary.inc | 729 +++++++++++++++++++++ libdde_linux26/mk/config.help | 379 +++++++++++ libdde_linux26/mk/config.in | 214 ++++++ libdde_linux26/mk/config.inc | 137 ++++ libdde_linux26/mk/defconfig/config.l4check.amd64 | 82 +++ .../mk/defconfig/config.l4check.arm-int-l4v2 | 89 +++ .../mk/defconfig/config.l4check.x86-586-l4v2 | 83 +++ libdde_linux26/mk/defconfig/config.x86 | 83 +++ libdde_linux26/mk/doc.mk | 301 +++++++++ libdde_linux26/mk/export_defs.inc | 35 + libdde_linux26/mk/idl.mk | 206 ++++++ libdde_linux26/mk/include.mk | 88 +++ libdde_linux26/mk/install.inc | 66 ++ libdde_linux26/mk/lib.mk | 113 ++++ libdde_linux26/mk/makehelpers.inc | 15 + libdde_linux26/mk/modes.inc | 575 ++++++++++++++++ libdde_linux26/mk/prog.mk | 160 +++++ libdde_linux26/mk/ptest | 444 +++++++++++++ libdde_linux26/mk/redo_defconfigs | 21 + libdde_linux26/mk/rel2abs.sh | 72 ++ libdde_linux26/mk/runux.mk | 194 ++++++ libdde_linux26/mk/subdir.mk | 72 ++ libdde_linux26/mk/tmpl/MAINTAINER | 1 + libdde_linux26/mk/tmpl/Makefile | 9 + libdde_linux26/mk/tmpl/examples/Makefile | 10 + libdde_linux26/mk/tmpl/idl/Makefile | 13 + libdde_linux26/mk/tmpl/include/Makefile | 9 + libdde_linux26/mk/tmpl/inst | 8 + libdde_linux26/mk/tmpl/lib/Makefile | 9 + libdde_linux26/mk/tmpl/lib/src/Makefile | 14 + libdde_linux26/mk/tmpl/ptest/Makefile | 6 + libdde_linux26/mk/tmpl/ptest/run/Makefile | 10 + libdde_linux26/mk/tmpl/server/Makefile | 9 + libdde_linux26/mk/tmpl/server/src/Makefile | 18 + libdde_linux26/mk/tmpl/server/src/main.c | 5 + 37 files changed, 4793 insertions(+) create mode 100644 libdde_linux26/mk/Makeconf create mode 100644 libdde_linux26/mk/WhatIsThis create mode 100644 libdde_linux26/mk/binary.inc create mode 100644 libdde_linux26/mk/config.help create mode 100644 libdde_linux26/mk/config.in create mode 100644 libdde_linux26/mk/config.inc create mode 100644 libdde_linux26/mk/defconfig/config.l4check.amd64 create mode 100644 libdde_linux26/mk/defconfig/config.l4check.arm-int-l4v2 create mode 100644 libdde_linux26/mk/defconfig/config.l4check.x86-586-l4v2 create mode 100644 libdde_linux26/mk/defconfig/config.x86 create mode 100644 libdde_linux26/mk/doc.mk create mode 100644 libdde_linux26/mk/export_defs.inc create mode 100644 libdde_linux26/mk/idl.mk create mode 100644 libdde_linux26/mk/include.mk create mode 100644 libdde_linux26/mk/install.inc create mode 100644 libdde_linux26/mk/lib.mk create mode 100644 libdde_linux26/mk/makehelpers.inc create mode 100644 libdde_linux26/mk/modes.inc create mode 100644 libdde_linux26/mk/prog.mk create mode 100755 libdde_linux26/mk/ptest create mode 100755 libdde_linux26/mk/redo_defconfigs create mode 100755 libdde_linux26/mk/rel2abs.sh create mode 100644 libdde_linux26/mk/runux.mk create mode 100644 libdde_linux26/mk/subdir.mk create mode 100644 libdde_linux26/mk/tmpl/MAINTAINER create mode 100644 libdde_linux26/mk/tmpl/Makefile create mode 100644 libdde_linux26/mk/tmpl/examples/Makefile create mode 100644 libdde_linux26/mk/tmpl/idl/Makefile create mode 100644 libdde_linux26/mk/tmpl/include/Makefile create mode 100755 libdde_linux26/mk/tmpl/inst create mode 100644 libdde_linux26/mk/tmpl/lib/Makefile create mode 100644 libdde_linux26/mk/tmpl/lib/src/Makefile create mode 100644 libdde_linux26/mk/tmpl/ptest/Makefile create mode 100644 libdde_linux26/mk/tmpl/ptest/run/Makefile create mode 100644 libdde_linux26/mk/tmpl/server/Makefile create mode 100644 libdde_linux26/mk/tmpl/server/src/Makefile create mode 100644 libdde_linux26/mk/tmpl/server/src/main.c (limited to 'libdde_linux26') diff --git a/libdde_linux26/mk/Makeconf b/libdde_linux26/mk/Makeconf new file mode 100644 index 00000000..1c927e45 --- /dev/null +++ b/libdde_linux26/mk/Makeconf @@ -0,0 +1,512 @@ +# -*- Makefile -*- +# vim:set ft=make: +# +# DROPS (Dresden Realtime OPerating System) Component +# +# Make configuration file +# +# $Id: Makeconf 418 2008-11-12 03:50:31Z l4check $ +# +# $Author: l4check $ +# +# This file is included by all Makefile-templates. This file defines macros +# for div commands, sets general DROPS-Makefile variables, ensures the +# dependencies from the various Makeconf.locals, defines the messages for +# div actions, and permits the dependency-creation on clean-rules. +# +# The macros BUILD_MULTIPLE_ARCHITECTURES and BUILD_ONE_ARCHITECTURE are +# defined here. +# +# BUILD_MULTIPLE_ARCHITECTURES is set if ARCHS is set to multiple +# architectures in the Makefile. If ARCHS is not set, the default value +# l4_i386 will be assumed, not defining BUILD_MULTIPLE_ARCHITECTURES. +# In the muli-arch case, binary.inc triggers build the files into subdirs, +# dir-name is the architecture. Then, make is called recursively with ARCH +# set to one architecture. +# +# BUILD_ONE_ARCHITECTURE is set if ARCH contains one architecture, and we +# actually build files (in subdirs for multi-arch case, in the same dir in +# the single-arch case). + +ifeq ($(origin _L4DIR_MK_MAKECONF),undefined) +_L4DIR_MK_MAKECONF=y + +# the default target is all +all:: + +# make .general.d dependent on the role-file +$(if $(ROLE),$(OBJ_DIR)/.general.d: $(L4DIR)/mk/$(ROLE)) + +SYSTEM_TARGET = $(SYSTEM_TARGET_$(ARCH)) +SYSTEM_TARGET_arm = arm-linux- + +CARCHFLAGS_amd64 = -mno-red-zone +ASFLAGS_amd64 = -m64 + +LD_EMULATION_amd64= elf_x86_64 +LD_EMULATION_arm = armelf +LD_EMULATION_x86 = elf_i386 +LD_EMULATION = $(LD_EMULATION_$(ARCH)) + +OFORMAT_amd64 = elf64-x86-64 +OFORMAT_arm = default +OFORMAT_x86 = elf32-i386 +OFORMAT = $(OFORMAT_$(ARCH)) + +# This is quite bad: There is no other chance to disable the page-alignedment +# of the linker. The linker aligns the first section at 0x100000 for AMD64! +# We don't want this. Be careful for interactions with objcopy -S! +LDNMAGIC ?= -n +LDFLAGS_amd64 += $(LDNMAGIC) + +CARCHFLAGS_x86_586 = -march=i586 +CARCHFLAGS_x86_pentium = -march=i586 +CARCHFLAGS_x86_pentiummmx = -march=pentium-mmx +CARCHFLAGS_x86_pentiumpro = -march=pentiumpro +CARCHFLAGS_x86_686 = -march=i686 +CARCHFLAGS_x86_pentium2 = -march=pentium2 +CARCHFLAGS_x86_pentium3 = -march=pentium3 +CARCHFLAGS_x86_pentiumm = -march=pentium-m +CARCHFLAGS_x86_pentium4 = -march=pentium4 +CARCHFLAGS_x86_prescott = -march=prescott +CARCHFLAGS_x86_nocona = -march=nocona +CARCHFLAGS_x86_K6 = -march=k6 +CARCHFLAGS_x86_K7 = -march=athlon +CARCHFLAGS_x86_athlon4 = -march=athlon-4 +CARCHFLAGS_x86_K8 = -march=k8 +CARCHFLAGS_x86_opteron = -march=opteron + +IDL_SYSTEMS = x86-l4v2 + +AR = $(SYSTEM_TARGET)ar +AS = $(SYSTEM_TARGET)as +AWKP = gawk --posix +CVS = cvs -q +SVN = svn +CP = cp +DICE_SRCDIR ?= $(L4DIR)/../dice +DICE_OBJDIR ?= $(DICE_SRCDIR) +DICE = $(firstword $(wildcard $(DICE_OBJDIR)/src/dice \ + $(DROPS_STDDIR)/tool/bin/dice \ + $(shell which dice 2>/dev/null) ) \ + did_not_find_dice___please_install_dice ) +DICE_CPP_NAME = cpp0 + +DICE_INCDIR ?= $(DICE_SRCDIR)/include + +ECHO = echo + +GENOFFSETS = $(L4DIR)/tool/bin/genoffsets.pl +GOSH = $(firstword $(wildcard $(L4DIR)/../tools/gosh/gosh \ + $(DROPS_STDDIR)/tool/bin/gosh \ + $(shell which gosh 2>/dev/null) ) \ + did_not_find_gosh___please_install_gosh ) +HOST_CC = gcc +HOST_CXX = g++ +INDENT = indent -sob +INSTALL = install +# the following two variables should be overwritten in Makeconf.bid.local +LD = $(SYSTEM_TARGET)ld +LATEX = latex +PDFLATEX = pdflatex +GREP = grep +LN = ln +MKDIR = mkdir -p +MKFLAGS +=$(MKFLAGS_$@) +NM = $(SYSTEM_TARGET)nm +OBJCOPY = $(SYSTEM_TARGET)objcopy +PWDCMD = sh -c pwd +RANLIB = $(SYSTEM_TARGET)ranlib +RM = rm -f +SCRUB = $(RM) $(wildcard *.old) $(wildcard *~) $(wildcard *.bak) \ + $(wildcard \#*\#) +SED = sed +SHELL = /bin/bash +SIZE = $(SYSTEM_TARGET)size +STRIP = $(SYSTEM_TARGET)strip +TR = tr +GEN_DOPECODE = $(L4DIR)/tool/gen_dopecode/gen_dopecode +ABS2REL = $(L4DIR)/tool/bin/abs2rel.sh +# it's optional to be able to set it as environment variable +FIASCOUX ?= $(L4DIR)/../kernel/fiasco/build-ux/fiasco +DISASM_CMD ?= $(SYSTEM_TARGET)objdump -ld $(1) | less + +# functions that are handy +absfilename_target_dir_needs_to_exist = $(foreach w,$(1),$(addsuffix /$(notdir $(w)),$(shell cd $(dir $(w)) 2>/dev/null&&$(PWDCMD)))) +absfilename = $(shell $(L4DIR)/mk/rel2abs.sh $(1)) +findfile = $(firstword $(wildcard $(addsuffix /$(1),$(2))) $(1)_NOT_FOUND) + +# include this one early to be able to set OBJ_BASE +-include $(L4DIR)/Makeconf.local + +ifeq ($(filter $(IGNORE_OBJDIR_TARGETS),$(MAKECMDGOALS)),) +# output directory +ifeq ($(O)$(OBJ_BASE),) +$(error need to give builddir with O=.../builddir) +else +ifneq ($(O),) +ifeq ($(origin OBJ_BASE),undefined) +OBJ_BASE := $(call absfilename, $(O)) +export OBJ_BASE +endif +endif +endif +endif + +ifeq ($(origin L4DIR_ABS),undefined) +L4DIR_ABS := $(call absfilename,$(L4DIR)) +endif +ifeq ($(origin PKGDIR_ABS),undefined) +PKGDIR_ABS := $(call absfilename,$(PKGDIR)) +endif +ifeq ($(origin SRC_DIR),undefined) +SRC_DIR := $(shell pwd) +endif +ifeq ($(origin SRC_BASE_ABS),undefined) +SRC_BASE ?= $(L4DIR) +SRC_BASE_ABS := $(call absfilename,$(SRC_BASE)) +export SRC_BASE_ABS +endif +ifeq ($(origin OBJ_DIR),undefined) +OBJ_DIR := $(subst $(SRC_BASE_ABS),$(OBJ_BASE),$(SRC_DIR)) +endif +ifeq ($(origin PKGDIR_OBJ),undefined) +PKGDIR_OBJ := $(call absfilename,$(OBJ_DIR)/$(PKGDIR)) +endif + +# if PKGDIR is not in L4DIR, we have an external package, so make up some +# build-dir for it +ifneq ($(patsubst $(L4DIR_ABS)/%,,$(PKGDIR_ABS)),) +ifneq ($(filter-out $(OBJ_BASE)/ext-pkg%,$(PKGDIR_OBJ)),) +PKGDIR_OBJ := $(OBJ_BASE)/ext-pkg$(PKGDIR_OBJ) +OBJ_DIR := $(OBJ_BASE)/ext-pkg$(OBJ_DIR) +endif +endif + +# sanity check the object dir +ifneq ($(SRC_BASE_ABS),$(OBJ_BASE)) +ifeq ($(SRC_DIR),$(OBJ_DIR)) +$(warning Sorry, your object or source path became garbled.) +$(warning OBJ_BASE: $(OBJ_BASE)) +$(warning SRC_BASE_ABS: $(SRC_BASE_ABS)) +$(warning SRC_DIR: $(SRC_DIR)) +$(warning OBJ_DIR: $(OBJ_DIR)) +$(warning PKGDIR: $(PKGDIR)) +$(warning L4DIR_ABS: $(L4DIR_ABS)) +$(warning PKGDIR_ABS: $(PKGDIR_ABS)) +$(warning PKGDIR_OBJ: $(PKGDIR_OBJ)) +$(error Please investigate.) +endif +endif + + +OBJ_DIR_EXPORT = $(OBJ_DIR) +export OBJ_DIR_EXPORT + +VPATH_SRC_BASE ?= $(SRC_DIR) + +# Makeconf.local handling +# dont use -include here, as we have special build conditions in $(L4DIR)/ +ifeq ($(origin BID_ROOT_CONF),undefined) +BID_ROOT_CONF := $(call absfilename, $(OBJ_BASE))/Makeconf.bid.local +endif +ifeq ($(filter $(IGNORE_OBJDIR_TARGETS),$(MAKECMDGOALS)),) +ifeq ($(wildcard $(BID_ROOT_CONF)),) +ifeq ($(BID_IGN_ROOT_CONF),) +$(error No configuration file found in build directory "$(OBJ_BASE)". Please run "make O=/path/to/objdir config" in "$(L4DIR_ABS)" or specify a valid build directory) +endif +else +include $(BID_ROOT_CONF) +endif +endif + +-include $(L4DIR)/Makeconf.$(CONFIG_LABEL) + +-include $(OBJ_BASE)/Makeconf.local +ifneq ($(PKGDIR),) +-include $(PKGDIR)/Makeconf.local +endif +# if it is not already set, we use this in the local dir +MAKECONFLOCAL ?= Makeconf.local +-include $(MAKECONFLOCAL) + +DROPS_STDDIR ?= /home/drops +ifeq ($(STATICFILE),) +STATICFILE = $(OBJ_BASE)/pkg/STATIC $(L4DIR)/pkg/STATIC +endif + +# a nasty workaround for make-3.79/make-3.80. The former needs an additional +# $$ for $-quotation when calling a function. +BID_IDENT = $(1) +ifeq ($(call BID_IDENT,$$),) +BID_DOLLARQUOTE = $$ +endif +BID_COMMA = , + +ifneq ($(PL),) +PL_j := -j $(PL) +export PL +endif + +include $(L4DIR)/mk/config.inc + +ifeq ($(HAVE_LDSO),y) +# MAKEDEP-call: +# arg1 - compiler binary name +# arg2 - [opt] compiler target. Will be written as target within the +# dependency file +# arg3 - [opt] name of the dependency file. If unset, ..d will be used. +# arg4 - [opt] alternative binary name +ifeq ($(origin BID_LIBGENDEP), undefined) +BID_LIBGENDEP := $(firstword $(wildcard $(call absfilename, \ + $(OBJ_BASE)/tool/gendep/libgendep.so \ + $(DROPS_STDDIR)/tool/lib/libgendep.so ))) +endif + +ifeq ($(HOST_SYSTEM),linux) + LD_PRELOAD = LD_PRELOAD +endif +ifeq ($(HOST_SYSTEM),darwin) + LD_PRELOAD = DYLD_FORCE_FLAT_NAMESPACE=1 DYLD_INSERT_LIBRARIES +endif +MAKEDEP=$(LD_PRELOAD)=$(BID_LIBGENDEP) GENDEP_TARGET=$(if $(2),$(2),$@) \ + GENDEP_BINARY=$(1) $(if $(3),GENDEP_DEPFILE=$(3)) \ + $(if $(4),GENDEP_BINARY_ALT1=$(4)) +endif + +# macros used here and in packages +checkcc = $(shell if $(CC) $(1) -o /dev/null -c -x c \ + /dev/null > /dev/null 2>&1; then echo "$(1)"; fi) +checkcxx = $(shell if $(CXX) $(1) -o /dev/null -c -x c++ \ + /dev/null > /dev/null 2>&1; then echo "$(1)"; fi) + +# the gcc specific variables: version, base dir, include dir, gcc lib +# note: determining these variables is slow, and the values should +# be set in Makeconf.bid.local. However, this is the place were +# they are determined on a 'make config' in $(L4DIR) +GCCVERSION_f = $(shell $(CC) -dumpversion | sed -e 's/\(.*\)\..*/\1/') +GCCMAJORVERSION_f=$(shell $(CC) -dumpversion | sed -e 's/\([^.]*\).*/\1/') +GCCMINORVERSION_f=$(shell $(CC) -dumpversion | sed -e 's/[^.]*\.\([^.]*\).*/\1/') +GCCSUBVERSION_f = $(shell $(CC) -dumpversion | sed -e 's/.*\.\(.*\)/\1/') +GCCDIR_f = $(shell LC_ALL=C $(CC) -print-search-dirs|sed -ne 's+^install: \(.*[^/][^/]*\)/+\1+p' ) +GCCLIB_f = $(shell $(CC) -print-libgcc-file-name) +GCCLIB_EH_f = $(filter /%,$(shell $(CC) -print-file-name=libgcc_eh.a)) +GCCINCDIR_f = $(addprefix $(call GCCDIR_f),/include /include-fixed) +GCCNOSTACKPROTOPT_f= $(call checkcc,-fno-stack-protector) + +GCCINCDIR = $(GCCDIR)/include $(GCCDIR)/include-fixed +I_GCCINCDIR = $(addprefix -I,$(GCCINCDIR)) + +ifneq ($(PKGDIR),) + ifeq ($(origin PKGNAME),undefined) + PKGNAME := $(notdir $(shell cd $(PKGDIR);pwd)) + endif +endif + +ifeq ($(V),1) + VERBOSE = +endif +ifeq ($(V),0) + VERBOSE = @ +endif + +# indicate if we are using dietlibc or uClibc +ifeq ($(USE_DIETLIBC),y) +# dietlibc explicitly set for all architectures + DEFINES += -DUSE_DIETLIBC=y + USE_DIETLIBC = y + LIBC_TYPE = diet + $(warning The use of dietlibc is deprecated, please switch to uclibc.) + $(warning Dietlibc will soon be removed from the tree.) +else + # uClibc explicitly set for all architectures + DEFINES += -DUSE_UCLIBC=y + USE_UCLIBC = y + LIBC_TYPE = uc +endif + +ifeq ($(RELEASE_MODE),y) +DEFINES += -DL4BID_RELEASE_MODE +endif + +ifeq ($(USE_TASKLIB),y) +DEFINES += -DUSE_TASKLIB=y +endif + +ifeq ($(ARCH),arm) +ifeq ($(RAM_BASE),) +$(error RAM_BASE not given, needed for ARM architecture builds.) +endif +else #arch != arm + RAM_BASE = 0x0 +endif + +DEFINES += -DRAM_BASE=$(RAM_BASE) + + +ifneq ($(filter linux l4linux host,$(MODE)),) +HOST_LINK := 1 +endif + +# +# SUBDIR handling, not within the OBJ-*/ dirs +# +ifeq ($(SYSTEM),) +ifneq ($(SUBDIRS),) +.PHONY: $(SUBDIRS) +$(SUBDIRS): + $(VERBOSE)PWD=$(PWD)/$@ $(MAKE) -C $@ all + +# we know that SUBDIRS isn't empty, hence we can avoid the dir-test +scrub clean cleanall:: + $(VERBOSE)set -e; $(foreach i,$(SUBDIRS), \ + PWD=$(PWD)/$(i) $(MAKE) -C $(i) $@ $(MKFLAGS) $(MKFLAGS_$(i));) + +install:: $(SUBDIRS) + $(VERBOSE)set -e; $(foreach i,$(SUBDIRS), \ + PWD=$(PWD)/$(i) $(MAKE) -C $(i) $@ $(MKFLAGS) $(MKFLAGS_$(i));) + +endif + +all:: $(OBJ_DIR)/Makefile + +$(OBJ_DIR)/Makefile: $(L4DIR)/mk/Makeconf + $(VERBOSE)install -d $(dir $@) + $(VERBOSE)echo '# automatically created -- modifications will be lost' > $@ + $(VERBOSE)echo 'SRC := $(SRC_DIR)' >> $@ + $(VERBOSE)echo 'OBJ := $(OBJ_BASE)' >> $@ + $(VERBOSE)echo '.PHONY: x $$(MAKECMDGOALS)' >> $@ + $(VERBOSE)echo 'x:' >> $@ + $(VERBOSE)echo ' PWD=$$(SRC) $$(MAKE) -C $$(SRC) O=$$(OBJ)' >> $@ + $(VERBOSE)echo '$$(MAKECMDGOALS):' >> $@ + $(VERBOSE)echo ' PWD=$$(SRC) $$(MAKE) -C $$(SRC) O=$$(OBJ) $$@'>> $@ + +else +# we are within an OBJ-*/ dir, create dummy target +$(SUBDIRS): +endif + +# +# Dependency section +# +# + +# the general dependencies: All generated files depend on ".general.d". +# ".general.d" itself depends on the mk-Makeconf, the optional +# Makeconf.local, the Makeconf.bid.local, the packet-Makeconf.local and the +# Makeconf.local. This ensures a rebuilt if any of the configuration- +# or make-files changes. +# +# We have this nasty if-readable-magic to allow the files to disappear +# or to appear. Depending on if the according makeconf exists now, the +# if-readable magic .general.d is used on existance or non-existence. + +BID_DEPEND_GENERAL_D_COND = \ + if [ -r $(1) ] ; then echo -e '$@: $(1)\n$(1):\n' >>$@ ; \ + else echo '$$(if $$(wildcard $(1)), $@: FORCE)' >>$@; fi + +ifeq ($(SYSTEM),) +GENERAL_D_LOC := $(OBJ_DIR)/.general.d +else +GENERAL_D_LOC := .general.d +endif + +$(GENERAL_D_LOC): $(L4DIR)/mk/Makeconf + @$(BUILD_MESSAGE) + @install -d $(dir $@) + $(DEPEND_VERBOSE)echo '$@: $(SRC_DIR)/Makefile ' > $@ + $(DEPEND_VERBOSE)$(call BID_DEPEND_GENERAL_D_COND,\ + $(OBJ_BASE)/Makeconf.bid.local) + $(DEPEND_VERBOSE)$(call BID_DEPEND_GENERAL_D_COND,\ + $(OBJ_BASE)/Makeconf.local) + $(DEPEND_VERBOSE)$(call BID_DEPEND_GENERAL_D_COND,\ + $(L4DIR)/Makeconf.local) + $(DEPEND_VERBOSE)$(call BID_DEPEND_GENERAL_D_COND,\ + $(L4DIR)/Makeconf.$(CONFIG_LABEL)) + $(if $(PKGDIR),$(DEPEND_VERBOSE)$(call BID_DEPEND_GENERAL_D_COND,\ + $(PKGDIR)/Makeconf.local)) + $(DEPEND_VERBOSE)$(call BID_DEPEND_GENERAL_D_COND,\ + $(MAKECONFLOCAL)) + +DEPS += $(GENERAL_D_LOC) + +ifneq ($(DEPENDS_PKGS),) +DEPENDS_PKGS_MISSING := $(strip $(foreach i,$(DEPENDS_PKGS), \ + $(if $(wildcard $(L4DIR)/pkg/$(i)),,$(i)))) + +ifneq ($(DEPENDS_PKGS_MISSING),) +# clear TARGET to prevent building anything +TARGET = +all:: + @echo -e "\033[32mPackage dependencies missing: \033[1m$(DEPENDS_PKGS_MISSING)\033[22m, skipping.\033[0m" +endif +endif + +# +# Messages +# + +# set SHOWMESSAGES=true or 'y' to print textual action descriptions +SHOWMESSAGES ?= true + +# coloring on color-capable terminals +# enabled by setting BID_COLORED_PHASES to y +ifeq ($(BID_COLORED_PHASES),y) +ifeq ($(COLOR_TERMINAL),y) + EMPHSTART = '\033[34m' + EMPHSTOP = '\033[0m' +else + EMPHSTART = + EMPHSTOP = +endif +endif + + +ifneq (,$(filter y true, $(SHOWMESSAGES))) +AR_MESSAGE?= echo -e " ==> Archiving into $@" +BUILD_MESSAGE?= echo -e " ... Building $@" +BUILT_MESSAGE?= echo -e $(EMPHSTART)' ==> "$@" built'$(EMPHSTOP) +COMP_MESSAGE?= echo -e " ... Compiling $@" +COMP_P_MESSAGE?=echo -e " ... Compiling PIC $@" +COMP_PR_MESSAGE?=echo -e " ... Compiling PROFILE $@" +GEN_MESSAGE?= echo -e " ... Generating $@" +LINK_MESSAGE?= echo -e " ==> Linking $@" +LINK_SHARED_MESSAGE?= echo -e " ==> Linking to shared $@" +LINK_PARTIAL_MESSAGE?= echo -e " ==> Partial linking to $@" +DEP_MESSAGE?= echo -e " ... Building dependencies for $<" +CLEAN_MESSAGE?= echo -e " ... Removing created files" +CLEANALL_MESSAGE?=echo -e " ... Removing all created files" +INSTALL_LINK_MESSAGE?=echo -e " ==> Updating symlinks" +INSTALL_DOC_MESSAGE?=echo -e " ==> Installing $(<) documentation" +INSTALL_DOC_LOCAL_MESSAGE?= echo -e " ==> Installing $(<) documentation locally" +INSTALL_MESSAGE?=echo -e " ==> Installing $^" +INSTALL_LOCAL_MESSAGE?=echo -e " ==> Installing $(<) to local build-tree" +UPDATE_HTML_MESSAGE?=echo -e " ! You should remake your doc directory in $(1)" +endif + + +# allows an include $(DEPSVAR) at the end of the makefile +# but prevents rebuilding them on a scrub, clean, cleanall and help +ifneq ($(filter scrub clean cleanall help,$(MAKECMDGOALS)),) +DEPSVAR = +else +DEPSVAR = $(DEPS) +endif + +# +# Some rules +# + +# addfileheader-rule: allows "make addfileheader main.c server.c"-like +# commands and automatically inserts the path within the package +# options may be passed with $(ADDFILEHEADER_OPTIONS) +ADDFILEHEADER_PREFIX = $(patsubst $(call absfilename,$(PKGDIR)/)%,\ + $(PKGNAME)/%,$(call absfilename,./)) +ADDFILEHEADER_FILES = $(filter-out addfileheader,$(MAKECMDGOALS)) +addfileheader: + addfileheader $(ADDFILEHEADER_OPTIONS) -p $(ADDFILEHEADER_PREFIX) $(ADDFILEHEADER_FILES) + + +.PHONY: FORCE + +endif # _L4DIR_MK_MAKECONF undefined diff --git a/libdde_linux26/mk/WhatIsThis b/libdde_linux26/mk/WhatIsThis new file mode 100644 index 00000000..e64452d8 --- /dev/null +++ b/libdde_linux26/mk/WhatIsThis @@ -0,0 +1,2 @@ +# DROPS Building Makros +filelist="*.mk *.inc config.*" diff --git a/libdde_linux26/mk/binary.inc b/libdde_linux26/mk/binary.inc new file mode 100644 index 00000000..14da70a9 --- /dev/null +++ b/libdde_linux26/mk/binary.inc @@ -0,0 +1,729 @@ +# -*- Makefile -*- +# vim:set ft=make: +# +# DROPS (Dresden Realtime OPerating System) Component +# +# Makefile-Include for compiling templates (prog.mk, lib.mk) +# +# $Id: binary.inc 364 2008-05-29 02:51:17Z l4check $ +# +# $Author: l4check $ + +# Makefile-Include for binary and lib directories +# Definitions for building the Makefile.inc, building dependencies, +# compiler configuration. +# +# If SYSTEM is defined and we do not clean, we generate Makefile.inc. This file +# holds the dependencies of the targets. Is also contains the definitions of +# variables holding the objects of the related targets. In a multiple +# architecture makefile, Makefile.inc will be built in arch-specific subdirs, +# like the other components built. +# +# Most compiler- and linker-flag variables are defined in such a way that +# using them in the rule will expand all the target- and +# architecture-specific definitions. +# +# The relink-rule is defined in this file. +# +# The dependencies for compiling files are defined here, the dep-files are +# generated with names .(source-file).d for .c, .cc and .S-files. +# +# Clean-rules are defined here. +# + +$(GENERAL_D_LOC): $(L4DIR)/mk/binary.inc + +# our default Makefile-name in the OBJ-Subdirs +BID_OBJ_Makefile ?= Makefile + +ifeq ($(SYSTEM),) # if we have no system yet, build the subdirs +################################################################# +# +# we have NO system defined in $(SYSTEM), we are in the src/ dir +# +################################################################# + +# our default system +SYSTEMS ?= x86-l4v2 + +# intersection with BUILD_SYSTEMS + +# filter the systems from the local SYSTEMS variable ($2), that match +# the build-architecture. +# args: $(1) - build architecture (one from BUILD_SYSTEMS) +# $(2) - SYSTEMS +# 1. check, if both systems are the same (optionally reduced by the CPU) +# 2. check, if at least the arch matches (and optionally the cpu) +FILTER_SYSTEM = $(shell echo $(2)|$(AWKP) '\ + BEGIN{m=s="$(1)";sub("_[^-]*","",m)}\ + {for(i=1;i<=NF;i++){\ + if(m==$$i||s==$$i){print s}else\ + if(index(m,$$i)==1||index(s,$$i)==1)\ + {t=s;sub("-.*","",t);print t}}}') + +# print that system of the SYSTEMS variable that actually matched with +# $(BUILD_SYSTEMS) to the given system +# args: $(1) - build architecture (SYSTEM) +# $(2) - SYSTEMS +# + do nearly the same as in FILTER_SYSTEM, but additionally check if +# the resulting system matches $(1). If so, print the according pattern from +# SYSTEMS and exit +BID_ORIG_SYSTEM = $(shell echo $(2)|$(AWKP) '\ + BEGIN{m=s="$(1)";sub("_[^-]*","",m)}\ + {for(i=1;i<=NF;i++){\ + if(m==$$i||s==$$i){if(s=="$(1)"){print $$i;exit}};\ + if(index(m,$$i)==1||index(s,$$i)==1)\ + {t=s;sub("-.*","",t);\ + if(t=="$(1)"){print $$i;exit}}}}') + +ifeq ($(ROLE),idl.mk) +TARGET_SYSTEMS := $(sort $(foreach sys,$(sort \ + $(shell echo $(BUILD_SYSTEMS)|$(SED) -e 's/_[^- ]*\(-\{0,1\}\)/\1/g')), \ + $(call FILTER_SYSTEM,$(sys),$(SYSTEMS)))) +else +TARGET_SYSTEMS := $(sort $(foreach sys,$(BUILD_SYSTEMS),\ + $(call FILTER_SYSTEM,$(sys),$(SYSTEMS)))) +endif + +DIR_FROM_SUB = $(firstword $(addprefix ../,$(patsubst /%,,$(1))) $(1)) +SYSTEM_TO_ARCH = $(shell echo $(1)|$(SED) -e 's/[_-].*//') +SYSTEM_TO_CPU = $(shell echo $(1)|$(SED) -ne 's/[^-_]*_\([^-]*\).*/\1/p') +SYSTEM_TO_L4API = $(shell echo $(1)|$(SED) -ne 's/.*-\(.*\)/\1/p') + +$(foreach sys,$(TARGET_SYSTEMS),$(OBJ_DIR)/OBJ-$(sys)/$(BID_OBJ_Makefile)):$(OBJ_DIR)/OBJ-%/$(BID_OBJ_Makefile):$(OBJ_DIR)/.general.d + @install -d $(dir $@) + @echo 'L4DIR=$(L4DIR_ABS)'>$@ + @echo 'OBJ_BASE=$(OBJ_BASE)'>>$@ + @echo 'OBJ_DIR=$(OBJ_DIR)'>>$@ + @echo 'SRC_DIR=$(SRC_DIR)'>>$@ + @echo 'PKGDIR=$(PKGDIR_ABS)'>>$@ + @echo 'PKGDIR_ABS=$(PKGDIR_ABS)'>>$@ + @echo 'PKGDIR_OBJ=$(PKGDIR_OBJ)'>>$@ + @echo 'MAKECONFLOCAL=$(SRC_DIR)/Makeconf.local'>>$@ + @echo 'OSYSTEM=$(call BID_ORIG_SYSTEM,$*,$(SYSTEMS))'>>$@ + @echo 'SYSTEM=$*'>>$@ + @echo 'ARCH=$(call SYSTEM_TO_ARCH,$*)'>>$@ + @echo 'CPU=$(call SYSTEM_TO_CPU,$*)'>>$@ + @echo 'L4API=$(call SYSTEM_TO_L4API,$*)'>>$@ + @echo 'vpath %.c $(VPATH_SRC_BASE)'>>$@ + @echo 'vpath %.cc $(VPATH_SRC_BASE)'>>$@ + @echo 'vpath %.cpp $(VPATH_SRC_BASE)'>>$@ + @echo 'vpath %.S $(VPATH_SRC_BASE)'>>$@ + @echo 'vpath %.y $(VPATH_SRC_BASE)'>>$@ + @echo 'vpath %.l $(VPATH_SRC_BASE)'>>$@ + @echo 'vpath %.ld $(VPATH_SRC_BASE)'>>$@ + @echo 'vpath %.dpe $(VPATH_SRC_BASE)'>>$@ + @echo '.general.d: $(SRC_DIR)/$(if $(wildcard Make.rules),Make.rules,Makefile)'>>$@ + @echo 'include $(SRC_DIR)/$(if $(wildcard Make.rules),Make.rules,Makefile)'>>$@ + @echo 'include $$(L4DIR)/mk/$(ROLE)'>>$@ + +install relink scrub:: $(foreach arch,$(TARGET_SYSTEMS),\ + $(OBJ_DIR)/OBJ-$(arch)/$(BID_OBJ_Makefile)) + $(if $(TARGET_SYSTEMS), $(VERBOSE)set -e ; \ + for d in $(TARGET_SYSTEMS) ; do \ + PWD=$OBJ-$$d $(MAKE) -C $(OBJ_DIR)/OBJ-$$d -f $(BID_OBJ_Makefile) \ + $@ ; done ) + +.PHONY: pre-obj +pre-obj:: + +all:: $(foreach arch,$(TARGET_SYSTEMS), $(OBJ_DIR)/OBJ-$(arch)) +.PHONY: $(foreach arch,$(TARGET_SYSTEMS), $(OBJ_DIR)/OBJ-$(arch)) +$(foreach arch,$(TARGET_SYSTEMS), $(OBJ_DIR)/OBJ-$(arch)):%:%/$(BID_OBJ_Makefile) pre-obj + $(VERBOSE)PWD=$@ $(MAKE) $(PL_j) -C $@ -f $(BID_OBJ_Makefile) + +clean disasm:: + $(if $(wildcard $(OBJ_DIR)/OBJ-*), $(VERBOSE)set -e ; \ + for d in $(wildcard $(OBJ_DIR)/OBJ-*) ; do \ + PWD=$$d $(MAKE) -C $$d -f $(BID_OBJ_Makefile) $@; \ + done, @true) + +cleanall:: + $(VERBOSE)$(RM) -r $(wildcard $(OBJ_DIR)) + +.PHONY: $(TARGET_SYSTEMS) + +else +############################################################### +# +# we have a system defined in $(SYSTEM), we are in an OBJ- dir +# +############################################################### + +all:: $(TARGET) + +disasm: $(TARGET) + $(call DISASM_CMD,$<) + +L4INCDIR ?= $(addprefix $(OBJ_BASE)/include/$(ARCH)/,$(L4API)) \ + $(addprefix $(OBJ_BASE)/include/,$(L4API)) \ + $(OBJ_BASE)/include/$(ARCH) \ + $(OBJ_BASE)/include \ + $(DICE_INCDIR) \ + $(addprefix $(DROPS_STDDIR)/include/$(ARCH)/,$(L4API)) \ + $(addprefix $(DROPS_STDDIR)/include/,$(L4API)) \ + $(DROPS_STDDIR)/include/$(ARCH) \ + $(DROPS_STDDIR)/include +L4LIBDIR ?= $(addprefix $(OBJ_BASE)/lib/$(ARCH)_$(CPU)/,$(L4API)) \ + $(OBJ_BASE)/lib/$(ARCH)_$(CPU) \ + $(OBJ_BASE)/lib \ + $(addprefix $(DROPS_STDDIR)/lib/$(ARCH)_$(CPU)/,$(L4API)) \ + $(DROPS_STDDIR)/lib/$(ARCH)_$(CPU) \ + $(DROPS_STDDIR)/lib + +L4LINUX22_DIR ?= $(L4DIR)/../linux22 + +# +# Variables Section +# +# There is a hierarchy on defining variables depending on the targets they +# refer to: Most standard-Make Variables are supported. This includes +# LDFLAGS - options for ld, defined in prog.mk and lib.mk +# CPPFLAGS - options for the c preprocessor, included in CFLAGS +# CFLAGS - options for the c compiler +# CXXFLAGS - options for the c++ compiler +# ASFLAGS - options for the assembler +# +# Addtitionally, the following varibales are supported: +# SRC_C, SRC_CC, SRC_S - .c, .cc, .S source files +# CRT0, CRTN - startup and finish code +# LIBS - additional libs to link (with -l), including paths (-L) +# IDL - interface definition files +# TARGET - targets to ge built +# +# These variables will be used for all operations with the corresponding +# file types. More specific description is possible by using variables with +# added specifications. These specifications include a referred element and +# the architecture, both optional but in this order, separated by +# underscores. The referred element for CPPFLAGS, CFLAGS, CXXFLAGS and +# ASFLAGS is the source file. For the other variables, it is one of the +# target files. The TARGET variable can only be postfixed by an +# architecture. +# The specific variables will be used for the target and the referred element +# given in the name, additionally to the more general ones. +# +# Example for a valid specifications: +# SRC_C_libxverbose.a = verbose.c - ar's verbose.o into libxverbose.a, but +# not in other libs in the TARGET var. + +include $(L4DIR)/mk/modes.inc + +# select the variable specified in $(1) from the current architecture and +# mode. Fall back to "all" architecture if no specific version exists. +BID_mode_var= $(if $($(1)_$(ARCH)_$(MODE)),$($(1)_$(ARCH)_$(MODE)),$($(1)_all_$(MODE))) + +BID_SUPPORTED ?= $(call BID_mode_var,BID_SUPPORTED) +ifneq ($(BID_SUPPORTED),y) +$(error Mode "$(MODE)" is not supported for CPU architecture "$(ARCH)") +endif + +LIBCINCDIR ?= $(call BID_mode_var,LIBCINCDIR) +LIBCLIBDIR ?= $(call BID_mode_var,LIBCLIBDIR) +LIBCLIBS ?= $(call BID_mode_var,LIBCLIBS) +L4LIBS ?= $(call BID_mode_var,L4LIBS) +CRT0 ?= $(call BID_mode_var,CRT0) +CRTP ?= $(if $(filter $(CRT0_DEFAULT),$(CRT0)),$(CRTP_DEFAULT),$(CRT0)) +CRTN ?= $(call BID_mode_var,CRTN) +LDSCRIPT ?= $(call BID_mode_var,LDSCRIPT) + +# we do not need to put our FLAG-definitions into a special file if we can +# use the target to parameterize it and if it needs not to appear in the deps +#CRT0 = $(word 1, $(CRT0_$@_$(OSYSTEM)) $(CRT0_$@) $(CRT0_$(OSYSTEM))) +#CRTN = $(word 1, $(CRTN_$@_$(OSYSTEM)) $(CRTN_$@) $(CRTN_$(OSYSTEM))) +LIBS += $(strip $(LIBS_$(OSYSTEM)) $(LIBS_$@) $(LIBS_$@_$(OSYSTEM))) + + +LDFLAGS += $(strip $(LDFLAGS_$(OSYSTEM)) $(LDFLAGS_$(ARCH)) $(LDFLAGS_$@) $(LDFLAGS_$@_$(OSYSTEM))) + +# May 2007: force somewhat old hash-style as some(!, independant of the +# actual version) ld now use an other format, no uclibc upstream fix +# available yet, until available, we need: +ifeq ($(LD_HAS_HASH_STYLE_OPTION),y) +ifneq ($(HOST_LINK),1) +LDFLAGS += --hash-style=sysv +endif +endif + +OPTS ?= -g -O2 -fno-strict-aliasing +WARNINGS?= -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(WARNINGS_$@) + +ifeq ($(MODE),host) +# never cross compile in host mode +SYSTEM_TARGET = +CC = $(HOST_CC) +CXX = $(HOST_CXX) +else +# no architecture specific flags in host mode +OPTS += $(CARCHFLAGS_$(ARCH)) $(CARCHFLAGS_$(ARCH)_$(CPU)) +endif + +# no link address if build a lib or we're compiling a host program and using +# the host linker scripts +ifeq ($(ROLE),lib.mk) +NO_DEFAULT_RELOC := y +endif +ifneq ($(HOST_LINK),) +NO_DEFAULT_RELOC := y +endif + +default_reloc_base = $(firstword $(DEFAULT_RELOC_$(1)) \ + $(DEFAULT_RELOC_$(ARCH)) \ + $(DEFAULT_RELOC) \ + $(if $(NO_DEFAULT_RELOC),,0x01000000)) +default_reloc = $(if $(call default_reloc_base,$(1)),\ + $(shell printf "0x%x" $$(($(RAM_BASE) + $(call default_reloc_base,$(1))))),) + +$(CLIENTIDL:.idl=-client.o): CFLAGS += -ffunction-sections +CFLAGS += $(BID_CFLAGS_GSTAB) $(BID_CFLAGS_OMIT_FP) +CFLAGS += $(CFLAGS_$(OSYSTEM)) $(CFLAGS_$($@_ + # write helper variables containing the IDL-C-Sources + @$(ECHO) -en '$(strip $(foreach target,$(TARGET), \ + \nIDL_SRC_C_$(target)=$(call IDL_SRC_Cfn,$(target))))'>>$@_ + # and add them to SRC_C + @$(ECHO) -en '$(strip $(foreach target,$(TARGET), \ + \nSRC_C_$(target) += $$(IDL_SRC_C_$(target))))'>>$@_ + # but set the variables empty for the current rule + @$(ECHO) -en '$(strip $(foreach target,$(TARGET), \ + \n$(BID_OBJ_Makefile).inc: IDL_SRC_C_$(target)=))'>>$@_ + # write helper variables containing the IDL-C++-Sources + @$(ECHO) -en '$(strip $(foreach target,$(TARGET), \ + \nIDL_SRC_CC_$(target)=$(call IDL_SRC_CCfn,$(target))))'>>$@_ + # and add them to SRC_CC + @$(ECHO) -en '$(strip $(foreach target,$(TARGET), \ + \nSRC_CC_$(target) += $$(IDL_SRC_CC_$(target))))'>>$@_ + # but set the variables empty for the current rule + @$(ECHO) -en '$(strip $(foreach target,$(TARGET), \ + \n$(BID_OBJ_Makefile).inc: IDL_SRC_CC_$(target)=))'>>$@_ + # write the object declaration variables + # TARGET_{STANDARD, PIC, SHARED} contain the appropriate targets + # TARGET_PROFILE_{STANDARD, PIC, SHARED} as well + @$(ECHO) -en '$(strip $(foreach target,$(TARGET_STANDARD), \ + \nOBJS_$(target) += $(call targetobjs,$(target),)))' >>$@_ + @$(ECHO) -en '$(strip $(foreach target,$(TARGET_PIC) \ + $(TARGET_SHARED), \ + \nOBJS_$(target) += $(call targetobjs,$(target),.s)))' >>$@_ + @$(ECHO) -en '$(strip $(foreach target,$(TARGET_PROFILE), \ + \nOBJS_$(target) += $(call targetobjs,$(target),.pr)))' >>$@_ + @$(ECHO) -e '$(strip $(foreach target,$(TARGET_PROFILE_PIC) \ + $(TARGET_PROFILE_SHARED), \ + \nOBJS_$(target) += $(call targetobjs,$(target),.pr.s)))' >>$@_ + # + # write the dpe-dependencies + @$(ECHO) -e '$(foreach obj,$(sort \ + $(foreach t,$(TARGET_STANDARD),$(call targetobjs,$t)) \ + $(foreach t,$(TARGET_PIC) $(TARGET_SHARED), \ + $(call targetobjs,$t,.s)) \ + $(foreach t,$(TARGET_PROFILE),$(call targetobjs,$t,.pr)) \ + $(foreach t,$(TARGET_PROFILE_PIC) $(TARGET_PROFILE_SHARED),\ + $(call targetobjs,$t,.pr.s))),$(strip \ + $(addprefix \n$(obj): ,$(patsubst %.dpe,%.dpi, \ + $(DPE_$(obj:.o=.c)) $(DPE_$(obj:.o=.cc)) \ + $(DPE_$(obj:.s.o=.c)) $(DPE_$(obj:.s.o=.cc)) \ + $(DPE_$(obj:.pr.o=.c)) $(DPE_$(obj:.pr.o=.cc)) \ + $(DPE_$(obj:.pr.s.o=.c)) $(DPE_$(obj:.pr.s.o=.cc)) \ + ))))' >>$@_ + # + # create the object-dirs + @$(if $(OBJDIRS), $(VERBOSE)set -e; for d in $(OBJDIRS); do \ + [ -d "$$d" ] || $(MKDIR) $$d; done ) + + # + # write the object-dependencies for the targets + @$(ECHO) -e '$(foreach target,$(TARGET),$(strip\ + \n$(target): $$(OBJS_$(target)) ))' >> $@_ + # make the target dependent on '.general.d' + @$(ECHO) -e '$(foreach target,$(TARGET),$(strip \ + \n$$(OBJS_$(target)): .general.d))' \ + >> $@_ + # Using LDSO does not need a RELOC address, so omit the following in + # this case +ifneq ($(MODE),loader) + # in case of a binary, write the link address + # the dependency to the static file: If DEFAULT_RELOC is set, + # all targets are made dependent on the STATIC file + # (defined in Makeconf). + # If DEFAULT_RELOC_xxx is set, xxx is made dependent on the + # STATIC file. +ifneq ($(strip $(foreach target,$(TARGET), $(call default_reloc,$(target)))),) +ifneq ($(filter l4linux host,$(MODE)),) + $(error DEFAULT_RELOC must not be set if MODE is l4linux or host) +endif + # the relocatable binaries depend on Makefile.inc + @$(ECHO) -e '\n$(strip \ + $(foreach target, $(TARGET), \ + $(if $(call default_reloc,$(target)),$(target))) \ + : $@)' >>$@_ +ifneq ($(wildcard $(STATICFILE)),) + # Makefile.inc depends on STATIC + @$(ECHO) -e '\n$@: $(firstword $(wildcard $(STATICFILE)))' >>$@_ + # we find out the relocation address here. + @$(ECHO) -e '$(foreach target, $(TARGET),$(strip \ + \nLDFLAGS_$(target)+= -Ttext=$(firstword \ + $(shell $(AWKP) -v prog=$(target) \ + "/^[^\#]/{if(\$$2==prog){print $$1; exit}}" \ + < $(firstword $(wildcard $(STATICFILE)))) \ + $(call default_reloc,$(target)))))' \ + >>$@_ + # and the dummy-rule to rebuild myself if STATIC disappears + @$(ECHO) -e '\n$(firstword $(wildcard $(STATICFILE))): ' >>$@_ +else + # STATIC does not exist. rebuild myself if STATIC appears + @$(ECHO) -e '\n$$(if $$(wildcard $(STATICFILE)), $@: FORCE)' \ + >>$@_ + # we find out the relocation address here. + @$(ECHO) -e '$(foreach target, $(TARGET),$(strip \ + \nLDFLAGS_$(target)+= -Ttext=$(firstword \ + $(call default_reloc,$(target)))))' \ + >>$@_ +endif # STATIC file +endif +endif # MODE != loader + @mv $@_ $@ + +ifeq ($(filter scrub help,$(MAKECMDGOALS)),) +-include $(BID_OBJ_Makefile).inc +endif + +# +# Rules Section +# + +# the default target "all" ensures building of the targets. When multiple +# architectures are used, the targets are build in subdirs. + +# the relink-rule: make the TARGETs phony. Specification of build-targets +# in MAKECMDGOALS is not allowed. Possibility: TARGET= +# +ifneq ($(filter relink,$(MAKECMDGOALS)),) +.PHONY: $(TARGET) +relink: all +endif + + + +### +# +# Compilation rules with dependency-generation +# +# If we have ld.so, we use it to create our dependencies (see MAKEDEP +# definition). Otherwise, we fall back to whatever we need. For +# compilation with gcc, this is using "-MD" and postprocessing the +# generated files. + +ifeq ($(HAVE_LDSO),) +LIBDEPS = $(foreach file, \ + $(patsubst -l%,lib%.a,$(filter-out -L%,$(LDFLAGS))) \ + $(patsubst -l%,lib%.so,$(filter-out -L%,$(LDFLAGS))),\ + $(word 1, $(foreach dir, \ + $(patsubst -L%,%,\ + $(filter -L%,$(LDFLAGS) $(L4ALL_LIBDIR))),\ + $(wildcard $(dir)/$(file))))) + +DEPEND_EXTEND_CMD = $(AWKP) ' \ +/^[^:]*: ..*/{ \ + while(sub("\\\\$$","")){ \ + getline nextline ; \ + $$0=$$0 " " nextline \ + } \ + split($$0,field,": "); \ + sub("^$(*F).o","$*.s $*.i $@",field[1]); \ + nr=split(field[2],deps) ; \ + for(i=1;i<=nr;){ \ + printf("ifeq ($$(shell test y \\\n"); \ + for(j=0; j<100 && i+j<=nr; j++){ \ + printf("-a -r %s \\\n", deps[i+j]); \ + } \ + printf("&& echo y),)"); \ + printf("\n%s: FORCE\nelse\n%s: $(BID_OBJ_Makefile) \\\n", \ + field[1],field[1]); \ + for(j=0; j<100 && i+j<=nr; j++){ \ + printf("%s \\\n",deps[i+j]); \ + } \ + printf("\nendif\n"); \ + i+=j; \ + } \ +}' +DEPEND_EXTEND_FUNC = ( $(DEPEND_EXTEND_CMD) < $(1) > $(2).new && rm -f $(1) && mv $(2).new $(2) ) || ( rm -f $(1) $(2).new $(2) ; $(DEPEND_IGNORE_ERRORS) ) +DEPEND_FLAG = -MD + +.PHONY: FORCE +endif # HAVE_LDSO empty + +%.o: %.cc + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.s.o: %.cc + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.pr.o: %.cc + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.pr.s.o: %.cc + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.o: %.cpp + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.s.o: %.cpp + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.pr.o: %.cpp + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.pr.s.o: %.cpp + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CXX_NAME)) $(CXX) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.o: %.c + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.s.o: %.c + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.pr.o: %.c + @$(COMP_PR_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.pr.s.o: %.c + @$(COMP_PR_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(CFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.o: %.S + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.s.o: %.S + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.pr.o: %.S + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.pr.s.o: %.S + @$(COMP_MESSAGE) + $(VERBOSE)$(call MAKEDEP,$(INT_CPP_NAME)) $(CC) -c $(DEPEND_FLAG) $(CPPFLAGS) $(ASFLAGS) $(PICFLAGS) -DPROFILE -pg $(call absfilename,$<) -o $@ + $(DEPEND_VERBOSE)$(call DEPEND_EXTEND_FUNC, $(*F).d, $(dir $@).$(notdir $@).d) + +%.c: %.y + @$(GEN_MESSAGE) + $(VERBOSE)$(YACC) $(YFLAGS) $(call absfilename,$<) + $(VERBOSE)mv -f y.tab.c $@ + $(VERBOSE)if [ -f y.tab.h ]; then mv -f y.tab.h $(@:.c=.h); fi + +%.c: %.l + @$(COMP_MESSAGE) + $(VERBOSE)$(LEX) -o$@ $(call absfilename,$<) + +%.i: %.c + @$(COMP_MESSAGE) + $(VERBOSE)$(CC) -E -H -dD $(CPPFLAGS) $(CFLAGS) $(call absfilename,$<) -o $@ + $(VERBOSE)$(INDENT) -o $@ $@ + +%.s.i: %.c + @$(COMP_MESSAGE) + $(VERBOSE)$(CC) -E -H -dD $(CPPFLAGS) $(CFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ + $(VERBOSE)$(INDENT) -o $@ $@ + +%.i: %.cc + @$(COMP_MESSAGE) + $(VERBOSE)$(CXX) -E -H -dD $(CPPFLAGS) $(CXXFLAGS) $(call absfilename,$<) -o $@ + $(VERBOSE)$(INDENT) -sob -o $@ $@ + +%.s.i: %.cc + @$(COMP_MESSAGE) + $(VERBOSE)$(CXX) -E -H -dD $(CPPFLAGS) $(CXXFLAGS) $(PICFLAGS) $(call absfilename,$<) -o $@ + $(VERBOSE)$(INDENT) -sob -o $@ $@ + +%.i: %.cpp + @$(COMP_MESSAGE) + $(VERBOSE)$(CXX) -E -H -dD $(CPPFLAGS) $(CXXFLAGS) $(call absfilename,$<) -o $@ + $(VERBOSE)$(INDENT) -sob -o $@ $@ + +%.i: %.S + @$(COMP_MESSAGE) + $(VERBOSE)$(CC) -E -H -dD $(CPPFLAGS) $(ASFLAGS) $(call absfilename,$<) -o $@ + $(VERBOSE)$(INDENT) -sob -o $@ $@ + +%.S: %.c + @$(COMP_MESSAGE) + $(VERBOSE)$(CC) -S $(CFLAGS) $(CPPFLAGS) $(call absfilename,$<) -o $@ + +%.S: %.cc + @$(COMP_MESSAGE) + $(VERBOSE)$(CXX) -S $(CXXFLAGS) $(CPPFLAGS) $(call absfilename,$<) -o $@ + +%.S: %.cpp + @$(COMP_MESSAGE) + $(VERBOSE)$(CXX) -S $(CXXFLAGS) $(CPPFLAGS) $(call absfilename,$<) -o $@ + +%.dpi: %.dpe + @$(GEN_MESSAGE) + $(VERBOSE)$(call MAKEDEP,perl) $(GEN_DOPECODE) $< >$@ + +DEPS += $(foreach file,$(ALLOBJS), $(dir $(file)).$(notdir $(file)).d) +DEPS += $(foreach file,$(ALLDPI), $(dir $(file)).$(notdir $(file)).d) + +# Common clean Rules + +clean cleanall:: + $(VERBOSE)$(RM) $(strip $(filter-out $(KEEP_ON_CLEAN),\ + $(wildcard *.dpi) $(wildcard *.o) $(ALLOBJS) $(DEL_ON_CLEAN))) + +# clean: delete all temporary editor files, objects, binaries +# and most generated files +cleanall:: + $(VERBOSE)$(RM) $(TARGET) $(wildcard .*.d) $(wildcard $(BID_OBJ_Makefile).inc) + +.PHONY: scrub clean cleanall disasm + +endif # $(SYSTEM) is defined + +# General rules + +# scrub: delete temporary editor files and stuff like this +# can be extended by lokals +scrub cleanall:: + $(VERBOSE)$(SCRUB) + diff --git a/libdde_linux26/mk/config.help b/libdde_linux26/mk/config.help new file mode 100644 index 00000000..9e0a8728 --- /dev/null +++ b/libdde_linux26/mk/config.help @@ -0,0 +1,379 @@ +CPU architecture +BUILD_ARCH_x86 + Specify for which processor architecture you want to build. You may + select between x86 (PC), arm, and amd64. + + +CPU-Types for architecture +CPU + Specify for which CPU types you want to build code. + Specify at least one CPU type. + + Supported CPUs for x86 architecture are: 586, 686, K6, K7. + Supported CPUs for arm architecture are: sa, int. + + You can build for multiple CPU types, the code will be stored in + different directories. + + +Build code using API +BUILD_ABI_l4v2 + Specify the version of the Kernel Programming Interface. You may + select between L4.Fiasco (previously V2) or Linux. + + +Build for arm architecture +BUILD_SYSTEMS_arm_s + If you want to build code for the arm architecture, say Y here. + + You can build for multiple architectures, the code will be stored in + different directories. + + Most users will say N here. + +CPU-Types for arm architecture +CPU_arm + Specify for which arm architecture CPU types you want to build code. + Specify at least one CPU type. Supported CPUs are: sa. + + You can build for multiple CPU types, the code will be stored in + different directories. + +Build for amd64 architecture +BUILD_SYSTEMS_amd64_s + If you want to build code for the amd64 architecture, say Y here. + + You can build for multiple architectures, the code will be stored in + different directories. + + Most users will say N here. + +CPU-Types for amd64 architecture +CPU_amd64 + Specify for which amd64 architecture CPU types you want to build code. + Specify at least one CPU type. + + You can build for multiple CPU types, the code will be stored in + different directories. + +Build for ppc32 architecture +BUILD_SYSTEMS_ppc32_s + If you want to build code for the ppc32 architecture, say Y here. + + You can build for multiple architectures, the code will be stored in + different directories. + + Most users will say N here. + +CPU-Types for ppc32 architecture +CPU_ppc32 + Specify for which ppc32 architecture CPU types you want to build code. + Specify at least one CPU type. + + You can build for multiple CPU types, the code will be stored in + different directories. + + + + +Build shared libloaders.s.so +BUILD_LOADER + The "loader" package allows to build a shared library containing + common libraries of L4Env. To build this shared library, the other + L4Env libraries must be build in PIC mode, additionally to the + normal, i.e. non-PIC, mode. + + If you want to use the loader, say Y here. + + +Base directory of the DROPS install tree +DROPS_STDDIR + This is the directory where the includes, libraries and binaries + are looked for. On 'make install', files are installed here. + + For users at TUD with access to os:/home/drops, this is /home/drops. + For others, this is usually $(HOME)/src/drops or similar. + + +Final location of the DROPS install tree +DROPS_INSTDIR + In case you are installing into a temporary DROPS_STDDIR subdirectory, + which will be moved later, set DROPS_INSTDIR to this final + destination. + + You will normally use the default setting "$(DROPS_STDDIR)". + DROPS_INSTDIR is merely used by the daily consitency-check of DROPS. + + +DDE-2.4 include path +DDE_INCDIR + This is a space-separated list of paths where the DDE-Linux includes + can be found. + + Upon compilation, the DDE-Linux package installs its header files + like any other DROPS package into subdirs of $(L4DIR)/include or + $(DROPS_STDDIR)/include, respectively. This variable lists these + subdirectories. + + Normally, you do not have to change this value. + +DDE-2.6 include path +DDE26_INCDIR + This is a space-separated list of paths where the includes of the + Linux-2.6 version of the DDE-Linux package (dde_linux26) can be + found. + + Upon compilation, the DDE-Linux 2.6 package installs its header + files like any other DROPS package into subdirs of $(L4DIR)/include + or $(DROPS_STDDIR)/include, respectively. This variable lists these + subdirectories. + + Normally, you do not have to change this value. + + +SDL include path +SDL_INCDIR + This is a space-separated list of paths where the SDL includes can + be found. + + Upon compilation, the SDL package installs its header files + like any other DROPS package into subdirs of $(L4DIR)/include or + $(DROPS_STDDIR)/include, respectively. This variable lists these + subdirectories. + + Normally, you do not have to change this value. + + +Verbose dependency building +DEPEND_VERBOSE_SWITCH + If enabled, the commands for dependency-generation will be shown. If + disabled, DEPEND_VERBOSE is set to '@' to prevent this. + + Most users will say N here. + + +Verbose compilation and building +VERBOSE_SWITCH + If enabled, the commands issued for compilation will be shown. If + disabled, VERBOSE is set to '@' to prevent this. + + +Short messages for compilation +SHOWMESSAGES + If enabled, a short textual description for every compilation step + is printed. + + Most users will say Y here. + + +Colored build-steps +BID_COLORED_PHASES + If enabled, significant messages will be printed in color, depending + on your $TERM setting. + + +Use special C-Compilers +BIDc_USE_SPECIAL_CC + If you want to specify specific versions of C and C++ compilers instead + of using the default ones, enable this option. Defaults are + "$(SYSTEM_TARGET)gcc" and "$(SYSTEM_TARGET)g++". + + Most users will say N here. + +Specific C-Compiler +HOSTCC + The C compiler to use to generate code for the host system (the one + you are using currently). + +Specific C++-Compiler +HOSTCXX + The C++ compiler to use to generate code for the host system (the one + you are using currently). + +Specific C-Compiler +CC_x86 + The C compiler to build x86 code. + +Specific C++-Compiler +CXX_x86 + The C++ compiler to build x86 code. + +Specific C-Compiler +CC_arm + The C compiler to build arm code. + +Specific C++-Compiler +CXX_arm + The C++ compiler to build arm code. + + +YACC-name +YACC + If you would like to use alternative yacc or lex tools, set those names + here. Defaults are 'byacc' and 'flex'. You can also specify cmdline + arguments using this option. + +LEX-name +LEX + If you would like to use alternative yacc or lex tools, set those names + here. Defaults are 'byacc' and 'flex'. You can also specify cmdline + arguments using this option. + +CTAGS-name +CTAGS + If you would like to use alternative ctags tool, set its name here. + You may want to at least also specify a recursive option for your ctags + tool. + +ETAGS-name +ETAGS + If you would like to use alternative etags tool, set its name here. + You may want to at least also specify a recursive option for your etags + tool. + +System has ld.so +HAVE_LDSO + If your system provides the dynamic linker ld.so, and this is used + by your compilers, you should enable this switch. This allows to + use faster, more flexible and more accurate methods for dependency + building. + + Most Linux-users will say Y here. + + +Automatically determine C preprocessor names +INT_CPP_NAME_SWITCH + If you use C-compilers BID does not know so far, there is a chance you + have to help BID about the names of the C and C++ preprocessors. E.g., + gcc tends to change its preprocessor names from subversion to + subversion, and the dependency tool used by BID wants to know about + these names. However, if dependencies are generated well, BID already + selected the corrects names for you. + + Most users will say Y here. + + +Internal C preprocessor name +INT_CPP_x86_NAME + The command name of the preprocessor your x86 C compiler uses. + Note: It is not necessarily the preprocessor as you would invoke it + from the command line. gcc uses its own internal names. + + For gcc versions prior to gcc 2.95.4 it is 'cpp'. + gcc verssion 2.95.4 uses 'cpp0'. gcc version 3.2 uses 'cc1'. + + +Internal C++ preprocessor name +INT_CXX_x86_NAME + The command name of the preprocessor your x86 C++ compiler uses. + Note: It is not necessarily the preprocessor as you would invoke it + from the command line. g++ uses its own internal names. + + For g++ versions prior to gcc 2.95.4 it is 'cpp'. + gcc verssion 2.95.4 uses 'cpp0'. gcc version 3.2 uses 'cc1plus'. + + +Internal C preprocessor name +INT_CPP_arm_NAME + The command name of the preprocessor your arm C compiler uses. + Note: It is not necessarily the preprocessor as you would invoke it + from the command line. gcc uses its own internal names. + + For gcc versions prior to gcc 2.95.4 it is 'cpp'. + gcc verssion 2.95.4 uses 'cpp0'. gcc version 3.2 uses 'cc1'. + + +Internal C++ preprocessor name +INT_CXX_arm_NAME + The command name of the preprocessor your arm C++ compiler uses. + Note: It is not necessarily the preprocessor as you would invoke it + from the command line. g++ uses its own internal names. + + For g++ versions prior to gcc 2.95.4 it is 'cpp'. + gcc verssion 2.95.4 uses 'cpp0'. gcc version 3.2 uses 'cc1plus'. + + +Automatically determine LD names +INT_LD_NAME_SWITCH + If you use C/C++ compilers BID does not know so far, there is a + chance you have to help BID about the names of the linker binaries. + E.g., linker binaries change on cross-compiler environments. The + dependency tool used by BID wants to know about these names. + However, if dependencies are generated well, BID already selected the + corrects names for you. + + Most users will say Y here. + +Internal linker name +INT_LD_x86_NAME + The command name of the linker your x86 C/C++ compiler uses. + +Internal linker name +INT_LD_arm_NAME + The command name of the linker your arm C/C++ compiler uses. + +Strip binaries on install +BID_STRIP_PROGS + If enabled, binaries will be stripped on installation into + $(L4DIR)/bin or $(DROPS_STDDIR)/bin. If you want to load them with + all their symbols (eg to show the symbols with the Fiasco kernel + debugger), say 'N' here. + + If unsure, say 'Y'. + +Generate gstabs-compatible debug Infos with gcc-3+ +BID_GSTAB_SW + If enabled, gcc will be passed the '-gstabs+' cmdline option. gcc will + generate debug information in the stabs format, including GNU + specific extensions. + + Enable this option to show the line information in the fiasco kernel + debugger. Disable BID_STRIP_PROGS then. + + You can safely say 'Y' here. + +GCC: Omit Frame-pointers +BID_GCC_OMIT_FP + + If enabled, gcc will be passed the '-fomit-frame-pointer' cmdline + option, adding an additional register to the register set for the + generated code. Programs will be faster, but backtraces cannot be + done, seriously hindering debugging. + + If unsure, say 'N'. + +Generate Map-files for binaries +BID_GENERATE_MAPFILE + + Enabling this option will generate map-files together with the binaries. + You do not need mapfiles for DROPS to work properly, but you might + become handy for debugging purposes. See ld(1) for details on mapfiles. + + If unsure, say 'N'. + +Build system using dietlibc +USE_DIETLIBC + Uses the dietlibc as the main libc (deprecated). + +Build system using uClibc +USE_UCLIBC + Uses the uClibc as the main libc. + +Enable Release flag +RELEASE_FLAG + This option enables the RELEASE flag possible omitting + debugging/development code. + +Build documentation +BID_BUILD_DOC + Build documentation. + +Build only in l4 directory +BID_BUILD_L4DIR_ONLY + Only build in l4 directory, no kernel, no dice. + +Name for the configuration +CONFIG_LABEL + Name for the configuration. The build system will also try to include + a file Makeconf.