; Processor-independent options for VxWorks.
;
; Copyright (C) 2005-2017 Free Software Foundation, Inc.
; Contributed by CodeSourcery, LLC.
;
; 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/>.

Bdynamic
Driver Condition(VXWORKS_KIND == VXWORKS_KIND_NORMAL)

Bstatic
Driver Condition(VXWORKS_KIND == VXWORKS_KIND_NORMAL)

Xbind-lazy
Driver Condition(VXWORKS_KIND == VXWORKS_KIND_NORMAL)

Xbind-now
Driver Condition(VXWORKS_KIND == VXWORKS_KIND_NORMAL)

mrtp
Target Report RejectNegative Mask(VXWORKS_RTP) Condition(VXWORKS_KIND == VXWORKS_KIND_NORMAL)
Assume the VxWorks RTP environment.

; VxWorks AE has two modes: kernel mode and vThreads mode.  In
; general, back ends do not actually need to know which mode they're
; in, so we do not have to set any flags.
mvthreads
Target RejectNegative Condition(VXWORKS_KIND == VXWORKS_KIND_AE)
Assume the VxWorks vThreads environment.

non-static
Driver Condition(VXWORKS_KIND == VXWORKS_KIND_NORMAL)
