mirror of
https://github.com/dlang/tools.git
synced 2025-05-06 10:57:02 +03:00
Merge remote-tracking branch 'upstream/master' into stable
This commit is contained in:
commit
c580be18e5
8 changed files with 192 additions and 385 deletions
38
.github/workflows/main.yml
vendored
Normal file
38
.github/workflows/main.yml
vendored
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
name: Main
|
||||||
|
on:
|
||||||
|
- pull_request # without merge conflicts
|
||||||
|
- push # branch or tag
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
main:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
os: [ macos-latest, ubuntu-latest, windows-latest ]
|
||||||
|
dc: [ dmd-latest, ldc-latest ]
|
||||||
|
name: ${{ matrix.os }}, ${{ matrix.dc }}
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
timeout-minutes: 10
|
||||||
|
env:
|
||||||
|
DMD: ${{ startsWith(matrix.dc, 'ldc') && 'ldmd2' || 'dmd' }}
|
||||||
|
N: ${{ startsWith(matrix.os, 'macos') && '3' || '2' }}
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Install D compiler
|
||||||
|
uses: dlang-community/setup-dlang@v1.3.0
|
||||||
|
with:
|
||||||
|
compiler: ${{ matrix.dc }}
|
||||||
|
- name: Build
|
||||||
|
shell: bash
|
||||||
|
run: make -j$N DMD=$DMD
|
||||||
|
- name: Test
|
||||||
|
shell: bash
|
||||||
|
run: make -j$N DMD=$DMD test
|
||||||
|
- name: 'Windows: Build and test with MODEL=32'
|
||||||
|
if: runner.os == 'Windows'
|
||||||
|
shell: bash
|
||||||
|
run: make -j$N DMD=$DMD MODEL=32 all test
|
142
Makefile
Normal file
142
Makefile
Normal file
|
@ -0,0 +1,142 @@
|
||||||
|
DMD_DIR = ../dmd
|
||||||
|
BUILD = release
|
||||||
|
DMD = $(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd
|
||||||
|
INSTALL_DIR = ../install
|
||||||
|
DRUNTIME_PATH = ../dmd/druntime
|
||||||
|
PHOBOS_PATH = ../phobos
|
||||||
|
DUB=dub
|
||||||
|
|
||||||
|
WITH_DOC = no
|
||||||
|
DOC = ../dlang.org
|
||||||
|
|
||||||
|
# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile from dmd
|
||||||
|
$(shell [ ! -d $(DMD_DIR) ] && git clone --depth=1 https://github.com/dlang/dmd $(DMD_DIR))
|
||||||
|
include $(DMD_DIR)/compiler/src/osmodel.mak
|
||||||
|
|
||||||
|
ifeq (windows,$(OS))
|
||||||
|
DOTEXE:=.exe
|
||||||
|
else
|
||||||
|
DOTEXE:=
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Build folder for all binaries
|
||||||
|
GENERATED = generated
|
||||||
|
ROOT = $(GENERATED)/$(OS)/$(MODEL)
|
||||||
|
|
||||||
|
# default to warnings and deprecations as errors, override via e.g. make WARNINGS=-wi
|
||||||
|
WARNINGS = -w -de
|
||||||
|
# default flags, override by setting DFLAGS (e.g. make DFLAGS=-O)
|
||||||
|
DFLAGS = $(MODEL_FLAG) $(if $(findstring windows,$(OS)),,-fPIC) -preview=dip1000
|
||||||
|
DFLAGS += $(WARNINGS)
|
||||||
|
|
||||||
|
# Default DUB flags (DUB uses a different architecture format)
|
||||||
|
DUBFLAGS = --arch=$(subst 32,x86,$(subst 64,x86_64,$(MODEL)))
|
||||||
|
|
||||||
|
TOOLS = \
|
||||||
|
$(ROOT)/catdoc$(DOTEXE) \
|
||||||
|
$(ROOT)/checkwhitespace$(DOTEXE) \
|
||||||
|
$(ROOT)/contributors$(DOTEXE) \
|
||||||
|
$(ROOT)/ddemangle$(DOTEXE) \
|
||||||
|
$(ROOT)/detab$(DOTEXE) \
|
||||||
|
$(ROOT)/rdmd$(DOTEXE) \
|
||||||
|
$(ROOT)/tolf$(DOTEXE) \
|
||||||
|
$(ROOT)/updatecopyright$(DOTEXE)
|
||||||
|
|
||||||
|
CURL_TOOLS = \
|
||||||
|
$(ROOT)/changed$(DOTEXE) \
|
||||||
|
$(ROOT)/dget$(DOTEXE)
|
||||||
|
|
||||||
|
DOC_TOOLS = \
|
||||||
|
$(ROOT)/dman$(DOTEXE)
|
||||||
|
|
||||||
|
TEST_TOOLS = \
|
||||||
|
$(ROOT)/rdmd_test$(DOTEXE)
|
||||||
|
|
||||||
|
all: $(TOOLS) $(CURL_TOOLS) $(ROOT)/dustmite$(DOTEXE)
|
||||||
|
|
||||||
|
rdmd: $(ROOT)/rdmd$(DOTEXE)
|
||||||
|
ddemangle: $(ROOT)/ddemangle$(DOTEXE)
|
||||||
|
catdoc: $(ROOT)/catdoc$(DOTEXE)
|
||||||
|
detab: $(ROOT)/detab$(DOTEXE)
|
||||||
|
tolf: $(ROOT)/tolf$(DOTEXE)
|
||||||
|
dget: $(ROOT)/dget$(DOTEXE)
|
||||||
|
changed: $(ROOT)/changed$(DOTEXE)
|
||||||
|
dman: $(ROOT)/dman$(DOTEXE)
|
||||||
|
dustmite: $(ROOT)/dustmite$(DOTEXE)
|
||||||
|
|
||||||
|
$(ROOT)/dustmite$(DOTEXE): DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d
|
||||||
|
$(DMD) $(DFLAGS) -version=Dlang_Tools DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d -of$(@)
|
||||||
|
|
||||||
|
$(TOOLS) $(DOC_TOOLS) $(CURL_TOOLS) $(TEST_TOOLS): $(ROOT)/%$(DOTEXE): %.d
|
||||||
|
$(DMD) $(DFLAGS) -of$(@) $(<)
|
||||||
|
|
||||||
|
d-tags.json:
|
||||||
|
@echo 'Build d-tags.json and copy it here, e.g. by running:'
|
||||||
|
@echo " make -C ../dlang.org -f posix.mak d-tags-latest.json && cp ../dlang.org/d-tags-latest.json d-tags.json"
|
||||||
|
@echo 'or:'
|
||||||
|
@echo " make -C ../dlang.org -f posix.mak d-tags-prerelease.json && cp ../dlang.org/d-tags-prerelease.json d-tags.json"
|
||||||
|
@exit 1
|
||||||
|
|
||||||
|
$(ROOT)/dman$(DOTEXE): d-tags.json
|
||||||
|
$(ROOT)/dman$(DOTEXE): override DFLAGS += -J.
|
||||||
|
|
||||||
|
install: $(TOOLS) $(CURL_TOOLS) $(ROOT)/dustmite$(DOTEXE)
|
||||||
|
mkdir -p $(INSTALL_DIR)/bin
|
||||||
|
cp $^ $(INSTALL_DIR)/bin
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -rf $(GENERATED)
|
||||||
|
|
||||||
|
$(ROOT)/tests_extractor$(DOTEXE): tests_extractor.d
|
||||||
|
mkdir -p $(ROOT)
|
||||||
|
DFLAGS="$(DFLAGS)" $(DUB) build \
|
||||||
|
--single $< --force --compiler=$(DMD) $(DUBFLAGS) \
|
||||||
|
&& mv ./tests_extractor$(DOTEXE) $@
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Build & run tests
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
ifeq (windows,$(OS))
|
||||||
|
# for some reason, --strip-trailing-cr isn't enough - need to dos2unix stdin
|
||||||
|
DIFF := dos2unix | diff --strip-trailing-cr
|
||||||
|
else
|
||||||
|
DIFF := diff
|
||||||
|
endif
|
||||||
|
|
||||||
|
test_tests_extractor: $(ROOT)/tests_extractor$(DOTEXE)
|
||||||
|
for file in ascii iteration ; do \
|
||||||
|
$< -i "./test/tests_extractor/$${file}.d" | $(DIFF) -u -p - "./test/tests_extractor/$${file}.d.ext"; \
|
||||||
|
done
|
||||||
|
$< -a betterc -i "./test/tests_extractor/attributes.d" | $(DIFF) -u -p - "./test/tests_extractor/attributes.d.ext";
|
||||||
|
$< --betterC -i "./test/tests_extractor/betterc.d" | $(DIFF) -u -p - "./test/tests_extractor/betterc.d.ext";
|
||||||
|
|
||||||
|
RDMD_TEST_COMPILERS = $(DMD)
|
||||||
|
RDMD_TEST_EXECUTABLE = $(ROOT)/rdmd$(DOTEXE)
|
||||||
|
RDMD_TEST_DEFAULT_COMPILER = $(basename $(DMD))
|
||||||
|
|
||||||
|
VERBOSE_RDMD_TEST=0
|
||||||
|
ifeq ($(VERBOSE_RDMD_TEST), 1)
|
||||||
|
override VERBOSE_RDMD_TEST_FLAGS:=-v
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq (osx,$(OS))
|
||||||
|
# /tmp is a symlink on Mac, and rdmd_test.d doesn't like it
|
||||||
|
test_rdmd: export TMPDIR=$(shell cd /tmp && pwd -P)
|
||||||
|
endif
|
||||||
|
test_rdmd: $(ROOT)/rdmd_test$(DOTEXE) $(RDMD_TEST_EXECUTABLE)
|
||||||
|
$< $(RDMD_TEST_EXECUTABLE) $(MODEL_FLAG) \
|
||||||
|
--rdmd-default-compiler=$(RDMD_TEST_DEFAULT_COMPILER) \
|
||||||
|
--test-compilers=$(RDMD_TEST_COMPILERS) \
|
||||||
|
$(VERBOSE_RDMD_TEST_FLAGS)
|
||||||
|
$(DMD) $(DFLAGS) -unittest -main -run rdmd.d
|
||||||
|
|
||||||
|
test: test_tests_extractor test_rdmd
|
||||||
|
|
||||||
|
ifeq ($(WITH_DOC),yes)
|
||||||
|
all install: $(DOC_TOOLS)
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: all install clean
|
||||||
|
|
||||||
|
.DELETE_ON_ERROR: # GNU Make directive (delete output files on error)
|
|
@ -38,7 +38,7 @@ Building
|
||||||
On a Posix system all tools can be built with:
|
On a Posix system all tools can be built with:
|
||||||
|
|
||||||
```
|
```
|
||||||
make -f posix.mak all
|
make all
|
||||||
```
|
```
|
||||||
|
|
||||||
Using DUB as a build tool
|
Using DUB as a build tool
|
||||||
|
|
71
appveyor.yml
71
appveyor.yml
|
@ -1,71 +0,0 @@
|
||||||
platform: x64
|
|
||||||
environment:
|
|
||||||
matrix:
|
|
||||||
- DC: dmd
|
|
||||||
DVersion: nightly
|
|
||||||
arch: x64
|
|
||||||
MODEL: 64
|
|
||||||
- DC: dmd
|
|
||||||
DVersion: nightly
|
|
||||||
arch: x86
|
|
||||||
MODEL: 32
|
|
||||||
skip_tags: false
|
|
||||||
build_script:
|
|
||||||
- ps: >
|
|
||||||
function ResolveLatestDMD
|
|
||||||
{
|
|
||||||
$version = $env:DVersion;
|
|
||||||
if($version -eq "stable") {
|
|
||||||
$latest = (Invoke-WebRequest "https://downloads.dlang.org/releases/LATEST").toString();
|
|
||||||
$url = "https://downloads.dlang.org/releases/2.x/$($latest)/dmd.$($latest).windows.7z";
|
|
||||||
}elseif($version -eq "beta") {
|
|
||||||
$latest = (Invoke-WebRequest "https://downloads.dlang.org/pre-releases/LATEST").toString();
|
|
||||||
$latestVersion = $latest.split("-")[0].split("~")[0];
|
|
||||||
$url = "https://downloads.dlang.org/pre-releases/2.x/$($latestVersion)/dmd.$($latest).windows.7z";
|
|
||||||
}elseif($version -eq "nightly") {
|
|
||||||
$latest = (Invoke-WebRequest "https://downloads.dlang.org/nightlies/dmd-master/LATEST").toString().replace("`n","").replace("`r","");
|
|
||||||
$url = "https://downloads.dlang.org/nightlies/dmd-$($latest)/dmd.master.windows.7z"
|
|
||||||
}else {
|
|
||||||
$url = "https://downloads.dlang.org/releases/2.x/$($version)/dmd.$($version).windows.7z";
|
|
||||||
}
|
|
||||||
$env:PATH += ";C:\dmd2\windows\bin;";
|
|
||||||
return $url;
|
|
||||||
}
|
|
||||||
function SetUpDCompiler
|
|
||||||
{
|
|
||||||
$env:toolchain = "msvc";
|
|
||||||
echo "downloading ...";
|
|
||||||
$url = ResolveLatestDMD;
|
|
||||||
echo $url;
|
|
||||||
Invoke-WebRequest $url -OutFile "c:\dmd.7z";
|
|
||||||
echo "finished.";
|
|
||||||
pushd c:\\;
|
|
||||||
7z x dmd.7z > $null;
|
|
||||||
popd;
|
|
||||||
}
|
|
||||||
SetUpDCompiler
|
|
||||||
|
|
||||||
if($env:arch -eq "x86"){
|
|
||||||
$env:compilersetupargs = "x86";
|
|
||||||
$env:Darch = "x86";
|
|
||||||
$env:DConf = "m32";
|
|
||||||
}elseif($env:arch -eq "x64"){
|
|
||||||
$env:compilersetupargs = "amd64";
|
|
||||||
$env:Darch = "x86_64";
|
|
||||||
$env:DConf = "m64";
|
|
||||||
}
|
|
||||||
# This needs to be done more generically (currently only works on AppVeyor)
|
|
||||||
$env:compilersetup = "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall";
|
|
||||||
|
|
||||||
- call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" %compilersetupargs%
|
|
||||||
|
|
||||||
test_script:
|
|
||||||
- echo %PLATFORM%
|
|
||||||
- echo %Darch%
|
|
||||||
- echo %DC%
|
|
||||||
- echo %PATH%
|
|
||||||
- '%DC% --version'
|
|
||||||
- make -f win32.mak DFLAGS=-g rdmd dustmite ddemangle changed
|
|
||||||
- make -f win32.mak DFLAGS=-g test
|
|
||||||
- make -f win64.mak DFLAGS=-g rdmd dustmite ddemangle changed
|
|
||||||
- make -f win64.mak DFLAGS=-g test
|
|
146
posix.mak
146
posix.mak
|
@ -1,141 +1,11 @@
|
||||||
DMD_DIR = ../dmd
|
$(warning ===== DEPRECATION NOTICE ===== )
|
||||||
BUILD = release
|
$(warning ===== DEPRECATION: posix.mak is deprecated. Please use generic Makefile instead.)
|
||||||
DMD = $(DMD_DIR)/generated/$(OS)/$(BUILD)/$(MODEL)/dmd
|
$(warning ============================== )
|
||||||
CC = gcc
|
|
||||||
INSTALL_DIR = ../install
|
|
||||||
DRUNTIME_PATH = ../dmd/druntime
|
|
||||||
PHOBOS_PATH = ../phobos
|
|
||||||
DUB=dub
|
|
||||||
|
|
||||||
WITH_DOC = no
|
# forward everything to Makefile
|
||||||
DOC = ../dlang.org
|
|
||||||
|
|
||||||
# Load operating system $(OS) (e.g. linux, osx, ...) and $(MODEL) (e.g. 32, 64) detection Makefile from dmd
|
all:
|
||||||
$(shell [ ! -d $(DMD_DIR) ] && git clone --depth=1 https://github.com/dlang/dmd $(DMD_DIR))
|
$(MAKE) -f Makefile $@
|
||||||
include $(DMD_DIR)/src/osmodel.mak
|
|
||||||
|
|
||||||
# Build folder for all binaries
|
%:
|
||||||
GENERATED = generated
|
$(MAKE) -f Makefile $@
|
||||||
ROOT = $(GENERATED)/$(OS)/$(MODEL)
|
|
||||||
|
|
||||||
# Set DRUNTIME name and full path
|
|
||||||
ifeq (,$(findstring win,$(OS)))
|
|
||||||
DRUNTIME = $(DRUNTIME_PATH)/lib/libdruntime-$(OS)$(MODEL).a
|
|
||||||
DRUNTIMESO = $(DRUNTIME_PATH)/lib/libdruntime-$(OS)$(MODEL)so.a
|
|
||||||
else
|
|
||||||
DRUNTIME = $(DRUNTIME_PATH)/lib/druntime.lib
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Set PHOBOS name and full path
|
|
||||||
ifeq (,$(findstring win,$(OS)))
|
|
||||||
PHOBOS = $(PHOBOS_PATH)/generated/$(OS)/$(BUILD)/$(MODEL)/libphobos2.a
|
|
||||||
PHOBOSSO = $(PHOBOS_PATH)/generated/$(OS)/$(BUILD)/$(MODEL)/libphobos2.so
|
|
||||||
endif
|
|
||||||
|
|
||||||
# default to warnings and deprecations as errors, override via e.g. make -f posix.mak WARNINGS=-wi
|
|
||||||
WARNINGS = -w -de
|
|
||||||
# default include/link paths, override by setting DFLAGS (e.g. make -f posix.mak DFLAGS=-I/foo)
|
|
||||||
DFLAGS = -I$(DRUNTIME_PATH)/import -I$(PHOBOS_PATH) \
|
|
||||||
-L-L$(PHOBOS_PATH)/generated/$(OS)/$(BUILD)/$(MODEL) $(MODEL_FLAG) -fPIC -preview=dip1000
|
|
||||||
DFLAGS += $(WARNINGS)
|
|
||||||
|
|
||||||
# Default DUB flags (DUB uses a different architecture format)
|
|
||||||
DUBFLAGS = --arch=$(subst 32,x86,$(subst 64,x86_64,$(MODEL)))
|
|
||||||
|
|
||||||
TOOLS = \
|
|
||||||
$(ROOT)/catdoc \
|
|
||||||
$(ROOT)/checkwhitespace \
|
|
||||||
$(ROOT)/contributors \
|
|
||||||
$(ROOT)/ddemangle \
|
|
||||||
$(ROOT)/detab \
|
|
||||||
$(ROOT)/rdmd \
|
|
||||||
$(ROOT)/tolf \
|
|
||||||
$(ROOT)/updatecopyright
|
|
||||||
|
|
||||||
CURL_TOOLS = \
|
|
||||||
$(ROOT)/changed \
|
|
||||||
$(ROOT)/dget
|
|
||||||
|
|
||||||
DOC_TOOLS = \
|
|
||||||
$(ROOT)/dman
|
|
||||||
|
|
||||||
TEST_TOOLS = \
|
|
||||||
$(ROOT)/rdmd_test
|
|
||||||
|
|
||||||
all: $(TOOLS) $(CURL_TOOLS) $(ROOT)/dustmite
|
|
||||||
|
|
||||||
rdmd: $(ROOT)/rdmd
|
|
||||||
ddemangle: $(ROOT)/ddemangle
|
|
||||||
catdoc: $(ROOT)/catdoc
|
|
||||||
detab: $(ROOT)/detab
|
|
||||||
tolf: $(ROOT)/tolf
|
|
||||||
dget: $(ROOT)/dget
|
|
||||||
changed: $(ROOT)/changed
|
|
||||||
dman: $(ROOT)/dman
|
|
||||||
dustmite: $(ROOT)/dustmite
|
|
||||||
|
|
||||||
$(ROOT)/dustmite: DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d
|
|
||||||
$(DMD) $(DFLAGS) -version=Dlang_Tools DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d -of$(@)
|
|
||||||
|
|
||||||
$(TOOLS) $(DOC_TOOLS) $(CURL_TOOLS) $(TEST_TOOLS): $(ROOT)/%: %.d
|
|
||||||
$(DMD) $(DFLAGS) -of$(@) $(<)
|
|
||||||
|
|
||||||
d-tags.json:
|
|
||||||
@echo 'Build d-tags.json and copy it here, e.g. by running:'
|
|
||||||
@echo " make -C ../dlang.org -f posix.mak d-tags-latest.json && cp ../dlang.org/d-tags-latest.json d-tags.json"
|
|
||||||
@echo 'or:'
|
|
||||||
@echo " make -C ../dlang.org -f posix.mak d-tags-prerelease.json && cp ../dlang.org/d-tags-prerelease.json d-tags.json"
|
|
||||||
@exit 1
|
|
||||||
|
|
||||||
$(ROOT)/dman: d-tags.json
|
|
||||||
$(ROOT)/dman: override DFLAGS += -J.
|
|
||||||
|
|
||||||
install: $(TOOLS) $(CURL_TOOLS) $(ROOT)/dustmite
|
|
||||||
mkdir -p $(INSTALL_DIR)/bin
|
|
||||||
cp $^ $(INSTALL_DIR)/bin
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf $(GENERATED)
|
|
||||||
|
|
||||||
$(ROOT)/tests_extractor: tests_extractor.d
|
|
||||||
mkdir -p $(ROOT)
|
|
||||||
DFLAGS="$(DFLAGS)" $(DUB) build \
|
|
||||||
--single $< --force --compiler=$(DMD) $(DUBFLAGS) \
|
|
||||||
&& mv ./tests_extractor $@
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Build & run tests
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
test_tests_extractor: $(ROOT)/tests_extractor
|
|
||||||
for file in ascii iteration ; do \
|
|
||||||
$< -i "./test/tests_extractor/$${file}.d" | diff -p - "./test/tests_extractor/$${file}.d.ext"; \
|
|
||||||
done
|
|
||||||
$< -a betterc -i "./test/tests_extractor/attributes.d" | diff -p - "./test/tests_extractor/attributes.d.ext";
|
|
||||||
$< --betterC -i "./test/tests_extractor/betterc.d" | diff -p - "./test/tests_extractor/betterc.d.ext";
|
|
||||||
|
|
||||||
RDMD_TEST_COMPILERS = $(DMD)
|
|
||||||
RDMD_TEST_EXECUTABLE = $(ROOT)/rdmd
|
|
||||||
RDMD_TEST_DEFAULT_COMPILER = $(basename $(DMD))
|
|
||||||
|
|
||||||
VERBOSE_RDMD_TEST=0
|
|
||||||
ifeq ($(VERBOSE_RDMD_TEST), 1)
|
|
||||||
override VERBOSE_RDMD_TEST_FLAGS:=-v
|
|
||||||
endif
|
|
||||||
|
|
||||||
test_rdmd: $(ROOT)/rdmd_test $(RDMD_TEST_EXECUTABLE)
|
|
||||||
$< $(RDMD_TEST_EXECUTABLE) -m$(MODEL) \
|
|
||||||
--rdmd-default-compiler=$(RDMD_TEST_DEFAULT_COMPILER) \
|
|
||||||
--test-compilers=$(RDMD_TEST_COMPILERS) \
|
|
||||||
$(VERBOSE_RDMD_TEST_FLAGS)
|
|
||||||
$(DMD) $(DFLAGS) -unittest -main -run rdmd.d
|
|
||||||
|
|
||||||
test: test_tests_extractor test_rdmd
|
|
||||||
|
|
||||||
ifeq ($(WITH_DOC),yes)
|
|
||||||
all install: $(DOC_TOOLS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: all install clean
|
|
||||||
|
|
||||||
.DELETE_ON_ERROR: # GNU Make directive (delete output files on error)
|
|
||||||
|
|
|
@ -431,7 +431,7 @@ void runTests(string rdmdApp, string compiler, string model)
|
||||||
|
|
||||||
res = execute(rdmdArgs ~ [forceSrc.baseName()]);
|
res = execute(rdmdArgs ~ [forceSrc.baseName()]);
|
||||||
enforce(res.status == 0, res.output);
|
enforce(res.status == 0, res.output);
|
||||||
enforce(!res.output.canFind("compile_force_src"));
|
enforce(!res.output.canFind("compile_force_src"), res.output);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto conflictDir = forceSrc.setExtension(".dir");
|
auto conflictDir = forceSrc.setExtension(".dir");
|
||||||
|
@ -684,11 +684,11 @@ void runFallbackTest(string rdmdApp, string buildCompiler, string model)
|
||||||
if an explicit --compiler flag is not provided, rdmd should
|
if an explicit --compiler flag is not provided, rdmd should
|
||||||
search its own binary path first when looking for the default
|
search its own binary path first when looking for the default
|
||||||
compiler (determined by the compiler used to build it) */
|
compiler (determined by the compiler used to build it) */
|
||||||
string localDMD = buildPath(tempDir(), baseName(buildCompiler).setExtension(binExt));
|
string localDMD = buildPath(dirName(rdmdApp), baseName(buildCompiler).setExtension(binExt));
|
||||||
std.file.write(localDMD, ""); // An empty file avoids the "Not a valid 16-bit application" pop-up on Windows
|
std.file.write(localDMD, ""); // An empty file avoids the "Not a valid 16-bit application" pop-up on Windows
|
||||||
scope(exit) std.file.remove(localDMD);
|
scope(exit) std.file.remove(localDMD);
|
||||||
|
|
||||||
auto res = execute(rdmdApp ~ [modelSwitch(model), "--force", "--chatty", "--eval=writeln(`Compiler found.`);"]);
|
auto res = execute(rdmdApp ~ [modelSwitch(model), "--force", "--chatty", "--eval=writeln(`Compiler found.`);"]);
|
||||||
enforce(res.status == 1, res.output);
|
enforce(res.status == 1, res.output);
|
||||||
enforce(res.output.canFind(format(`spawn [%(%s%),`, localDMD.only)), localDMD ~ " would not have been executed");
|
enforce(res.output.canFind(format(`spawn [%(%s%),`, localDMD.only)), localDMD ~ " would not have been executed. Output:\n" ~ res.output);
|
||||||
}
|
}
|
||||||
|
|
108
win32.mak
108
win32.mak
|
@ -1,108 +0,0 @@
|
||||||
# Where scp command copies to
|
|
||||||
SCPDIR=..\backup
|
|
||||||
|
|
||||||
##### Tools
|
|
||||||
|
|
||||||
# D compiler
|
|
||||||
DMD=dmd
|
|
||||||
# C++ compiler
|
|
||||||
CC=dmc
|
|
||||||
# Make program
|
|
||||||
MAKE=make
|
|
||||||
# Librarian
|
|
||||||
LIB=lib
|
|
||||||
# Delete file(s)
|
|
||||||
DEL=del
|
|
||||||
# Make directory
|
|
||||||
MD=mkdir
|
|
||||||
# Remove directory
|
|
||||||
RD=rmdir
|
|
||||||
# File copy
|
|
||||||
CP=cp
|
|
||||||
# De-tabify
|
|
||||||
DETAB=detab
|
|
||||||
# Convert line endings to Unix
|
|
||||||
TOLF=tolf
|
|
||||||
# Zip
|
|
||||||
ZIP=zip32
|
|
||||||
# Copy to another directory
|
|
||||||
SCP=$(CP)
|
|
||||||
|
|
||||||
DFLAGS=-O -release -m$(MODEL)
|
|
||||||
|
|
||||||
GENERATED = generated
|
|
||||||
ROOT = $(GENERATED)\windows\32
|
|
||||||
|
|
||||||
TARGETS= $(ROOT)\dman.exe \
|
|
||||||
$(ROOT)\rdmd.exe \
|
|
||||||
$(ROOT)\ddemangle.exe \
|
|
||||||
$(ROOT)\changed.exe \
|
|
||||||
$(ROOT)\dustmite.exe
|
|
||||||
|
|
||||||
MAKEFILES=win32.mak win64.mak posix.mak
|
|
||||||
|
|
||||||
SRCS=dman.d rdmd.d ddemangle.d
|
|
||||||
|
|
||||||
targets : $(TARGETS)
|
|
||||||
|
|
||||||
dman: $(ROOT)\dman.exe
|
|
||||||
rdmd: $(ROOT)\rdmd.exe
|
|
||||||
ddemangle: $(ROOT)\ddemangle.exe
|
|
||||||
changed: $(ROOT)\changed.exe
|
|
||||||
dustmite: $(ROOT)\dustmite.exe
|
|
||||||
|
|
||||||
d-tags.json :
|
|
||||||
@echo 'Build d-tags.json and copy it here, e.g. by running:'
|
|
||||||
@echo " make -C ../dlang.org -f win32.mak d-tags.json && copy ../dlang.org/d-tags-latest.json d-tags.json"
|
|
||||||
@exit
|
|
||||||
|
|
||||||
$(ROOT)\dman.exe : dman.d d-tags.json
|
|
||||||
$(DMD) $(DFLAGS) -of$@ dman.d -J.
|
|
||||||
|
|
||||||
$(ROOT)\rdmd.exe : rdmd.d
|
|
||||||
$(DMD) $(DFLAGS) -of$@ rdmd.d advapi32.lib
|
|
||||||
|
|
||||||
$(ROOT)\ddemangle.exe : ddemangle.d
|
|
||||||
$(DMD) $(DFLAGS) -of$@ ddemangle.d
|
|
||||||
|
|
||||||
$(ROOT)\dustmite.exe : DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d
|
|
||||||
$(DMD) $(DFLAGS) -of$@ -version=Dlang_Tools DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d
|
|
||||||
|
|
||||||
$(ROOT)\changed.exe : changed.d
|
|
||||||
$(DMD) $(DFLAGS) -of$@ changed.d
|
|
||||||
|
|
||||||
clean :
|
|
||||||
rmdir /s /q $(GENERATED)
|
|
||||||
|
|
||||||
detab:
|
|
||||||
$(DETAB) $(SRCS)
|
|
||||||
|
|
||||||
tolf:
|
|
||||||
$(TOLF) $(SRCS) $(MAKEFILES)
|
|
||||||
|
|
||||||
zip: detab tolf $(MAKEFILES)
|
|
||||||
$(DEL) dman.zip
|
|
||||||
$(ZIP) dman $(MAKEFILES) $(SRCS) $(TAGS)
|
|
||||||
|
|
||||||
scp: detab tolf $(MAKEFILES)
|
|
||||||
$(SCP) $(SRCS) $(MAKEFILES) $(SCPDIR)
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Build and run tests
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
RDMD_TEST_COMPILERS = $(DMD)
|
|
||||||
RDMD_TEST_EXECUTABLE = $(ROOT)\rdmd.exe
|
|
||||||
RDMD_TEST_DEFAULT_COMPILER = $(DMD)
|
|
||||||
|
|
||||||
$(ROOT)\rdmd_test.exe : rdmd_test.d
|
|
||||||
$(DMD) $(DFLAGS) -of$@ rdmd_test.d
|
|
||||||
|
|
||||||
test_rdmd : $(ROOT)\rdmd_test.exe $(RDMD_TEST_EXECUTABLE)
|
|
||||||
$(ROOT)\rdmd_test.exe \
|
|
||||||
$(RDMD_TEST_EXECUTABLE) -m$(MODEL) -v \
|
|
||||||
--rdmd-default-compiler=$(RDMD_TEST_DEFAULT_COMPILER) \
|
|
||||||
--test-compilers=$(RDMD_TEST_COMPILERS)
|
|
||||||
|
|
||||||
test : test_rdmd
|
|
64
win64.mak
64
win64.mak
|
@ -1,64 +0,0 @@
|
||||||
ROOT = generated\windows\64
|
|
||||||
|
|
||||||
TARGETS= $(ROOT)\dman.exe \
|
|
||||||
$(ROOT)\rdmd.exe \
|
|
||||||
$(ROOT)\ddemangle.exe \
|
|
||||||
$(ROOT)\changed.exe \
|
|
||||||
$(ROOT)\dustmite.exe
|
|
||||||
|
|
||||||
targets : $(TARGETS)
|
|
||||||
|
|
||||||
dman: $(ROOT)\dman.exe
|
|
||||||
rdmd: $(ROOT)\rdmd.exe
|
|
||||||
ddemangle: $(ROOT)\ddemangle.exe
|
|
||||||
changed: $(ROOT)\changed.exe
|
|
||||||
dustmite: $(ROOT)\dustmite.exe
|
|
||||||
|
|
||||||
d-tags.json :
|
|
||||||
@echo 'Build d-tags.json and copy it here, e.g. by running:'
|
|
||||||
@echo " make -C ../dlang.org -f win64.mak d-tags.json && copy ../dlang.org/d-tags-latest.json d-tags.json"
|
|
||||||
@exit
|
|
||||||
|
|
||||||
MAKE_WIN32=make -f win32.mak "ROOT=$(ROOT)" "MODEL=$(MODEL)"
|
|
||||||
|
|
||||||
$(ROOT)\dman.exe : dman.d d-tags.json
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
$(ROOT)\rdmd.exe : rdmd.d
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
$(ROOT)\ddemangle.exe : ddemangle.d
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
$(ROOT)\dustmite.exe : DustMite/dustmite.d DustMite/splitter.d DustMite/polyhash.d
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
$(ROOT)\changed.exe : changed.d
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
clean :
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
detab:
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
tolf:
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
zip: detab tolf $(MAKEFILES)
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
scp: detab tolf $(MAKEFILES)
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
|
|
||||||
################################################################################
|
|
||||||
# Build and run tests
|
|
||||||
################################################################################
|
|
||||||
$(ROOT)\rdmd_test.exe : rdmd_test.d
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
test_rdmd : $(ROOT)\rdmd_test.exe $(RDMD_TEST_EXECUTABLE)
|
|
||||||
$(MAKE_WIN32) $@
|
|
||||||
|
|
||||||
test : test_rdmd
|
|
Loading…
Add table
Add a link
Reference in a new issue