Add build option ENABLE_ASSERTS and use it for CI

To finally have DMD's own assertions properly CI-tested. Assertions have
so far only been enabled for CircleCI (reduced testsuite on Linux x64)
and one Azure job (Win64 debug).
This commit is contained in:
Martin Kinkelin 2020-08-06 21:29:37 +02:00
parent ebca098f78
commit 07ec5cdbb1
7 changed files with 20 additions and 9 deletions

View file

@ -79,7 +79,7 @@ fi
DMD_BIN_PATH="$DMD_DIR/generated/windows/release/${MODEL}/dmd"
cd "${DMD_DIR}/src"
"${DM_MAKE}" -f "${MAKE_FILE}" reldmd DMD="$DMD_BIN_PATH"
"${DM_MAKE}" -f "${MAKE_FILE}" reldmd-asserts DMD="$DMD_BIN_PATH"
################################################################################
# WORKAROUND: Build zlib separately with DigitalMars make

4
ci.sh
View file

@ -45,7 +45,7 @@ clone() {
# build dmd, druntime, phobos
build() {
source ~/dlang/*/activate # activate host compiler
make -j$N -C src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD ENABLE_RELEASE=1 ENABLE_WARNINGS=1 all
make -j$N -C src -f posix.mak MODEL=$MODEL HOST_DMD=$DMD ENABLE_RELEASE=1 ENABLE_ASSERTS=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
@ -61,7 +61,7 @@ rebuild() {
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 ENABLE_RELEASE=1 ENABLE_WARNINGS=1 all
make -j$N -C src -f posix.mak MODEL=$MODEL HOST_DMD=../_${build_path}/host_dmd ENABLE_RELEASE=1 ENABLE_ASSERTS=1 ENABLE_WARNINGS=1 all
# compare binaries to test reproducible build
if [ $compare -eq 1 ]; then

View file

@ -12,7 +12,7 @@ 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
$(QUIET)$(MAKE) -C src -f posix.mak auto-tester-build ENABLE_RELEASE=1 ENABLE_ASSERTS=1
endif
ifneq (,$(findstring Darwin_64_32, $(PWD)))

View file

@ -99,8 +99,9 @@ BUILD: release (default) | debug (enabled a build with debug instructions)
Opt-in build features:
ENABLE_RELEASE: Optimized release built
ENABLE_RELEASE: Optimized release build
ENABLE_DEBUG: Add debug instructions and symbols (set if ENABLE_RELEASE isn't set)
ENABLE_ASSERTS: Don't use -release if ENABLE_RELEASE is set
ENABLE_LTO: Enable link-time optimizations
ENABLE_UNITTEST: Build dmd with unittests (sets ENABLE_COVERAGE=1)
ENABLE_PROFILE: Build dmd with a profiling recorder (D)
@ -1034,7 +1035,9 @@ void processEnvironment()
}
if (env.getNumberedBool("ENABLE_RELEASE"))
{
dflags ~= ["-O", "-release", "-inline"];
dflags ~= ["-O", "-inline"];
if (!env.getNumberedBool("ENABLE_ASSERTS"))
dflags ~= ["-release"];
}
else
{

View file

@ -15,8 +15,9 @@
#
# Opt-in build features:
#
# ENABLE_RELEASE: Optimized release built
# ENABLE_RELEASE: Optimized release build
# ENABLE_DEBUG: Add debug instructions and symbols (set if ENABLE_RELEASE isn't set)
# ENABLE_ASSERTS: Don't use -release if ENABLE_RELEASE is set
# ENABLE_LTO: Enable link-time optimizations
# ENABLE_UNITTEST: Build dmd with unittests (sets ENABLE_COVERAGE=1)
# ENABLE_PROFILE: Build dmd with a profiling recorder (D)

View file

@ -71,7 +71,7 @@ DMDMAKE=$(MAKE) -fwin32.mak MAKE="$(MAKE)" HOST_DC="$(HOST_DC)" MODEL=$(MODEL) C
############################### Rule Variables ###############################
RUN_BUILD=$(GEN)\build.exe --called-from-make "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_UNITTEST=$(ENABLE_UNITTEST)" "ENABLE_PROFILE=$(ENABLE_PROFILE)" "ENABLE_COVERAGE=$(ENABLE_COVERAGE)" "DFLAGS=$(DFLAGS)"
RUN_BUILD=$(GEN)\build.exe --called-from-make "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_UNITTEST=$(ENABLE_UNITTEST)" "ENABLE_PROFILE=$(ENABLE_PROFILE)" "ENABLE_COVERAGE=$(ENABLE_COVERAGE)" "DFLAGS=$(DFLAGS)"
############################## Release Targets ###############################
@ -79,7 +79,7 @@ defaulttarget: $G debdmd
# FIXME: Windows test suite uses src/dmd.exe instead of $(GENERATED)/dmd.exe
auto-tester-build: $(GEN)\build.exe
$(RUN_BUILD) "ENABLE_RELEASE=1" $@
$(RUN_BUILD) "ENABLE_RELEASE=1" "ENABLE_ASSERTS=1" $@
copy $(TARGETEXE) .
dmd: $G reldmd
@ -109,6 +109,11 @@ reldmd: check-host-dc reldmd-make
reldmd-make: $(GEN)\build.exe
$(RUN_BUILD) "ENABLE_RELEASE=1" $(TARGETEXE)
reldmd-asserts: check-host-dc reldmd-asserts-make
reldmd-asserts-make: $(GEN)\build.exe
$(RUN_BUILD) "ENABLE_RELEASE=1" "ENABLE_ASSERTS=1" $(TARGETEXE)
# Don't use ENABLE_RELEASE=1 to avoid -inline
profile:
$(DMDMAKE) "ENABLE_PROFILE=1" "DFLAGS=-O -release" $(TARGETEXE)

View file

@ -45,6 +45,8 @@ debdmd : $(DEPENDENCIES)
$(MAKE_WIN32) $@
reldmd : $(DEPENDENCIES)
$(MAKE_WIN32) $@
reldmd-asserts : $(DEPENDENCIES)
$(MAKE_WIN32) $@
detab : $(DEPENDENCIES)
$(MAKE_WIN32) $@
tolf : $(DEPENDENCIES)