d: Add windows support for D compiler [PR91595]
gcc/ChangeLog: PR d/91595 * config.gcc (*-*-cygwin*): Add winnt-d.o (*-*-mingw*): Likewise. * config/i386/cygwin.h (EXTRA_TARGET_D_OS_VERSIONS): New macro. * config/i386/mingw32.h (EXTRA_TARGET_D_OS_VERSIONS): Likewise. * config/i386/t-cygming: Add winnt-d.o. * config/i386/winnt-d.c: New file.
This commit is contained in:
parent
74ed3fc279
commit
2892e2f702
5 changed files with 87 additions and 0 deletions
|
@ -2123,6 +2123,8 @@ i[34567]86-*-cygwin*)
|
|||
extra_objs="${extra_objs} winnt.o winnt-stubs.o"
|
||||
c_target_objs="${c_target_objs} msformat-c.o"
|
||||
cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
|
||||
d_target_objs="${d_target_objs} winnt-d.o"
|
||||
target_has_targetdm="yes"
|
||||
if test x$enable_threads = xyes; then
|
||||
thread_file='posix'
|
||||
fi
|
||||
|
@ -2139,6 +2141,8 @@ x86_64-*-cygwin*)
|
|||
extra_objs="${extra_objs} winnt.o winnt-stubs.o"
|
||||
c_target_objs="${c_target_objs} msformat-c.o"
|
||||
cxx_target_objs="${cxx_target_objs} winnt-cxx.o msformat-c.o"
|
||||
d_target_objs="${d_target_objs} winnt-d.o"
|
||||
target_has_targetdm="yes"
|
||||
if test x$enable_threads = xyes; then
|
||||
thread_file='posix'
|
||||
fi
|
||||
|
@ -2151,7 +2155,9 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
|
|||
xm_file=i386/xm-mingw32.h
|
||||
c_target_objs="${c_target_objs} winnt-c.o"
|
||||
cxx_target_objs="${cxx_target_objs} winnt-c.o"
|
||||
d_target_objs="${d_target_objs} winnt-d.o"
|
||||
target_has_targetcm="yes"
|
||||
target_has_targetdm="yes"
|
||||
case ${target} in
|
||||
x86_64-*-* | *-w64-*)
|
||||
need_64bit_isa=yes
|
||||
|
|
|
@ -29,6 +29,15 @@ along with GCC; see the file COPYING3. If not see
|
|||
} \
|
||||
while (0)
|
||||
|
||||
#define EXTRA_TARGET_D_OS_VERSIONS() \
|
||||
do \
|
||||
{ \
|
||||
builtin_version ("Cygwin"); \
|
||||
builtin_version ("Posix"); \
|
||||
builtin_version ("CRuntime_Newlib"); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#undef CPP_SPEC
|
||||
#define CPP_SPEC "%(cpp_cpu) %{posix:-D_POSIX_SOURCE} \
|
||||
%{!ansi:-Dunix} \
|
||||
|
|
|
@ -53,6 +53,18 @@ along with GCC; see the file COPYING3. If not see
|
|||
} \
|
||||
while (0)
|
||||
|
||||
#define EXTRA_TARGET_D_OS_VERSIONS() \
|
||||
do \
|
||||
{ \
|
||||
builtin_version ("MinGW"); \
|
||||
if (TARGET_64BIT && ix86_abi == MS_ABI) \
|
||||
builtin_version ("Win64"); \
|
||||
else if (!TARGET_64BIT) \
|
||||
builtin_version ("Win32"); \
|
||||
builtin_version ("CRuntime_Microsoft"); \
|
||||
} \
|
||||
while (0)
|
||||
|
||||
#ifndef TARGET_USE_PTHREAD_BY_DEFAULT
|
||||
#define SPEC_PTHREAD1 "pthread"
|
||||
#define SPEC_PTHREAD2 "!no-pthread"
|
||||
|
|
|
@ -39,6 +39,10 @@ winnt-stubs.o: $(srcdir)/config/i386/winnt-stubs.c $(CONFIG_H) $(SYSTEM_H) coret
|
|||
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
|
||||
$(srcdir)/config/i386/winnt-stubs.c
|
||||
|
||||
winnt-d.o: $(srcdir)/config/i386/winnt-d.c
|
||||
$(COMPILE) $<
|
||||
$(POSTCOMPILE)
|
||||
|
||||
msformat-c.o: $(srcdir)/config/i386/msformat-c.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
|
||||
$(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h output.h $(TREE_H) flags.h \
|
||||
$(TM_P_H) $(HASHTAB_H) $(GGC_H)
|
||||
|
|
56
gcc/config/i386/winnt-d.c
Normal file
56
gcc/config/i386/winnt-d.c
Normal file
|
@ -0,0 +1,56 @@
|
|||
/* Windows support needed only by D front-end.
|
||||
Copyright (C) 2021 Free Software Foundation, Inc.
|
||||
|
||||
GCC is free software; you can redistribute it and/or modify it under
|
||||
the terms of the GNU General Public License as published by the Free
|
||||
Software Foundation; either version 3, or (at your option) any later
|
||||
version.
|
||||
|
||||
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#define IN_TARGET_CODE 1
|
||||
|
||||
#include "config.h"
|
||||
#include "system.h"
|
||||
#include "coretypes.h"
|
||||
#include "target.h"
|
||||
#include "d/d-target.h"
|
||||
#include "d/d-target-def.h"
|
||||
#include "tm_p.h"
|
||||
|
||||
/* Implement TARGET_D_OS_VERSIONS for Windows targets. */
|
||||
|
||||
static void
|
||||
winnt_d_os_builtins (void)
|
||||
{
|
||||
d_add_builtin_version ("Windows");
|
||||
|
||||
#define builtin_version(TXT) d_add_builtin_version (TXT)
|
||||
|
||||
#ifdef EXTRA_TARGET_D_OS_VERSIONS
|
||||
EXTRA_TARGET_D_OS_VERSIONS ();
|
||||
#endif
|
||||
}
|
||||
|
||||
#undef TARGET_D_OS_VERSIONS
|
||||
#define TARGET_D_OS_VERSIONS winnt_d_os_builtins
|
||||
|
||||
/* Define TARGET_D_MINFO_SECTION for Windows targets. */
|
||||
|
||||
#undef TARGET_D_MINFO_SECTION
|
||||
#define TARGET_D_MINFO_SECTION "minfo"
|
||||
|
||||
#undef TARGET_D_MINFO_START_NAME
|
||||
#define TARGET_D_MINFO_START_NAME "__start_minfo"
|
||||
|
||||
#undef TARGET_D_MINFO_END_NAME
|
||||
#define TARGET_D_MINFO_END_NAME "__stop_minfo"
|
||||
|
||||
struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
|
Loading…
Add table
Reference in a new issue