--- a +++ b/trunk/wharfie/wharfie.mk @@ -0,0 +1,149 @@ +SHELL=/bin/bash +SUDO=$(shell which sudo) +DBOOTSTRAP=$(shell ${SUDO} which qemu-debootstrap) +DBOOTSTRAP2=$(shell ${SUDO} which debootstrap) +FAKEROOT=$(shell which fakeroot) +PACKAGES=locales systemd + +MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST))) +CWD := $(dir $(MAKEFILE_PATH)) + +# extend path to sbin binaries +export PATH := /usr/sbin:${PATH} + +ifeq (${FAKEROOT},) +$(error fakeroot not found. On debian, you may install the package fakeroot first) +endif + +ifeq (${DBOOTSTRAP},) +$(error qemu-debootstrap not found. On debian, you may install the package qemu-user-static first) +endif + +ifeq (${DBOOTSTRAP2},) +$(error debootstrap not found. On debian, you may install the package debootstrap first) +endif + +FAKEROOT+=-s ${CWD}/.fakeroot + +-include debian_version.mk + +.PHONY: test +test: + echo ${FAKEROOT} + + +# +# Debian / ARM Hardfloat +# +.PHONY: debian_armhf_%.tar +debian_armhf_%.tar: + -mkdir ./$$(basename $@ .tar) + ${SUDO} ${DBOOTSTRAP} --arch=armhf --variant=minbase --include="${PACKAGES}" $* ./$$(basename $@ .tar) http://ftp.debian.org/debian/ + (echo "deb http://ftp.debian.org/debian $* main"; \ + echo "deb-src http://ftp.debian.org/debian $* main") | ${SUDO} tee ./$$(basename $@ .tar)/etc/apt/sources.list + cd $$(basename $@ .tar); ${SUDO} tar -cf "../$@" . + ${SUDO} rm -R ./$$(basename $@ .tar) + echo DEBIAN_VERSION=$* > debian_version.mk + echo GCC_POSTFIX=-arm-none-eabi >> debian_version.mk + echo LIBC_POSTFIX=-armhf-cross >> debian_version.mk + +# +# Debian / ARM EABI +# +.PHONY: debian_armel_%.tar +debian_armel_%.tar: + -mkdir ./$$(basename $@ .tar) + ${SUDO} ${DBOOTSTRAP} --arch=armel --variant=minbase --include="${PACKAGES}" $* ./$$(basename $@ .tar) http://ftp.debian.org/debian/ + (echo "deb http://ftp.debian.org/debian $* main"; \ + echo "deb-src http://ftp.debian.org/debian $* main") | ${SUDO} tee ./$$(basename $@ .tar)/etc/apt/sources.list + cd $$(basename $@ .tar); ${SUDO} tar -cf "../$@" . + ${SUDO} rm -R ./$$(basename $@ .tar) + echo DEBIAN_VERSION=$* > debian_version.mk + echo GCC_POSTFIX=-arm-none-eabi >> debian_version.mk + echo LIBC_POSTFIX=-armel-cross >> debian_version.mk + +# +# Debian x86 +# +.PHONY: debian_%.tar +debian_%.tar: + -mkdir ./$$(basename $@ .tar) + ${SUDO} ${DBOOTSTRAP} --arch=i386 --variant=minbase --include="${PACKAGES}" $* ./$$(basename $@ .tar) http://ftp.debian.org/debian/ + (echo "deb http://ftp.debian.org/debian $* main"; \ + echo "deb-src http://ftp.debian.org/debian $* main") | ${SUDO} tee ./$$(basename $@ .tar)/etc/apt/sources.list + cd $$(basename $@ .tar); ${SUDO} tar -cf "../$@" . + ${SUDO} rm -R ./$$(basename $@ .tar) + echo DEBIAN_VERSION=$* > debian_version.mk + echo GCC_POSTFIX= >> debian_version.mk + echo LIBC_POSTFIX= >> debian_version.mk + +# +# Debian Cross-Toolchain +# +debian_toolchain.tar: + -mkdir ./$$(basename $@ .tar) + ${SUDO} ${DBOOTSTRAP} --arch=i386 --variant=minbase --include="gcc${GCC_POSTFIX} libstdc++-6-dev${LIBC_POSTFIX} libc6-dev${LIBC_POSTFIX}" ${DEBIAN_VERSION} ./$$(basename $@ .tar) http://ftp.debian.org/debian/ + cd $$(basename $@ .tar); ${SUDO} tar -cf "../$@" . + ${SUDO} rm -R ./$$(basename $@ .tar) + +# +# Export environment shell script for the toolchain +# + +define ENV_SH +TC_PATH=$$(dirname $$_) + +SYSROOT=$${TC_PATH}/target +INCLUDEDIR=$${TC_PATH}/host/usr/arm-linux-gnueabihf/include/ +LIBRARYDIR=$${TC_PATH}/target/usr/lib/arm-linux-gnueabihf/ + +COMPILE_PREFIX=$${TC_PATH}/host/usr/bin/arm-none-eabi- +PLUGINDIR=$$(dirname $$(readlink -f $${TC_PATH}/host/usr/lib/gcc/arm-none-eabi/*/liblto_plugin.so)) +HOSTLIBDIR=$${TC_PATH}/host/usr/lib/i386-linux-gnu/:$${TC_PATH}/host/usr/lib/:$${TC_PATH}/host/lib + +LD_LIBRARY_PATH=$${HOSTLIBDIR} +CC=$${COMPILE_PREFIX}gcc +CXX=$${COMPILE_PREFIX}cpp +LD=$${COMPILE_PREFIX}ld +AS=$${COMPILE_PREFIX}as +AR=$${COMPILE_PREFIX}ar +NM=$${COMPILE_PREFIX}nm +GCOV=$${COMPILE_PREFIX}gcov +OBJDUMP=$${COMPILE_PREFIX}objdump +CFLAGS= +LDFLAGS= +# common C/LD Flags +CFLAGS="$${CFLAGS} --sysroot=$${SYSROOT}" +CFLAGS="$${CFLAGS} -B$${PLUGINDIR} -mfloat-abi=hard" +LDFLAGS="$${CFLAGS}" +# CFLAGS +CFLAGS="$${CFLAGS} --sysroot=$${SYSROOT}" +CFLAGS="-I$${INCLUDEDIR}" + +# LDFLAGS +LDFALGS="-L$${LIBRARYDIR}" +LDFLAGS="$${LDFLAGS} -L$${LIBRARYDIR}" +LDFLAGS="$${LDFLAGS} -B$${LIBRARYDIR}" +LDFLAGS="$${LDFLAGS} -lc" + +export CC +export CXX +export LD +export AS +export AR +export NM +export GCOV +export OBJDUMP +export CFLAGS +export LDFLAGS +export LD_LIBRARY_PATH +endef + +export ENV_SH + +debian_toolchain_env.sh: + @echo "$${ENV_SH}" > $@ + +clean: + rm -f *.piling.tar + for i in ???????.piling/proc; do sudo umount "./$$i"; sudo rm -Rf "./$$(dirname $$i)"; done