diff --git a/vars/build.vars b/vars/build.vars
index 85b2e3b..3d15fd0 100644
--- a/vars/build.vars
+++ b/vars/build.vars
@@ -43,21 +43,22 @@ HOST_TOOLCHAIN_PREFIX="${PREFIX_CROSS}";
 : ${PKG_BINUTILS_HOST_X86_64_W64_MINGW32_TARGET:=x86_64-w64-mingw32};
 : ${PKG_GCC_STAGE1_CROSS_X86_64_W64_MINGW32_VERSION:=4.6.4};
 : ${PKG_GCC_STAGE1_CROSS_X86_64_W64_MINGW32_TARGET:=x86_64-w64-mingw32};
+: ${PKG_GCC_STAGE1_CROSS_X86_64_W64_MINGW32_BASE_DIR:=${WORKDIR}/gcc-build};
 : ${PKG_GCC_STAGE1_VERSION:=4.6.4};
-: ${PKG_GCC_STAGE1_BASE_DIR:=${WORKDIR}};
+: ${PKG_GCC_STAGE1_BASE_DIR:=${WORKDIR}/gcc-build};
 : ${PKG_PSXSTUB_URLS_GIT:="psxstub=${DEFAULT_GITROOT}/psxstub"};
 : ${PKG_PSXSTUB_BUILD_DIR:=psxstub};
 : ${PKG_PSXSTUB_BUILD_STEPS_DISABLE:=build:dynamic};
 : ${PKG_MUSL_NO_COMPLEX_VERSION:=1.1.12};
-: ${PKG_MUSL_NO_COMPLEX_BASE_DIR:=${WORKDIR}};
+: ${PKG_MUSL_NO_COMPLEX_BASE_DIR:=${WORKDIR}/musl-build};
 : ${PKG_GCC_RUNTIME_VERSION:=4.6.4};
-: ${PKG_GCC_RUNTIME_BASE_DIR:=${WORKDIR}};
+: ${PKG_GCC_RUNTIME_BASE_DIR:=${WORKDIR}/gcc-build};
 : ${PKG_MUSL_FULL_VERSION:=1.1.12};
-: ${PKG_MUSL_FULL_BASE_DIR:=${WORKDIR}};
+: ${PKG_MUSL_FULL_BASE_DIR:=${WORKDIR}/musl-build};
 : ${PKG_GCC_LIBSTDCPP_V3_VERSION:=4.6.4};
-: ${PKG_GCC_LIBSTDCPP_V3_BASE_DIR:=${WORKDIR}};
+: ${PKG_GCC_LIBSTDCPP_V3_BASE_DIR:=${WORKDIR}/gcc-build};
 : ${PKG_GCC_FULL_VERSION:=4.6.4};
-: ${PKG_GCC_FULL_BASE_DIR:=${WORKDIR}};
+: ${PKG_GCC_FULL_BASE_DIR:=${WORKDIR}/gcc-build};
 : ${PKG_INSTALL_STRIP_HOST_URL:=none};
 : ${PKG_PSXTYPES_HOST_URLS_GIT:=psxtypes=${DEFAULT_GITROOT}/psxtypes};
 : ${PKG_PSXTYPES_HOST_BUILD_STEPS_DISABLE:=build:dynamic};
