diff options
author | David O'Brien <obrien@gcc.gnu.org> | 2001-11-21 02:06:45 +0000 |
---|---|---|
committer | David O'Brien <obrien@gcc.gnu.org> | 2001-11-21 02:06:45 +0000 |
commit | b6458e8551d3753332c6e0e3942010953f0aa51d (patch) | |
tree | 9fae26105cfbd44378b37935780d2c97a9636422 | |
parent | 00b960c7ada70affc18fe7f4ad170a40c684c208 (diff) | |
download | gcc-b6458e8551d3753332c6e0e3942010953f0aa51d.zip gcc-b6458e8551d3753332c6e0e3942010953f0aa51d.tar.gz gcc-b6458e8551d3753332c6e0e3942010953f0aa51d.tar.bz2 |
config.gcc: Add FreeBSD/PowerPC target.
2001-11-20 David O'Brien <obrien@FreeBSD.org>
* config.gcc: Add FreeBSD/PowerPC target.
(powerpc64-*-linux*, powerpc-*-sysv*, powerpc-*-netbsd*,
powerpc-*-chorusos*, powerpc-*-eabiaix*, powerpc-*-eabisim*,
powerpc-*-elf*, powerpc-*-eabi*, powerpc-*-rtems*,
powerpc-*-linux*libc1, powerpc-*-linux*, powerpc-wrs-vxworks*,
powerpcle-wrs-vxworks*, powerpcle-*-sysv*, powerpcle-*-elf*,
powerpcle-*-eabisim*, powerpcle-*-eabi*, powerpcle-*-solaris2*): Add
freebsd-spec.h to tm_file.
(rs6000-*-lynxos*): Add lynx.h to tm_file.
* config/freebsd.h: Tidy up.
(USING_CONFIG_FREEBSD): Define.
(FBSD_SWITCH_TAKES_ARG, FBSD_WORD_SWITCH_TAKES_ARG,
FBSD_CPP_PREDEFINES, FBSD_CPP_SPEC, FBSD_STARTFILE_SPEC,
FBSD_ENDFILE_SPEC, FBSD_LIB_SPEC): Remove (moved to freebsd-spec.h).
(TARGET_HAS_F_SETLKW): Define.
(ASM_OUTPUT_IDENT): Delete, the elfos.h definition is fine.
* config/freebsd-spec.h: New file.
* config/rs6000/freebsd.h: New file.
* config/rs6000/rs6000.h (TARGET_VERSION): Do not define.
* config/rs6000/rs6000.c: Test for USING_ELFOS_H rather than
USING_SVR4_H to know when to turn on ELF support.
* config/rs6000/sysv4.h (TARGET_VERSION, CPP_PREDEFINES): Don't undef,
define only if not already defined.
Add FreeBSD support.
* config/rs6000/aix.h (TARGET_VERSION): Define.
* config/rs6000/beos.h: Likewise.
* config/rs6000/darwin.h: Likewise.
* config/rs6000/mach.h: Likewise.
* config/rs6000/lynx.h (TARGET_VERSION): Likewise.
Don't include lynx.h directly.
Approved by: Geoff Keating <geoffk@geoffk.org>
Message-Id: <200111192053.MAA11977@geoffk.org>
Stan Shebs <shebs@apple.com> (Darwin bits)
Message-ID: <3BF95F29.794BC924@apple.com>
From-SVN: r47229
-rw-r--r-- | gcc/config/freebsd-spec.h | 149 |
1 files changed, 149 insertions, 0 deletions
diff --git a/gcc/config/freebsd-spec.h b/gcc/config/freebsd-spec.h new file mode 100644 index 0000000..8b01536 --- /dev/null +++ b/gcc/config/freebsd-spec.h @@ -0,0 +1,149 @@ +/* Base configuration file for all FreeBSD targets. + Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc. + +This file is part of GNU CC. + +GNU CC 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 2, or (at your option) +any later version. + +GNU CC 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 GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Common FreeBSD configuration. + All FreeBSD architectures should include this file, which will specify + their commonalities. + Adapted from gcc/config/freebsd.h by + David O'Brien <obrien@FreeBSD.org> + Loren J. Rittle <ljrittle@acm.org>. */ + + +/* In case we need to know. */ +#define USING_CONFIG_FREEBSD_SPEC 1 + +/* This defines which switch letters take arguments. On FreeBSD, most of + the normal cases (defined in gcc.c) apply, and we also have -h* and + -z* options (for the linker) (coming from SVR4). + We also have -R (alias --rpath), no -z, --soname (-h), --assert etc. */ + +#define FBSD_SWITCH_TAKES_ARG(CHAR) \ + (DEFAULT_SWITCH_TAKES_ARG (CHAR) \ + || (CHAR) == 'h' \ + || (CHAR) == 'z' /* ignored by ld */ \ + || (CHAR) == 'R') + +/* This defines which multi-letter switches take arguments. */ + +#define FBSD_WORD_SWITCH_TAKES_ARG(STR) \ + (DEFAULT_WORD_SWITCH_TAKES_ARG (STR) \ + || !strcmp ((STR), "rpath") || !strcmp ((STR), "rpath-link") \ + || !strcmp ((STR), "soname") || !strcmp ((STR), "defsym") \ + || !strcmp ((STR), "assert") || !strcmp ((STR), "dynamic-linker")) + +#if FBSD_MAJOR == 6 +#define FBSD_CPP_PREDEFINES \ + "-D__FreeBSD__=6 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" +#endif + +#if FBSD_MAJOR == 5 +#define FBSD_CPP_PREDEFINES \ + "-D__FreeBSD__=5 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" +#endif + +#if FBSD_MAJOR == 4 +#define FBSD_CPP_PREDEFINES \ + "-D__FreeBSD__=4 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" +#endif + +#if FBSD_MAJOR == 3 +#define FBSD_CPP_PREDEFINES \ + "-D__FreeBSD__=3 -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" +#endif + +#ifndef FBSD_CPP_PREDEFINES +#define FBSD_CPP_PREDEFINES \ + "-D__FreeBSD__ -Dunix -D__ELF__ -D__KPRINTF_ATTRIBUTE__ -Asystem=unix -Asystem=bsd -Asystem=FreeBSD" +#endif + +/* Provide a CPP_SPEC appropriate for FreeBSD. We just deal with the GCC + option `-posix', and PIC issues. */ + +#define FBSD_CPP_SPEC " \ + %(cpp_cpu) \ + %{fPIC:-D__PIC__ -D__pic__} %{fpic:-D__PIC__ -D__pic__} \ + %{posix:-D_POSIX_SOURCE}" + +/* Provide a STARTFILE_SPEC appropriate for FreeBSD. Here we add + the magical crtbegin.o file (see crtstuff.c) which provides part + of the support for getting C++ file-scope static object constructed + before entering `main'. */ + +#define FBSD_STARTFILE_SPEC \ + "%{!shared: \ + %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ + %{!p:%{profile:gcrt1.o%s} \ + %{!profile:crt1.o%s}}}} \ + crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" + +/* Provide a ENDFILE_SPEC appropriate for FreeBSD. Here we tack on + the magical crtend.o file (see crtstuff.c) which provides part of + the support for getting C++ file-scope static object constructed + before entering `main', followed by a normal "finalizer" file, + `crtn.o'. */ + +#define FBSD_ENDFILE_SPEC \ + "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" + +/* Provide a LIB_SPEC appropriate for FreeBSD as configured and as + required by the user-land thread model. Before __FreeBSD_version + 500016, select the appropriate libc, depending on whether we're + doing profiling or need threads support. At __FreeBSD_version + 500016 and later, when threads support is requested include both + -lc and -lc_r instead of only -lc_r. To make matters interesting, + we can't actually use __FreeBSD_version provided by <osreldate.h> + directly since it breaks cross-compiling. As a final twist, make + it a hard error if -pthread is provided on the command line and gcc + was configured with --disable-threads (this will help avoid bug + reports from users complaining about threading when they + misconfigured the gcc bootstrap but are later consulting FreeBSD + manual pages that refer to the mythical -pthread option). */ + +/* Provide a LIB_SPEC appropriate for FreeBSD. Just select the appropriate + libc, depending on whether we're doing profiling or need threads support. + (simular to the default, except no -lg, and no -p). */ + +#ifdef FBSD_NO_THREADS +#define FBSD_LIB_SPEC " \ + %{pthread: %eThe -pthread option is only supported on FreeBSD when gcc \ +is built with the --enable-threads configure-time option.} \ + %{!shared: \ + %{!pg: -lc} \ + %{pg: -lc_p} \ + }" +#else +#if FBSD_MAJOR >= 5 +#define FBSD_LIB_SPEC " \ + %{!shared: \ + %{!pg: %{pthread:-lc_r} -lc} \ + %{pg: %{pthread:-lc_r_p} -lc_p} \ + }" +#else +#define FBSD_LIB_SPEC " \ + %{!shared: \ + %{!pg: \ + %{!pthread:-lc} \ + %{pthread:-lc_r}} \ + %{pg: \ + %{!pthread:-lc_p} \ + %{pthread:-lc_r_p}} \ + }" +#endif +#endif |