d: Add freebsd support for D compiler and runtime

gcc/ChangeLog:

	PR d/87818
	* config.gcc (*-*-freebsd*): Add freebsd-d.o and t-freebsd.
	* config/freebsd-d.c: New file.
	* config/t-freebsd: New file.

libphobos/ChangeLog:

	PR d/87818
	* configure.tgt: Add x86_64-*-freebsd* and i?86-*-freebsd* as
	supported targets.
This commit is contained in:
Iain Buclaw 2020-11-28 16:55:53 +01:00
parent dee11eb742
commit e855b30c28
4 changed files with 69 additions and 0 deletions

View file

@ -784,6 +784,9 @@ case ${target} in
default_use_cxa_atexit=yes;;
esac
use_gcc_stdint=wrap
d_target_objs="${d_target_objs} freebsd-d.o"
tmake_file="${tmake_file} t-freebsd"
target_has_targetdm=yes
;;
*-*-fuchsia*)
native_system_header_dir=/include

42
gcc/config/freebsd-d.c Normal file
View file

@ -0,0 +1,42 @@
/* FreeBSD support needed only by D front-end.
Copyright (C) 2020 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/>. */
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "tm.h"
#include "tm_p.h"
#include "d/d-target.h"
#include "d/d-target-def.h"
/* Implement TARGET_D_OS_VERSIONS for FreeBSD targets. */
static void
freebsd_d_os_builtins (void)
{
char buf[16];
snprintf (buf, sizeof (buf), "FreeBSD_%d", FBSD_MAJOR);
d_add_builtin_version ("FreeBSD");
d_add_builtin_version (xstrdup (buf));
d_add_builtin_version ("Posix");
}
#undef TARGET_D_OS_VERSIONS
#define TARGET_D_OS_VERSIONS freebsd_d_os_builtins
struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;

21
gcc/config/t-freebsd Normal file
View file

@ -0,0 +1,21 @@
# Copyright (C) 2020 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
# 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/>.
freebsd-d.o: $(srcdir)/config/freebsd-d.c
$(COMPILE) $<
$(POSTCOMPILE)

View file

@ -49,6 +49,9 @@ case "${target}" in
s390*-linux*)
LIBPHOBOS_SUPPORTED=yes
;;
x86_64-*-freebsd* | i?86-*-freebsd*)
LIBPHOBOS_SUPPORTED=yes
;;
x86_64-*-kfreebsd*-gnu | i?86-*-kfreebsd*-gnu)
LIBPHOBOS_SUPPORTED=yes
;;