@@ -124,12 +125,12 @@ NATIVE_TOOLCHAIN_PREFIX="${PREFIX_NATIVE}";
 : ${PKG_MUSL_NATIVE_SHA256SUM:=720b83c7e276b4b679c0bffe9509340d5f81fd601508e607e708177df0d31c0e};
 : ${PKG_MUSL_NATIVE_VERSION:=1.1.12};
 : ${PKG_MUSL_NATIVE_URL:=http://www.musl-libc.org/releases/musl-${PKG_MUSL_NATIVE_VERSION}.tar.gz};
-: ${PKG_MUSL_NATIVE_BASE_DIR:=${WORKDIR}};
+: ${PKG_MUSL_NATIVE_BASE_DIR:=${WORKDIR}/musl-build};
 : ${PKG_GCC_NATIVE_VERSION:=4.6.4};
-: ${PKG_GCC_NATIVE_BASE_DIR:=${WORKDIR}};
+: ${PKG_GCC_NATIVE_BASE_DIR:=${WORKDIR}/gcc-build};
 : ${PKG_GCC_STAGE1_NATIVE_X86_64_W64_MINGW32_VERSION:=4.6.4};
 : ${PKG_GCC_STAGE1_NATIVE_X86_64_W64_MINGW32_TARGET:=x86_64-w64-mingw32};
-: ${PKG_GCC_STAGE1_NATIVE_X86_64_W64_MINGW32_BASE_DIR:=${WORKDIR}};
+: ${PKG_GCC_STAGE1_NATIVE_X86_64_W64_MINGW32_BASE_DIR:=${WORKDIR}/gcc-build};
 : ${PKG_MDSO_URLS_GIT:="mdso=${DEFAULT_GITROOT}/mdso"};
 : ${PKG_MDSO_CONFIGURE_ARGS:="--prefix=/usr --target=${TARGET}"};
 : ${PKG_MDSO_INSTALL_FILES:="@mdso=bin/${TARGET}-mdso /=${TARGET}/bin @../../bin/mdso=${TARGET}/bin/mdso"};
@@ -351,10 +352,10 @@ LIB_PACKAGES_PREFIX="${PREFIX_NATIVE}";
 : ${PKG_LIBASSUAN_VERSION:=2.4.3};
 : ${PKG_LIBASSUAN_URL:=https://www.gnupg.org/ftp/gcrypt/libassuan/libassuan-${PKG_LIBASSUAN_VERSION}.tar.bz2};
 : ${PKG_LIBFIRM_URLS_GIT:="libfirm=http://pp.info.uni-karlsruhe.de/git/libfirm.git@master bfirm=${DEFAULT_GITROOT}/compilers/bfirm@main"};
-: ${PKG_LIBFIRM_BASE_DIR:=${WORKDIR}};
-: ${PKG_LIBFIRM_BUILD_DIR:=cparser+libfirm/build/libfirm};
+: ${PKG_LIBFIRM_BASE_DIR:=${WORKDIR}/cparser+libfirm-build};
+: ${PKG_LIBFIRM_BUILD_DIR:=build/libfirm};
 : ${PKG_LIBFIRM_CONFIGURE:=bfirm/configure};
-: ${PKG_LIBFIRM_CONFIGURE_ARGS:="--source-dir=../../../libfirm --prefix="};
+: ${PKG_LIBFIRM_CONFIGURE_ARGS:="--source-dir=../../libfirm --prefix="};
 : ${PKG_LIBGCRYPT_SHA256SUM:=3b67862e2f4711e25c4ce3cc4b48d52a58a3afdcd1d8c6a57f93a1c0ef03e5c6};
 : ${PKG_LIBGCRYPT_VERSION:=1.7.4};
 : ${PKG_LIBGCRYPT_URL:=https://www.gnupg.org/ftp/gcrypt/libgcrypt/libgcrypt-${PKG_LIBGCRYPT_VERSION}.tar.bz2};
@@ -595,10 +596,10 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}";
 : ${PKG_COREUTILS_VERSION:=8.28};
 : ${PKG_COREUTILS_URL:=https://ftp.gnu.org/gnu/coreutils/coreutils-${PKG_COREUTILS_VERSION}.tar.xz};
 : ${PKG_CPARSER_URLS_GIT:="cparser=http://pp.info.uni-karlsruhe.de/git/cparser.git@master bcparser=${DEFAULT_GITROOT}/compilers/bcparser@main"};
-: ${PKG_CPARSER_BASE_DIR:=${WORKDIR}};
-: ${PKG_CPARSER_BUILD_DIR:=cparser+libfirm/build/cparser};
+: ${PKG_CPARSER_BASE_DIR:=${WORKDIR}/cparser+libfirm-build};
+: ${PKG_CPARSER_BUILD_DIR:=build/cparser};
 : ${PKG_CPARSER_CONFIGURE:=bcparser/configure};
-: ${PKG_CPARSER_CONFIGURE_ARGS:="--source-dir=../../../cparser --prefix="};
+: ${PKG_CPARSER_CONFIGURE_ARGS:="--source-dir=../../cparser --prefix="};
 : ${PKG_CRON_URLS_GIT:="pkg-cron.git=git://anonscm.debian.org/pkg-cron/pkg-cron.git@debian/3.0pl1-128"};
 : ${PKG_CRON_ENV_VARS_EXTRA:="CC=${TARGET}-gcc:CFLAGS=${PACKAGES_CFLAGS_CONFIGURE} -D__GNU__"};
 : ${PKG_DASH_SHA256SUM:=5ecd5bea72a93ed10eb15a1be9951dd51b52e5da1d4a7ae020efd9826b49e659};
@@ -776,7 +777,7 @@ LEAF_PACKAGES_PREFIX="${PREFIX_NATIVE}";
 : ${PKG_PERL_VERSION:=5.22.1};
 : ${PKG_PERL_URL:=http://www.cpan.org/src/5.0/perl-${PKG_PERL_VERSION}.tar.gz};
 : ${PKG_PERL_URLS_GIT:="perl-cross=https://github.com/lalbornoz/perl-cross@master"};
-: ${PKG_PERL_BASE_DIR:=${WORKDIR}};
+: ${PKG_PERL_BASE_DIR:=${WORKDIR}/perl-build};
 : ${PKG_PERL_CONFIGURE_ARGS:="-A ccflags=-I${PREFIX_NATIVE}/include --sysroot=${PREFIX_NATIVE} --target=${TARGET}"};
 : ${PKG_PERL_ENV_VARS_EXTRA:="TARGET=${TARGET}"};
 : ${PKG_PERL_MAKEFLAGS_BUILD:=-j1};
diff --git a/vars/perl.vars b/vars/perl.vars
index a011deb..494139b 100644
--- a/vars/perl.vars
+++ b/vars/perl.vars
@@ -4,7 +4,7 @@
 
 pkg_perl_fetch_extract_post() {
 	local _fname_src _fname_dst _cflag;
-	(build_fileop cd "${WORKDIR}";
+	(build_fileop cd "${PKG_BASE_DIR}";
 	for _fname_src in $(find perl-cross -type f	\
 			-not -path perl-cross/.git/\* -not -name .gitignore); do
 		_fname_dst="perl-${PKG_VERSION}${_fname_src#perl-cross}";