--- /dev/null
+ifeq ($(CONFIG),)
+$(error CONFIG missing)
+endif
+
+include ${CONFIG}
+ifeq (${BUILDRUMP_TOOLFLAGS},)
+$(error invalid config file ${CONFIG})
+endif
+include ${BUILDRUMP_TOOLFLAGS}
+
+APP_TOOLS_DIR:= $(abspath .)
+
+APP_TOOL_FILES= configure make gmake toolchain.cmake recipe.s
+APP_TOOL_COMPILERS= cc c++
+
+APP_TOOL_SPECS= specs-compile_or_ferment specs-stub
+
+APP_TOOL_PASSTHROUGH= ar as cpp ld nm objcopy objdump ranlib readelf
+APP_TOOL_PASSTHROUGH+= size strings strip
+
+GNUPLATFORM:= $(shell ${RUMPMAKE} -f bsd.own.mk -V '$${RUMPRUN_TUPLE}')
+MACHINE_ARCH:= $(shell ${RUMPMAKE} -f bsd.own.mk -V '$${MACHINE_ARCH}')
+
+_CCVARIANT:=$(shell ${RUMPMAKE} -f bsd.own.mk -V '$${HAVE_LLVM:Dclang:Ugcc}')
+_CXXVARIANT:=$(shell ${RUMPMAKE} -f bsd.own.mk -V '$${HAVE_LLVM:Dclang++:Ug++}')
+
+include ../global.mk
+LDFLAGS_BAKE:= ${LDFLAGS.${PLATFORM}.${MACHINE_ARCH}}
+
+_APP_TOOL_TARGETS:= \
+ $(APP_TOOL_FILES:%=$(APP_TOOLS_DIR)/$(GNUPLATFORM)-%) \
+ $(APP_TOOLS_DIR)/$(GNUPLATFORM)-$(_CCVARIANT) \
+ $(APP_TOOLS_DIR)/$(GNUPLATFORM)-$(_CXXVARIANT) \
+ $(APP_TOOL_SPECS:%=$(APP_TOOLS_DIR)/%) \
+ $(APP_TOOL_PASSTHROUGH:%=$(APP_TOOLS_DIR)/$(GNUPLATFORM)-%) \
+ $(APP_TOOLS_DIR)/specs-bake-$(GNUPLATFORM)-$(PLATFORM)
+
+.PHONY: app-tools
+app-tools: $(_APP_TOOL_TARGETS)
+
+APP_TOOLS_MAKE := $(APP_TOOLS_DIR)/$(GNUPLATFORM)-make
+APP_TOOLS_CC := $(APP_TOOLS_DIR)/$(GNUPLATFORM)-${_CCVARIANT}
+APP_TOOLS_CXX := $(APP_TOOLS_DIR)/$(GNUPLATFORM)-${_CXXVARIANT}
+
+define APPTOOLS_templ
+$(APP_TOOLS_DIR)/${2}: \
+ $(APP_TOOLS_DIR)/${1} Makefile
+ sed <$$< >$$@.tmp \
+ -e 's#!CC!#$(CC)#g;' \
+ -e 's#!CXX!#$(CXX)#g;' \
+ -e 's#!APPTOOLS_CC!#$(APP_TOOLS_CC)#g;' \
+ -e 's#!APPTOOLS_CXX!#$(APP_TOOLS_CXX)#g;' \
+ -e 's#!MACHINE_ARCH!#$(MACHINE_ARCH)#g;' \
+ -e 's#!GNUPLATFORM!#$(GNUPLATFORM)#g;' \
+ -e 's#!DESTDIR!#$(DESTDIR)#g;' \
+ -e 's#!APPTOOLS_DIR!#$(APP_TOOLS_DIR)#g;' \
+ -e 's#!APPTOOLS_PLATFORM!#$(PLATFORM)#g;' \
+ -e 's#!CPPFLAGS!#$(BUILDRUMP_TOOL_CPPFLAGS)#g;' \
+ -e 's#!CFLAGS!#$(BUILDRUMP_TOOL_CFLAGS)#g;' \
+ -e 's#!CXXFLAGS!#$(BUILDRUMP_TOOL_CXXFLAGS)#g;' \
+ -e 's#!LDFLAGS_BAKE!#$(LDFLAGS_BAKE)#g;'
+ if test -x $$<; then chmod +x $$@.tmp; fi
+ mv -f $$@.tmp $$@
+endef
+$(foreach tool,${APP_TOOL_FILES},$(eval \
+ $(call APPTOOLS_templ,${tool}.in,$(GNUPLATFORM)-${tool})))
+$(foreach spec,${APP_TOOL_SPECS},$(eval \
+ $(call APPTOOLS_templ,${spec}.in,${spec})))
+$(eval $(call APPTOOLS_templ,cc.in,$(GNUPLATFORM)-${_CCVARIANT}))
+$(eval $(call APPTOOLS_templ,cc.in,$(GNUPLATFORM)-${_CXXVARIANT}))
+$(eval $(call APPTOOLS_templ,specs-bake.in,specs-bake-$(GNUPLATFORM)-$(PLATFORM)))
+
+define APPTOOLS_passthrough
+uptool_$1=$(shell echo $1 | tr '[:lower:]' '[:upper:]')
+toolval_$1=$${$${uptool_$1}}
+$(APP_TOOLS_DIR)/$(GNUPLATFORM)-$1:
+ printf '#!/bin/sh\n\nexec %s "$$$${@}"\n' $${toolval_${1}} >$$@.tmp
+ chmod +x $$@.tmp
+ mv -f $$@.tmp $$@
+endef
+$(foreach t,${APP_TOOL_PASSTHROUGH},$(eval $(call APPTOOLS_passthrough,${t})))
+
+clean:
+ rm -f $(_APP_TOOL_TARGETS)
+++ /dev/null
-_APPTOOLS_PARAMS= APP_TOOLS_PLATFORM APP_TOOLS_DIR
-
-define varchk_tmpl
-ifeq ($${$1},)
- _APPTOOLS_MISSING=$1
-endif
-endef
-$(foreach var,${_APPTOOLS_PARAMS},$(eval $(call varchk_tmpl,${var})))
-ifdef _APPTOOLS_MISSING
-$(error ${_APPTOOLS_MISSING} not defined)
-endif
-
-APP_TOOL_FILES= configure make gmake toolchain.cmake recipe.s
-APP_TOOL_COMPILERS= cc c++
-
-APP_TOOL_SPECS= specs-compile_or_ferment specs-stub
-
-APP_TOOL_PASSTHROUGH= ar as cpp ld nm objcopy objdump ranlib readelf
-APP_TOOL_PASSTHROUGH+= size strings strip
-
-GNUPLATFORM:= $(shell ${RUMPMAKE} -f bsd.own.mk -V '$${RUMPRUN_TUPLE}')
-MACHINE_ARCH:= $(shell ${RUMPMAKE} -f bsd.own.mk -V '$${MACHINE_ARCH}')
-
-_CCVARIANT:=$(shell ${RUMPMAKE} -f bsd.own.mk -V '$${HAVE_LLVM:Dclang:Ugcc}')
-_CXXVARIANT:=$(shell ${RUMPMAKE} -f bsd.own.mk -V '$${HAVE_LLVM:Dclang++:Ug++}')
-
-_APP_TOOL_TARGETS:= \
- $(APP_TOOL_FILES:%=$(APP_TOOLS_DIR)/$(GNUPLATFORM)-%) \
- $(APP_TOOLS_DIR)/$(GNUPLATFORM)-$(_CCVARIANT) \
- $(APP_TOOLS_DIR)/$(GNUPLATFORM)-$(_CXXVARIANT) \
- $(APP_TOOL_SPECS:%=$(APP_TOOLS_DIR)/%) \
- $(APP_TOOL_PASSTHROUGH:%=$(APP_TOOLS_DIR)/$(GNUPLATFORM)-%) \
- $(APP_TOOLS_DIR)/specs-bake-$(GNUPLATFORM)-$(APP_TOOLS_PLATFORM)
-
-.PHONY: app-tools
-app-tools: $(_APP_TOOL_TARGETS)
-
-APP_TOOLS_MAKE := $(APP_TOOLS_DIR)/$(GNUPLATFORM)-make
-APP_TOOLS_CC := $(APP_TOOLS_DIR)/$(GNUPLATFORM)-${_CCVARIANT}
-APP_TOOLS_CXX := $(APP_TOOLS_DIR)/$(GNUPLATFORM)-${_CXXVARIANT}
-
-define APPTOOLS_templ
-$(APP_TOOLS_DIR)/${2}: \
- $(APP_TOOLS_DIR)/${1} Makefile
- sed <$$< >$$@.tmp \
- -e 's#!CC!#$(CC)#g;' \
- -e 's#!CXX!#$(CXX)#g;' \
- -e 's#!APPTOOLS_CC!#$(APP_TOOLS_CC)#g;' \
- -e 's#!APPTOOLS_CXX!#$(APP_TOOLS_CXX)#g;' \
- -e 's#!MACHINE_ARCH!#$(MACHINE_ARCH)#g;' \
- -e 's#!GNUPLATFORM!#$(GNUPLATFORM)#g;' \
- -e 's#!DESTDIR!#$(DESTDIR)#g;' \
- -e 's#!APPTOOLS_DIR!#$(APP_TOOLS_DIR)#g;' \
- -e 's#!APPTOOLS_PLATFORM!#$(APP_TOOLS_PLATFORM)#g;' \
- -e 's#!CPPFLAGS!#$(BUILDRUMP_TOOL_CPPFLAGS)#g;' \
- -e 's#!CFLAGS!#$(BUILDRUMP_TOOL_CFLAGS)#g;' \
- -e 's#!CXXFLAGS!#$(BUILDRUMP_TOOL_CXXFLAGS)#g;' \
- -e 's#!LDFLAGS_BAKE!#$(LDFLAGS_BAKE)#g;'
- if test -x $$<; then chmod +x $$@.tmp; fi
- mv -f $$@.tmp $$@
-endef
-$(foreach tool,${APP_TOOL_FILES},$(eval \
- $(call APPTOOLS_templ,${tool}.in,$(GNUPLATFORM)-${tool})))
-$(foreach spec,${APP_TOOL_SPECS},$(eval \
- $(call APPTOOLS_templ,${spec}.in,${spec})))
-$(eval $(call APPTOOLS_templ,cc.in,$(GNUPLATFORM)-${_CCVARIANT}))
-$(eval $(call APPTOOLS_templ,cc.in,$(GNUPLATFORM)-${_CXXVARIANT}))
-$(eval $(call APPTOOLS_templ,specs-bake.in,specs-bake-$(GNUPLATFORM)-$(APP_TOOLS_PLATFORM)))
-
-define APPTOOLS_passthrough
-uptool_$1=$(shell echo $1 | tr '[:lower:]' '[:upper:]')
-toolval_$1=$${$${uptool_$1}}
-$(APP_TOOLS_DIR)/$(GNUPLATFORM)-$1:
- printf '#!/bin/sh\n\nexec %s "$$$${@}"\n' $${toolval_${1}} >$$@.tmp
- chmod +x $$@.tmp
- mv -f $$@.tmp $$@
-endef
-$(foreach t,${APP_TOOL_PASSTHROUGH},$(eval $(call APPTOOLS_passthrough,${t})))
-
-app-tools_clean:
- rm -f $(_APP_TOOL_TARGETS)
builduserspace ()
{
+ ${MAKE} -C app-tools CONFIG=$(pwd)/${PLATFORMDIR}/config.mk
usermtree ${STAGING}
compiler_rt: ${COMPILERRTDIR}/${PLATFORM}/libcompiler_rt.a
.PHONY: buildtest
-buildtest: ../../tests/hello/hello.c ${MAINOBJ} commonlibs app-tools
+buildtest: ../../tests/hello/hello.c ${MAINOBJ} commonlibs
${APP_TOOLS_CC} -g -o $@ $< -lrumprun_tester
@echo Testing baking ...
@export RUMPRUN_WARNING_STFU=please ; for board in \
rm -f bmk.ldscript
.PHONY: tests
-tests: ${MAINOBJ} commonlibs app-tools
+tests: ${MAINOBJ} commonlibs
../../tests/buildtests.sh ${PLATFORM}
../../tests/runtests.sh ${PLATFORM_DEFAULT_TESTER}
endif
ifneq (${KERNONLY},true)
-TARGETS:= app-tools userlibs
+TARGETS:= userlibs
else
TARGETS:= compiler_rt
endif
.PHONY: clean cleandir test
-APP_TOOLS_PLATFORM= hw
-APP_TOOLS_DIR:= $(abspath ../../app-tools)
-
-include ${APP_TOOLS_DIR}/Makefile.app-tools
-
include/hw/machine:
@ln -sf ../arch/${MACHINE_ARCH} include/hw/machine
${OBJCOPY} -w -G bmk_* -G rumpuser_* -G jsmn_* \
-G rumprun_platform_rumpuser_init -G _start $@
-clean: app-tools_clean commonclean
+clean: commonclean
rm -f ${OBJS_BMK} include/hw/machine buildtest ${MAINOBJ}
cleandir: clean
TARGETS= prepare links mini-os $(MAINOBJ)
ifneq (${KERNONLY},true)
-TARGETS+= app-tools userlibs
+TARGETS+= userlibs
else
TARGETS+= compiler_rt
endif
-L${COREDIR}/xen -L${RUMPUSERDIR}/xen -Wl,--whole-archive \
-lbmk_rumpuser -lbmk_core -Wl,--no-whole-archive
-APP_TOOLS_PLATFORM= xen
-APP_TOOLS_DIR= $(abspath ../../app-tools)
+.PHONY: clean arch_clean
-include $(APP_TOOLS_DIR)/Makefile.app-tools
-
-.PHONY: clean arch_clean app-tools_clean
-
-clean: app-tools_clean commonclean
+clean: commonclean
$(MAKE) -C xen OBJ_DIR=$(OBJ_DIR)/xen clean
rm -f $(OBJ_DIR)/*.o $(OBJ_DIR)/lib/*.o buildtest $(MAINOBJ)