diff --git a/.azure-pipelines/lib.sh b/.azure-pipelines/lib.sh
index 0b4078db44..a3a72539fb 100644
--- a/.azure-pipelines/lib.sh
+++ b/.azure-pipelines/lib.sh
@@ -89,7 +89,7 @@ clone_repos() {
local REPO_BRANCH="$SYSTEM_PULLREQUEST_TARGETBRANCH"
fi
- for proj in druntime phobos; do
+ for proj in phobos; do
if [ "$REPO_BRANCH" != master ] && [ "$REPO_BRANCH" != stable ] &&
! git ls-remote --exit-code --heads "https://github.com/dlang/$proj.git" "$REPO_BRANCH" > /dev/null; then
# use master as fallback for other repos to test feature branches
diff --git a/.azure-pipelines/windows-msbuild.bat b/.azure-pipelines/windows-msbuild.bat
index 1f2feeed74..a162b48444 100644
--- a/.azure-pipelines/windows-msbuild.bat
+++ b/.azure-pipelines/windows-msbuild.bat
@@ -37,22 +37,22 @@ REM configure LDC path
if "%D_COMPILER%" == "ldc" reg add "HKLM\SOFTWARE\LDC" /v InstallationFolder /t REG_SZ /d "%LDC_DIR%" /reg:32 /f
echo [STEP]: Building DMD via VS projects
-cd src
+cd compiler\src
if "%D_COMPILER%" == "ldc" set LDC_ARGS=%LDC_ARGS% /p:DCompiler=LDC
msbuild /target:dmd /p:Configuration=%CONFIGURATION% /p:Platform=%PLATFORM% %LDC_ARGS% vcbuild\dmd.sln || exit /B 1
%DMD% --version
echo [STEP]: Building druntime
-cd "%DMD_DIR%\..\druntime"
+cd "%DMD_DIR%\druntime"
"%DM_MAKE%" -f win64.mak MODEL=%MODEL% "DMD=%DMD%" "VCDIR=%VCINSTALLDIR%." "CC=%MSVC_CC%" "MAKE=%DM_MAKE%" "HOST_DMD=%HOST_DMD%" target || exit /B 2
echo [STEP]: Building phobos
cd "%DMD_DIR%\..\phobos"
-"%DM_MAKE%" -f win64.mak MODEL=%MODEL% "DMD=%DMD%" "VCDIR=%VCINSTALLDIR%." "CC=%MSVC_CC%" "AR=%MSVC_AR%" "MAKE=%DM_MAKE%" || exit /B 3
+"%DM_MAKE%" -f win64.mak MODEL=%MODEL% "DMD=%DMD%" "VCDIR=%VCINSTALLDIR%." "CC=%MSVC_CC%" "AR=%MSVC_AR%" "MAKE=%DM_MAKE%" "DRUNTIME=%DMD_DIR%\druntime" || exit /B 3
echo [STEP]: Building run.d testrunner and its tools
REM needs to be done before tampering with LIB and DFLAGS env variables (affecting the ldmd2 host compiler too)
-cd "%DMD_DIR%\test"
+cd "%DMD_DIR%\compiler\test"
"%HOST_DMD%" -m%MODEL% -g -i run.d || exit /B 4
run.exe tools "BUILD=%CONFIGURATION%" "DMD_MODEL=%PLATFORM%" || exit /B 4
@@ -77,17 +77,17 @@ if not "%C_RUNTIME%" == "mingw" goto not_mingw
rem skip runnable_cxx tests (incompatible MSVC runtime versions - 2017 (cl.exe) vs. 2013)
set DMD_TESTS=runnable compilable fail_compilation dshell unit_tests
rem FIXME: debug info incomplete when linking through lld-link
- del test\runnable\testpdb.d
+ del compiler\test\runnable\testpdb.d
set DRUNTIME_TESTS=test_mingw
:not_mingw
echo [STEP]: Building and running druntime tests
-cd "%DMD_DIR%\..\druntime"
+cd "%DMD_DIR%\druntime"
"%DM_MAKE%" -f win64.mak MODEL=%MODEL% "DMD=%DMD%" "VCDIR=%VCINSTALLDIR%." "CC=%MSVC_CC%" "MAKE=%DM_MAKE%" unittest %DRUNTIME_TESTS% || exit /B 5
echo [STEP]: Running DMD testsuite
-cd "%DMD_DIR%\test"
+cd "%DMD_DIR%\compiler\test"
set CC=%MSVC_CC%
run.exe --environment --jobs=%N% %DMD_TESTS% "ARGS=-O -inline -g" "BUILD=%CONFIGURATION%" "DMD_MODEL=%PLATFORM%" || exit /B 6
@@ -99,4 +99,4 @@ if "%D_COMPILER%_%MODEL%" == "ldc_64" copy %LDC_DIR%\lib64\libcurl.dll .
if "%D_COMPILER%_%MODEL%" == "ldc_32mscoff" copy %LDC_DIR%\lib32\libcurl.dll .
if "%D_COMPILER%_%MODEL%" == "dmd_64" copy %DMD_DIR%\dmd2\windows\bin64\libcurl.dll .
if "%D_COMPILER%_%MODEL%" == "dmd_32mscoff" copy %DMD_DIR%\dmd2\windows\bin\libcurl.dll .
-"%DM_MAKE%" -f win64.mak MODEL=%MODEL% "DMD=%DMD%" "VCDIR=%VCINSTALLDIR%." "CC=%MSVC_CC%" "MAKE=%DM_MAKE%" unittest || exit /B 7
+"%DM_MAKE%" -f win64.mak MODEL=%MODEL% "DMD=%DMD%" "VCDIR=%VCINSTALLDIR%." "CC=%MSVC_CC%" "MAKE=%DM_MAKE%" "DRUNTIME=%DMD_DIR%\druntime" unittest || exit /B 7
diff --git a/.azure-pipelines/windows.sh b/.azure-pipelines/windows.sh
index 10177538df..9e61d4c654 100644
--- a/.azure-pipelines/windows.sh
+++ b/.azure-pipelines/windows.sh
@@ -80,9 +80,9 @@ else
DMD_BIN_PATH="$DMD_DIR/generated/windows/release/$MODEL/dmd"
fi
-cd "$DMD_DIR/src"
+cd "$DMD_DIR/compiler/src"
"$DM_MAKE" -f "$MAKE_FILE" MAKE="$DM_MAKE" BUILD=debug unittest
-DFLAGS="-L-LARGEADDRESSAWARE" "$DM_MAKE" -f "$MAKE_FILE" MAKE="$DM_MAKE" reldmd-asserts
+DFLAGS="-L-LARGEADDRESSAWARE" "$DM_MAKE" -f "$MAKE_FILE" MAKE="$DM_MAKE" GEN="$DMD_DIR\generated" reldmd-asserts
################################################################################
# Build Druntime and Phobos
@@ -90,20 +90,19 @@ DFLAGS="-L-LARGEADDRESSAWARE" "$DM_MAKE" -f "$MAKE_FILE" MAKE="$DM_MAKE" reldmd-
LIBS_MAKE_ARGS=(-f "$MAKE_FILE" MODEL=$MODEL DMD="$DMD_BIN_PATH" VCDIR=. CC="$CC" AR="$AR" MAKE="$DM_MAKE")
-for proj in druntime phobos; do
- cd "$DMD_DIR/../$proj"
- "$DM_MAKE" "${LIBS_MAKE_ARGS[@]}"
-done
+cd "$DMD_DIR/druntime"
+"$DM_MAKE" "${LIBS_MAKE_ARGS[@]}"
+
+cd "$DMD_DIR/../phobos"
+"$DM_MAKE" "${LIBS_MAKE_ARGS[@]}" DRUNTIME="$DMD_DIR\druntime"
################################################################################
# Run DMD testsuite
################################################################################
-cd "$DMD_DIR/test"
+cd "$DMD_DIR/compiler/test"
# build run.d testrunner and its tools while host compiler is untampered
-cd ../test
-
if [ "$MODEL" == "32omf" ] ; then
TOOL_MODEL=32;
else
@@ -118,8 +117,8 @@ if [ "${DMD_TEST_COVERAGE:-0}" = "1" ] ; then
# Recompile debug dmd + unittests
rm -rf "$DMD_DIR/generated/windows"
- DFLAGS="-L-LARGEADDRESSAWARE" ../generated/build.exe --jobs=$N ENABLE_DEBUG=1 ENABLE_COVERAGE=1 dmd
- DFLAGS="-L-LARGEADDRESSAWARE" ../generated/build.exe --jobs=$N ENABLE_DEBUG=1 ENABLE_COVERAGE=1 unittest
+ DFLAGS="-L-LARGEADDRESSAWARE" ../../generated/build.exe --jobs=$N ENABLE_DEBUG=1 ENABLE_COVERAGE=1 dmd
+ DFLAGS="-L-LARGEADDRESSAWARE" ../../generated/build.exe --jobs=$N ENABLE_DEBUG=1 ENABLE_COVERAGE=1 unittest
fi
if [ "$MODEL" == "32omf" ] ; then
@@ -152,7 +151,7 @@ fi
# Build and run druntime tests
################################################################################
-cd "$DMD_DIR/../druntime"
+cd "$DMD_DIR/druntime"
"$DM_MAKE" "${LIBS_MAKE_ARGS[@]}" unittest test_all
################################################################################
@@ -168,7 +167,7 @@ else
else
cp "$DMD_DIR/tools/dmd2/windows/bin/libcurl.dll" .
fi
- "$DM_MAKE" "${LIBS_MAKE_ARGS[@]}" unittest
+ "$DM_MAKE" "${LIBS_MAKE_ARGS[@]}" DRUNTIME="$DMD_DIR\druntime" unittest
fi
################################################################################
diff --git a/.circleci/run.sh b/.circleci/run.sh
index 06062ee6ed..4e2479ee57 100755
--- a/.circleci/run.sh
+++ b/.circleci/run.sh
@@ -95,7 +95,7 @@ setup_repos() {
git checkout -f FETCH_HEAD
fi
- for proj in druntime phobos; do
+ for proj in phobos; do
if [ $base_branch != master ] && [ $base_branch != stable ] &&
! git ls-remote --exit-code --heads https://github.com/dlang/$proj.git $base_branch > /dev/null; then
# use master as fallback for other repos to test feature branches
@@ -114,10 +114,10 @@ coverage()
local build_path=generated/linux/$BUILD/$MODEL
local builder=generated/build
- dmd -g -od=generated -of=$builder src/build
+ dmd -g -od=generated -of=$builder compiler/src/build
# build dmd, druntime, and phobos
$builder MODEL=$MODEL HOST_DMD=$DMD BUILD=$BUILD all
- make -j$N -C ../druntime -f posix.mak MODEL=$MODEL BUILD=$BUILD
+ make -j$N -C druntime -f posix.mak MODEL=$MODEL BUILD=$BUILD
make -j$N -C ../phobos -f posix.mak MODEL=$MODEL BUILD=$BUILD
# save the built dmd as host compiler this time
@@ -134,14 +134,14 @@ coverage()
# FIXME
# Temporarily the failing long file name test has been removed
- rm -rf test/compilable/issue17167.sh
+ rm -rf compiler/test/compilable/issue17167.sh
# rebuild dmd with coverage enabled
$builder MODEL=$MODEL BUILD=$BUILD HOST_DMD=$PWD/_${build_path}/host_dmd ENABLE_COVERAGE=1
cp $build_path/dmd _${build_path}/host_dmd_cov
$builder MODEL=$MODEL BUILD=$BUILD HOST_DMD=$PWD/_${build_path}/host_dmd ENABLE_COVERAGE=1 unittest
- _${build_path}/host_dmd -Itest -i -run ./test/run.d -j$N MODEL=$MODEL BUILD=$BUILD ARGS="-O -inline -release" DMD_TEST_COVERAGE=1 HOST_DMD=$PWD/_${build_path}/host_dmd
+ _${build_path}/host_dmd -Icompiler/test -i -run ./compiler/test/run.d -j$N MODEL=$MODEL BUILD=$BUILD ARGS="-O -inline -release" DMD_TEST_COVERAGE=1 HOST_DMD=$PWD/_${build_path}/host_dmd
}
# Checks that all files have been committed and no temporary, untracked files exist.
@@ -149,13 +149,13 @@ coverage()
check_clean_git()
{
# Restore temporarily removed files
- git checkout test/compilable/issue17167.sh
+ git checkout compiler/test/compilable/issue17167.sh
# Remove temporary directory + install script
rm -rf _generated
rm -f install.sh
# auto-removal of these files doesn't work on CirleCi
- rm -f test/compilable/vcg-ast.d.cg
- rm -f test/compilable/vcg-ast-arraylength.d.cg
+ rm -f compiler/test/compilable/vcg-ast.d.cg
+ rm -f compiler/test/compilable/vcg-ast-arraylength.d.cg
# Ensure that there are no untracked changes
make -f posix.mak check-clean-git
}
@@ -164,7 +164,7 @@ check_clean_git()
check_run_individual()
{
local build_path=generated/linux/$BUILD/$MODEL
- "${build_path}/dmd" -I./test -i -run ./test/run.d "BUILD=$BUILD" "MODEL=$MODEL" test/runnable/template2962.d ./test/compilable/test14275.d
+ "${build_path}/dmd" -Icompiler/test -i -run ./compiler/test/run.d "BUILD=$BUILD" "MODEL=$MODEL" compiler/test/runnable/template2962.d ./compiler/test/compilable/test14275.d
}
# Checks the D build.d script
@@ -173,12 +173,12 @@ check_d_builder()
echo "Testing D build"
# load environment for bootstrap compiler
source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash ~/dlang/install.sh dmd-$HOST_DMD_VER --activate)"
- ./src/build.d clean
+ ./compiler/src/build.d clean
rm -rf generated # just to be sure
# TODO: add support for 32-bit builds
- ./src/build.d MODEL=64
+ ./compiler/src/build.d MODEL=64
./generated/linux/release/64/dmd --version | grep -v "dirty"
- ./src/build.d clean
+ ./compiler/src/build.d clean
deactivate
}
@@ -188,10 +188,10 @@ test_cxx()
# load environment for bootstrap compiler
source "$(CURL_USER_AGENT=\"$CURL_USER_AGENT\" bash ~/dlang/install.sh dmd-$HOST_DMD_VER --activate)"
echo "Test CXX frontend.h header generation"
- ./src/build.d
- make -j$N -C ../druntime -f posix.mak MODEL=$MODEL BUILD=$BUILD
+ ./compiler/src/build.d
+ make -j$N -C druntime -f posix.mak MODEL=$MODEL BUILD=$BUILD
make -j$N -C ../phobos -f posix.mak MODEL=$MODEL BUILD=$BUILD
- ./src/build.d cxx-headers-test
+ ./compiler/src/build.d cxx-headers-test
deactivate
}
diff --git a/.cirrus.yml b/.cirrus.yml
index 0afe9e791a..04b5ddd21f 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -1,3 +1,4 @@
+# Test
common_steps_template: &COMMON_STEPS_TEMPLATE
install_prerequisites_script: ./ci/cirrusci.sh
install_host_compiler_script: ./ci/run.sh install_host_compiler
diff --git a/.gitattributes b/.gitattributes
index 9fb71abfb6..05d350732e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,3 +1,3 @@
# The following text files requires strict end of line rules
-test/compilable/extra-files/makedeps-import.txt text eol=lf
-test/fail_compilation/extra-files/makedeps-import.txt text eol=lf
+compiler/test/compilable/extra-files/makedeps-import.txt text eol=lf
+compiler/test/fail_compilation/extra-files/makedeps-import.txt text eol=lf
diff --git a/.github/workflows/runnable_cxx.yml b/.github/workflows/runnable_cxx.yml
index 36ef4acf39..caee3f0b6e 100644
--- a/.github/workflows/runnable_cxx.yml
+++ b/.github/workflows/runnable_cxx.yml
@@ -119,9 +119,21 @@ jobs:
- { os: windows-2019, target: g++-6 }
- { os: windows-2019, target: g++-5 }
- # TODO: Implement support for clang and MSVC on Windows
+ # TODO: Implement support for clang and MSVC2017 on Windows
# Currently those are still being run by the auto-tester
- - os: windows-2019
+ # We can hardly test below 2017 in the CI because there's
+ # no way to install it via command line
+ # (TODO: Test with 2015 as the blog post is slightly ambiguous)
+ # https://devblogs.microsoft.com/cppblog/introducing-the-visual-studio-build-tools/
+ - { os: windows-2019, target: msvc-2017 }
+ - { os: windows-2019, target: msvc-2015 }
+ - { os: windows-2019, target: msvc-2013 }
+ - { os: windows-2019, target: clang-13.0.0 }
+ - { os: windows-2019, target: clang-12.0.0 }
+ - { os: windows-2019, target: clang-11.0.0 }
+ - { os: windows-2019, target: clang-10.0.0 }
+ - { os: windows-2019, target: clang-9.0.0 }
+ - { os: windows-2019, target: clang-8.0.0 }
# This sets the configuration for each jobs
# There's a bit of duplication involved (e.g. breaking down g++-9.3 into 2 strings),
@@ -191,13 +203,6 @@ jobs:
with:
path: dmd
persist-credentials: false
- - name: Checkout druntime
- uses: actions/checkout@v2
- with:
- path: druntime
- repository: dlang/druntime
- ref: ${{ steps.base_branch.outputs.branch }}
- persist-credentials: false
- name: Checkout Phobos
uses: actions/checkout@v2
with:
@@ -304,48 +309,115 @@ jobs:
exit 1
fi
+ # Restore or install dmc (and DM make)
+ - name: '[Windows] Restore dmc from cache'
+ id: cache-dmc
+ if: runner.os == 'Windows'
+ uses: actions/cache@v1
+ with:
+ path: ${{ github.workspace }}\tools\
+ key: ${{ matrix.os }}-dmc857
+
+ - name: '[Windows] Install dmc'
+ if: runner.os == 'Windows' && steps.cache-dmc.outputs.cache-hit != 'true'
+ shell: powershell
+ run: |
+ $url = "http://ftp.digitalmars.com/Digital_Mars_C++/Patch/dm857c.zip"
+ $sha256hash = "F51CDFEB45EAF4FFBF7ABF0FE9B3D548B202B4528401005C2C3192B00BC32367"
+ Write-Host ('Downloading {0} ...' -f $url)
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
+ $ProgressPreference = 'SilentlyContinue'
+ New-Item -ItemType directory -Path ${{ github.workspace }}\tools\
+ Invoke-WebRequest -Uri $url -OutFile '${{ github.workspace }}\tools\dmc.zip'
+ if ((Get-FileHash '${{ github.workspace }}\tools\dmc.zip' -Algorithm "SHA256").Hash -ne $sha256hash) {
+ exit 1
+ }
+ Expand-Archive '${{ github.workspace }}\tools\dmc.zip' -DestinationPath ${{ github.workspace }}\tools\
+
+ - name: '[Windows] Add VC toolset to PATH'
+ if: runner.os == 'Windows'
+ uses: ilammy/msvc-dev-cmd@v1
+
+ - name: '[Windows] Set environment variables'
+ if: runner.os == 'Windows'
+ shell: bash
+ run: |
+ echo "VISUAL_STUDIO_LIB_NOT_DM=$(which lib.exe)" >> $GITHUB_ENV
+ echo "HOST_DMD=${{ env.DC }}" >> $GITHUB_ENV
+ echo "${{ github.workspace }}/tools/dm/bin/" >> $GITHUB_PATH
+
########################################
# Building DMD, druntime, Phobos #
########################################
- name: '[Posix] Build compiler & standard library'
+ if: runner.os != 'Windows'
# By default, VMs have 2 processors available, hence the `-j2`:
# https://help.github.com/en/actions/reference/virtual-environments-for-github-hosted-runners#supported-runners-and-hardware-resources
run: |
# All hosts are 64 bits but let's be explicit
- ./dmd/src/build.d -j2 MODEL=64
- make -C druntime -f posix.mak -j2 MODEL=64
+ ./dmd/compiler/src/build.d -j2 MODEL=64
+ make -C dmd/druntime -f posix.mak -j2 MODEL=64
make -C phobos -f posix.mak -j2 MODEL=64
# Both version can live side by side (they end up in a different directory)
# However, since clang does not provide a multilib package, only test 32 bits with g++
if [ ${{ matrix.compiler }} == "g++" ]; then
- ./dmd/src/build.d install -j2 MODEL=32
- make -C druntime -f posix.mak install -j2 MODEL=32
+ ./dmd/compiler/src/build.d install -j2 MODEL=32
+ make -C dmd/druntime -f posix.mak install -j2 MODEL=32
make -C phobos -f posix.mak install -j2 MODEL=32
fi
+ - name: '[Windows] Build compiler & standard library'
+ if: runner.os == 'Windows'
+ shell: bash
+ run: |
+ dmd -run dmd/compiler/src/build.d -j2 MODEL=64
+ if [ $? -ne 0 ]; then return 1; fi
+ # Note: Only CC for druntime and AR for Phobos are required ATM,
+ # but providing all three to avoid surprise for future contributors
+ # Those should really be in the path, though.
+ cd dmd/druntime
+ make -f win64.mak
+ if [ $? -ne 0 ]; then return 1; fi
+ cd ../../phobos/
+ make -f win64.mak CC=cl.exe LD=link "AR=$VISUAL_STUDIO_LIB_NOT_DM"
+ if [ $? -ne 0 ]; then return 1; fi
+ cd ../
+
########################################
# Running the test suite #
########################################
- - name: Run C++ test suite
+ - name: '[Posix] Run C++ test suite'
+ if: runner.os != 'Windows'
env:
# Reset LD_LIBRARY_PATH when running the tests, so they use the newly built libphobos2.so.
LD_LIBRARY_PATH: ''
run: |
- ./dmd/test/run.d --environment runnable_cxx dshell/dll_cxx.d MODEL=64
+ ./dmd/compiler/test/run.d --environment runnable_cxx dshell/dll_cxx.d MODEL=64
if [ ${{ matrix.compiler }} == "g++" ]; then
- ./dmd/test/run.d clean
- ./dmd/test/run.d --environment runnable_cxx dshell/dll_cxx.d MODEL=32
+ ./dmd/compiler/test/run.d clean
+ ./dmd/compiler/test/run.d --environment runnable_cxx dshell/dll_cxx.d MODEL=32
fi
+ - name: '[Windows] Run C++ test suite'
+ if: runner.os == 'Windows'
+ shell: bash
+ run: |
+ cd dmd/druntime
+ make -f win64.mak test_stdcpp CC=cl.exe LD=link "AR=$VISUAL_STUDIO_LIB_NOT_DM"
+ if [ $? -ne 0 ]; then return 1; fi
+
########################################
# Run C++ frontend unittests #
########################################
- name: Run C++ frontend unittests
+ if: matrix.compiler == 'g++'
run: |
- ./dmd/src/build.d cxx-unittest MODEL=64
- if [ ${{ matrix.compiler }} == "g++" ]; then
- ./dmd/src/build.d cxx-unittest MODEL=32
- fi
+ ./dmd/compiler/src/build.d cxx-unittest MODEL=64
+
+ - name: Run C++ frontend unittests (32-bit)
+ if: matrix.compiler == 'g++'
+ run: |
+ ./dmd/compiler/src/build.d cxx-unittest MODEL=32
########################################
# Store generated artifacts #
diff --git a/.gitignore b/.gitignore
index de6cef3a23..d831291466 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,9 @@
*.[oa]
*.deps
.B*
-test/test_results
-test/trace.def
-test/trace.log
+/compiler/test/test_results
+/compiler/test/trace.def
+/compiler/test/trace.log
generated/
*.obj
*.map
@@ -17,9 +17,9 @@ dub.selections.json
# Visual Studio files
*.exe
*.pdb
-src/vcbuild/Win32
-src/vcbuild/x64
-src/vcbuild/.vs
+/compiler/src/vcbuild/Win32
+/compiler/src/vcbuild/x64
+/compiler/src/vcbuild/.vs
*.ncb
*.suo
*.sdf
@@ -35,13 +35,13 @@ xcuserdata/
dmd.xcodeproj/
# Output files
-src/*.bak
-src/*.lib
-src/*.lst
+/compiler/src/*.bak
+/compiler/src/*.lib
+/compiler/src/*.lst
tags
# OSX
-src/optabgen.dSYM/
+/compiler/src/optabgen.dSYM/
# GCov
*.gcno
diff --git a/ci/run.sh b/ci/run.sh
index dff989f53a..26f8493f43 100755
--- a/ci/run.sh
+++ b/ci/run.sh
@@ -59,9 +59,9 @@ clone() {
# build dmd (incl. building and running the unittests), druntime, phobos
build() {
source ~/dlang/*/activate # activate host compiler, incl. setting `DMD`
- make -j$N -C src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD DFLAGS="$CI_DFLAGS" BUILD=debug ENABLE_WARNINGS=1 unittest
- make -j$N -C src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD DFLAGS="$CI_DFLAGS" ENABLE_RELEASE=1 ENABLE_WARNINGS=1 all
- make -j$N -C ../druntime -f posix.mak MODEL=$MODEL
+ make -j$N -C compiler/src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD DFLAGS="$CI_DFLAGS" BUILD=debug ENABLE_WARNINGS=1 unittest
+ make -j$N -C compiler/src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD DFLAGS="$CI_DFLAGS" ENABLE_RELEASE=1 ENABLE_WARNINGS=1 all
+ make -j$N -C druntime -f posix.mak MODEL=$MODEL
make -j$N -C ../phobos -f posix.mak MODEL=$MODEL
deactivate # deactivate host compiler
}
@@ -75,8 +75,8 @@ rebuild() {
mkdir -p _${build_path}
cp $build_path/dmd _${build_path}/host_dmd
cp $build_path/dmd.conf _${build_path}
- make -j$N -C src -f posix.mak MODEL=$MODEL HOST_DMD=../_${build_path}/host_dmd clean
- make -j$N -C src -f posix.mak MODEL=$MODEL HOST_DMD=../_${build_path}/host_dmd DFLAGS="$CI_DFLAGS" ENABLE_RELEASE=${ENABLE_RELEASE:-1} ENABLE_WARNINGS=1 all
+ make -j$N -C compiler/src -f posix.mak MODEL=$MODEL HOST_DMD=../../_${build_path}/host_dmd clean
+ make -j$N -C compiler/src -f posix.mak MODEL=$MODEL HOST_DMD=../../_${build_path}/host_dmd DFLAGS="$CI_DFLAGS" ENABLE_RELEASE=${ENABLE_RELEASE:-1} ENABLE_WARNINGS=1 all
# compare binaries to test reproducible build
if [ $compare -eq 1 ]; then
@@ -102,15 +102,15 @@ test() {
test_dmd() {
# test fewer compiler argument permutations for PRs to reduce CI load
if [ "$FULL_BUILD" == "true" ] && [ "$OS_NAME" == "linux" ]; then
- make -j1 -C test MODEL=$MODEL N=$N # all ARGS by default
+ make -j1 -C compiler/test MODEL=$MODEL N=$N # all ARGS by default
else
- make -j1 -C test MODEL=$MODEL N=$N ARGS="-O -inline -release"
+ make -j1 -C compiler/test MODEL=$MODEL N=$N ARGS="-O -inline -release"
fi
}
# build and run druntime unit tests
test_druntime() {
- make -j$N -C ../druntime -f posix.mak MODEL=$MODEL unittest
+ make -j$N -C druntime -f posix.mak MODEL=$MODEL unittest
}
# build and run Phobos unit tests
@@ -145,10 +145,10 @@ test_dub_package() {
deactivate
}
-# clone druntime/phobos repos if not already available
+# clone phobos repos if not already available
setup_repos() {
local branch="$1"
- for proj in druntime phobos; do
+ for proj in phobos; do
if [ ! -d ../$proj ]; then
if [ $branch != master ] && [ $branch != stable ] &&
! git ls-remote --exit-code --heads https://github.com/dlang/$proj.git $branch > /dev/null; then
diff --git a/compiler/src/build.d b/compiler/src/build.d
index 0197547825..d10bd18695 100755
--- a/compiler/src/build.d
+++ b/compiler/src/build.d
@@ -21,8 +21,9 @@ import std.parallelism : TaskPool, totalCPUs;
const thisBuildScript = __FILE_FULL_PATH__.buildNormalizedPath;
const srcDir = thisBuildScript.dirName;
-const dmdRepo = srcDir.dirName;
-const testDir = dmdRepo.buildPath("test");
+const compilerDir = srcDir.dirName;
+const dmdRepo = compilerDir.dirName;
+const testDir = compilerDir.buildPath("test");
shared bool verbose; // output verbose logging
shared bool force; // always build everything (ignores timestamp checking)
@@ -292,7 +293,7 @@ alias lexer = makeRuleWithArgs!((MethodInitializer!BuildRule builder, BuildRule
extraFlags,
// source files need to have relative paths in order for the code coverage
// .lst files to be named properly for CodeCov to find them
- rule.sources.map!(e => e.relativePath(dmdRepo))
+ rule.sources.map!(e => e.relativePath(compilerDir))
).array
)
);
@@ -307,7 +308,7 @@ alias dmdConf = makeRule!((builder, rule) {
{
enum confFile = "sc.ini";
enum conf = `[Environment]
-DFLAGS="-I%@P%\..\..\..\..\..\druntime\import" "-I%@P%\..\..\..\..\..\phobos"
+DFLAGS="-I%@P%\..\..\..\..\druntime\import" "-I%@P%\..\..\..\..\..\phobos"
LIB="%@P%\..\..\..\..\..\phobos"
[Environment32]
@@ -324,10 +325,10 @@ DFLAGS=%DFLAGS% -L/OPT:NOICF
{
enum confFile = "dmd.conf";
enum conf = `[Environment32]
-DFLAGS=-I%@P%/../../../../../druntime/import -I%@P%/../../../../../phobos -L-L%@P%/../../../../../phobos/generated/{OS}/{BUILD}/32{exportDynamic} -fPIC
+DFLAGS=-I%@P%/../../../../druntime/import -I%@P%/../../../../../phobos -L-L%@P%/../../../../../phobos/generated/{OS}/{BUILD}/32{exportDynamic} -fPIC
[Environment64]
-DFLAGS=-I%@P%/../../../../../druntime/import -I%@P%/../../../../../phobos -L-L%@P%/../../../../../phobos/generated/{OS}/{BUILD}/64{exportDynamic} -fPIC
+DFLAGS=-I%@P%/../../../../druntime/import -I%@P%/../../../../../phobos -L-L%@P%/../../../../../phobos/generated/{OS}/{BUILD}/64{exportDynamic} -fPIC
`;
}
@@ -362,7 +363,7 @@ alias common = makeRuleWithArgs!((MethodInitializer!BuildRule builder, BuildRule
// source files need to have relative paths in order for the code coverage
// .lst files to be named properly for CodeCov to find them
- rule.sources.map!(e => e.relativePath(dmdRepo))
+ rule.sources.map!(e => e.relativePath(compilerDir))
).array)
);
@@ -398,7 +399,7 @@ alias backend = makeRuleWithArgs!((MethodInitializer!BuildRule builder, BuildRul
// source files need to have relative paths in order for the code coverage
// .lst files to be named properly for CodeCov to find them
- rule.sources.map!(e => e.relativePath(dmdRepo))
+ rule.sources.map!(e => e.relativePath(compilerDir))
).array)
);
@@ -490,7 +491,7 @@ alias dmdExe = makeRuleWithArgs!((MethodInitializer!BuildRule builder, BuildRule
].chain(extraFlags, platformArgs, flags["DFLAGS"],
// source files need to have relative paths in order for the code coverage
// .lst files to be named properly for CodeCov to find them
- rule.sources.map!(e => e.relativePath(dmdRepo))
+ rule.sources.map!(e => e.relativePath(compilerDir))
).array);
});
@@ -587,9 +588,9 @@ alias dmdPGO = makeRule!((builder, rule) {
// Run phobos unittests
//TODO makefiles
//generated/linux/release/64/unittest/test_runner builds the unittests without running them.
- const scope cmd = ["make", "-C", "../phobos", "-j" ~ jobs.to!string, "-fposix.mak", "generated/linux/release/64/unittest/test_runner", "DMD_DIR="~dmdRepo];
+ const scope cmd = ["make", "-C", "../phobos", "-j" ~ jobs.to!string, "-fposix.mak", "generated/linux/release/64/unittest/test_runner", "DMD_DIR="~compilerDir];
log("%-(%s %)", cmd);
- if (spawnProcess(cmd, null, Config.init, dmdRepo).wait())
+ if (spawnProcess(cmd, null, Config.init, compilerDir).wait())
stderr.writeln("Phobos Tests failed! This will not end the PGO build because some data may have been gathered");
}));
alias finalDataMerge = methodInit!(BuildRule, (rundBuilder, rundRule) => rundBuilder
@@ -807,7 +808,7 @@ alias toolsRepo = makeRule!((builder, rule) => builder
auto toolsDir = env["TOOLS_DIR"];
version(Win32)
// Win32-git seems to confuse C:\... as a relative path
- toolsDir = toolsDir.relativePath(dmdRepo);
+ toolsDir = toolsDir.relativePath(compilerDir);
run([env["GIT"], "clone", "--depth=1", env["GIT_HOME"] ~ "/tools", toolsDir]);
})
);
@@ -893,7 +894,7 @@ alias man = makeRule!((builder, rule) {
alias genMan = methodInit!(BuildRule, (genManBuilder, genManRule) => genManBuilder
.target(env["G"].buildPath("gen_man"))
.sources([
- dmdRepo.buildPath("docs", "gen_man.d"),
+ compilerDir.buildPath("docs", "gen_man.d"),
env["D"].buildPath("cli.d")])
.command([
env["HOST_DMD_RUN"],
@@ -920,7 +921,7 @@ alias man = makeRule!((builder, rule) {
"man1/dumpobj.1 man1/obj2asm.1 man5/dmd.conf.5".split
.map!(e => methodInit!(BuildRule, (manFileBuilder, manFileRule) => manFileBuilder
.target(genManDir.buildPath(e))
- .sources([dmdRepo.buildPath("docs", "man", e)])
+ .sources([compilerDir.buildPath("docs", "man", e)])
.deps([directoryRule(manFileRule.target.dirName)])
.commandFunction(() => copyAndTouch(manFileRule.sources[0], manFileRule.target))
.msg("copy '%s' to '%s'".format(manFileRule.sources[0], manFileRule.target))
@@ -1069,17 +1070,17 @@ alias install = makeRule!((builder, rule) {
installRelativeFiles(env["INSTALL"].buildPath(env["OS"], bin), dmdExeFile.dirName, dmdExeFile.only, octal!755);
version (Windows)
- installRelativeFiles(env["INSTALL"], dmdRepo, sourceFiles);
+ installRelativeFiles(env["INSTALL"], compilerDir, sourceFiles);
const scPath = buildPath(env["OS"], bin, conf);
- const iniPath = buildPath(dmdRepo, "ini");
+ const iniPath = buildPath(compilerDir, "ini");
// The sources distributed alongside an official release only include the
// configuration of the current OS at the root directory instead of the
// whole `ini` folder in the project root.
const confPath = iniPath.exists()
? buildPath(iniPath, scPath)
- : buildPath(dmdRepo, "..", scPath);
+ : buildPath(dmdRepo, scPath);
copyAndTouch(confPath, buildPath(env["INSTALL"], scPath));
@@ -1258,9 +1259,9 @@ void parseEnvironment()
else
enum installPref = "..";
- env.setDefault("INSTALL", environment.get("INSTALL_DIR", dmdRepo.buildPath(installPref, "install")));
+ env.setDefault("INSTALL", environment.get("INSTALL_DIR", compilerDir.buildPath(installPref, "install")));
- env.setDefault("DOCSRC", dmdRepo.buildPath("dlang.org"));
+ env.setDefault("DOCSRC", compilerDir.buildPath("dlang.org"));
env.setDefault("DOCDIR", srcDir);
env.setDefault("DOC_OUTPUT_DIR", env["DOCDIR"]);
@@ -1272,7 +1273,7 @@ void parseEnvironment()
auto generated = env["GENERATED"] = dmdRepo.buildPath("generated");
auto g = env["G"] = generated.buildPath(os, build, model);
mkdirRecurse(g);
- env.setDefault("TOOLS_DIR", dmdRepo.dirName.buildPath("tools"));
+ env.setDefault("TOOLS_DIR", compilerDir.dirName.buildPath("tools"));
auto hostDmdDef = env.getDefault("HOST_DMD", null);
if (hostDmdDef.length == 0)
@@ -2243,7 +2244,7 @@ class BuildException : Exception
The directory where all run commands are executed from. All relative file paths
in a `run` command must be relative to `runDir`.
*/
-alias runDir = dmdRepo;
+alias runDir = compilerDir;
/**
Run a command which may not succeed and optionally log the invocation.
diff --git a/compiler/src/posix.mak b/compiler/src/posix.mak
index 552ac2b177..6a3d194654 100644
--- a/compiler/src/posix.mak
+++ b/compiler/src/posix.mak
@@ -68,7 +68,7 @@ endif
INSTALL_DIR=../../install
D = dmd
-GENERATED = ../generated
+GENERATED = ../../generated
G = $(GENERATED)/$(OS)/$(BUILD)/$(MODEL)
$(shell mkdir -p $G)
diff --git a/compiler/src/vcbuild/dmd.vcxproj b/compiler/src/vcbuild/dmd.vcxproj
index a6b286d3b9..d7b7dd8d89 100644
--- a/compiler/src/vcbuild/dmd.vcxproj
+++ b/compiler/src/vcbuild/dmd.vcxproj
@@ -112,32 +112,32 @@
true
- ..\..\generated\Windows\$(Configuration)\$(PlatformName)\
+ ..\..\..\generated\Windows\$(Configuration)\$(PlatformName)\
$(OutDir)\dmd\
true
- ..\..\generated\Windows\$(Configuration)\$(PlatformName)\
+ ..\..\..\generated\Windows\$(Configuration)\$(PlatformName)\
$(OutDir)\dmd\
false
- ..\..\generated\Windows\$(Configuration)\$(PlatformName)\
+ ..\..\..\generated\Windows\$(Configuration)\$(PlatformName)\
$(OutDir)\dmd\
false
- ..\..\generated\Windows\$(Configuration)\$(PlatformName)\
+ ..\..\..\generated\Windows\$(Configuration)\$(PlatformName)\
$(OutDir)\dmd\
false
- ..\..\generated\Windows\$(Configuration)\$(PlatformName)\
+ ..\..\..\generated\Windows\$(Configuration)\$(PlatformName)\
$(OutDir)\dmd\
false
- ..\..\generated\Windows\$(Configuration)\$(PlatformName)\
+ ..\..\..\generated\Windows\$(Configuration)\$(PlatformName)\
$(OutDir)\dmd\
@@ -316,9 +316,9 @@
-
- Creating VERSION: $(_rdmdExe) ..\..\config.d $(OutDir) ..\..\VERSION
- $(_rdmdExe) ..\..\config.d $(OutDir) ..\..\VERSION
+
+ Creating VERSION: $(_rdmdExe) ..\..\..\config.d $(OutDir) ..\..\..\VERSION
+ $(_rdmdExe) ..\..\..\config.d $(OutDir) ..\..\..\VERSION
$(OutDir)VERSION;%(Outputs)
diff --git a/compiler/src/win32.mak b/compiler/src/win32.mak
index 9faccf743f..acbe15633a 100644
--- a/compiler/src/win32.mak
+++ b/compiler/src/win32.mak
@@ -49,7 +49,7 @@ OS=windows
D=dmd
# Generated files directory
-GEN = ..\generated
+GEN = ..\..\generated
G = $(GEN)\$(OS)\$(BUILD)\$(MODEL)
##### Tools
diff --git a/compiler/src/win64.mak b/compiler/src/win64.mak
index 35452ccd37..9fdeb87569 100644
--- a/compiler/src/win64.mak
+++ b/compiler/src/win64.mak
@@ -17,7 +17,7 @@ OS=windows
$(HOST_DC) -g -of$@ $<
D=dmd
-GEN = ..\generated
+GEN = ..\..\generated
G = $(GEN)\$(OS)\$(BUILD)\$(MODEL)
DEPENDENCIES=vcbuild\msvc-lib.exe $G
diff --git a/compiler/test/Makefile b/compiler/test/Makefile
index 25146ed955..28fe3871aa 100644
--- a/compiler/test/Makefile
+++ b/compiler/test/Makefile
@@ -48,31 +48,31 @@ ifeq ($(findstring win,$(OS)),win)
PIC?=0
DRUNTIME_PATH=..\..\druntime
- PHOBOS_PATH=..\..\phobos
+ PHOBOS_PATH=..\..\..\phobos
export DFLAGS=-I$(DRUNTIME_PATH)\import -I$(PHOBOS_PATH)
export LIB=$(PHOBOS_PATH)
# auto-tester might run the testsuite with a different $(MODEL) than DMD
# has been compiled with. Hence we manually check which binary exists.
# For windows the $(OS) during build is: `windows`
- ifeq (,$(wildcard ../generated/windows/$(BUILD)/64/dmd$(EXE)))
+ ifeq (,$(wildcard ../../generated/windows/$(BUILD)/64/dmd$(EXE)))
DMD_MODEL=32
else
DMD_MODEL=64
endif
- export DMD=../generated/windows/$(BUILD)/$(DMD_MODEL)/dmd$(EXE)
+ export DMD=../../generated/windows/$(BUILD)/$(DMD_MODEL)/dmd$(EXE)
else
export EXE=
# auto-tester might run the testsuite with a different $(MODEL) than DMD
# has been compiled with. Hence we manually check which binary exists.
- ifeq (,$(wildcard ../generated/$(OS)/$(BUILD)/64/dmd))
+ ifeq (,$(wildcard ../../generated/$(OS)/$(BUILD)/64/dmd))
DMD_MODEL=32
else
DMD_MODEL=64
endif
- export DMD=../generated/$(OS)/$(BUILD)/$(DMD_MODEL)/dmd
+ export DMD=../../generated/$(OS)/$(BUILD)/$(DMD_MODEL)/dmd
# default to PIC, use PIC=1/0 to en-/disable PIC.
# Note that shared libraries and C files are always compiled with PIC.
@@ -86,7 +86,7 @@ else
endif
DRUNTIME_PATH=../../druntime
- PHOBOS_PATH=../../phobos
+ PHOBOS_PATH=../../../phobos
# link against shared libraries (defaults to true on supported platforms, can be overridden w/ make SHARED=0)
SHARED=$(if $(findstring $(OS),linux freebsd),1,)
DFLAGS=-I$(DRUNTIME_PATH)/import -I$(PHOBOS_PATH) -L-L$(PHOBOS_PATH)/generated/$(OS)/$(BUILD)/$(MODEL)
diff --git a/compiler/test/compilable/extra-files/json2.json b/compiler/test/compilable/extra-files/json2.json
index 54cc98b213..e4ee50e714 100644
--- a/compiler/test/compilable/extra-files/json2.json
+++ b/compiler/test/compilable/extra-files/json2.json
@@ -9,7 +9,7 @@
"importPaths": [
"compilable",
"../../druntime/import",
- "../../phobos"
+ "../../../phobos"
],
"libName": "VALUE_REMOVED_FOR_TEST",
"libraryFiles": [
diff --git a/compiler/test/dshell/test_shared.d b/compiler/test/dshell/test_shared.d
index be604a81e4..daf053fb22 100644
--- a/compiler/test/dshell/test_shared.d
+++ b/compiler/test/dshell/test_shared.d
@@ -10,7 +10,7 @@ int main()
run("$DMD -m$MODEL -of$OUTPUT_BASE/a$EXE -defaultlib=libphobos2.so $EXTRA_FILES/test_shared.d");
run("$OUTPUT_BASE/a$EXE", stdout, stderr, [
- "LD_LIBRARY_PATH" : "../../phobos/generated/"~OS~'/'~BUILD~'/'~MODEL
+ "LD_LIBRARY_PATH" : "../../../phobos/generated/"~OS~'/'~BUILD~'/'~MODEL
]);
return 0;
diff --git a/compiler/test/dub_package/retrieveScope.d b/compiler/test/dub_package/retrieveScope.d
index e04759a502..2bab27699f 100755
--- a/compiler/test/dub_package/retrieveScope.d
+++ b/compiler/test/dub_package/retrieveScope.d
@@ -61,10 +61,10 @@ private struct CallbackHelper {
int main()
{
- auto dmdParentDir = dirName(dirName(dirName(__FILE_FULL_PATH__)));
+ auto dmdParentDir = dirName(dirName(dirName(dirName(__FILE_FULL_PATH__))));
global.path = new Strings();
global.path.push((dmdParentDir ~ "/phobos").ptr);
- global.path.push((dmdParentDir ~ "/druntime/import").ptr);
+ global.path.push((dmdParentDir ~ "/dmd/druntime/import").ptr);
/* comment for error output in parsing & semantic */
diagnosticHandler = (const ref Loc location,
diff --git a/compiler/test/run.d b/compiler/test/run.d
index c86f9221a3..e1c1064cb0 100755
--- a/compiler/test/run.d
+++ b/compiler/test/run.d
@@ -529,7 +529,7 @@ string[string] getEnvironment()
env["DSEP"] = `\\`;
env["SEP"] = `\`;
auto druntimePath = environment.get("DRUNTIME_PATH", testPath(`..\..\druntime`));
- auto phobosPath = environment.get("PHOBOS_PATH", testPath(`..\..\phobos`));
+ auto phobosPath = environment.get("PHOBOS_PATH", testPath(`..\..\..\phobos`));
env["DFLAGS"] = `-I"%s\import" -I"%s"`.format(druntimePath, phobosPath);
env["LIB"] = phobosPath ~ ";" ~ environment.get("LIB");
}
@@ -540,7 +540,7 @@ string[string] getEnvironment()
env["DSEP"] = "/";
env["SEP"] = "/";
auto druntimePath = environment.get("DRUNTIME_PATH", testPath(`../../druntime`));
- auto phobosPath = environment.get("PHOBOS_PATH", testPath(`../../phobos`));
+ auto phobosPath = environment.get("PHOBOS_PATH", testPath(`../../../phobos`));
// default to PIC, use PIC=1/0 to en-/disable PIC.
// Note that shared libraries and C files are always compiled with PIC.
diff --git a/compiler/test/tools/paths.d b/compiler/test/tools/paths.d
index 6bcb70ed43..acb525bda7 100644
--- a/compiler/test/tools/paths.d
+++ b/compiler/test/tools/paths.d
@@ -30,12 +30,13 @@ else version (SunOS)
else
static assert(0, "Unrecognized or unsupported OS.");
-enum projectRootDir = __FILE_FULL_PATH__.dirName.buildNormalizedPath("..", "..");
+enum projectRootDir = __FILE_FULL_PATH__.dirName.buildNormalizedPath("..", "..", "..");
enum generatedDir = projectRootDir.buildPath("generated");
enum dmdFilename = "dmd".setExtension(exeExtension);
-alias testPath = path => projectRootDir.buildPath("test", path);
+enum compilerRootDir = __FILE_FULL_PATH__.dirName.buildNormalizedPath("..", "..");
+alias testPath = path => compilerRootDir.buildPath("test", path);
string build()
{
diff --git a/compiler/test/tools/unit_test_runner.d b/compiler/test/tools/unit_test_runner.d
index 43f77e2a11..dd902ea928 100755
--- a/compiler/test/tools/unit_test_runner.d
+++ b/compiler/test/tools/unit_test_runner.d
@@ -239,7 +239,7 @@ void writeRunnerFile(Range)(Range moduleNames, string path, string filter)
.joiner(",\n")
.to!string;
- const content = format!codeTemplate(imports, modules, format!`"%s"`(filter), projectRootDir);
+ const content = format!codeTemplate(imports, modules, format!`"%s"`(filter), compilerRootDir);
write(path, content);
}
@@ -269,7 +269,7 @@ string[] buildCmdArgs(string runnerPath, string outputPath, const string[] testF
"-of" ~ outputPath,
"-m" ~ model
],
- testFiles.map!(f => relativePath(f, projectRootDir)),
+ testFiles.map!(f => relativePath(f, compilerRootDir)),
[ runnerPath ]
).array;
@@ -339,7 +339,7 @@ int main(string[] args)
const flags = buildCmdArgs(runnerPath, outputPath, testFiles);
write(cmdfilePath, flags.join("\n"));
- const dmd = execute([ dmdPath, "@" ~ cmdfilePath ], null, Config.none, size_t.max, projectRootDir);
+ const dmd = execute([ dmdPath, "@" ~ cmdfilePath ], null, Config.none, size_t.max, compilerRootDir);
if (dmd.status)
{
enum msg = "Failed to compile the `unit` test executable! (exit code %d)
diff --git a/compiler/test/unit/support.d b/compiler/test/unit/support.d
index ddaf9fe20a..ba72019cb9 100644
--- a/compiler/test/unit/support.d
+++ b/compiler/test/unit/support.d
@@ -22,7 +22,7 @@ string[] defaultImportPaths()
enum dlangDir = __FILE_FULL_PATH__.dirName.buildNormalizedPath("..", "..", "..");
enum druntimeDir = dlangDir.buildPath("druntime", "import");
- enum phobosDir = dlangDir.buildPath("phobos");
+ enum phobosDir = dlangDir.buildPath("..", "phobos");
return [
environment.get("DRUNTIME_PATH", druntimeDir),
diff --git a/druntime/benchmark/gcbench/vdparser.extra/vdc/ast/tmpl.d b/druntime/benchmark/gcbench/vdparser.extra/vdc/ast/tmpl.d
index e3aade0610..8e7f3b8737 100644
--- a/druntime/benchmark/gcbench/vdparser.extra/vdc/ast/tmpl.d
+++ b/druntime/benchmark/gcbench/vdparser.extra/vdc/ast/tmpl.d
@@ -590,4 +590,4 @@ ParameterList createTemplateParameterList(ArgMatch[] vargs)
pl.addMember(pd);
}
return pl;
-}
\ No newline at end of file
+}
diff --git a/druntime/posix.mak b/druntime/posix.mak
index 60554d8cd1..3ab24a64b5 100644
--- a/druntime/posix.mak
+++ b/druntime/posix.mak
@@ -5,9 +5,9 @@
QUIET:=
-DMD_DIR=../dmd
+DMD_DIR=../compiler
DUB=dub
-TOOLS_DIR=../tools
+TOOLS_DIR=../../tools
include $(DMD_DIR)/src/osmodel.mak
@@ -25,8 +25,8 @@ ifneq ($(BUILD),release)
endif
endif
-DMD=$(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd
-INSTALL_DIR=../install
+DMD=$(DMD_DIR)/../generated/$(OS)/$(BUILD)/$(MODEL)/dmd
+INSTALL_DIR=../../install
# directory where the html files for the documentation are placed
DOC_OUTPUT_DIR=doc
@@ -88,7 +88,7 @@ endif
UTFLAGS:=-version=CoreUnittest -unittest -checkaction=context
# Set PHOBOS_DFLAGS (for linking against Phobos)
-PHOBOS_PATH=../phobos
+PHOBOS_PATH=../../phobos
SHARED=$(if $(findstring $(OS),linux freebsd),1,)
ROOT_DIR := $(shell pwd)
PHOBOS_DFLAGS=-conf= $(MODEL_FLAG) -I$(ROOT_DIR)/import -I$(PHOBOS_PATH) -L-L$(PHOBOS_PATH)/generated/$(OS)/$(BUILD)/$(MODEL) $(PIC)
@@ -96,7 +96,7 @@ ifeq (1,$(SHARED))
PHOBOS_DFLAGS+=-defaultlib=libphobos2.so -L-rpath=$(PHOBOS_PATH)/generated/$(OS)/$(BUILD)/$(MODEL)
endif
-ROOT_OF_THEM_ALL = generated
+ROOT_OF_THEM_ALL = ../generated
ROOT = $(ROOT_OF_THEM_ALL)/$(OS)/$(BUILD)/$(MODEL)
OBJDIR=obj/$(OS)/$(BUILD)/$(MODEL)
DRUNTIME_BASE=druntime-$(OS)$(MODEL)
diff --git a/druntime/src/core/int128.d b/druntime/src/core/int128.d
index e4326fd54c..46eb9b2755 100644
--- a/druntime/src/core/int128.d
+++ b/druntime/src/core/int128.d
@@ -943,5 +943,3 @@ unittest
assert(rol(C7_9, 1) == rol1(C7_9));
assert(ror(C7_9, 1) == ror1(C7_9));
}
-
-
diff --git a/druntime/src/core/sys/darwin/mach/getsect.d b/druntime/src/core/sys/darwin/mach/getsect.d
index fd1a8e4ea3..dc42a2dc45 100644
--- a/druntime/src/core/sys/darwin/mach/getsect.d
+++ b/druntime/src/core/sys/darwin/mach/getsect.d
@@ -468,4 +468,3 @@ const(section)* getsectbynamefromheaderwithswap_64(
const scope char* section,
int fSwap
);
-
diff --git a/druntime/src/core/sys/dragonflybsd/string.d b/druntime/src/core/sys/dragonflybsd/string.d
index 4b8422748b..1a85ba606a 100644
--- a/druntime/src/core/sys/dragonflybsd/string.d
+++ b/druntime/src/core/sys/dragonflybsd/string.d
@@ -19,4 +19,3 @@ static if (__BSD_VISIBLE)
{
pure void* memmem(return scope const void* haystack, size_t haystacklen, scope const void* needle, size_t needlelen);
}
-
diff --git a/druntime/src/core/sys/linux/sys/time.d b/druntime/src/core/sys/linux/sys/time.d
index 6ea626ed39..4b56229687 100644
--- a/druntime/src/core/sys/linux/sys/time.d
+++ b/druntime/src/core/sys/linux/sys/time.d
@@ -65,4 +65,3 @@ extern (D) pure @safe @nogc nothrow {
}
}
-
diff --git a/druntime/src/core/sys/linux/sys/xattr.d b/druntime/src/core/sys/linux/sys/xattr.d
index 2f8d3f376f..6446ff8b9a 100644
--- a/druntime/src/core/sys/linux/sys/xattr.d
+++ b/druntime/src/core/sys/linux/sys/xattr.d
@@ -66,4 +66,3 @@ ssize_t flistxattr (int __fd, char *list, size_t size);
int removexattr (const scope char *path, const scope char *name);
int lremovexattr (const scope char *path, const scope char *name);
int fremovexattr (int fd, const scope char *name);
-
diff --git a/druntime/src/core/sys/linux/tipc.d b/druntime/src/core/sys/linux/tipc.d
index 3246e62ec0..4d5d886269 100644
--- a/druntime/src/core/sys/linux/tipc.d
+++ b/druntime/src/core/sys/linux/tipc.d
@@ -208,4 +208,3 @@ enum: int
TIPC_DEST_DROPPABLE = 129,
TIPC_CONN_TIMEOUT = 130,
}
-
diff --git a/druntime/src/core/sys/posix/sys/select.d b/druntime/src/core/sys/posix/sys/select.d
index 2a659c30dc..925976d3e3 100644
--- a/druntime/src/core/sys/posix/sys/select.d
+++ b/druntime/src/core/sys/posix/sys/select.d
@@ -608,4 +608,3 @@ pure unittest
assert(!FD_ISSET(i, &fd));
}
}
-
diff --git a/druntime/src/core/sys/posix/ucontext.d b/druntime/src/core/sys/posix/ucontext.d
index 20297f50b9..e8c2f87bbd 100644
--- a/druntime/src/core/sys/posix/ucontext.d
+++ b/druntime/src/core/sys/posix/ucontext.d
@@ -1628,4 +1628,3 @@ version (Solaris)
int addrtosymstr(uintptr_t, char*, int);
int printstack(int);
}
-
diff --git a/druntime/src/core/sys/solaris/sys/priocntl.d b/druntime/src/core/sys/solaris/sys/priocntl.d
index bfbf3ee2ab..c56be3b00f 100644
--- a/druntime/src/core/sys/solaris/sys/priocntl.d
+++ b/druntime/src/core/sys/solaris/sys/priocntl.d
@@ -113,4 +113,3 @@ struct pcadmin_t
id_t pc_cid;
caddr_t pc_cladmin;
}
-
diff --git a/druntime/src/core/sys/solaris/sys/procset.d b/druntime/src/core/sys/solaris/sys/procset.d
index 43fa9978af..8bd9115700 100644
--- a/druntime/src/core/sys/solaris/sys/procset.d
+++ b/druntime/src/core/sys/solaris/sys/procset.d
@@ -50,4 +50,3 @@ void setprocset(ref procset_t psp, idop_t op, idtype_t ltype, id_t lid, idtype_t
psp.p_ridtype = rtype;
psp.p_rid = rid;
}
-
diff --git a/druntime/src/core/sys/windows/cguid.d b/druntime/src/core/sys/windows/cguid.d
index 0afbc42e8b..d0a8fb9f08 100644
--- a/druntime/src/core/sys/windows/cguid.d
+++ b/druntime/src/core/sys/windows/cguid.d
@@ -10,4 +10,3 @@ module core.sys.windows.cguid;
version (Windows):
import core.sys.windows.basetyps;
-
diff --git a/druntime/src/core/sys/windows/ntsecpkg.d b/druntime/src/core/sys/windows/ntsecpkg.d
index d4c93d7b57..d8c5e95edb 100644
--- a/druntime/src/core/sys/windows/ntsecpkg.d
+++ b/druntime/src/core/sys/windows/ntsecpkg.d
@@ -444,4 +444,3 @@ alias NTSTATUS function(ULONG, PULONG,
PSECPKG_FUNCTION_TABLE *, PULONG) SpLsaModeInitializeFn;
alias NTSTATUS function(ULONG, PULONG,
PSECPKG_USER_FUNCTION_TABLE *, PULONG) SpUserModeInitializeFn;
-
diff --git a/druntime/src/core/sys/windows/olectlid.d b/druntime/src/core/sys/windows/olectlid.d
index 8bbe657134..b58c14ae1f 100644
--- a/druntime/src/core/sys/windows/olectlid.d
+++ b/druntime/src/core/sys/windows/olectlid.d
@@ -10,4 +10,3 @@ module core.sys.windows.olectlid;
version (Windows):
import core.sys.windows.basetyps;
-
diff --git a/druntime/src/core/sys/windows/shlguid.d b/druntime/src/core/sys/windows/shlguid.d
index 1c0c98fc07..e0c1af1045 100644
--- a/druntime/src/core/sys/windows/shlguid.d
+++ b/druntime/src/core/sys/windows/shlguid.d
@@ -16,4 +16,3 @@ import core.sys.windows.basetyps, core.sys.windows.w32api;
// I think this is just a helper macro for other win32 headers?
//MACRO #define DEFINE_SHLGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
-
diff --git a/druntime/src/core/sys/windows/sspi.d b/druntime/src/core/sys/windows/sspi.d
index 07a259622d..21e982daa8 100644
--- a/druntime/src/core/sys/windows/sspi.d
+++ b/druntime/src/core/sys/windows/sspi.d
@@ -380,4 +380,3 @@ version (Unicode) {
alias QUERY_SECURITY_PACKAGE_INFO_FN_A QUERY_SECURITY_PACKAGE_INFO_FN;
alias INIT_SECURITY_INTERFACE_A INIT_SECURITY_INTERFACE;
}
-
diff --git a/druntime/src/rt/dylib_fixes.c b/druntime/src/rt/dylib_fixes.c
index e484fed7fb..c1391b8538 100644
--- a/druntime/src/rt/dylib_fixes.c
+++ b/druntime/src/rt/dylib_fixes.c
@@ -25,4 +25,3 @@ __attribute__((destructor)) static void finalizer ()
{
rt_term();
}
-
diff --git a/druntime/test/gc/nocollect.d b/druntime/test/gc/nocollect.d
index 5df1483a28..64ed222113 100644
--- a/druntime/test/gc/nocollect.d
+++ b/druntime/test/gc/nocollect.d
@@ -12,4 +12,4 @@ void main()
stats = GC.profileStats();
assert(stats.numCollections == 0);
-}
\ No newline at end of file
+}
diff --git a/druntime/test/init_fini/win64.mak b/druntime/test/init_fini/win64.mak
index 160e8c7c68..b020fec9f6 100644
--- a/druntime/test/init_fini/win64.mak
+++ b/druntime/test/init_fini/win64.mak
@@ -10,4 +10,3 @@ custom_gc:
$(DMD) -m$(MODEL) -conf= -Isrc -defaultlib=$(DRUNTIMELIB) test\init_fini\src\custom_gc.d
custom_gc.exe
del custom_gc.exe custom_gc.obj
-
diff --git a/druntime/test/uuid/win64.mak b/druntime/test/uuid/win64.mak
index eb5134310c..1939692629 100644
--- a/druntime/test/uuid/win64.mak
+++ b/druntime/test/uuid/win64.mak
@@ -7,4 +7,3 @@ DRUNTIMELIB=druntime64.lib
test:
$(DMD) -m$(MODEL) -conf= -Isrc -defaultlib=$(DRUNTIMELIB) test\uuid\test.d uuid.lib
del test.exe test.obj
-
diff --git a/druntime/win32.mak b/druntime/win32.mak
index 68a1423482..960d62c436 100644
--- a/druntime/win32.mak
+++ b/druntime/win32.mak
@@ -4,10 +4,10 @@
# Ignored, only the default value is supported
#MODEL=32omf
-DMD_DIR=..\dmd
+DMD_DIR=..\compiler
BUILD=release
OS=windows
-DMD=$(DMD_DIR)\generated\$(OS)\$(BUILD)\32\dmd
+DMD=$(DMD_DIR)\..\generated\$(OS)\$(BUILD)\32\dmd
# Used for running MASM assembler on .asm files
CC=dmc
diff --git a/druntime/win64.mak b/druntime/win64.mak
index 9d118884b3..d1a7c7dc3f 100644
--- a/druntime/win64.mak
+++ b/druntime/win64.mak
@@ -9,13 +9,13 @@ MODEL=64
# Otherwise set it explicitly, e.g., to `C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x86\cl.exe`.
CC=cl
-DMD_DIR=..\dmd
+DMD_DIR=..\compiler
BUILD=release
OS=windows
# The D compiler used to build things
-DMD=$(DMD_DIR)\generated\$(OS)\$(BUILD)\$(MODEL)\dmd
+DMD=$(DMD_DIR)\..\generated\$(OS)\$(BUILD)\$(MODEL)\dmd
DOCDIR=doc
IMPDIR=import
diff --git a/dub.sdl b/dub.sdl
index ad7a695f61..ef4dbef3ba 100644
--- a/dub.sdl
+++ b/dub.sdl
@@ -10,25 +10,27 @@ dependency ":frontend" version="*"
subPackage {
name "root"
targetType "library"
- sourcePaths "src/dmd/common" "src/dmd/root"
+ importPaths "compiler/src"
+ sourcePaths "compiler/src/dmd/common" "compiler/src/dmd/root"
}
subPackage {
name "lexer"
targetType "library"
+ importPaths "compiler/src"
sourcePaths
sourceFiles \
- "src/dmd/console.d" \
- "src/dmd/entity.d" \
- "src/dmd/errors.d" \
- "src/dmd/file_manager.d" \
- "src/dmd/globals.d" \
- "src/dmd/id.d" \
- "src/dmd/identifier.d" \
- "src/dmd/lexer.d" \
- "src/dmd/tokens.d" \
- "src/dmd/utils.d"
+ "compiler/src/dmd/console.d" \
+ "compiler/src/dmd/entity.d" \
+ "compiler/src/dmd/errors.d" \
+ "compiler/src/dmd/file_manager.d" \
+ "compiler/src/dmd/globals.d" \
+ "compiler/src/dmd/id.d" \
+ "compiler/src/dmd/identifier.d" \
+ "compiler/src/dmd/lexer.d" \
+ "compiler/src/dmd/tokens.d" \
+ "compiler/src/dmd/utils.d"
versions \
"CallbackAPI" \
@@ -47,7 +49,7 @@ subPackage {
preGenerateCommands `"%DUB_EXE%" --arch=%DUB_ARCH% --compiler="%DC%" --single "%DUB_PACKAGE_DIR%config.d" -- "%DUB_PACKAGE_DIR%generated/dub" "%DUB_PACKAGE_DIR%VERSION"` platform="windows"
stringImportPaths \
- "src/dmd/res" \
+ "compiler/src/dmd/res" \
"generated/dub"
dependency "dmd:root" version="*"
@@ -56,14 +58,15 @@ subPackage {
subPackage {
name "parser"
targetType "library"
+ importPaths "compiler/src"
sourcePaths
sourceFiles \
- "src/dmd/astbase.d" \
- "src/dmd/parse.d" \
- "src/dmd/transitivevisitor.d" \
- "src/dmd/permissivevisitor.d" \
- "src/dmd/strictvisitor.d"
+ "compiler/src/dmd/astbase.d" \
+ "compiler/src/dmd/parse.d" \
+ "compiler/src/dmd/transitivevisitor.d" \
+ "compiler/src/dmd/permissivevisitor.d" \
+ "compiler/src/dmd/strictvisitor.d"
versions "CallbackAPI"
@@ -73,8 +76,9 @@ subPackage {
subPackage {
name "frontend"
targetType "library"
- sourcePaths "src/dmd"
- stringImportPaths "src/dmd/res"
+ importPaths "compiler/src"
+ sourcePaths "compiler/src/dmd"
+ stringImportPaths "compiler/src/dmd/res"
versions \
"NoBackend" \
@@ -83,10 +87,10 @@ subPackage {
"MARS" \
"CallbackAPI"
- excludedSourceFiles "src/dmd/backend/*"
- excludedSourceFiles "src/dmd/root/*"
- excludedSourceFiles "src/dmd/common/*"
- excludedSourceFiles "src/dmd/{\
+ excludedSourceFiles "compiler/src/dmd/backend/*"
+ excludedSourceFiles "compiler/src/dmd/root/*"
+ excludedSourceFiles "compiler/src/dmd/common/*"
+ excludedSourceFiles "compiler/src/dmd/{\
astbase,\
console,\
entity,\
@@ -104,7 +108,7 @@ subPackage {
utf,\
utils\
}.d"
- excludedSourceFiles "src/dmd/{\
+ excludedSourceFiles "compiler/src/dmd/{\
dmsc,\
e2ir,\
eh,\
diff --git a/posix.mak b/posix.mak
index f451a30082..5fe6ad30b3 100644
--- a/posix.mak
+++ b/posix.mak
@@ -1,18 +1,20 @@
INSTALL_DIR=$(PWD)/../install
ECTAGS_LANGS = Make,C,C++,D,Sh
-ECTAGS_FILES = src/dmd/*.[chd] src/dmd/backend/*.[chd] src/dmd/root/*.[chd]
+ECTAGS_FILES = compiler/dmd/*.[chd] compiler/dmd/backend/*.[chd] compiler/dmd/root/*.[chd]
.PHONY: all clean test install auto-tester-build auto-tester-test toolchain-info
all:
- $(QUIET)$(MAKE) -C src -f posix.mak all
+ $(QUIET)$(MAKE) -C compiler/src -f posix.mak all
+ $(QUIET)$(MAKE) -C druntime -f posix.mak target
ifneq (,$(findstring Darwin_64_32, $(PWD)))
auto-tester-build:
echo "Darwin_64_32_disabled"
else
auto-tester-build:
- $(QUIET)$(MAKE) -C src -f posix.mak auto-tester-build ENABLE_RELEASE=1 ENABLE_ASSERTS=1
+ $(QUIET)$(MAKE) -C compiler/src -f posix.mak auto-tester-build ENABLE_RELEASE=1 ENABLE_ASSERTS=1
+ $(QUIET)$(MAKE) -C druntime -f posix.mak auto-tester-build ENABLE_RELEASE=1 ENABLE_ASSERTS=1
endif
ifneq (,$(findstring Darwin_64_32, $(PWD)))
@@ -24,28 +26,29 @@ auto-tester-test: test
else # POSIX
# Like test, but without runnable_cxx
auto-tester-test:
- $(QUIET)$(MAKE) -C src -f posix.mak auto-tester-test
- $(QUIET)$(MAKE) -C test -f Makefile auto-tester-test
+ $(QUIET)$(MAKE) -C compiler/src -f posix.mak auto-tester-test
+ $(QUIET)$(MAKE) -C compiler/test -f Makefile auto-tester-test
+ $(QUIET)$(MAKE) -C druntime -f posix.mak auto-tester-test
endif
endif
buildkite-test: test
toolchain-info:
- $(QUIET)$(MAKE) -C src -f posix.mak toolchain-info
+ $(QUIET)$(MAKE) -C compiler/src -f posix.mak toolchain-info
clean:
- $(QUIET)$(MAKE) -C src -f posix.mak clean
- $(QUIET)$(MAKE) -C test -f Makefile clean
+ $(QUIET)$(MAKE) -C compiler/src -f posix.mak clean
+ $(QUIET)$(MAKE) -C compiler/test -f Makefile clean
$(RM) tags
test:
- $(QUIET)$(MAKE) -C src -f posix.mak unittest
- $(QUIET)$(MAKE) -C src -f posix.mak dmd
- $(QUIET)$(MAKE) -C test -f Makefile
+ $(QUIET)$(MAKE) -C compiler/src -f posix.mak unittest
+ $(QUIET)$(MAKE) -C compiler/src -f posix.mak dmd
+ $(QUIET)$(MAKE) -C compiler/test -f Makefile
html:
- $(QUIET)$(MAKE) -C src -f posix.mak html
+ $(QUIET)$(MAKE) -C compiler/src -f posix.mak html
# Creates Exuberant Ctags tags file
tags: posix.mak $(ECTAGS_FILES)
@@ -57,10 +60,10 @@ install:
echo "Darwin_64_32_disabled"
else
install: all
- $(MAKE) INSTALL_DIR=$(INSTALL_DIR) -C src -f posix.mak install
- cp -r samples $(INSTALL_DIR)
+ $(MAKE) INSTALL_DIR=$(INSTALL_DIR) -C compiler/src -f posix.mak install
+ cp -r compiler/samples $(INSTALL_DIR)
mkdir -p $(INSTALL_DIR)/man
- cp -r docs/man/* $(INSTALL_DIR)/man/
+ cp -r compiler/docs/man/* $(INSTALL_DIR)/man/
endif
# Checks that all files have been committed and no temporary, untracked files exist.
@@ -74,7 +77,7 @@ check-clean-git:
fi
style:
- $(QUIET)$(MAKE) -C src -f posix.mak style
+ $(QUIET)$(MAKE) -C compiler/src -f posix.mak style
.DELETE_ON_ERROR: # GNU Make directive (delete output files on error)
diff --git a/src/README.md b/src/README.md
new file mode 100644
index 0000000000..b37c33173a
--- /dev/null
+++ b/src/README.md
@@ -0,0 +1,3 @@
+# Backwards-compatibility stub directory
+
+This directory holds backwards compatibility files for scripts written before Druntime was merged into this directory.
diff --git a/src/dmd/backend/dvec.d b/src/dmd/backend/dvec.d
new file mode 100644
index 0000000000..2bf4c221d4
--- /dev/null
+++ b/src/dmd/backend/dvec.d
@@ -0,0 +1 @@
+// Dummy file for backwards compatibility with old ae.sys.d-based D build tools.
diff --git a/src/dmd/mars.d b/src/dmd/mars.d
new file mode 100644
index 0000000000..2bf4c221d4
--- /dev/null
+++ b/src/dmd/mars.d
@@ -0,0 +1 @@
+// Dummy file for backwards compatibility with old ae.sys.d-based D build tools.
diff --git a/src/osmodel.mak b/src/osmodel.mak
new file mode 100644
index 0000000000..a0247f7f1e
--- /dev/null
+++ b/src/osmodel.mak
@@ -0,0 +1 @@
+include $(dir $(lastword $(MAKEFILE_LIST)))../compiler/src/osmodel.mak
diff --git a/src/posix.mak b/src/posix.mak
new file mode 100644
index 0000000000..556ef15c79
--- /dev/null
+++ b/src/posix.mak
@@ -0,0 +1,38 @@
+# Proxy Makefile for backwards compatibility after move to /compiler/src
+
+
+all:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+auto-tester-build:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+auto-tester-test:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+buildkite-test:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+toolchain-info:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+clean:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+test:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+html:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+tags:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+install:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+check-clean-git:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
+
+style:
+ $(QUIET)$(MAKE) -C ../compiler/src -f posix.mak $@
diff --git a/src/win32.mak b/src/win32.mak
new file mode 100644
index 0000000000..981e1196bb
--- /dev/null
+++ b/src/win32.mak
@@ -0,0 +1,89 @@
+# Proxy Makefile for backwards compatibility after move to /compiler/src
+
+############################### Configuration ################################
+
+OS=windows
+BUILD=release
+MODEL=32
+HOST_DC=dmd
+MAKE=make
+GEN=..\..\generated
+G=$(GEN)\$(OS)\$(BUILD)\$(MODEL)
+
+MAKE_WIN32=$(MAKE) -f win32.mak \
+ "OS=$(OS)" \
+ "BUILD=$(BUILD)" \
+ "MODEL=$(MODEL)" \
+ "HOST_DMD=$(HOST_DMD)" \
+ "HOST_DC=$(HOST_DC)" \
+ "MAKE=$(MAKE)" \
+ "VERBOSE=$(VERBOSE)" \
+ "ENABLE_RELEASE=$(ENABLE_RELEASE)" \
+ "ENABLE_DEBUG=$(ENABLE_DEBUG)" \
+ "ENABLE_ASSERTS=$(ENABLE_ASSERTS)" \
+ "ENABLE_LTO=$(ENABLE_LTO)" \
+ "ENABLE_UNITTEST=$(ENABLE_UNITTEST)" \
+ "ENABLE_PROFILE=$(ENABLE_PROFILE)" \
+ "ENABLE_COVERAGE=$(ENABLE_COVERAGE)" \
+ "DFLAGS=$(DFLAGS)" \
+ "GEN=$(GEN)" \
+ "G=$G"
+
+################################## Targets ###################################
+
+defaulttarget :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+release :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+trace :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+clean :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+install :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+install-clean :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+zip :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+dmd :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+debdmd :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+reldmd :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+reldmd-asserts :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+unittest :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+detab :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+tolf :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
diff --git a/src/win64.mak b/src/win64.mak
new file mode 100644
index 0000000000..5994eaf33a
--- /dev/null
+++ b/src/win64.mak
@@ -0,0 +1,89 @@
+# Proxy Makefile for backwards compatibility after move to /compiler/src
+
+############################### Configuration ################################
+
+OS=windows
+BUILD=release
+MODEL=64
+HOST_DC=dmd
+MAKE=make
+GEN=..\..\generated
+G=$(GEN)\$(OS)\$(BUILD)\$(MODEL)
+
+MAKE_WIN32=$(MAKE) -f win64.mak \
+ "OS=$(OS)" \
+ "BUILD=$(BUILD)" \
+ "MODEL=$(MODEL)" \
+ "HOST_DMD=$(HOST_DMD)" \
+ "HOST_DC=$(HOST_DC)" \
+ "MAKE=$(MAKE)" \
+ "VERBOSE=$(VERBOSE)" \
+ "ENABLE_RELEASE=$(ENABLE_RELEASE)" \
+ "ENABLE_DEBUG=$(ENABLE_DEBUG)" \
+ "ENABLE_ASSERTS=$(ENABLE_ASSERTS)" \
+ "ENABLE_LTO=$(ENABLE_LTO)" \
+ "ENABLE_UNITTEST=$(ENABLE_UNITTEST)" \
+ "ENABLE_PROFILE=$(ENABLE_PROFILE)" \
+ "ENABLE_COVERAGE=$(ENABLE_COVERAGE)" \
+ "DFLAGS=$(DFLAGS)" \
+ "GEN=$(GEN)" \
+ "G=$G"
+
+################################## Targets ###################################
+
+defaulttarget :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+release :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+trace :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+clean :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+install :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+install-clean :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+zip :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+dmd :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+debdmd :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+reldmd :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+reldmd-asserts :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+unittest :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+detab :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
+tolf :
+ cd ..\compiler\src
+ $(MAKE_WIN32) $@
+ cd ..\..\src
diff --git a/win32.mak b/win32.mak
index 04c280cc6f..cd1eba2155 100644
--- a/win32.mak
+++ b/win32.mak
@@ -1,20 +1,26 @@
MAKE=make
defaulttarget:
- cd src
+ cd compiler\src
$(MAKE) -f win32.mak
- cd ..
+ cd ..\..
auto-tester-build:
- cd src
+ cd compiler\src
+ $(MAKE) -f win32.mak auto-tester-build
+ cd ..\..
+ cd druntime
$(MAKE) -f win32.mak auto-tester-build
cd ..
auto-tester-test:
- cd test
+ cd compiler\test
$(MAKE)
+ cd ..\..
+ cd druntime
+ $(MAKE) -f win32.mak auto-tester-test
cd ..
- cd samples
+ cd compiler\samples
gmake -f win32.mak DMD=..\src\dmd.exe MODEL=$(MODEL) "LIB=..\..\phobos;$(LIB)" \
"DFLAGS=-I..\..\druntime\import -I..\..\phobos -m$(MODEL)"
- cd ..
+ cd ..\..
diff --git a/win64.mak b/win64.mak
index 2e1127364b..1bca74b0c7 100644
--- a/win64.mak
+++ b/win64.mak
@@ -5,5 +5,5 @@
MAKE=make
all:
- cd src
+ cd compiler\src
$(MAKE) -f win64.mak