mirror of
https://github.com/dlang/dmd.git
synced 2025-04-25 20:50:41 +03:00
Kill off OMF support
This commit is contained in:
parent
e5d7779794
commit
ad6e0c7a27
6 changed files with 25 additions and 74 deletions
|
@ -28,15 +28,8 @@ echo "GREP_VERSION: $(grep --version)"
|
||||||
|
|
||||||
GNU_MAKE="$(which make)" # must be done before installing dmc (tampers with PATH)
|
GNU_MAKE="$(which make)" # must be done before installing dmc (tampers with PATH)
|
||||||
|
|
||||||
if [ "$MODEL" == "32omf" ] ; then
|
CC="cl.exe"
|
||||||
install_host_dmc
|
CXX="cl.exe"
|
||||||
CC="$PWD/dm/bin/dmc.exe"
|
|
||||||
CXX="$PWD/dm/bin/dmc.exe"
|
|
||||||
export CPPCMD="$PWD/dm/bin/sppn.exe"
|
|
||||||
else
|
|
||||||
CC="cl.exe"
|
|
||||||
CXX="cl.exe"
|
|
||||||
fi
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Install the host compiler
|
# Install the host compiler
|
||||||
|
@ -63,8 +56,9 @@ if [ "$MODEL" == "64" ] ; then
|
||||||
LIBNAME=phobos64.lib
|
LIBNAME=phobos64.lib
|
||||||
elif [ "$MODEL" == "32" ] ; then
|
elif [ "$MODEL" == "32" ] ; then
|
||||||
LIBNAME=phobos32mscoff.lib
|
LIBNAME=phobos32mscoff.lib
|
||||||
else # 32omf
|
else
|
||||||
LIBNAME=phobos.lib
|
echo 'Invalid $MODEL provided'.
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
@ -79,9 +73,6 @@ fi
|
||||||
|
|
||||||
# avoid the DMC runtime and its limitations for the compiler and {build,run}.d tools themselves
|
# avoid the DMC runtime and its limitations for the compiler and {build,run}.d tools themselves
|
||||||
TOOL_MODEL="$MODEL"
|
TOOL_MODEL="$MODEL"
|
||||||
if [[ "$MODEL" == "32omf" ]]; then
|
|
||||||
TOOL_MODEL=32
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd "$DMD_DIR"
|
cd "$DMD_DIR"
|
||||||
"$HOST_DC" -m$TOOL_MODEL compiler/src/build.d -ofgenerated/build.exe
|
"$HOST_DC" -m$TOOL_MODEL compiler/src/build.d -ofgenerated/build.exe
|
||||||
|
@ -115,25 +106,6 @@ fi
|
||||||
|
|
||||||
"$HOST_DC" -m$TOOL_MODEL -g -i run.d
|
"$HOST_DC" -m$TOOL_MODEL -g -i run.d
|
||||||
|
|
||||||
if [ "$MODEL" == "32omf" ] ; then
|
|
||||||
# Pre-build the tools while the host compiler's sc.ini is untampered (see below).
|
|
||||||
./run tools
|
|
||||||
|
|
||||||
# WORKAROUND: Make Optlink use freshly built Phobos, not the host compiler's.
|
|
||||||
# Optlink apparently prefers LIB in sc.ini (in the same dir as optlink.exe)
|
|
||||||
# over the LIB env variable (and `-conf=` for DMD apparently doesn't prevent
|
|
||||||
# that, and there's apparently no sane way to specify a libdir for Optlink
|
|
||||||
# in the DMD cmdline either).
|
|
||||||
rm "$DMD_DIR/tools/dmd2/windows/bin/sc.ini"
|
|
||||||
# We also need to remove LIB from the freshly built compiler's sc.ini -
|
|
||||||
# not all test invocations use `-conf=`.
|
|
||||||
sed -i 's|^LIB=.*$||g' "$DMD_DIR/generated/windows/release/$TOOL_MODEL/sc.ini"
|
|
||||||
# Okay, now the lib directories are controlled by the LIB env variable.
|
|
||||||
# run.d prepends the dir containing freshly built phobos.lib; we still need
|
|
||||||
# the DMC and Windows libs from the host compiler.
|
|
||||||
export LIB="$DMD_DIR/tools/dmd2/windows/lib"
|
|
||||||
fi
|
|
||||||
|
|
||||||
targets=("all")
|
targets=("all")
|
||||||
args=('ARGS=-O -inline -g') # no -release for faster builds
|
args=('ARGS=-O -inline -g') # no -release for faster builds
|
||||||
if [ "$HOST_DMD_VERSION" = "2.079.0" ] ; then
|
if [ "$HOST_DMD_VERSION" = "2.079.0" ] ; then
|
||||||
|
@ -159,31 +131,25 @@ fi
|
||||||
cd "$DMD_DIR/druntime"
|
cd "$DMD_DIR/druntime"
|
||||||
"$GNU_MAKE" -j$N MODEL=$MODEL DMD="$DMD_BIN_PATH" CC="$CC" unittest
|
"$GNU_MAKE" -j$N MODEL=$MODEL DMD="$DMD_BIN_PATH" CC="$CC" unittest
|
||||||
|
|
||||||
if [ "$MODEL" != "32omf" ] ; then
|
# run some tests for shared druntime
|
||||||
# run some tests for shared druntime
|
|
||||||
|
|
||||||
# no separate output for static or shared builds, so clean directories to force rebuild
|
# no separate output for static or shared builds, so clean directories to force rebuild
|
||||||
rm -rf test/shared/generated
|
rm -rf test/shared/generated
|
||||||
# the test_runner links against libdruntime-ut.dll and runs all unittests
|
# the test_runner links against libdruntime-ut.dll and runs all unittests
|
||||||
# no matter what module name is passed in, so restrict to src/object.d
|
# no matter what module name is passed in, so restrict to src/object.d
|
||||||
"$GNU_MAKE" -j$N unittest MODEL=$MODEL SHARED=1 DMD="$DMD_BIN_PATH" CC="$CC" UT_SRCS=src/object.d ADDITIONAL_TESTS=test/shared
|
"$GNU_MAKE" -j$N unittest MODEL=$MODEL SHARED=1 DMD="$DMD_BIN_PATH" CC="$CC" UT_SRCS=src/object.d ADDITIONAL_TESTS=test/shared
|
||||||
fi
|
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Build and run Phobos unittests
|
# Build and run Phobos unittests
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
if [ "$MODEL" = "32omf" ] ; then
|
cd "$DMD_DIR/../phobos"
|
||||||
echo "FIXME: cannot compile 32-bit OMF Phobos unittests ('more than 32767 symbols in object file')"
|
if [ "$MODEL" = "64" ] ; then
|
||||||
|
cp "$DMD_DIR/tools/dmd2/windows/bin64/libcurl.dll" .
|
||||||
else
|
else
|
||||||
cd "$DMD_DIR/../phobos"
|
cp "$DMD_DIR/tools/dmd2/windows/bin/libcurl.dll" .
|
||||||
if [ "$MODEL" = "64" ] ; then
|
|
||||||
cp "$DMD_DIR/tools/dmd2/windows/bin64/libcurl.dll" .
|
|
||||||
else
|
|
||||||
cp "$DMD_DIR/tools/dmd2/windows/bin/libcurl.dll" .
|
|
||||||
fi
|
|
||||||
"$GNU_MAKE" -j$N MODEL=$MODEL DMD="$DMD_BIN_PATH" CC="$CC" DMD_DIR="$DMD_DIR" unittest
|
|
||||||
fi
|
fi
|
||||||
|
"$GNU_MAKE" -j$N MODEL=$MODEL DMD="$DMD_BIN_PATH" CC="$CC" DMD_DIR="$DMD_DIR" unittest
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
# Prepare artifacts
|
# Prepare artifacts
|
||||||
|
|
|
@ -30,9 +30,6 @@ jobs:
|
||||||
x64:
|
x64:
|
||||||
MODEL: 64
|
MODEL: 64
|
||||||
ARCH: x64
|
ARCH: x64
|
||||||
x86-OMF:
|
|
||||||
MODEL: 32omf
|
|
||||||
ARCH: x86
|
|
||||||
x86:
|
x86:
|
||||||
MODEL: 32
|
MODEL: 32
|
||||||
ARCH: x86
|
ARCH: x86
|
||||||
|
@ -54,11 +51,6 @@ jobs:
|
||||||
x64:
|
x64:
|
||||||
MODEL: 64
|
MODEL: 64
|
||||||
ARCH: x64
|
ARCH: x64
|
||||||
|
|
||||||
# x64 only because 32bit causes weird linker errors for several tests???
|
|
||||||
# x86-OMF:
|
|
||||||
# MODEL: 32omf
|
|
||||||
# ARCH: x86
|
|
||||||
steps:
|
steps:
|
||||||
- template: .azure-pipelines/windows.yml
|
- template: .azure-pipelines/windows.yml
|
||||||
|
|
||||||
|
|
5
changelog/dmd.omf-removed.dd
Normal file
5
changelog/dmd.omf-removed.dd
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
Windows OMF support has been removed
|
||||||
|
|
||||||
|
After two years of making PE-COFF support the default on Windows, OMF support has now been removed.
|
||||||
|
|
||||||
|
This includes the switch (``-m32omf``).
|
|
@ -71,13 +71,12 @@ There are currently 49 checks.
|
||||||
- Azure pipelines (Windows_Coverage x64)
|
- Azure pipelines (Windows_Coverage x64)
|
||||||
- Azure pipelines (Windows_DMD_bootstrap x64)
|
- Azure pipelines (Windows_DMD_bootstrap x64)
|
||||||
- Azure pipelines (Windows_DMD_latest x64)
|
- Azure pipelines (Windows_DMD_latest x64)
|
||||||
- Azure pipelines (Windows_DMD_latest x86-OMF)
|
|
||||||
- Azure pipelines (Windows_VisualD_LDC x64_Debug)
|
- Azure pipelines (Windows_VisualD_LDC x64_Debug)
|
||||||
- Azure pipelines (Windows_VisualD_LDC x86-mscoff)
|
- Azure pipelines (Windows_VisualD_LDC x86-mscoff)
|
||||||
- Azure pipelines (Windows_VisualD_LDC x86-mscoff_MinGW)
|
- Azure pipelines (Windows_VisualD_LDC x86-mscoff_MinGW)
|
||||||
|
|
||||||
Azure pipelines run on Windows platforms, and build DMD, Phobos and Druntime, and run their unittests.
|
Azure pipelines run on Windows platforms, and build DMD, Phobos and Druntime, and run their unittests.
|
||||||
Windows has three binary formats: 32-bit OMF (deprecated), 32-bit COFF, and 64-bit COFF.
|
Windows has two binary formats: 32-bit COFF, and 64-bit COFF.
|
||||||
|
|
||||||
### DAutoTest
|
### DAutoTest
|
||||||
|
|
||||||
|
|
|
@ -536,12 +536,6 @@ dmd -cov -unittest myprog.d
|
||||||
"generate 32 bit code and write MS-COFF object files (deprecated use -m32)",
|
"generate 32 bit code and write MS-COFF object files (deprecated use -m32)",
|
||||||
TargetOS.Windows
|
TargetOS.Windows
|
||||||
),
|
),
|
||||||
Option("m32omf",
|
|
||||||
"(deprecated) generate 32 bit code and write OMF object files",
|
|
||||||
`$(WINDOWS Compile a 32 bit executable. The generated object code is in OMF and is meant to be used with the
|
|
||||||
$(LINK2 http://www.digitalmars.com/download/freecompiler.html, Digital Mars C/C++ compiler)).`,
|
|
||||||
TargetOS.Windows
|
|
||||||
),
|
|
||||||
Option("m64",
|
Option("m64",
|
||||||
"generate 64 bit code",
|
"generate 64 bit code",
|
||||||
`$(UNIX Compile a 64 bit executable. This is the default for the 64 bit dmd.)
|
`$(UNIX Compile a 64 bit executable. This is the default for the 64 bit dmd.)
|
||||||
|
|
|
@ -276,7 +276,7 @@ void getenv_setargv(const(char)* envvalue, Strings* args)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse command line arguments for the last instance of -m32, -m64, -m32mscoff or -m32omfobj
|
* Parse command line arguments for the last instance of -m32, -m64, -m32mscoff
|
||||||
* to detect the desired architecture.
|
* to detect the desired architecture.
|
||||||
*
|
*
|
||||||
* Params:
|
* Params:
|
||||||
|
@ -285,7 +285,7 @@ void getenv_setargv(const(char)* envvalue, Strings* args)
|
||||||
* Should be "32" or "64"
|
* Should be "32" or "64"
|
||||||
*
|
*
|
||||||
* Returns:
|
* Returns:
|
||||||
* "32", "64" or "32omf" if the "-m32", "-m64", "-m32omf" flags were passed,
|
* "32", or "64" if the "-m32", "-m64" flags were passed,
|
||||||
* respectively. If they weren't, return `arch`.
|
* respectively. If they weren't, return `arch`.
|
||||||
*/
|
*/
|
||||||
const(char)[] parse_arch_arg(Strings* args, const(char)[] arch)
|
const(char)[] parse_arch_arg(Strings* args, const(char)[] arch)
|
||||||
|
@ -296,7 +296,7 @@ const(char)[] parse_arch_arg(Strings* args, const(char)[] arch)
|
||||||
|
|
||||||
if (arg.length && arg[0] == '-')
|
if (arg.length && arg[0] == '-')
|
||||||
{
|
{
|
||||||
if (arg[1 .. $] == "m32" || arg[1 .. $] == "m32omf" || arg[1 .. $] == "m64")
|
if (arg[1 .. $] == "m32" || arg[1 .. $] == "m64")
|
||||||
arch = arg[2 .. $];
|
arch = arg[2 .. $];
|
||||||
else if (arg[1 .. $] == "m32mscoff")
|
else if (arg[1 .. $] == "m32mscoff")
|
||||||
arch = "32";
|
arch = "32";
|
||||||
|
@ -901,11 +901,6 @@ bool parseCommandLine(const ref Strings arguments, const size_t argc, ref Param
|
||||||
target.isX86_64 = false;
|
target.isX86_64 = false;
|
||||||
target.omfobj = false;
|
target.omfobj = false;
|
||||||
}
|
}
|
||||||
else if (arg == "-m32omf") // https://dlang.org/dmd.html#switch-m32omfobj
|
|
||||||
{
|
|
||||||
target.isX86_64 = false;
|
|
||||||
target.omfobj = true;
|
|
||||||
}
|
|
||||||
else if (startsWith(p + 1, "mscrtlib="))
|
else if (startsWith(p + 1, "mscrtlib="))
|
||||||
{
|
{
|
||||||
driverParams.mscrtlib = arg[10 .. $];
|
driverParams.mscrtlib = arg[10 .. $];
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue