mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
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:
parent
ebca098f78
commit
07ec5cdbb1
7 changed files with 20 additions and 9 deletions
|
@ -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
4
ci.sh
|
@ -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
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -45,6 +45,8 @@ debdmd : $(DEPENDENCIES)
|
|||
$(MAKE_WIN32) $@
|
||||
reldmd : $(DEPENDENCIES)
|
||||
$(MAKE_WIN32) $@
|
||||
reldmd-asserts : $(DEPENDENCIES)
|
||||
$(MAKE_WIN32) $@
|
||||
detab : $(DEPENDENCIES)
|
||||
$(MAKE_WIN32) $@
|
||||
tolf : $(DEPENDENCIES)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue